summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java16
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java27
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java132
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java6
-rw-r--r--core/api/system-current.txt2
-rw-r--r--core/api/test-current.txt11
-rw-r--r--core/java/android/app/KeyguardManager.java27
-rw-r--r--core/java/android/app/Notification.java6
-rw-r--r--core/java/android/app/WallpaperManager.java5
-rw-r--r--core/java/android/content/Intent.java2
-rw-r--r--core/java/android/content/pm/UserProperties.java67
-rw-r--r--core/java/android/hardware/display/ColorDisplayManager.java4
-rw-r--r--core/java/android/os/OWNERS3
-rw-r--r--core/java/android/security/FileIntegrityManager.java8
-rw-r--r--core/java/android/service/notification/DeviceEffectsApplier.java38
-rw-r--r--core/java/android/service/notification/ZenDeviceEffects.java22
-rw-r--r--core/java/android/service/voice/VoiceInteractionService.java26
-rw-r--r--core/java/android/util/DayOfMonthCursor.java1
-rw-r--r--core/java/android/util/DumpableContainer.java1
-rw-r--r--core/java/android/util/KeyValueListParser.java1
-rw-r--r--core/java/android/util/LongArrayQueue.java1
-rw-r--r--core/java/android/util/LongSparseLongArray.java1
-rw-r--r--core/java/android/util/MonthDisplayHelper.java1
-rw-r--r--core/java/android/util/RecurrenceRule.java1
-rw-r--r--core/java/android/util/RotationUtils.java1
-rw-r--r--core/java/android/util/SparseDoubleArray.java1
-rw-r--r--core/java/android/util/SparseSetArray.java1
-rw-r--r--core/java/android/util/StateSet.java1
-rw-r--r--core/java/android/util/Xml.java2
-rw-r--r--core/java/android/view/HdrRenderState.java121
-rw-r--r--core/java/android/view/ViewRootImpl.java53
-rw-r--r--core/java/android/view/accessibility/AccessibilityManager.java37
-rw-r--r--core/java/android/view/accessibility/IAccessibilityManager.aidl3
-rw-r--r--core/java/android/view/accessibility/flags/accessibility_flags.aconfig19
-rw-r--r--core/java/android/view/contentcapture/MainContentCaptureSession.java50
-rw-r--r--core/java/android/view/inputmethod/ImeTracker.java2
-rw-r--r--core/java/android/window/flags/accessibility.aconfig8
-rw-r--r--core/java/android/window/flags/wallpaper_manager.aconfig9
-rw-r--r--core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java38
-rw-r--r--core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl10
-rw-r--r--core/java/com/android/internal/content/PackageMonitor.java24
-rw-r--r--core/java/com/android/internal/os/SomeArgs.java1
-rw-r--r--core/java/com/android/internal/policy/KeyInterceptionInfo.java4
-rw-r--r--core/java/com/android/internal/util/BitUtils.java1
-rw-r--r--core/java/com/android/internal/util/BitwiseInputStream.java1
-rw-r--r--core/java/com/android/internal/util/BitwiseOutputStream.java1
-rw-r--r--core/java/com/android/internal/util/CallbackRegistry.java1
-rw-r--r--core/java/com/android/internal/util/DumpUtils.java7
-rw-r--r--core/java/com/android/internal/util/FastMath.java1
-rw-r--r--core/java/com/android/internal/util/FastPrintWriter.java1
-rw-r--r--core/java/com/android/internal/util/GrowingArrayUtils.java1
-rw-r--r--core/java/com/android/internal/util/HeavyHitterSketch.java1
-rw-r--r--core/java/com/android/internal/util/LineBreakBufferedWriter.java1
-rw-r--r--core/java/com/android/internal/util/ObjectUtils.java1
-rw-r--r--core/java/com/android/internal/util/Parcelling.java1
-rw-r--r--core/java/com/android/internal/util/ParseUtils.java1
-rw-r--r--core/java/com/android/internal/util/ProcFileReader.java1
-rw-r--r--core/java/com/android/internal/util/ProgressReporter.java4
-rw-r--r--core/java/com/android/internal/util/QuickSelect.java1
-rw-r--r--core/java/com/android/internal/util/RingBuffer.java1
-rw-r--r--core/java/com/android/internal/util/StringPool.java1
-rw-r--r--core/java/com/android/internal/util/dump/DumpableContainerImpl.java1
-rw-r--r--core/java/com/google/android/collect/Lists.java1
-rw-r--r--core/java/com/google/android/collect/Maps.java1
-rw-r--r--core/java/com/google/android/collect/Sets.java1
-rw-r--r--core/res/AndroidManifest.xml16
-rw-r--r--core/res/res/values-af/strings.xml21
-rw-r--r--core/res/res/values-ar/strings.xml21
-rw-r--r--core/res/res/values-as/strings.xml21
-rw-r--r--core/res/res/values-az/strings.xml21
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml21
-rw-r--r--core/res/res/values-be/strings.xml21
-rw-r--r--core/res/res/values-bg/strings.xml21
-rw-r--r--core/res/res/values-bn/strings.xml21
-rw-r--r--core/res/res/values-bs/strings.xml21
-rw-r--r--core/res/res/values-ca/strings.xml21
-rw-r--r--core/res/res/values-da/strings.xml21
-rw-r--r--core/res/res/values-en-rAU/strings.xml21
-rw-r--r--core/res/res/values-en-rGB/strings.xml21
-rw-r--r--core/res/res/values-en-rIN/strings.xml21
-rw-r--r--core/res/res/values-es/strings.xml21
-rw-r--r--core/res/res/values-et/strings.xml21
-rw-r--r--core/res/res/values-eu/strings.xml21
-rw-r--r--core/res/res/values-fa/strings.xml21
-rw-r--r--core/res/res/values-fi/strings.xml21
-rw-r--r--core/res/res/values-fr-rCA/strings.xml21
-rw-r--r--core/res/res/values-gl/strings.xml21
-rw-r--r--core/res/res/values-gu/strings.xml21
-rw-r--r--core/res/res/values-hi/strings.xml21
-rw-r--r--core/res/res/values-hr/strings.xml21
-rw-r--r--core/res/res/values-hu/strings.xml21
-rw-r--r--core/res/res/values-hy/strings.xml21
-rw-r--r--core/res/res/values-in/strings.xml21
-rw-r--r--core/res/res/values-it/strings.xml21
-rw-r--r--core/res/res/values-ja/strings.xml21
-rw-r--r--core/res/res/values-kk/strings.xml29
-rw-r--r--core/res/res/values-km/strings.xml21
-rw-r--r--core/res/res/values-kn/strings.xml21
-rw-r--r--core/res/res/values-ko/strings.xml21
-rw-r--r--core/res/res/values-ky/strings.xml21
-rw-r--r--core/res/res/values-lo/strings.xml21
-rw-r--r--core/res/res/values-lt/strings.xml21
-rw-r--r--core/res/res/values-lv/strings.xml21
-rw-r--r--core/res/res/values-mk/strings.xml21
-rw-r--r--core/res/res/values-ml/strings.xml21
-rw-r--r--core/res/res/values-mn/strings.xml21
-rw-r--r--core/res/res/values-mr/strings.xml21
-rw-r--r--core/res/res/values-ms/strings.xml21
-rw-r--r--core/res/res/values-my/strings.xml21
-rw-r--r--core/res/res/values-nb/strings.xml21
-rw-r--r--core/res/res/values-ne/strings.xml21
-rw-r--r--core/res/res/values-nl/strings.xml21
-rw-r--r--core/res/res/values-or/strings.xml21
-rw-r--r--core/res/res/values-pa/strings.xml21
-rw-r--r--core/res/res/values-pl/strings.xml21
-rw-r--r--core/res/res/values-pt-rBR/strings.xml21
-rw-r--r--core/res/res/values-pt/strings.xml21
-rw-r--r--core/res/res/values-ru/strings.xml21
-rw-r--r--core/res/res/values-si/strings.xml21
-rw-r--r--core/res/res/values-sk/strings.xml21
-rw-r--r--core/res/res/values-sq/strings.xml21
-rw-r--r--core/res/res/values-sr/strings.xml21
-rw-r--r--core/res/res/values-sv/strings.xml21
-rw-r--r--core/res/res/values-sw/strings.xml21
-rw-r--r--core/res/res/values-ta/strings.xml21
-rw-r--r--core/res/res/values-te/strings.xml21
-rw-r--r--core/res/res/values-th/strings.xml21
-rw-r--r--core/res/res/values-tl/strings.xml21
-rw-r--r--core/res/res/values-tr/strings.xml21
-rw-r--r--core/res/res/values-uk/strings.xml21
-rw-r--r--core/res/res/values-ur/strings.xml21
-rw-r--r--core/res/res/values-uz/strings.xml21
-rw-r--r--core/res/res/values-vi/strings.xml21
-rw-r--r--core/res/res/values-zh-rCN/strings.xml21
-rw-r--r--core/res/res/values-zh-rHK/strings.xml21
-rw-r--r--core/res/res/values-zh-rTW/strings.xml21
-rw-r--r--core/res/res/values-zu/strings.xml21
-rw-r--r--core/res/res/values/config.xml10
-rw-r--r--core/res/res/values/symbols.xml1
-rw-r--r--core/tests/coretests/Android.bp12
-rw-r--r--core/tests/coretests/src/android/util/ArrayMapTest.java17
-rw-r--r--core/tests/coretests/src/android/util/ArraySetTest.java9
-rw-r--r--core/tests/coretests/src/android/util/Base64Test.java111
-rw-r--r--core/tests/coretests/src/android/util/CharsetUtilsTest.java14
-rw-r--r--core/tests/coretests/src/android/util/CloseGuardTest.java16
-rw-r--r--core/tests/coretests/src/android/util/DayOfMonthCursorTest.java31
-rw-r--r--core/tests/coretests/src/android/util/HashedStringCacheTest.java17
-rw-r--r--core/tests/coretests/src/android/util/LogNullabilityTest.java54
-rw-r--r--core/tests/coretests/src/android/util/LogTest.java22
-rw-r--r--core/tests/coretests/src/android/util/LongSparseLongArrayTest.java13
-rw-r--r--core/tests/coretests/src/android/util/LruCacheTest.java39
-rw-r--r--core/tests/coretests/src/android/util/MonthDisplayHelperTest.java23
-rw-r--r--core/tests/coretests/src/android/util/NtpTrustedTimeTest.java8
-rw-r--r--core/tests/coretests/src/android/util/PatternsTest.java121
-rw-r--r--core/tests/coretests/src/android/util/RecurrenceRuleTest.java28
-rw-r--r--core/tests/coretests/src/android/util/SparseSetArrayTest.java8
-rw-r--r--core/tests/coretests/src/android/util/StateSetTest.java28
-rw-r--r--core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java14
-rw-r--r--core/tests/coretests/src/android/view/menu/MenuScenario.java2
-rw-r--r--core/tests/coretests/src/android/widget/GridScenario.java (renamed from core/tests/coretests/src/android/util/GridScenario.java)4
-rw-r--r--core/tests/coretests/src/android/widget/InternalSelectionView.java (renamed from core/tests/coretests/src/android/util/InternalSelectionView.java)5
-rw-r--r--core/tests/coretests/src/android/widget/ListScenario.java (renamed from core/tests/coretests/src/android/util/ListScenario.java)11
-rw-r--r--core/tests/coretests/src/android/widget/ScrollViewScenario.java (renamed from core/tests/coretests/src/android/util/ScrollViewScenario.java)5
-rw-r--r--core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java4
-rw-r--r--core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java4
-rw-r--r--core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java2
-rw-r--r--core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridDelete.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSetSelection.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSetSelectionMany.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottom.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomMany.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSimple.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridSingleColumn.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridStackFromBottom.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridStackFromBottomMany.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridVerticalSpacing.java2
-rw-r--r--core/tests/coretests/src/android/widget/gridview/GridVerticalSpacingStackFromBottom.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListBottomGravity.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListEndingWithMultipleSeparators.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListGetSelectedView.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java4
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListLastItemPartiallyVisible.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListOfItemsShorterThanScreen.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListOfItemsTallerThanScreen.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListOfShortShortTallShortShort.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListOfShortTallShort.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListOfThinItems.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListOfTouchables.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListSetSelection.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListSimple.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListTopGravity.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListTopGravityMany.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithEditTextHeader.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithFirstScreenUnSelectable.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithHeaders.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithNoFadingEdge.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithOffScreenNextSelectable.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithScreenOfNoSelectables.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/ListWithSeparators.java2
-rw-r--r--core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java2
-rw-r--r--core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java4
-rw-r--r--core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java2
-rw-r--r--core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java2
-rw-r--r--core/tests/coretests/src/android/widget/scroll/ShortButtons.java2
-rw-r--r--core/tests/coretests/src/android/widget/scroll/TallTextAboveButton.java2
-rw-r--r--core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPadding.java2
-rw-r--r--core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java69
-rw-r--r--core/tests/coretests/src/com/android/internal/accessibility/dialog/AccessibilityServiceWarningTest.java2
-rw-r--r--core/tests/coretests/src/com/android/internal/util/BitUtilsTest.java2
-rw-r--r--core/tests/coretests/src/com/android/internal/util/ContrastColorUtilTest.java34
-rw-r--r--core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java26
-rw-r--r--core/tests/coretests/src/com/android/internal/util/DumpableContainerImplTest.java20
-rw-r--r--core/tests/coretests/src/com/android/internal/util/FakeLatencyTrackerTest.java8
-rw-r--r--core/tests/coretests/src/com/android/internal/util/FastDataTest.java12
-rw-r--r--core/tests/coretests/src/com/android/internal/util/FastMathTest.java34
-rw-r--r--core/tests/coretests/src/com/android/internal/util/GrowingArrayUtilsTest.java140
-rw-r--r--core/tests/coretests/src/com/android/internal/util/HexDumpTest.java22
-rw-r--r--core/tests/coretests/src/com/android/internal/util/LatencyTrackerTest.java8
-rw-r--r--core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java28
-rw-r--r--core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java36
-rw-r--r--core/tests/coretests/src/com/android/internal/util/ProgressReporterTest.java28
-rw-r--r--core/tests/coretests/src/com/android/internal/util/RingBufferTest.java2
-rw-r--r--core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java19
-rw-r--r--core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java32
-rw-r--r--core/tests/utiltests/Android.bp17
-rw-r--r--core/tests/utiltests/src/android/util/MemoryIntArrayTest.java17
-rw-r--r--core/tests/utiltests/src/android/util/MetadataReaderTest.java20
-rw-r--r--core/tests/utiltests/src/android/util/SystemConfigFileCommitEventLoggerTest.java12
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java49
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/BitwiseStreamsTest.java23
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/CallbackRegistryTest.java26
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/CharSequencesTest.java20
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java25
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/FileRotatorTest.java47
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/HeavyHitterSketchTest.java15
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java8
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java6
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/MessageUtilsTest.java6
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/MimeIconUtilsTest.java19
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java13
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/ObservableServiceConnectionTest.java10
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/PersistentServiceConnectionTest.java11
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/ProcFileReaderTest.java28
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/QuickSelectTest.java11
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java16
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/WakeupMessageTest.java19
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java11
-rw-r--r--core/tests/utiltests/src/com/android/internal/util/test/FakeSettingsProviderTest.java32
-rw-r--r--data/etc/privapp-permissions-platform.xml2
-rw-r--r--libs/WindowManager/Shell/res/drawable/desktop_mode_decor_title.xml22
-rw-r--r--libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml11
-rw-r--r--libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml4
-rw-r--r--libs/WindowManager/Shell/res/values/colors.xml8
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java9
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java8
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java13
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt40
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java34
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java12
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt106
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt24
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt19
-rw-r--r--libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromAllApps.kt4
-rw-r--r--libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromShortcut.kt4
-rw-r--r--libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromTaskbar.kt4
-rw-r--r--libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromAllAppsBenchmark.kt8
-rw-r--r--libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromShortcutBenchmark.kt8
-rw-r--r--libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromTaskbarBenchmark.kt8
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationControllerTest.java2
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java32
-rw-r--r--libs/hwui/aconfig/hwui_flags.aconfig14
-rw-r--r--packages/CredentialManager/res/values-el/strings.xml2
-rw-r--r--packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt7
-rw-r--r--packages/PackageInstaller/res/values-af/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-am/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ar/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-as/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-az/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-b+sr+Latn/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-be/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-bg/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-bn/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-bs/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ca/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-cs/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-da/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-de/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-el/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-en-rAU/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-en-rCA/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-en-rGB/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-en-rIN/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-en-rXC/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-es-rUS/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-es/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-et/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-eu/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-fa/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-fi/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-fr-rCA/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-fr/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-gl/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-gu/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-hi/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-hr/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-hu/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-hy/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-in/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-is/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-it/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-iw/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ja/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ka/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-kk/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-km/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-kn/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ko/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ky/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-lo/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-lt/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-lv/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-mk/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ml/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-mn/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-mr/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ms/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-my/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-nb/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ne/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-nl/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-or/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-pa/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-pl/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-pt-rBR/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-pt-rPT/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-pt/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ro/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ru/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-si/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-sk/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-sl/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-sq/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-sr/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-sv/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-sw/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ta/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-te/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-th/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-tl/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-tr/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-uk/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-ur/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-uz/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-vi/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-zh-rCN/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-zh-rHK/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-zh-rTW/strings.xml18
-rw-r--r--packages/PackageInstaller/res/values-zu/strings.xml18
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlow.kt6
-rw-r--r--packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlowTest.kt14
-rw-r--r--packages/SettingsLib/res/values-af/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ar/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-as/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-az/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-be/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-bg/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-bn/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-bs/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ca/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-en-rAU/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-en-rGB/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-en-rIN/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-es/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-et/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-eu/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-fa/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-fi/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-fr-rCA/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-gl/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-gu/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-hi/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-hr/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-hu/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-hy/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-in/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-it/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ja/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-kk/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-km/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-kn/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ko/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ky/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-lo/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-lt/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-lv/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-mk/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ml/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-mn/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-mr/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ms/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-my/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-nb/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ne/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-nl/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-or/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-pl/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/strings.xml21
-rw-r--r--packages/SettingsLib/res/values-pt/strings.xml21
-rw-r--r--packages/SettingsLib/res/values-ru/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-si/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-sk/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-sq/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-sr/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-sv/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ta/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-te/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-th/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-tl/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-tr/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-uk/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-ur/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-uz/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-vi/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-zh-rHK/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-zu/strings.xml9
-rw-r--r--packages/Shell/AndroidManifest.xml3
-rw-r--r--packages/SystemUI/Android.bp2
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt115
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt3
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt200
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapperTest.kt481
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileUserActionInteractorTest.kt125
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java6
-rw-r--r--packages/SystemUI/res-keyguard/drawable/bouncer_password_text_view_focused_background.xml24
-rw-r--r--packages/SystemUI/res-keyguard/layout/keyguard_bouncer_message_area.xml2
-rw-r--r--packages/SystemUI/res-keyguard/values/styles.xml1
-rw-r--r--packages/SystemUI/res/layout/connected_display_dialog.xml9
-rw-r--r--packages/SystemUI/res/layout/screen_record_options.xml45
-rw-r--r--packages/SystemUI/res/layout/udfps_touch_overlay.xml3
-rw-r--r--packages/SystemUI/res/values-af/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml33
-rw-r--r--packages/SystemUI/res/values-as/strings.xml33
-rw-r--r--packages/SystemUI/res/values-az/strings.xml33
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml33
-rw-r--r--packages/SystemUI/res/values-be/strings.xml33
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml33
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml33
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml33
-rw-r--r--packages/SystemUI/res/values-da/strings.xml33
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml33
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml33
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml33
-rw-r--r--packages/SystemUI/res/values-es/strings.xml33
-rw-r--r--packages/SystemUI/res/values-et/strings.xml33
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml33
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml33
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml33
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml33
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml33
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml33
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml33
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml33
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml33
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml33
-rw-r--r--packages/SystemUI/res/values-in/strings.xml33
-rw-r--r--packages/SystemUI/res/values-it/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml33
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml33
-rw-r--r--packages/SystemUI/res/values-km/strings.xml33
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml33
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml33
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml33
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml33
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml33
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml33
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml33
-rw-r--r--packages/SystemUI/res/values-my/strings.xml33
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml33
-rw-r--r--packages/SystemUI/res/values-night/colors.xml3
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml33
-rw-r--r--packages/SystemUI/res/values-or/strings.xml33
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml33
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml33
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml39
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml39
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml33
-rw-r--r--packages/SystemUI/res/values-si/strings.xml33
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml33
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml33
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml33
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml33
-rw-r--r--packages/SystemUI/res/values-te/strings.xml33
-rw-r--r--packages/SystemUI/res/values-th/strings.xml33
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml33
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml33
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml33
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml33
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml33
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml33
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml33
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml33
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml33
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml33
-rw-r--r--packages/SystemUI/res/values/colors.xml2
-rw-r--r--packages/SystemUI/res/values/strings.xml2
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/data/repository/DisplayStateRepository.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/BaseCommunalViewModel.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java56
-rw-r--r--packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/display/data/repository/DeviceStateRepository.kt88
-rw-r--r--packages/SystemUI/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractor.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/display/ui/view/MirroringConfirmationDialog.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt23
-rw-r--r--packages/SystemUI/src/com/android/systemui/dump/LogBufferFreezer.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/Flags.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt21
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt18
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/BaseBlueprintTransition.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultSettingsPopupMenuSection.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapper.kt128
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileDataInteractor.kt113
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileUserActionInteractor.kt59
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/model/UiModeNightTileModel.kt35
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractor.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModel.kt22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt37
-rw-r--r--packages/SystemUI/src/com/android/systemui/unfold/SysUIUnfoldModule.kt17
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt164
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt43
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt17
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagsTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt45
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModelTest.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/android/view/accessibility/AccessibilityManagerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/internal/logging/MetricsLoggerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/internal/statusbar/StatusBarServiceKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/domain/interactor/AccessibilityInteractorKosmos.kt27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerFakeKosmos.kt21
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerKosmos.kt22
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/concurrency/FakeExecutorKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDeviceStateRepository.kt31
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/dump/DumpManagerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/WakefulnessLifecycleKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/NaturalScrollingSettingObserverKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileKosmos.kt24
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileModelHelper.kt50
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/WindowRootViewVisibilityRepositoryKosmos.kt29
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/transition/LargeScreenShadeInterpolatorKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionControllerKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionControllerKosmos.kt35
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerKosmos.kt65
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/MediaHierarchyManagerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationShadeDepthControllerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractorKosmos.kt27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt31
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorKosmos.kt42
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ShelfNotificationIconViewStoreKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/StatusBarIconViewBindingFailureTrackerKosmos.kt24
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerShelfViewModelKosmos.kt27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelKosmos.kt27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorKosmos.kt33
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelKosmos.kt31
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt37
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt29
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt33
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotifCollectionKosmos.kt24
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinderKosmos.kt43
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/HideListViewModelKosmos.kt26
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt41
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt36
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/LSShadeTransitionLoggerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ScrimControllerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/HeadsUpManagerKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/data/repository/ZenModeRepositoryKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorKosmos.kt27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/unfold/UnfoldTransitionProgressProviderKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/unfold/data/repository/UnfoldTransitionRepositoryKosmos.kt28
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorKosmos.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/util/animation/data/repository/AnimationStatusRepositoryKosmos.kt23
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeBatteryController.java27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeLocationController.java6
-rw-r--r--ravenwood/framework-minus-apex-ravenwood-policies.txt13
-rw-r--r--ravenwood/junit-src/android/platform/test/annotations/IgnoreUnderRavenwood.java2
-rw-r--r--ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java5
-rw-r--r--ravenwood/ravenwood-annotation-allowed-classes.txt37
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java22
-rw-r--r--services/core/Android.bp1
-rw-r--r--services/core/java/com/android/server/BinaryTransparencyService.java20
-rw-r--r--services/core/java/com/android/server/Watchdog.java2
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java1
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java141
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueueModernImpl.java1
-rw-r--r--services/core/java/com/android/server/am/flags.aconfig8
-rw-r--r--services/core/java/com/android/server/audio/AdiDeviceState.java7
-rw-r--r--services/core/java/com/android/server/audio/AudioDeviceInventory.java5
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java8
-rw-r--r--services/core/java/com/android/server/content/SyncJobService.java16
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java34
-rw-r--r--services/core/java/com/android/server/display/color/ColorDisplayService.java4
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java4
-rw-r--r--services/core/java/com/android/server/hdmi/RequestActiveSourceAction.java13
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java9
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java2
-rw-r--r--services/core/java/com/android/server/inputmethod/OWNERS2
-rw-r--r--services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java139
-rw-r--r--services/core/java/com/android/server/notification/DefaultDeviceEffectsApplier.java71
-rwxr-xr-xservices/core/java/com/android/server/notification/NotificationManagerService.java6
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java83
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java5
-rw-r--r--services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java4
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java155
-rw-r--r--services/core/java/com/android/server/utils/Android.bp10
-rw-r--r--services/core/java/com/android/server/utils/AnrTimer.java (renamed from services/core/java/com/android/server/am/AnrTimer.java)20
-rw-r--r--services/core/java/com/android/server/utils/flags.aconfig9
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java5
-rw-r--r--services/core/java/com/android/server/wm/AccessibilityController.java6
-rw-r--r--services/core/java/com/android/server/wm/BackgroundActivityStartController.java17
-rw-r--r--services/core/java/com/android/server/wm/InputMonitor.java2
-rw-r--r--services/core/java/com/android/server/wm/KeyguardController.java3
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimationController.java3
-rw-r--r--services/core/java/com/android/server/wm/Transition.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java5
-rw-r--r--services/incremental/IncrementalService.cpp2
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt32
-rw-r--r--services/permission/java/com/android/server/permission/access/permission/PermissionService.kt19
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/job/controllers/BackgroundJobsControllerTest.java291
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java48
-rw-r--r--services/tests/servicestests/src/com/android/server/am/AnrTimerTest.java389
-rw-r--r--services/tests/servicestests/src/com/android/server/audio/AudioDeviceBrokerTest.java132
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java26
-rw-r--r--services/tests/servicestests/src/com/android/server/utils/AnrTimerTest.java203
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/DefaultDeviceEffectsApplierTest.java115
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java100
-rw-r--r--services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java18
-rw-r--r--services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java53
-rw-r--r--services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java18
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java21
-rw-r--r--tests/FlickerTests/ActivityEmbedding/Android.bp2
-rw-r--r--tests/FlickerTests/ActivityEmbedding/AndroidManifest.xml2
-rw-r--r--tests/FlickerTests/ActivityEmbedding/trace_config/trace_config.textproto6
-rw-r--r--tests/FlickerTests/Android.bp12
-rw-r--r--tests/FlickerTests/AppClose/Android.bp1
-rw-r--r--tests/FlickerTests/AppClose/trace_config/trace_config.textproto6
-rw-r--r--tests/FlickerTests/AppLaunch/Android.bp2
-rw-r--r--tests/FlickerTests/AppLaunch/trace_config/trace_config.textproto6
-rw-r--r--tests/FlickerTests/FlickerService/Android.bp1
-rw-r--r--tests/FlickerTests/FlickerService/trace_config/trace_config.textproto8
-rw-r--r--tests/FlickerTests/IME/Android.bp3
-rw-r--r--tests/FlickerTests/IME/trace_config/trace_config.textproto6
-rw-r--r--tests/FlickerTests/Notification/Android.bp1
-rw-r--r--tests/FlickerTests/Notification/trace_config/trace_config.textproto8
-rw-r--r--tests/FlickerTests/QuickSwitch/Android.bp1
-rw-r--r--tests/FlickerTests/QuickSwitch/trace_config/trace_config.textproto6
-rw-r--r--tests/FlickerTests/Rotation/Android.bp1
-rw-r--r--tests/FlickerTests/Rotation/trace_config/trace_config.textproto6
-rw-r--r--tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt5
-rw-r--r--tests/InputScreenshotTest/robotests/assets/phone/light_landscape_layout-preview.pngbin70150 -> 75190 bytes
-rw-r--r--tests/InputScreenshotTest/robotests/assets/phone/light_portrait_layout-preview.pngbin66888 -> 70595 bytes
-rw-r--r--tests/InputScreenshotTest/robotests/assets/tablet/dark_portrait_layout-preview.pngbin39003 -> 41284 bytes
-rw-r--r--tests/SilkFX/OWNERS1
-rw-r--r--tests/graphics/HwAccelerationTest/.classpath (renamed from tests/HwAccelerationTest/.classpath)0
-rw-r--r--tests/graphics/HwAccelerationTest/.gitignore (renamed from tests/HwAccelerationTest/.gitignore)0
-rw-r--r--tests/graphics/HwAccelerationTest/Android.bp (renamed from tests/HwAccelerationTest/Android.bp)0
-rw-r--r--tests/graphics/HwAccelerationTest/AndroidManifest.xml (renamed from tests/HwAccelerationTest/AndroidManifest.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/default.properties (renamed from tests/HwAccelerationTest/default.properties)0
-rw-r--r--tests/graphics/HwAccelerationTest/jni/Android.bp (renamed from tests/HwAccelerationTest/jni/Android.bp)0
-rw-r--r--tests/graphics/HwAccelerationTest/jni/native-lib.cpp (renamed from tests/HwAccelerationTest/jni/native-lib.cpp)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/anim/accelerate_interpolator_2.xml (renamed from tests/HwAccelerationTest/res/anim/accelerate_interpolator_2.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/anim/fade_in.xml (renamed from tests/HwAccelerationTest/res/anim/fade_in.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/anim/fade_out.xml (renamed from tests/HwAccelerationTest/res/anim/fade_out.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/anim/slide_off_left.xml (renamed from tests/HwAccelerationTest/res/anim/slide_off_left.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml (renamed from tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-hdpi/icon.png (renamed from tests/HwAccelerationTest/res/drawable-hdpi/icon.png)bin5141 -> 5141 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset1.jpg (renamed from tests/HwAccelerationTest/res/drawable-hdpi/sunset1.jpg)bin28050 -> 28050 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset2.png (renamed from tests/HwAccelerationTest/res/drawable-hdpi/sunset2.png)bin55763 -> 55763 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset3.png (renamed from tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png)bin45781 -> 45781 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-hdpi/widget_header.png (renamed from tests/HwAccelerationTest/res/drawable-hdpi/widget_header.png)bin4092 -> 4092 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-mdpi/expander_ic_maximized.9.png (renamed from tests/HwAccelerationTest/res/drawable-mdpi/expander_ic_maximized.9.png)bin1929 -> 1929 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-mdpi/expander_ic_minimized.9.png (renamed from tests/HwAccelerationTest/res/drawable-mdpi/expander_ic_minimized.9.png)bin1982 -> 1982 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg.9.png)bin1694 -> 1694 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_focus.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_focus.9.png)bin1910 -> 1910 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_press.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_press.9.png)bin1908 -> 1908 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/green_gradient.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/green_gradient.9.png)bin1239 -> 1239 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/large_photo.jpg (renamed from tests/HwAccelerationTest/res/drawable-nodpi/large_photo.jpg)bin311474 -> 311474 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/patch.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/patch.9.png)bin2863 -> 2863 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/patch2.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/patch2.9.png)bin2825 -> 2825 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_bg_holo_dark.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_bg_holo_dark.9.png)bin189 -> 189 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_primary_holo_dark.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_primary_holo_dark.9.png)bin506 -> 506 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_secondary_holo_dark.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_secondary_holo_dark.9.png)bin204 -> 204 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/scratches.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/scratches.png)bin248848 -> 248848 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_primary_holo.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_primary_holo.9.png)bin177 -> 177 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_secondary_holo.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_secondary_holo.9.png)bin179 -> 179 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_dark.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_dark.9.png)bin185 -> 185 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_light.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_light.9.png)bin170 -> 170 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/spot_mask.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/spot_mask.png)bin25505 -> 25505 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg (renamed from tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg)bin1781132 -> 1781132 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/weather_2.jpg (renamed from tests/HwAccelerationTest/res/drawable-nodpi/weather_2.jpg)bin706520 -> 706520 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable-nodpi/widget_title_bg.9.png (renamed from tests/HwAccelerationTest/res/drawable-nodpi/widget_title_bg.9.png)bin1429 -> 1429 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/appwidget_background.xml (renamed from tests/HwAccelerationTest/res/drawable/appwidget_background.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg.9.png (renamed from tests/HwAccelerationTest/res/drawable/appwidget_bg.9.png)bin1694 -> 1694 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png (renamed from tests/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png)bin1910 -> 1910 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png (renamed from tests/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png)bin1908 -> 1908 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/btn_toggle_off.9.png (renamed from tests/HwAccelerationTest/res/drawable/btn_toggle_off.9.png)bin364 -> 364 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/btn_toggle_on.9.png (renamed from tests/HwAccelerationTest/res/drawable/btn_toggle_on.9.png)bin442 -> 442 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/default_wallpaper.png (renamed from tests/HwAccelerationTest/res/drawable/default_wallpaper.png)bin320012 -> 320012 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/gradient.xml (renamed from tests/HwAccelerationTest/res/drawable/gradient.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/green_gradient.9.png (renamed from tests/HwAccelerationTest/res/drawable/green_gradient.9.png)bin1239 -> 1239 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/icon.png (renamed from tests/HwAccelerationTest/res/drawable/icon.png)bin3133 -> 3133 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/progress_vertical_holo_dark.xml (renamed from tests/HwAccelerationTest/res/drawable/progress_vertical_holo_dark.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/robot.png (renamed from tests/HwAccelerationTest/res/drawable/robot.png)bin5634 -> 5634 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/robot_repeated.xml (renamed from tests/HwAccelerationTest/res/drawable/robot_repeated.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/round_rect_background.xml (renamed from tests/HwAccelerationTest/res/drawable/round_rect_background.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/scrubber_progress_vertical_holo_dark.xml (renamed from tests/HwAccelerationTest/res/drawable/scrubber_progress_vertical_holo_dark.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/sunset1.jpg (renamed from tests/HwAccelerationTest/res/drawable/sunset1.jpg)bin28050 -> 28050 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/sunset2.png (renamed from tests/HwAccelerationTest/res/drawable/sunset2.png)bin55763 -> 55763 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/sunset3.png (renamed from tests/HwAccelerationTest/res/drawable/sunset3.png)bin45781 -> 45781 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/widget_header.png (renamed from tests/HwAccelerationTest/res/drawable/widget_header.png)bin6098 -> 6098 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/drawable/widget_title_bg.9.png (renamed from tests/HwAccelerationTest/res/drawable/widget_title_bg.9.png)bin1429 -> 1429 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_advanced_blend.xml (renamed from tests/HwAccelerationTest/res/layout/_advanced_blend.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_advanced_gradient.xml (renamed from tests/HwAccelerationTest/res/layout/_advanced_gradient.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_layers.xml (renamed from tests/HwAccelerationTest/res/layout/_layers.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_lines.xml (renamed from tests/HwAccelerationTest/res/layout/_lines.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_newlayers.xml (renamed from tests/HwAccelerationTest/res/layout/_newlayers.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_paths.xml (renamed from tests/HwAccelerationTest/res/layout/_paths.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/_shaders.xml (renamed from tests/HwAccelerationTest/res/layout/_shaders.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/colored_shadows_activity.xml (renamed from tests/HwAccelerationTest/res/layout/colored_shadows_activity.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/colored_shadows_row.xml (renamed from tests/HwAccelerationTest/res/layout/colored_shadows_row.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/date_picker.xml (renamed from tests/HwAccelerationTest/res/layout/date_picker.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/flipper_item.xml (renamed from tests/HwAccelerationTest/res/layout/flipper_item.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/form.xml (renamed from tests/HwAccelerationTest/res/layout/form.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/image_filter_activity.xml (renamed from tests/HwAccelerationTest/res/layout/image_filter_activity.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/labels.xml (renamed from tests/HwAccelerationTest/res/layout/labels.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/list_activity.xml (renamed from tests/HwAccelerationTest/res/layout/list_activity.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/pen_stylus.xml (renamed from tests/HwAccelerationTest/res/layout/pen_stylus.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/projection.xml (renamed from tests/HwAccelerationTest/res/layout/projection.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/projection_clipping.xml (renamed from tests/HwAccelerationTest/res/layout/projection_clipping.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml (renamed from tests/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/stack.xml (renamed from tests/HwAccelerationTest/res/layout/stack.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/stack_item.xml (renamed from tests/HwAccelerationTest/res/layout/stack_item.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/stretch_layout.xml (renamed from tests/HwAccelerationTest/res/layout/stretch_layout.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/text_fade.xml (renamed from tests/HwAccelerationTest/res/layout/text_fade.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/text_large.xml (renamed from tests/HwAccelerationTest/res/layout/text_large.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/text_medium.xml (renamed from tests/HwAccelerationTest/res/layout/text_medium.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/text_small.xml (renamed from tests/HwAccelerationTest/res/layout/text_small.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/transforms_and_animations.xml (renamed from tests/HwAccelerationTest/res/layout/transforms_and_animations.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_layer_invalidation.xml (renamed from tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_layers.xml (renamed from tests/HwAccelerationTest/res/layout/view_layers.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_layers_3.xml (renamed from tests/HwAccelerationTest/res/layout/view_layers_3.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_layers_4.xml (renamed from tests/HwAccelerationTest/res/layout/view_layers_4.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_layers_5.xml (renamed from tests/HwAccelerationTest/res/layout/view_layers_5.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_properties.xml (renamed from tests/HwAccelerationTest/res/layout/view_properties.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/view_runtime_shader.xml (renamed from tests/HwAccelerationTest/res/layout/view_runtime_shader.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/widget.xml (renamed from tests/HwAccelerationTest/res/layout/widget.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/layout/z_ordering.xml (renamed from tests/HwAccelerationTest/res/layout/z_ordering.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/raw/colorgrid_video.mp4 (renamed from tests/HwAccelerationTest/res/raw/colorgrid_video.mp4)bin25216 -> 25216 bytes
-rw-r--r--tests/graphics/HwAccelerationTest/res/values/strings.xml (renamed from tests/HwAccelerationTest/res/values/strings.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/res/values/styles.xml (renamed from tests/HwAccelerationTest/res/values/styles.xml)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AdvancedBlendActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/AdvancedBlendActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AdvancedGradientsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/AdvancedGradientsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Alpha8BitmapActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/Alpha8BitmapActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AlphaLayersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/AlphaLayersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Animated3dActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/Animated3dActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AssetsAtlasActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/AssetsAtlasActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BackdropBlurActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BackdropBlurActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BigGradientActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BigGradientActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshLayerActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshLayerActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMutateActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMutateActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsAlphaActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsAlphaActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsRectActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsRectActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsSkewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsSkewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BlurActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/BlurActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CanvasTextureViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/CanvasTextureViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CirclePropActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/CirclePropActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClearActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ClearActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipOutlineActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ClipOutlineActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegion2Activity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion2Activity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegionActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegionActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorBitmapActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ColorBitmapActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColoredRectsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ColoredRectsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColoredShadowsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ColoredShadowsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CustomRenderer.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/CustomRenderer.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DatePicker.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/DatePicker.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DatePickerActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/DatePickerActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DisplayListLayersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/DisplayListLayersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/EdgeEffectStretchActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/EdgeEffectStretchActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/FramebufferBlendActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/FramebufferBlendActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/FrontBufferedLayer.kt (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/FrontBufferedLayer.kt)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GLDepthTestActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GLDepthTestActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GetBitmapActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GlyphCacheActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GlyphCacheActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasTextureViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasTextureViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HwTests.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/HwTests.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LabelsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/LabelsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LayersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/LayersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Lines2Activity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/Lines2Activity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LinesActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/LinesActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ListActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ListActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LooperAcceleration.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/LooperAcceleration.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MarqueeActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MarqueeActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MaxBitmapSizeActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MaxBitmapSizeActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MeshActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MeshActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MeshLargeActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MeshLargeActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MoreNinePatchesActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MoreNinePatchesActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MoreShadersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MoreShadersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MultiProducerActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MultiProducerActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MyLittleTextureView.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/MyLittleTextureView.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NinePatchesActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/NinePatchesActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/OpaqueActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/OpaqueActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PaintDrawFilterActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PaintDrawFilterActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathOffsetActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PathOffsetActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathOpsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PathOpsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PathsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PenStylusActivity.kt (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PenStylusActivity.kt)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PictureCaptureDemo.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PictureCaptureDemo.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PixelCopyWindow.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PixelCopyWindow.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PointsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PointsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ProjectionActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ProjectionActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ProjectionClippingActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ProjectionClippingActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/QuickRejectActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/QuickRejectActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RenderEffectShaderActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectShaderActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ResizeActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ResizeActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Rotate3dTextActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/Rotate3dTextActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RotationActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/RotationActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScaledPathsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ScaledPathsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScaledTextActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ScaledTextActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SimplePatchActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/SimplePatchActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SimplePathsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/SimplePathsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SingleFrameTextureViewTestActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/SingleFrameTextureViewTestActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SmallCircleActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/SmallCircleActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StackActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/StackActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SurfaceViewAlphaActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/SurfaceViewAlphaActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TJunctionActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TJunctionActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextFadeActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TextFadeActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextGammaActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TextGammaActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextOnPathActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TextOnPathActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ThinPatchesActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ThinPatchesActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TimeDialogActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TimeDialogActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Transform3dActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/Transform3dActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TransformsAndAnimationsActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TransformsAndAnimationsActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity3.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity3.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewPropertyAlphaActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ViewPropertyAlphaActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/XfermodeActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/XfermodeActivity.java)0
-rw-r--r--tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ZOrderingActivity.java (renamed from tests/HwAccelerationTest/src/com/android/test/hwui/ZOrderingActivity.java)0
-rw-r--r--tests/graphics/OWNERS (renamed from tests/HwAccelerationTest/OWNERS)2
-rw-r--r--tests/graphics/RenderThreadTest/Android.bp (renamed from tests/RenderThreadTest/Android.bp)0
-rw-r--r--tests/graphics/RenderThreadTest/AndroidManifest.xml (renamed from tests/RenderThreadTest/AndroidManifest.xml)0
-rw-r--r--tests/graphics/RenderThreadTest/res/drawable-hdpi/ic_launcher.png (renamed from tests/RenderThreadTest/res/drawable-hdpi/ic_launcher.png)bin9397 -> 9397 bytes
-rw-r--r--tests/graphics/RenderThreadTest/res/drawable-mdpi/ic_launcher.png (renamed from tests/RenderThreadTest/res/drawable-mdpi/ic_launcher.png)bin5237 -> 5237 bytes
-rw-r--r--tests/graphics/RenderThreadTest/res/drawable-xhdpi/ic_launcher.png (renamed from tests/RenderThreadTest/res/drawable-xhdpi/ic_launcher.png)bin14383 -> 14383 bytes
-rw-r--r--tests/graphics/RenderThreadTest/res/drawable-xhdpi/starry_night_bg.jpg (renamed from tests/RenderThreadTest/res/drawable-xhdpi/starry_night_bg.jpg)bin564084 -> 564084 bytes
-rw-r--r--tests/graphics/RenderThreadTest/res/layout/activity_main.xml (renamed from tests/RenderThreadTest/res/layout/activity_main.xml)0
-rw-r--r--tests/graphics/RenderThreadTest/res/layout/activity_sub.xml (renamed from tests/RenderThreadTest/res/layout/activity_sub.xml)0
-rw-r--r--tests/graphics/RenderThreadTest/res/layout/item_layout.xml (renamed from tests/RenderThreadTest/res/layout/item_layout.xml)0
-rw-r--r--tests/graphics/RenderThreadTest/res/values/strings.xml (renamed from tests/RenderThreadTest/res/values/strings.xml)0
-rw-r--r--tests/graphics/RenderThreadTest/res/values/styles.xml (renamed from tests/RenderThreadTest/res/values/styles.xml)0
-rw-r--r--tests/graphics/RenderThreadTest/src/com/example/renderthread/MainActivity.java (renamed from tests/RenderThreadTest/src/com/example/renderthread/MainActivity.java)0
-rw-r--r--tests/graphics/RenderThreadTest/src/com/example/renderthread/SubActivity.java (renamed from tests/RenderThreadTest/src/com/example/renderthread/SubActivity.java)0
-rw-r--r--tests/graphics/SilkFX/Android.bp (renamed from tests/SilkFX/Android.bp)0
-rw-r--r--tests/graphics/SilkFX/AndroidManifest.xml (renamed from tests/SilkFX/AndroidManifest.xml)0
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/city_night.jpg (renamed from tests/SilkFX/assets/gainmaps/city_night.jpg)bin2995396 -> 2995396 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/desert_palms.jpg (renamed from tests/SilkFX/assets/gainmaps/desert_palms.jpg)bin3859886 -> 3859886 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/desert_sunset.jpg (renamed from tests/SilkFX/assets/gainmaps/desert_sunset.jpg)bin2577663 -> 2577663 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/desert_wanda.jpg (renamed from tests/SilkFX/assets/gainmaps/desert_wanda.jpg)bin1925203 -> 1925203 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/fountain_night.jpg (renamed from tests/SilkFX/assets/gainmaps/fountain_night.jpg)bin3579758 -> 3579758 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/grand_canyon.jpg (renamed from tests/SilkFX/assets/gainmaps/grand_canyon.jpg)bin4714624 -> 4714624 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/lamps.jpg (renamed from tests/SilkFX/assets/gainmaps/lamps.jpg)bin1645109 -> 1645109 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/mountain_lake.jpg (renamed from tests/SilkFX/assets/gainmaps/mountain_lake.jpg)bin3242535 -> 3242535 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/mountains.jpg (renamed from tests/SilkFX/assets/gainmaps/mountains.jpg)bin4936427 -> 4936427 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/sunflower.jpg (renamed from tests/SilkFX/assets/gainmaps/sunflower.jpg)bin2525581 -> 2525581 bytes
-rw-r--r--tests/graphics/SilkFX/assets/gainmaps/train_station_night.jpg (renamed from tests/SilkFX/assets/gainmaps/train_station_night.jpg)bin3281254 -> 3281254 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-hdpi/background1.jpeg (renamed from tests/SilkFX/res/drawable-hdpi/background1.jpeg)bin200459 -> 200459 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-hdpi/background2.jpeg (renamed from tests/SilkFX/res/drawable-hdpi/background2.jpeg)bin110703 -> 110703 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-hdpi/background3.jpeg (renamed from tests/SilkFX/res/drawable-hdpi/background3.jpeg)bin318853 -> 318853 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-hdpi/noise.png (renamed from tests/SilkFX/res/drawable-hdpi/noise.png)bin494875 -> 494875 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/blue_sweep_gradient.xml (renamed from tests/SilkFX/res/drawable-nodpi/blue_sweep_gradient.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/dark_gradient.xml (renamed from tests/SilkFX/res/drawable-nodpi/dark_gradient.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/dark_notification.png (renamed from tests/SilkFX/res/drawable-nodpi/dark_notification.png)bin42263 -> 42263 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/green_sweep_gradient.xml (renamed from tests/SilkFX/res/drawable-nodpi/green_sweep_gradient.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/grey_sweep_gradient.xml (renamed from tests/SilkFX/res/drawable-nodpi/grey_sweep_gradient.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/light_gradient.xml (renamed from tests/SilkFX/res/drawable-nodpi/light_gradient.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/light_notification.png (renamed from tests/SilkFX/res/drawable-nodpi/light_notification.png)bin37096 -> 37096 bytes
-rw-r--r--tests/graphics/SilkFX/res/drawable-nodpi/red_sweep_gradient.xml (renamed from tests/SilkFX/res/drawable-nodpi/red_sweep_gradient.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable/background_blur_drawable.xml (renamed from tests/SilkFX/res/drawable/background_blur_drawable.xml)0
-rw-r--r--tests/graphics/SilkFX/res/drawable/blur_activity_background_drawable_white.xml (renamed from tests/SilkFX/res/drawable/blur_activity_background_drawable_white.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout-television/activity_glass.xml (renamed from tests/SilkFX/res/layout-television/activity_glass.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/activity_background_blur.xml (renamed from tests/SilkFX/res/layout/activity_background_blur.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/activity_glass.xml (renamed from tests/SilkFX/res/layout/activity_glass.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/bling_notifications.xml (renamed from tests/SilkFX/res/layout/bling_notifications.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/color_grid.xml (renamed from tests/SilkFX/res/layout/color_grid.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/color_mode_controls.xml (renamed from tests/SilkFX/res/layout/color_mode_controls.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/common_base.xml (renamed from tests/SilkFX/res/layout/common_base.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/gainmap_decode_test.xml (renamed from tests/SilkFX/res/layout/gainmap_decode_test.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/gainmap_image.xml (renamed from tests/SilkFX/res/layout/gainmap_image.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/gainmap_metadata.xml (renamed from tests/SilkFX/res/layout/gainmap_metadata.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/gainmap_transform_test.xml (renamed from tests/SilkFX/res/layout/gainmap_transform_test.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/gradient_sweep.xml (renamed from tests/SilkFX/res/layout/gradient_sweep.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/hdr_glows.xml (renamed from tests/SilkFX/res/layout/hdr_glows.xml)0
-rw-r--r--tests/graphics/SilkFX/res/layout/hdr_image_viewer.xml (renamed from tests/SilkFX/res/layout/hdr_image_viewer.xml)0
-rw-r--r--tests/graphics/SilkFX/res/values/style.xml (renamed from tests/SilkFX/res/values/style.xml)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/Main.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/Main.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/app/BaseDemoActivity.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/app/BaseDemoActivity.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/app/CommonDemoActivity.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/app/CommonDemoActivity.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/app/HdrImageViewer.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/app/HdrImageViewer.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/app/WindowObserver.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/app/WindowObserver.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/common/BaseDrawingView.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/common/BaseDrawingView.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/common/HDRIndicator.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/common/HDRIndicator.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/BlingyNotification.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/BlingyNotification.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/ColorGrid.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/ColorGrid.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapDecodeTest.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapDecodeTest.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapImage.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapImage.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapMetadataEditor.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapMetadataEditor.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapTransformsTest.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapTransformsTest.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GlowActivity.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/GlowActivity.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GlowingCard.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/GlowingCard.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/RadialGlow.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/hdr/RadialGlow.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/materials/BackgroundBlurActivity.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/materials/BackgroundBlurActivity.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/materials/GlassActivity.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/materials/GlassActivity.kt)0
-rw-r--r--tests/graphics/SilkFX/src/com/android/test/silkfx/materials/GlassView.kt (renamed from tests/SilkFX/src/com/android/test/silkfx/materials/GlassView.kt)0
-rw-r--r--tests/graphics/VectorDrawableTest/Android.bp (renamed from tests/VectorDrawableTest/Android.bp)0
-rw-r--r--tests/graphics/VectorDrawableTest/AndroidManifest.xml (renamed from tests/VectorDrawableTest/AndroidManifest.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/OWNERS (renamed from tests/VectorDrawableTest/OWNERS)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/alpha_animation_progress_bar.xml (renamed from tests/VectorDrawableTest/res/anim/alpha_animation_progress_bar.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_favorite.xml (renamed from tests/VectorDrawableTest/res/anim/animation_favorite.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_favorite02.xml (renamed from tests/VectorDrawableTest/res/anim/animation_favorite02.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_grouping_1_01.xml (renamed from tests/VectorDrawableTest/res/anim/animation_grouping_1_01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_grouping_1_02.xml (renamed from tests/VectorDrawableTest/res/anim/animation_grouping_1_02.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_scale.xml (renamed from tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_scale.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_translate.xml (renamed from tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_translate.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_scale.xml (renamed from tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_scale.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_translate.xml (renamed from tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_translate.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/blink.xml (renamed from tests/VectorDrawableTest/res/anim/blink.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_fill_outlines.xml (renamed from tests/VectorDrawableTest/res/anim/ic_hourglass_animation_fill_outlines.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_hourglass_frame.xml (renamed from tests/VectorDrawableTest/res/anim/ic_hourglass_animation_hourglass_frame.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_mask_1.xml (renamed from tests/VectorDrawableTest/res/anim/ic_hourglass_animation_mask_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_arrows_1.xml (renamed from tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_arrows_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_1.xml (renamed from tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_2.xml (renamed from tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_2.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_cross_1.xml (renamed from tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_cross_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_ic_signal_airplane.xml (renamed from tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_ic_signal_airplane.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_mask_2.xml (renamed from tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_mask_2.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_path_1_1.xml (renamed from tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_path_1_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation01.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation02.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation02.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation03.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation03.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation04.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation04.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation05.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation05.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation06.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation06.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/anim/trim_path_animation_progress_bar.xml (renamed from tests/VectorDrawableTest/res/anim/trim_path_animation_progress_bar.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_linear.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_linear_item.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_radial.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_sweep.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_sweep_item.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_long.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml (renamed from tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/stroke_gradient.xml (renamed from tests/VectorDrawableTest/res/color/stroke_gradient.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/stroke_gradient_clamp.xml (renamed from tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item.xml (renamed from tests/VectorDrawableTest/res/color/stroke_gradient_item.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_alpha.xml (renamed from tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml (renamed from tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml (renamed from tests/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/vector_icon_fill_state_list.xml (renamed from tests/VectorDrawableTest/res/color/vector_icon_fill_state_list.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/vector_icon_fill_state_list_simple.xml (renamed from tests/VectorDrawableTest/res/color/vector_icon_fill_state_list_simple.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/vector_icon_stroke_state_list.xml (renamed from tests/VectorDrawableTest/res/color/vector_icon_stroke_state_list.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/color/vector_icon_stroke_state_list_simple.xml (renamed from tests/VectorDrawableTest/res/color/vector_icon_stroke_state_list_simple.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable-hdpi/icon.png (renamed from tests/VectorDrawableTest/res/drawable-hdpi/icon.png)bin5141 -> 5141 bytes
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable-nodpi/bitmap_drawable01.jpg (renamed from tests/VectorDrawableTest/res/drawable-nodpi/bitmap_drawable01.jpg)bin3304 -> 3304 bytes
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon.xml (renamed from tests/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon_animated.xml (renamed from tests/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon_animated.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animation_drawable_vector.xml (renamed from tests/VectorDrawableTest/res/drawable/animation_drawable_vector.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable01.xml (renamed from tests/VectorDrawableTest/res/drawable/animation_vector_drawable01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable_favorite.xml (renamed from tests/VectorDrawableTest/res/drawable/animation_vector_drawable_favorite.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable_grouping_1.xml (renamed from tests/VectorDrawableTest/res/drawable/animation_vector_drawable_grouping_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animation_vector_linear_progress_bar.xml (renamed from tests/VectorDrawableTest/res/drawable/animation_vector_linear_progress_bar.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/animation_vector_progress_bar.xml (renamed from tests/VectorDrawableTest/res/drawable/animation_vector_progress_bar.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/btn_radio_on_to_off_bundle.xml (renamed from tests/VectorDrawableTest/res/drawable/btn_radio_on_to_off_bundle.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/ic_hourglass.xml (renamed from tests/VectorDrawableTest/res/drawable/ic_hourglass.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/ic_hourglass_animation.xml (renamed from tests/VectorDrawableTest/res/drawable/ic_hourglass_animation.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2.xml (renamed from tests/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2_animation.xml (renamed from tests/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2_animation.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/ic_signal_airplane_v2.xml (renamed from tests/VectorDrawableTest/res/drawable/ic_signal_airplane_v2.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/ic_signal_airplane_v2_animation.xml (renamed from tests/VectorDrawableTest/res/drawable/ic_signal_airplane_v2_animation.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/icon.png (renamed from tests/VectorDrawableTest/res/drawable/icon.png)bin3133 -> 3133 bytes
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_drawable04.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_drawable04.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_drawable04_false.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_drawable04_false.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable01.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable01_false.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable01_false.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable02.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable02.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable02_false.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable02_false.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable03.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable03.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable03_false.xml (renamed from tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable03_false.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable01.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable02.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable02.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable03.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable03.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable04.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable04.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable05.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable05.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable06.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable06.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable07.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable07.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable08.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable08.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable09.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable09.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable10.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable10.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable11.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable11.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable12.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable12.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable13.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable13.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable14.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable14.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable15.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable15.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable16.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable16.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable17.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable17.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable18.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable18.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable19.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable19.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable20.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable20.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable21.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable21.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable22.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable22.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable23.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable23.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable24.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable24.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable25.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable25.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable26.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable26.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable27.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable27.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable28.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable28.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable29.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable29.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable30.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable30.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_favorite.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_favorite.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_group_clip.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_group_clip.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_grouping_1.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_grouping_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_linear_progress_bar.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_linear_progress_bar.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_progress_bar.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_progress_bar.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale0.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_scale0.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale1.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_scale1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale2.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_scale2.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale3.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_drawable_scale3.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_create.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_create.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_delete.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_delete.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_filltype_evenodd.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_filltype_evenodd.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_filltype_nonzero.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_filltype_nonzero.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_1.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_2.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_3.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_heart.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_heart.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_schedule.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_schedule.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_settings.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_settings.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_state_list_simple.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_state_list_simple.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_icon_state_list_theme.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_icon_state_list_theme.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_test01.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_test01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/drawable/vector_test02.xml (renamed from tests/VectorDrawableTest/res/drawable/vector_test02.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml (renamed from tests/VectorDrawableTest/res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/custom_path_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator_favorite.xml (renamed from tests/VectorDrawableTest/res/interpolator/custom_path_interpolator_favorite.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator_grouping_1_01.xml (renamed from tests/VectorDrawableTest/res/interpolator/custom_path_interpolator_grouping_1_01.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_rotation_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_rotation_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_scalex_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_scalex_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_1_rotation_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_1_rotation_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_2_pathdata_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_2_pathdata_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/ic_signal_airplane_v2_path_1_1_pathdata_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/ic_signal_airplane_v2_path_1_1_pathdata_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/trim_end_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/trim_end_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/interpolator/trim_start_interpolator.xml (renamed from tests/VectorDrawableTest/res/interpolator/trim_start_interpolator.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/layout/activity_animated_vector_drawable_attr.xml (renamed from tests/VectorDrawableTest/res/layout/activity_animated_vector_drawable_attr.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/values/attrs.xml (renamed from tests/VectorDrawableTest/res/values/attrs.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/values/colors.xml (renamed from tests/VectorDrawableTest/res/values/colors.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/values/strings.xml (renamed from tests/VectorDrawableTest/res/values/strings.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/res/values/styles.xml (renamed from tests/VectorDrawableTest/res/values/styles.xml)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedStateVectorDrawableTest.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedStateVectorDrawableTest.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableAttr.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableAttr.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableTest.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableTest.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/BitmapDrawableDupe.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/BitmapDrawableDupe.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/BoundsCheckTest.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/BoundsCheckTest.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/ScaleDrawableTests.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/ScaleDrawableTests.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorCheckbox.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorCheckbox.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawable01.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawable01.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableAnimation.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableAnimation.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableDupPerf.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableDupPerf.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableStaticPerf.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableStaticPerf.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableTest.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableTest.java)0
-rw-r--r--tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorPathChecking.java (renamed from tests/VectorDrawableTest/src/com/android/test/dynamic/VectorPathChecking.java)0
-rw-r--r--tools/aapt2/cmd/Link.cpp8
-rw-r--r--tools/aapt2/link/ManifestFixer.cpp2
-rw-r--r--tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/HexEncoding.java240
1198 files changed, 10948 insertions, 4450 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index f97100bf2e9b..83db4cbb7e43 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -1433,10 +1433,10 @@ public class JobSchedulerService extends com.android.server.SystemService
Slog.d(TAG, "Removing jobs for pkg " + pkgName + " at uid " + pkgUid);
}
synchronized (mLock) {
- // Exclude jobs scheduled on behalf of this app for now because SyncManager
+ // Exclude jobs scheduled on behalf of this app because SyncManager
// and other job proxy agents may not know to reschedule the job properly
// after force stop.
- // TODO(209852664): determine how to best handle syncs & other proxied jobs
+ // Proxied jobs will not be allowed to run if the source app is stopped.
cancelJobsForPackageAndUidLocked(pkgName, pkgUid,
/* includeSchedulingApp */ true, /* includeSourceApp */ false,
JobParameters.STOP_REASON_USER,
@@ -1448,7 +1448,9 @@ public class JobSchedulerService extends com.android.server.SystemService
}
};
- private String getPackageName(Intent intent) {
+ /** Returns the package name stored in the intent's data. */
+ @Nullable
+ public static String getPackageName(Intent intent) {
Uri uri = intent.getData();
String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
return pkg;
@@ -5365,6 +5367,14 @@ public class JobSchedulerService extends com.android.server.SystemService
}
pw.println();
+ pw.println("Aconfig flags:");
+ pw.increaseIndent();
+ pw.print(Flags.FLAG_THROW_ON_UNSUPPORTED_BIAS_USAGE,
+ Flags.throwOnUnsupportedBiasUsage());
+ pw.println();
+ pw.decreaseIndent();
+ pw.println();
+
for (int i = mJobRestrictions.size() - 1; i >= 0; i--) {
mJobRestrictions.get(i).dumpConstants(pw);
}
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java
index 293088d9236f..c14efae3fa62 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerShellCommand.java
@@ -58,6 +58,8 @@ public final class JobSchedulerShellCommand extends BasicShellCommandHandler {
return cancelJob(pw);
case "monitor-battery":
return monitorBattery(pw);
+ case "get-aconfig-flag-state":
+ return getAconfigFlagState(pw);
case "get-battery-seq":
return getBatterySeq(pw);
case "get-battery-charging":
@@ -336,6 +338,28 @@ public final class JobSchedulerShellCommand extends BasicShellCommandHandler {
return 0;
}
+ private int getAconfigFlagState(PrintWriter pw) throws Exception {
+ checkPermission("get aconfig flag state");
+
+ final String flagName = getNextArgRequired();
+
+ switch (flagName) {
+ case android.app.job.Flags.FLAG_JOB_DEBUG_INFO_APIS:
+ pw.println(android.app.job.Flags.jobDebugInfoApis());
+ break;
+ case android.app.job.Flags.FLAG_ENFORCE_MINIMUM_TIME_WINDOWS:
+ pw.println(android.app.job.Flags.enforceMinimumTimeWindows());
+ break;
+ case com.android.server.job.Flags.FLAG_THROW_ON_UNSUPPORTED_BIAS_USAGE:
+ pw.println(com.android.server.job.Flags.throwOnUnsupportedBiasUsage());
+ break;
+ default:
+ pw.println("Unknown flag: " + flagName);
+ break;
+ }
+ return 0;
+ }
+
private int getBatterySeq(PrintWriter pw) {
int seq = mInternal.getBatterySeq();
pw.println(seq);
@@ -693,6 +717,9 @@ public final class JobSchedulerShellCommand extends BasicShellCommandHandler {
pw.println(" monitor-battery [on|off]");
pw.println(" Control monitoring of all battery changes. Off by default. Turning");
pw.println(" on makes get-battery-seq useful.");
+ pw.println(" get-aconfig-flag-state FULL_FLAG_NAME");
+ pw.println(" Return the state of the specified aconfig flag, if known. The flag name");
+ pw.println(" must be fully qualified.");
pw.println(" get-battery-seq");
pw.println(" Return the last battery update sequence number that was received.");
pw.println(" get-battery-charging");
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java
index cd3ba6b9e13e..73a80b1ac4dd 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java
@@ -17,18 +17,26 @@
package com.android.server.job.controllers;
import static com.android.server.job.JobSchedulerService.NEVER_INDEX;
+import static com.android.server.job.JobSchedulerService.getPackageName;
import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManagerInternal;
import android.os.SystemClock;
import android.os.UserHandle;
import android.util.ArraySet;
import android.util.IndentingPrintWriter;
import android.util.Log;
import android.util.Slog;
+import android.util.SparseArrayMap;
import android.util.proto.ProtoOutputStream;
+import com.android.internal.annotations.GuardedBy;
import com.android.server.AppStateTracker;
import com.android.server.AppStateTrackerImpl;
import com.android.server.AppStateTrackerImpl.Listener;
@@ -50,6 +58,8 @@ import java.util.function.Predicate;
*
* - the uid-active boolean state expressed by the AppStateTracker. Jobs in 'active'
* uids are inherently eligible to run jobs regardless of the uid's standby bucket.
+ *
+ * - the app's stopped state
*/
public final class BackgroundJobsController extends StateController {
private static final String TAG = "JobScheduler.Background";
@@ -63,9 +73,48 @@ public final class BackgroundJobsController extends StateController {
private final ActivityManagerInternal mActivityManagerInternal;
private final AppStateTrackerImpl mAppStateTracker;
+ private final PackageManagerInternal mPackageManagerInternal;
+
+ @GuardedBy("mLock")
+ private final SparseArrayMap<String, Boolean> mPackageStoppedState = new SparseArrayMap<>();
private final UpdateJobFunctor mUpdateJobFunctor = new UpdateJobFunctor();
+ private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String pkgName = getPackageName(intent);
+ final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+ final String action = intent.getAction();
+ if (pkgUid == -1) {
+ Slog.e(TAG, "Didn't get package UID in intent (" + action + ")");
+ return;
+ }
+
+ if (DEBUG) {
+ Slog.d(TAG, "Got " + action + " for " + pkgUid + "/" + pkgName);
+ }
+
+ switch (action) {
+ case Intent.ACTION_PACKAGE_RESTARTED: {
+ synchronized (mLock) {
+ mPackageStoppedState.add(pkgUid, pkgName, Boolean.TRUE);
+ updateJobRestrictionsForUidLocked(pkgUid, false);
+ }
+ }
+ break;
+
+ case Intent.ACTION_PACKAGE_UNSTOPPED: {
+ synchronized (mLock) {
+ mPackageStoppedState.add(pkgUid, pkgName, Boolean.FALSE);
+ updateJobRestrictionsLocked(pkgUid, UNKNOWN);
+ }
+ }
+ break;
+ }
+ }
+ };
+
public BackgroundJobsController(JobSchedulerService service) {
super(service);
@@ -73,23 +122,34 @@ public final class BackgroundJobsController extends StateController {
LocalServices.getService(ActivityManagerInternal.class));
mAppStateTracker = (AppStateTrackerImpl) Objects.requireNonNull(
LocalServices.getService(AppStateTracker.class));
+ mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
}
@Override
+ @GuardedBy("mLock")
public void startTrackingLocked() {
mAppStateTracker.addListener(mForceAppStandbyListener);
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
+ filter.addAction(Intent.ACTION_PACKAGE_UNSTOPPED);
+ filter.addDataScheme("package");
+ mContext.registerReceiverAsUser(
+ mBroadcastReceiver, UserHandle.ALL, filter, null, null);
}
@Override
+ @GuardedBy("mLock")
public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) {
updateSingleJobRestrictionLocked(jobStatus, sElapsedRealtimeClock.millis(), UNKNOWN);
}
@Override
+ @GuardedBy("mLock")
public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
}
@Override
+ @GuardedBy("mLock")
public void evaluateStateLocked(JobStatus jobStatus) {
if (jobStatus.isRequestedExpeditedJob()) {
// Only requested-EJs could have their run-in-bg constraint change outside of something
@@ -99,11 +159,48 @@ public final class BackgroundJobsController extends StateController {
}
@Override
+ @GuardedBy("mLock")
+ public void onAppRemovedLocked(String packageName, int uid) {
+ mPackageStoppedState.delete(uid, packageName);
+ }
+
+ @Override
+ @GuardedBy("mLock")
+ public void onUserRemovedLocked(int userId) {
+ for (int u = mPackageStoppedState.numMaps() - 1; u >= 0; --u) {
+ final int uid = mPackageStoppedState.keyAt(u);
+ if (UserHandle.getUserId(uid) == userId) {
+ mPackageStoppedState.deleteAt(u);
+ }
+ }
+ }
+
+ @Override
+ @GuardedBy("mLock")
public void dumpControllerStateLocked(final IndentingPrintWriter pw,
final Predicate<JobStatus> predicate) {
+ pw.println("Aconfig flags:");
+ pw.increaseIndent();
+ pw.print(android.content.pm.Flags.FLAG_STAY_STOPPED,
+ android.content.pm.Flags.stayStopped());
+ pw.println();
+ pw.decreaseIndent();
+ pw.println();
+
mAppStateTracker.dump(pw);
pw.println();
+ pw.println("Stopped packages:");
+ pw.increaseIndent();
+ mPackageStoppedState.forEach((uid, pkgName, isStopped) -> {
+ pw.print(uid);
+ pw.print(":");
+ pw.print(pkgName);
+ pw.print("=");
+ pw.println(isStopped);
+ });
+ pw.println();
+
mService.getJobStore().forEachJob(predicate, (jobStatus) -> {
final int uid = jobStatus.getSourceUid();
final String sourcePkg = jobStatus.getSourcePackageName();
@@ -133,6 +230,7 @@ public final class BackgroundJobsController extends StateController {
}
@Override
+ @GuardedBy("mLock")
public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId,
Predicate<JobStatus> predicate) {
final long token = proto.start(fieldId);
@@ -170,14 +268,17 @@ public final class BackgroundJobsController extends StateController {
proto.end(token);
}
+ @GuardedBy("mLock")
private void updateAllJobRestrictionsLocked() {
updateJobRestrictionsLocked(/*filterUid=*/ -1, UNKNOWN);
}
+ @GuardedBy("mLock")
private void updateJobRestrictionsForUidLocked(int uid, boolean isActive) {
updateJobRestrictionsLocked(uid, (isActive) ? KNOWN_ACTIVE : KNOWN_INACTIVE);
}
+ @GuardedBy("mLock")
private void updateJobRestrictionsLocked(int filterUid, int newActiveState) {
mUpdateJobFunctor.prepare(newActiveState);
@@ -205,14 +306,36 @@ public final class BackgroundJobsController extends StateController {
}
}
+ @GuardedBy("mLock")
+ private boolean isPackageStoppedLocked(String packageName, int uid) {
+ if (mPackageStoppedState.contains(uid, packageName)) {
+ return mPackageStoppedState.get(uid, packageName);
+ }
+ final boolean isStopped = mPackageManagerInternal.isPackageStopped(packageName, uid);
+ mPackageStoppedState.add(uid, packageName, isStopped);
+ return isStopped;
+ }
+
+ @GuardedBy("mLock")
boolean updateSingleJobRestrictionLocked(JobStatus jobStatus, final long nowElapsed,
int activeState) {
final int uid = jobStatus.getSourceUid();
final String packageName = jobStatus.getSourcePackageName();
- final boolean isUserBgRestricted =
- !mActivityManagerInternal.isBgAutoRestrictedBucketFeatureFlagEnabled()
- && !mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(uid, packageName);
+ final boolean isSourcePkgStopped =
+ isPackageStoppedLocked(jobStatus.getSourcePackageName(), jobStatus.getSourceUid());
+ final boolean isCallingPkgStopped;
+ if (!jobStatus.isProxyJob()) {
+ isCallingPkgStopped = isSourcePkgStopped;
+ } else {
+ isCallingPkgStopped =
+ isPackageStoppedLocked(jobStatus.getCallingPackageName(), jobStatus.getUid());
+ }
+ final boolean isStopped = android.content.pm.Flags.stayStopped()
+ && (isCallingPkgStopped || isSourcePkgStopped);
+ final boolean isUserBgRestricted = isStopped
+ || (!mActivityManagerInternal.isBgAutoRestrictedBucketFeatureFlagEnabled()
+ && !mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(uid, packageName));
// If a job started with the foreground flag, it'll cause the UID to stay active
// and thus cause areJobsRestricted() to always return false, so if
// areJobsRestricted() returns false and the app is BG restricted and not TOP,
@@ -233,7 +356,8 @@ public final class BackgroundJobsController extends StateController {
&& isUserBgRestricted
&& mService.getUidProcState(uid)
> ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
- final boolean canRun = !shouldStopImmediately
+ // Don't let jobs (including proxied jobs) run if the app is in the stopped state.
+ final boolean canRun = !isStopped && !shouldStopImmediately
&& !mAppStateTracker.areJobsRestricted(
uid, packageName, jobStatus.canRunInBatterySaver());
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 b74806494a60..d1f575ef40c8 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
@@ -1102,6 +1102,12 @@ public final class JobStatus {
return job.getService();
}
+ /** Return the package name of the app that scheduled the job. */
+ public String getCallingPackageName() {
+ return job.getService().getPackageName();
+ }
+
+ /** Return the package name of the app on whose behalf the job was scheduled. */
public String getSourcePackageName() {
return sourcePackageName;
}
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index dc39beae5cf4..f5b9b171b9a0 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -251,6 +251,7 @@ package android {
field public static final String OBSERVE_SENSOR_PRIVACY = "android.permission.OBSERVE_SENSOR_PRIVACY";
field public static final String OPEN_ACCESSIBILITY_DETAILS_SETTINGS = "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS";
field public static final String OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD = "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD";
+ field @FlaggedApi("com.android.input.flags.override_key_behavior_permission_apis") public static final String OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW = "android.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW";
field public static final String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
field public static final String PACKET_KEEPALIVE_OFFLOAD = "android.permission.PACKET_KEEPALIVE_OFFLOAD";
field public static final String PEERS_MAC_ADDRESS = "android.permission.PEERS_MAC_ADDRESS";
@@ -13040,6 +13041,7 @@ package android.service.voice {
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.HotwordDetector createHotwordDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.HotwordDetector.Callback);
method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.VisualQueryDetector createVisualQueryDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.VisualQueryDetector.Callback);
+ method @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public void setIsReceiveSandboxedTrainingDataAllowed(boolean);
}
}
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 71a05a909a09..98a78cfaa38c 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1162,6 +1162,13 @@ package android.content.pm {
field public static final int SHOW_IN_LAUNCHER_WITH_PARENT = 0; // 0x0
}
+ public static final class UserProperties.Builder {
+ ctor public UserProperties.Builder();
+ method @NonNull public android.content.pm.UserProperties build();
+ method @NonNull public android.content.pm.UserProperties.Builder setShowInQuietMode(int);
+ method @NonNull public android.content.pm.UserProperties.Builder setShowInSharingSurfaces(int);
+ }
+
}
package android.content.res {
@@ -1597,6 +1604,10 @@ package android.hardware.display {
method public void restoreDozeSettings(int);
}
+ public final class ColorDisplayManager {
+ method @FlaggedApi("android.app.modes_api") @RequiresPermission(android.Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS) public boolean isSaturationActivated();
+ }
+
public final class DisplayManager {
method public boolean areUserDisabledHdrTypesAllowed();
method @RequiresPermission(android.Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE) public void clearGlobalUserPreferredDisplayMode();
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index 6aad1682466d..8b8576a0b25e 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -683,10 +683,11 @@ public class KeyguardManager {
* <p>
* Specifically, this returns {@code true} if at least one of the following is true:
* <ul>
- * <li>The {@link Context}'s user has a secure lock screen. A full user has a secure lock
- * screen if its lock screen is set to PIN, pattern, or password, as opposed to swipe or none.
- * A profile that uses a unified challenge is considered to have a secure lock screen if and
- * only if its parent user has a secure lock screen.</li>
+ * <li>The {@link Context}'s user has a secure lock screen. A full user or a profile that uses
+ * a separate challenge has a secure lock screen if its lock screen is set to PIN, pattern, or
+ * password, as opposed to swipe or none. A profile that uses a unified challenge is
+ * considered to have a secure lock screen if and only if its parent user has a secure lock
+ * screen.</li>
* <li>At least one SIM card is currently locked and requires a PIN.</li>
* </ul>
* <p>
@@ -733,8 +734,15 @@ public class KeyguardManager {
* <p>
* For a user that is not the current user but can be switched to (usually this means "another
* full user"), and that has a PIN, pattern, or password, the device is always considered
- * locked. For a profile with a unified challenge, the device is considered locked if and only
- * if the device is locked for the parent user.
+ * locked.
+ * <p>
+ * For a profile with a unified challenge, the device locked state is the same as that of the
+ * parent user.
+ * <p>
+ * For a profile with a separate challenge, the device becomes unlocked when the profile's PIN,
+ * pattern, password, or biometric is verified. It becomes locked when the parent user becomes
+ * locked, the screen turns off, the device reboots, the device policy controller locks the
+ * profile, or the timeout set by the device policy controller expires.
*
* @return {@code true} if the device is currently locked for the user
* @see #isKeyguardLocked()
@@ -770,9 +778,10 @@ public class KeyguardManager {
* Returns whether the user has a secure lock screen.
* <p>
* This returns {@code true} if the {@link Context}'s user has a secure lock screen. A full user
- * has a secure lock screen if its lock screen is set to PIN, pattern, or password, as opposed
- * to swipe or none. A profile that uses a unified challenge is considered to have a secure lock
- * screen if and only if its parent user has a secure lock screen.
+ * or a profile that uses a separate challenge has a secure lock screen if its lock screen is
+ * set to PIN, pattern, or password, as opposed to swipe or none. A profile that uses a unified
+ * challenge is considered to have a secure lock screen if and only if its parent user has a
+ * secure lock screen.
* <p>
* This method does not consider whether the lock screen is currently showing or not.
* <p>
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index c003540100ae..013bcddbb7f3 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -9209,12 +9209,6 @@ public class Notification implements Parcelable
* You can opt-out of this behavior by using {@link Notification.Builder#setColorized(boolean)}.
* <p>
*
- * <p>
- * Starting at {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM Android V} the
- * {@link Notification#FLAG_NO_CLEAR NO_CLEAR flag} will be set for valid MediaStyle
- * notifications.
- * <p>
- *
* To use this style with your Notification, feed it to
* {@link Notification.Builder#setStyle(android.app.Notification.Style)} like so:
* <pre class="prettyprint">
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index d660078a9ae7..820ff3e308e4 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -21,6 +21,8 @@ import static android.Manifest.permission.READ_WALLPAPER_INTERNAL;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.ParcelFileDescriptor.MODE_READ_ONLY;
+import static com.android.window.flags.Flags.multiCrop;
+
import android.annotation.FloatRange;
import android.annotation.IntDef;
import android.annotation.NonNull;
@@ -857,8 +859,7 @@ public class WallpaperManager {
*/
public static boolean isMultiCropEnabled() {
if (sGlobals == null) {
- sIsMultiCropEnabled = SystemProperties.getBoolean(
- "persist.wm.debug.wallpaper_multi_crop", false);
+ sIsMultiCropEnabled = multiCrop();
}
if (sIsMultiCropEnabled == null) {
try {
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 5c6c49a18caa..23a5d4d20a2e 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2805,7 +2805,7 @@ public class Intent implements Parcelable, Cloneable {
* and the package in the stopped state cannot self-start for any reason unless there's an
* explicit request to start a component in the package. The {@link #ACTION_PACKAGE_UNSTOPPED}
* broadcast is sent when such an explicit process start occurs and the package is taken
- * out of the stopped state.
+ * out of the stopped state. The data contains the name of the package.
* </p>
* <ul>
* <li> {@link #EXTRA_UID} containing the integer uid assigned to the package.
diff --git a/core/java/android/content/pm/UserProperties.java b/core/java/android/content/pm/UserProperties.java
index 445ca0c98416..56e8291f25e9 100644
--- a/core/java/android/content/pm/UserProperties.java
+++ b/core/java/android/content/pm/UserProperties.java
@@ -1076,6 +1076,8 @@ public final class UserProperties implements Parcelable {
* Intended for building default values (and so all properties are present in the built object).
* @hide
*/
+ @TestApi
+ @SuppressLint("UnflaggedApi") // b/306636213
public static final class Builder {
// UserProperties fields and their default values.
private @ShowInLauncher int mShowInLauncher = SHOW_IN_LAUNCHER_WITH_PARENT;
@@ -1099,54 +1101,82 @@ public final class UserProperties implements Parcelable {
private boolean mDeleteAppWithParent = false;
private boolean mAlwaysVisible = false;
+ /**
+ * @hide
+ */
+ @SuppressLint("UnflaggedApi") // b/306636213
+ @TestApi
+ public Builder() {}
+
+ /** @hide */
public Builder setShowInLauncher(@ShowInLauncher int showInLauncher) {
mShowInLauncher = showInLauncher;
return this;
}
+ /** @hide */
public Builder setStartWithParent(boolean startWithParent) {
mStartWithParent = startWithParent;
return this;
}
- /** Sets the value for {@link #mShowInSettings} */
+ /** Sets the value for {@link #mShowInSettings}
+ * @hide
+ */
public Builder setShowInSettings(@ShowInSettings int showInSettings) {
mShowInSettings = showInSettings;
return this;
}
- /** Sets the value for {@link #mShowInQuietMode} */
+ /** Sets the value for {@link #mShowInQuietMode}
+ * @hide
+ */
+ @TestApi
+ @SuppressLint("UnflaggedApi") // b/306636213
+ @NonNull
public Builder setShowInQuietMode(@ShowInQuietMode int showInQuietMode) {
mShowInQuietMode = showInQuietMode;
return this;
}
- /** Sets the value for {@link #mShowInSharingSurfaces}. */
+ /** Sets the value for {@link #mShowInSharingSurfaces}.
+ * @hide
+ */
+ @TestApi
+ @SuppressLint("UnflaggedApi") // b/306636213
+ @NonNull
public Builder setShowInSharingSurfaces(@ShowInSharingSurfaces int showInSharingSurfaces) {
mShowInSharingSurfaces = showInSharingSurfaces;
return this;
}
- /** Sets the value for {@link #mInheritDevicePolicy}*/
+ /** Sets the value for {@link #mInheritDevicePolicy}
+ * @hide
+ */
public Builder setInheritDevicePolicy(
@InheritDevicePolicy int inheritRestrictionsDevicePolicy) {
mInheritDevicePolicy = inheritRestrictionsDevicePolicy;
return this;
}
+ /** @hide */
public Builder setUseParentsContacts(boolean useParentsContacts) {
mUseParentsContacts = useParentsContacts;
return this;
}
- /** Sets the value for {@link #mUpdateCrossProfileIntentFiltersOnOTA} */
+ /** Sets the value for {@link #mUpdateCrossProfileIntentFiltersOnOTA}
+ * @hide
+ */
public Builder setUpdateCrossProfileIntentFiltersOnOTA(boolean
updateCrossProfileIntentFiltersOnOTA) {
mUpdateCrossProfileIntentFiltersOnOTA = updateCrossProfileIntentFiltersOnOTA;
return this;
}
- /** Sets the value for {@link #mCrossProfileIntentFilterAccessControl} */
+ /** Sets the value for {@link #mCrossProfileIntentFilterAccessControl}
+ * @hide
+ */
public Builder setCrossProfileIntentFilterAccessControl(
@CrossProfileIntentFilterAccessControlLevel int
crossProfileIntentFilterAccessControl) {
@@ -1154,24 +1184,30 @@ public final class UserProperties implements Parcelable {
return this;
}
- /** Sets the value for {@link #mCrossProfileIntentResolutionStrategy} */
+ /** Sets the value for {@link #mCrossProfileIntentResolutionStrategy}
+ * @hide
+ */
public Builder setCrossProfileIntentResolutionStrategy(@CrossProfileIntentResolutionStrategy
int crossProfileIntentResolutionStrategy) {
mCrossProfileIntentResolutionStrategy = crossProfileIntentResolutionStrategy;
return this;
}
+ /** @hide */
public Builder setMediaSharedWithParent(boolean mediaSharedWithParent) {
mMediaSharedWithParent = mediaSharedWithParent;
return this;
}
+ /** @hide */
public Builder setCredentialShareableWithParent(boolean credentialShareableWithParent) {
mCredentialShareableWithParent = credentialShareableWithParent;
return this;
}
- /** Sets the value for {@link #mAuthAlwaysRequiredToDisableQuietMode} */
+ /** Sets the value for {@link #mAuthAlwaysRequiredToDisableQuietMode}
+ * @hide
+ */
public Builder setAuthAlwaysRequiredToDisableQuietMode(
boolean authAlwaysRequiredToDisableQuietMode) {
mAuthAlwaysRequiredToDisableQuietMode =
@@ -1179,19 +1215,28 @@ public final class UserProperties implements Parcelable {
return this;
}
- /** Sets the value for {@link #mDeleteAppWithParent}*/
+ /** Sets the value for {@link #mDeleteAppWithParent}
+ * @hide
+ */
public Builder setDeleteAppWithParent(boolean deleteAppWithParent) {
mDeleteAppWithParent = deleteAppWithParent;
return this;
}
- /** Sets the value for {@link #mAlwaysVisible}*/
+ /** Sets the value for {@link #mAlwaysVisible}
+ * @hide
+ */
public Builder setAlwaysVisible(boolean alwaysVisible) {
mAlwaysVisible = alwaysVisible;
return this;
}
- /** Builds a UserProperties object with *all* values populated. */
+ /** Builds a UserProperties object with *all* values populated.
+ * @hide
+ */
+ @TestApi
+ @SuppressLint("UnflaggedApi") // b/306636213
+ @NonNull
public UserProperties build() {
return new UserProperties(
mShowInLauncher,
diff --git a/core/java/android/hardware/display/ColorDisplayManager.java b/core/java/android/hardware/display/ColorDisplayManager.java
index aafa7d520632..f927b8b52912 100644
--- a/core/java/android/hardware/display/ColorDisplayManager.java
+++ b/core/java/android/hardware/display/ColorDisplayManager.java
@@ -17,12 +17,14 @@
package android.hardware.display;
import android.Manifest;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
+import android.annotation.TestApi;
import android.content.ContentResolver;
import android.content.Context;
import android.metrics.LogMaker;
@@ -397,6 +399,8 @@ public final class ColorDisplayManager {
* @return {@code true} if the display is not at full saturation
* @hide
*/
+ @TestApi
+ @FlaggedApi(android.app.Flags.FLAG_MODES_API)
@RequiresPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
public boolean isSaturationActivated() {
return mManager.isSaturationActivated();
diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS
index 655debc84d1d..209a59583944 100644
--- a/core/java/android/os/OWNERS
+++ b/core/java/android/os/OWNERS
@@ -90,4 +90,5 @@ per-file PerformanceHintManager.java = file:/ADPF_OWNERS
# IThermal interfaces
per-file IThermal* = file:/THERMAL_OWNERS
-
+per-file CoolingDevice.java = file:/THERMAL_OWNERS
+per-file Temperature.java = file:/THERMAL_OWNERS
diff --git a/core/java/android/security/FileIntegrityManager.java b/core/java/android/security/FileIntegrityManager.java
index dae3202b2043..025aac962fb9 100644
--- a/core/java/android/security/FileIntegrityManager.java
+++ b/core/java/android/security/FileIntegrityManager.java
@@ -53,10 +53,10 @@ public final class FileIntegrityManager {
* verification, although the app APIs are only made available to apps in a later SDK version.
* Only when this method returns true, the other fs-verity APIs in the same class can succeed.
*
- * <p>The app may not need this method and just call the other APIs (i.e. {@link
- * #setupFsVerity(File)} and {@link #getFsVerityDigest(File)}) normally and handle any failure.
- * If some app feature really depends on fs-verity (e.g. protecting integrity of a large file
- * download), an early check of support status may avoid any cost if it is to fail late.
+ * <p>The app may not need this method and just call the other APIs normally and handle any
+ * failure. If some app feature really depends on fs-verity (e.g. protecting integrity of a
+ * large file download), an early check of support status may avoid any cost if it is to fail
+ * late.
*
* <p>Note: for historical reasons this is named {@code isApkVeritySupported()} instead of
* {@code isFsVeritySupported()}. It has also been available since API level 30, predating the
diff --git a/core/java/android/service/notification/DeviceEffectsApplier.java b/core/java/android/service/notification/DeviceEffectsApplier.java
new file mode 100644
index 000000000000..234ff4dd0852
--- /dev/null
+++ b/core/java/android/service/notification/DeviceEffectsApplier.java
@@ -0,0 +1,38 @@
+/*
+ * 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 android.service.notification;
+
+/**
+ * Responsible for making any service calls needed to apply the set of {@link ZenDeviceEffects} that
+ * make sense for the current platform.
+ * @hide
+ */
+public interface DeviceEffectsApplier {
+ /**
+ * Applies the {@link ZenDeviceEffects} to the device.
+ *
+ * <p>The supplied {@code effects} represents the "consolidated" device effects, i.e. the
+ * union of the effects of all the {@link ZenModeConfig.ZenRule} instances that are currently
+ * active. If no rules are active (or no active rules specify custom effects) then {@code
+ * effects} will be all-default (i.e. {@link ZenDeviceEffects#hasEffects} will return {@code
+ * false}.
+ *
+ * <p>This will be called whenever the set of consolidated effects changes (normally through
+ * the activation or deactivation of zen rules).
+ */
+ void apply(ZenDeviceEffects effects);
+}
diff --git a/core/java/android/service/notification/ZenDeviceEffects.java b/core/java/android/service/notification/ZenDeviceEffects.java
index db0b7ffa0913..0e82b6c2c7d7 100644
--- a/core/java/android/service/notification/ZenDeviceEffects.java
+++ b/core/java/android/service/notification/ZenDeviceEffects.java
@@ -18,6 +18,7 @@ package android.service.notification;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.Flags;
import android.os.Parcel;
import android.os.Parcelable;
@@ -359,6 +360,27 @@ public final class ZenDeviceEffects implements Parcelable {
return this;
}
+ /**
+ * Applies the effects that are {@code true} on the supplied {@link ZenDeviceEffects} to
+ * this builder (essentially logically-ORing the effect set).
+ * @hide
+ */
+ @NonNull
+ public Builder add(@Nullable ZenDeviceEffects effects) {
+ if (effects == null) return this;
+ if (effects.shouldDisplayGrayscale()) setShouldDisplayGrayscale(true);
+ if (effects.shouldSuppressAmbientDisplay()) setShouldSuppressAmbientDisplay(true);
+ if (effects.shouldDimWallpaper()) setShouldDimWallpaper(true);
+ if (effects.shouldUseNightMode()) setShouldUseNightMode(true);
+ if (effects.shouldDisableAutoBrightness()) setShouldDisableAutoBrightness(true);
+ if (effects.shouldDisableTapToWake()) setShouldDisableTapToWake(true);
+ if (effects.shouldDisableTiltToWake()) setShouldDisableTiltToWake(true);
+ if (effects.shouldDisableTouch()) setShouldDisableTouch(true);
+ if (effects.shouldMinimizeRadioUsage()) setShouldMinimizeRadioUsage(true);
+ if (effects.shouldMaximizeDoze()) setShouldMaximizeDoze(true);
+ return this;
+ }
+
/** Builds a {@link ZenDeviceEffects} object based on the builder's state. */
@NonNull
public ZenDeviceEffects build() {
diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java
index c716cd2e4a9c..fba09233e4f4 100644
--- a/core/java/android/service/voice/VoiceInteractionService.java
+++ b/core/java/android/service/voice/VoiceInteractionService.java
@@ -1024,21 +1024,31 @@ public class VoiceInteractionService extends Service {
}
}
- /** Set sandboxed detection training data egress op.
+ /**
+ * Allow/disallow receiving training data from trusted process.
*
- * <p> This method can be called by a preinstalled assistant to allow/disallow training data
- * egress from trusted process.
+ * <p> This method can be called by a preinstalled assistant to receive/stop receiving
+ * training data via {@link HotwordDetector.Callback#onTrainingData(HotwordTrainingData)}.
+ * These training data events are produced during sandboxed detection (in trusted process).
*
- * @return whether was able to update sandboxed detection op successfully.
- * @throws SecurityException if assistant is not a preinstalled assistant.
+ * @param allowed whether to allow/disallow receiving training data produced during
+ * sandboxed detection (from trusted process).
+ * @throws SecurityException if caller is not a preinstalled assistant or if caller is not the
+ * active assistant.
*
* @hide
*/
+ //TODO(b/315053245): Add mitigations to make API no-op once user has modified setting.
+ @SystemApi
@FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
- public boolean setSandboxedDetectionTrainingDataOp(int opMode) {
- Log.i(TAG, "Setting training data egress op-mode to " + opMode);
+ @RequiresPermission(Manifest.permission.MANAGE_HOTWORD_DETECTION)
+ public void setIsReceiveSandboxedTrainingDataAllowed(boolean allowed) {
+ Log.i(TAG, "setIsReceiveSandboxedTrainingDataAllowed to " + allowed);
+ if (mSystemService == null) {
+ throw new IllegalStateException("Not available until onReady() is called");
+ }
try {
- return mSystemService.setSandboxedDetectionTrainingDataOp(opMode);
+ mSystemService.setIsReceiveSandboxedTrainingDataAllowed(allowed);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/util/DayOfMonthCursor.java b/core/java/android/util/DayOfMonthCursor.java
index 393b98e324d3..ac5dc3a169c8 100644
--- a/core/java/android/util/DayOfMonthCursor.java
+++ b/core/java/android/util/DayOfMonthCursor.java
@@ -32,6 +32,7 @@ package android.util;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class DayOfMonthCursor extends MonthDisplayHelper {
private int mRow;
diff --git a/core/java/android/util/DumpableContainer.java b/core/java/android/util/DumpableContainer.java
index fef5acd42e4e..24640c974500 100644
--- a/core/java/android/util/DumpableContainer.java
+++ b/core/java/android/util/DumpableContainer.java
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
/**
* Represents a container that manages {@link Dumpable dumpables}.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface DumpableContainer {
/**
diff --git a/core/java/android/util/KeyValueListParser.java b/core/java/android/util/KeyValueListParser.java
index fbc66e6bda2a..783b2d63bcf3 100644
--- a/core/java/android/util/KeyValueListParser.java
+++ b/core/java/android/util/KeyValueListParser.java
@@ -28,6 +28,7 @@ import java.time.format.DateTimeParseException;
* can be used.
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class KeyValueListParser {
private final ArrayMap<String, String> mValues = new ArrayMap<>();
private final TextUtils.StringSplitter mSplitter;
diff --git a/core/java/android/util/LongArrayQueue.java b/core/java/android/util/LongArrayQueue.java
index 354f8df0a43d..b9752fe4d1cc 100644
--- a/core/java/android/util/LongArrayQueue.java
+++ b/core/java/android/util/LongArrayQueue.java
@@ -28,6 +28,7 @@ import java.util.NoSuchElementException;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LongArrayQueue {
private long[] mValues;
diff --git a/core/java/android/util/LongSparseLongArray.java b/core/java/android/util/LongSparseLongArray.java
index d4a012602f80..86268facbec0 100644
--- a/core/java/android/util/LongSparseLongArray.java
+++ b/core/java/android/util/LongSparseLongArray.java
@@ -46,6 +46,7 @@ import com.android.internal.util.Preconditions;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LongSparseLongArray implements Cloneable {
@UnsupportedAppUsage(maxTargetSdk = 28) // The type isn't even public.
private long[] mKeys;
diff --git a/core/java/android/util/MonthDisplayHelper.java b/core/java/android/util/MonthDisplayHelper.java
index c3f13fc2176b..3bd292b4ba49 100644
--- a/core/java/android/util/MonthDisplayHelper.java
+++ b/core/java/android/util/MonthDisplayHelper.java
@@ -24,6 +24,7 @@ import java.util.Calendar;
*
* Not thread safe.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class MonthDisplayHelper {
// display pref
diff --git a/core/java/android/util/RecurrenceRule.java b/core/java/android/util/RecurrenceRule.java
index 39d1f2cbef19..dc470d7edc53 100644
--- a/core/java/android/util/RecurrenceRule.java
+++ b/core/java/android/util/RecurrenceRule.java
@@ -42,6 +42,7 @@ import java.util.Objects;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RecurrenceRule implements Parcelable {
private static final String TAG = "RecurrenceRule";
private static final boolean LOGD = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/core/java/android/util/RotationUtils.java b/core/java/android/util/RotationUtils.java
index f20767b7485a..07ab996af12f 100644
--- a/core/java/android/util/RotationUtils.java
+++ b/core/java/android/util/RotationUtils.java
@@ -36,6 +36,7 @@ import android.view.SurfaceControl;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RotationUtils {
/**
diff --git a/core/java/android/util/SparseDoubleArray.java b/core/java/android/util/SparseDoubleArray.java
index 4b0cbe45d857..8a0b11e09d89 100644
--- a/core/java/android/util/SparseDoubleArray.java
+++ b/core/java/android/util/SparseDoubleArray.java
@@ -41,6 +41,7 @@ package android.util;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SparseDoubleArray implements Cloneable {
/**
* The int->double map, but storing the doubles as longs using
diff --git a/core/java/android/util/SparseSetArray.java b/core/java/android/util/SparseSetArray.java
index 61f29a40ff50..80f6a4a0847f 100644
--- a/core/java/android/util/SparseSetArray.java
+++ b/core/java/android/util/SparseSetArray.java
@@ -22,6 +22,7 @@ import android.annotation.NonNull;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class SparseSetArray<T> {
private final SparseArray<ArraySet<T>> mData;
diff --git a/core/java/android/util/StateSet.java b/core/java/android/util/StateSet.java
index 4bbc0f863603..16d6082649a7 100644
--- a/core/java/android/util/StateSet.java
+++ b/core/java/android/util/StateSet.java
@@ -34,7 +34,6 @@ import com.android.internal.R;
* and not have static methods here but there is some concern about
* performance since these methods are called during view drawing.
*/
-
public class StateSet {
/**
* The order here is very important to
diff --git a/core/java/android/util/Xml.java b/core/java/android/util/Xml.java
index 2a33caaf7e28..ec6e90b4153e 100644
--- a/core/java/android/util/Xml.java
+++ b/core/java/android/util/Xml.java
@@ -334,6 +334,7 @@ public class Xml {
*
* @hide
*/
+ @android.ravenwood.annotation.RavenwoodKeep
public static void copy(@NonNull XmlPullParser in, @NonNull XmlSerializer out)
throws XmlPullParserException, IOException {
// Some parsers may have already consumed the event that starts the
@@ -393,6 +394,7 @@ public class Xml {
* unsupported, which can confuse serializers. This method normalizes empty
* strings to be {@code null}.
*/
+ @android.ravenwood.annotation.RavenwoodKeep
private static @Nullable String normalizeNamespace(@Nullable String namespace) {
if (namespace == null || namespace.isEmpty()) {
return null;
diff --git a/core/java/android/view/HdrRenderState.java b/core/java/android/view/HdrRenderState.java
new file mode 100644
index 000000000000..2fbbf48dff77
--- /dev/null
+++ b/core/java/android/view/HdrRenderState.java
@@ -0,0 +1,121 @@
+/*
+ * 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 android.view;
+
+import android.os.SystemClock;
+
+import com.android.graphics.hwui.flags.Flags;
+
+import java.util.function.Consumer;
+
+/** @hide */
+class HdrRenderState implements Consumer<Display> {
+ // Targeting an animation from 1x to 5x over 400ms means we need to increase by 0.01/ms
+ private static final float TRANSITION_PER_MS = 0.01f;
+
+ private static final boolean FLAG_ANIMATE_ENABLED = Flags.animateHdrTransitions();
+
+ private final ViewRootImpl mViewRoot;
+
+ private boolean mIsListenerRegistered = false;
+ private boolean mUpdateHdrSdrRatioInfo = false;
+ private float mDesiredHdrSdrRatio = 1f;
+ private float mTargetHdrSdrRatio = 1f;
+ private float mRenderHdrSdrRatio = 1f;
+ private float mPreviousRenderRatio = 1f;
+ private long mLastUpdateMillis = -1;
+
+ HdrRenderState(ViewRootImpl viewRoot) {
+ mViewRoot = viewRoot;
+ }
+
+ @Override
+ public void accept(Display display) {
+ forceUpdateHdrSdrRatio();
+ mViewRoot.invalidate();
+ }
+
+ boolean isHdrEnabled() {
+ return mDesiredHdrSdrRatio >= 1.01f;
+ }
+
+ void stopListening() {
+ if (mIsListenerRegistered) {
+ mViewRoot.mDisplay.unregisterHdrSdrRatioChangedListener(this);
+ mIsListenerRegistered = false;
+ }
+ }
+
+ void startListening() {
+ if (isHdrEnabled() && !mIsListenerRegistered && mViewRoot.mDisplay != null) {
+ mViewRoot.mDisplay.registerHdrSdrRatioChangedListener(mViewRoot.mExecutor, this);
+ }
+ }
+
+ /** @return true if something changed, else false */
+ boolean updateForFrame(long frameTimeMillis) {
+ boolean hasUpdate = mUpdateHdrSdrRatioInfo;
+ mUpdateHdrSdrRatioInfo = false;
+ mRenderHdrSdrRatio = mTargetHdrSdrRatio;
+ long timeDelta = Math.max(Math.min(32, frameTimeMillis - mLastUpdateMillis), 8);
+ final float maxStep = timeDelta * TRANSITION_PER_MS;
+ mLastUpdateMillis = frameTimeMillis;
+ if (hasUpdate && FLAG_ANIMATE_ENABLED) {
+ if (mTargetHdrSdrRatio == 1.0f) {
+ mPreviousRenderRatio = mTargetHdrSdrRatio;
+ } else {
+ float delta = mTargetHdrSdrRatio - mPreviousRenderRatio;
+ if (delta > maxStep) {
+ mRenderHdrSdrRatio = mPreviousRenderRatio + maxStep;
+ mUpdateHdrSdrRatioInfo = true;
+ mViewRoot.invalidate();
+ }
+ mPreviousRenderRatio = mRenderHdrSdrRatio;
+ }
+ }
+ return hasUpdate;
+ }
+
+ float getDesiredHdrSdrRatio() {
+ return mDesiredHdrSdrRatio;
+ }
+
+ float getRenderHdrSdrRatio() {
+ return mRenderHdrSdrRatio;
+ }
+
+ void forceUpdateHdrSdrRatio() {
+ mTargetHdrSdrRatio = Math.min(mDesiredHdrSdrRatio, mViewRoot.mDisplay.getHdrSdrRatio());
+ mUpdateHdrSdrRatioInfo = true;
+ }
+
+ void setDesiredHdrSdrRatio(float desiredRatio) {
+ mLastUpdateMillis = SystemClock.uptimeMillis();
+ // TODO: When decreasing the desired ratio we need to animate it downwards
+ if (desiredRatio != mDesiredHdrSdrRatio) {
+ mDesiredHdrSdrRatio = desiredRatio;
+ forceUpdateHdrSdrRatio();
+ mViewRoot.invalidate();
+
+ if (isHdrEnabled()) {
+ startListening();
+ } else {
+ stopListening();
+ }
+ }
+ }
+}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 870ec4bb6969..1530aa78d73d 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -735,10 +735,7 @@ public final class ViewRootImpl implements ViewParent,
private BLASTBufferQueue mBlastBufferQueue;
- private boolean mUpdateHdrSdrRatioInfo = false;
- private float mDesiredHdrSdrRatio = 1f;
- private float mRenderHdrSdrRatio = 1f;
- private Consumer<Display> mHdrSdrRatioChangedListener = null;
+ private final HdrRenderState mHdrRenderState = new HdrRenderState(this);
/**
* Child container layer of {@code mSurface} with the same bounds as its parent, and cropped to
@@ -1813,7 +1810,7 @@ public final class ViewRootImpl implements ViewParent,
mAttachInfo.mThreadedRenderer = renderer;
renderer.setSurfaceControl(mSurfaceControl, mBlastBufferQueue);
updateColorModeIfNeeded(attrs.getColorMode(), attrs.getDesiredHdrHeadroom());
- updateRenderHdrSdrRatio();
+ mHdrRenderState.forceUpdateHdrSdrRatio();
updateForceDarkMode();
mAttachInfo.mHardwareAccelerated = true;
mAttachInfo.mHardwareAccelerationRequested = true;
@@ -2156,9 +2153,7 @@ public final class ViewRootImpl implements ViewParent,
private void updateInternalDisplay(int displayId, Resources resources) {
final Display preferredDisplay =
ResourcesManager.getInstance().getAdjustedDisplay(displayId, resources);
- if (mHdrSdrRatioChangedListener != null && mDisplay != null) {
- mDisplay.unregisterHdrSdrRatioChangedListener(mHdrSdrRatioChangedListener);
- }
+ mHdrRenderState.stopListening();
if (preferredDisplay == null) {
// Fallback to use default display.
Slog.w(TAG, "Cannot get desired display with Id: " + displayId);
@@ -2167,9 +2162,7 @@ public final class ViewRootImpl implements ViewParent,
} else {
mDisplay = preferredDisplay;
}
- if (mHdrSdrRatioChangedListener != null && mDisplay != null) {
- mDisplay.registerHdrSdrRatioChangedListener(mExecutor, mHdrSdrRatioChangedListener);
- }
+ mHdrRenderState.startListening();
mContext.updateDisplay(mDisplay.getDisplayId());
}
@@ -5154,11 +5147,12 @@ public final class ViewRootImpl implements ViewParent,
useAsyncReport = true;
- if (mUpdateHdrSdrRatioInfo) {
- mUpdateHdrSdrRatioInfo = false;
+ if (mHdrRenderState.updateForFrame(mAttachInfo.mDrawingTime)) {
+ final float renderRatio = mHdrRenderState.getRenderHdrSdrRatio();
applyTransactionOnDraw(mTransaction.setExtendedRangeBrightness(
- getSurfaceControl(), mRenderHdrSdrRatio, mDesiredHdrSdrRatio));
- mAttachInfo.mThreadedRenderer.setTargetHdrSdrRatio(mRenderHdrSdrRatio);
+ getSurfaceControl(), renderRatio,
+ mHdrRenderState.getDesiredHdrSdrRatio()));
+ mAttachInfo.mThreadedRenderer.setTargetHdrSdrRatio(renderRatio);
}
if (activeSyncGroup != null) {
@@ -5769,11 +5763,6 @@ public final class ViewRootImpl implements ViewParent,
}
}
- private void updateRenderHdrSdrRatio() {
- mRenderHdrSdrRatio = Math.min(mDesiredHdrSdrRatio, mDisplay.getHdrSdrRatio());
- mUpdateHdrSdrRatioInfo = true;
- }
-
private void updateColorModeIfNeeded(@ActivityInfo.ColorMode int colorMode,
float desiredRatio) {
if (mAttachInfo.mThreadedRenderer == null) {
@@ -5793,22 +5782,8 @@ public final class ViewRootImpl implements ViewParent,
if (desiredRatio == 0 || desiredRatio > automaticRatio) {
desiredRatio = automaticRatio;
}
- if (desiredRatio != mDesiredHdrSdrRatio) {
- mDesiredHdrSdrRatio = desiredRatio;
- updateRenderHdrSdrRatio();
- invalidate();
- if (mDesiredHdrSdrRatio < 1.01f) {
- mDisplay.unregisterHdrSdrRatioChangedListener(mHdrSdrRatioChangedListener);
- mHdrSdrRatioChangedListener = null;
- } else {
- mHdrSdrRatioChangedListener = display -> {
- updateRenderHdrSdrRatio();
- invalidate();
- };
- mDisplay.registerHdrSdrRatioChangedListener(mExecutor, mHdrSdrRatioChangedListener);
- }
- }
+ mHdrRenderState.setDesiredHdrSdrRatio(desiredRatio);
}
@Override
@@ -6428,7 +6403,7 @@ public final class ViewRootImpl implements ViewParent,
}
final ViewRootHandler mHandler = new ViewRootHandler();
- private final Executor mExecutor = (Runnable r) -> {
+ final Executor mExecutor = (Runnable r) -> {
mHandler.post(r);
};
@@ -8764,7 +8739,7 @@ public final class ViewRootImpl implements ViewParent,
if (mAttachInfo.mThreadedRenderer != null) {
mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl, mBlastBufferQueue);
}
- updateRenderHdrSdrRatio();
+ mHdrRenderState.forceUpdateHdrSdrRatio();
if (mPreviousTransformHint != transformHint) {
mPreviousTransformHint = transformHint;
dispatchTransformHintChanged(transformHint);
@@ -9312,9 +9287,7 @@ public final class ViewRootImpl implements ViewParent,
private void destroyHardwareRenderer() {
ThreadedRenderer hardwareRenderer = mAttachInfo.mThreadedRenderer;
- if (mHdrSdrRatioChangedListener != null) {
- mDisplay.unregisterHdrSdrRatioChangedListener(mHdrSdrRatioChangedListener);
- }
+ mHdrRenderState.stopListening();
if (hardwareRenderer != null) {
if (mHardwareRendererObserver != null) {
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 3dbe65ef4180..a38092a21178 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -185,16 +185,31 @@ public final class AccessibilityManager {
/**
* Annotations for the shortcut type.
+ * <p>Note: Keep in sync with {@link #SHORTCUT_TYPES}.</p>
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef(value = {
+ // LINT.IfChange(shortcut_type_intdef)
ACCESSIBILITY_BUTTON,
ACCESSIBILITY_SHORTCUT_KEY
+ // LINT.ThenChange(:shortcut_type_array)
})
public @interface ShortcutType {}
/**
+ * Used for iterating through {@link ShortcutType}.
+ * <p>Note: Keep in sync with {@link ShortcutType}.</p>
+ * @hide
+ */
+ public static final int[] SHORTCUT_TYPES = {
+ // LINT.IfChange(shortcut_type_array)
+ ACCESSIBILITY_BUTTON,
+ ACCESSIBILITY_SHORTCUT_KEY,
+ // LINT.ThenChange(:shortcut_type_intdef)
+ };
+
+ /**
* Annotations for content flag of UI.
* @hide
*/
@@ -914,6 +929,28 @@ public final class AccessibilityManager {
}
/**
+ * Returns whether the user must be shown the AccessibilityService warning dialog
+ * before the AccessibilityService (or any shortcut for the service) can be enabled.
+ * @hide
+ */
+ @RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
+ public boolean isAccessibilityServiceWarningRequired(@NonNull AccessibilityServiceInfo info) {
+ final IAccessibilityManager service;
+ synchronized (mLock) {
+ service = getServiceLocked();
+ if (service == null) {
+ return true;
+ }
+ }
+ try {
+ return service.isAccessibilityServiceWarningRequired(info);
+ } catch (RemoteException re) {
+ Log.e(LOG_TAG, "Error while checking isAccessibilityServiceWarningRequired: ", re);
+ return true;
+ }
+ }
+
+ /**
* Registers an {@link AccessibilityStateChangeListener} for changes in
* the global accessibility state of the system. Equivalent to calling
* {@link #addAccessibilityStateChangeListener(AccessibilityStateChangeListener, Handler)}
diff --git a/core/java/android/view/accessibility/IAccessibilityManager.aidl b/core/java/android/view/accessibility/IAccessibilityManager.aidl
index f741080c57a8..9c04c27d189a 100644
--- a/core/java/android/view/accessibility/IAccessibilityManager.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityManager.aidl
@@ -128,6 +128,9 @@ interface IAccessibilityManager {
boolean isAccessibilityTargetAllowed(String packageName, int uid, int userId);
boolean sendRestrictedDialogIntent(String packageName, int uid, int userId);
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_ACCESSIBILITY)")
+ boolean isAccessibilityServiceWarningRequired(in AccessibilityServiceInfo info);
+
parcelable WindowTransformationSpec {
float[] transformationMatrix;
MagnificationSpec magnificationSpec;
diff --git a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
index b29967888312..7ab5446a2994 100644
--- a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
+++ b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
@@ -10,6 +10,13 @@ flag {
}
flag {
+ name: "a11y_qs_shortcut"
+ namespace: "accessibility"
+ description: "Add Quick Setting as one of the a11y shortcut options"
+ bug: "297554934"
+}
+
+flag {
namespace: "accessibility"
name: "allow_shortcut_chooser_on_lockscreen"
description: "Allows the a11y shortcut disambig dialog to appear on the lockscreen"
@@ -17,17 +24,17 @@ flag {
}
flag {
+ name: "cleanup_accessibility_warning_dialog"
namespace: "accessibility"
- name: "collection_info_item_counts"
- description: "Fields for total items and the number of important for accessibility items in a collection"
- bug: "302376158"
+ description: "Cleans up duplicated or broken logic surrounding the accessibility warning dialog."
+ bug: "303511250"
}
flag {
- name: "deduplicate_accessibility_warning_dialog"
namespace: "accessibility"
- description: "Removes duplicate definition of the accessibility warning dialog."
- bug: "303511250"
+ name: "collection_info_item_counts"
+ description: "Fields for total items and the number of important for accessibility items in a collection"
+ bug: "302376158"
}
flag {
diff --git a/core/java/android/view/contentcapture/MainContentCaptureSession.java b/core/java/android/view/contentcapture/MainContentCaptureSession.java
index 14ec14bf7cfc..966161fd642a 100644
--- a/core/java/android/view/contentcapture/MainContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/MainContentCaptureSession.java
@@ -31,6 +31,7 @@ import static android.view.contentcapture.ContentCaptureHelper.getSanitizedStrin
import static android.view.contentcapture.ContentCaptureHelper.sDebug;
import static android.view.contentcapture.ContentCaptureHelper.sVerbose;
import static android.view.contentcapture.ContentCaptureManager.RESULT_CODE_FALSE;
+import static android.view.contentcapture.flags.Flags.runOnBackgroundThreadEnabled;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -209,14 +210,14 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
binder = resultData.getBinder(EXTRA_BINDER);
if (binder == null) {
Log.wtf(TAG, "No " + EXTRA_BINDER + " extra result");
- mainSession.mHandler.post(() -> mainSession.resetSession(
+ mainSession.runOnContentCaptureThread(() -> mainSession.resetSession(
STATE_DISABLED | STATE_INTERNAL_ERROR));
return;
}
} else {
binder = null;
}
- mainSession.mHandler.post(() ->
+ mainSession.runOnContentCaptureThread(() ->
mainSession.onSessionStarted(resultCode, binder));
}
}
@@ -256,7 +257,13 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
*/
void start(@NonNull IBinder token, @NonNull IBinder shareableActivityToken,
@NonNull ComponentName component, int flags) {
- runOnContentCaptureThread(() -> startImpl(token, shareableActivityToken, component, flags));
+ if (runOnBackgroundThreadEnabled()) {
+ runOnContentCaptureThread(
+ () -> startImpl(token, shareableActivityToken, component, flags));
+ } else {
+ // Preserve the control arm behaviour.
+ startImpl(token, shareableActivityToken, component, flags);
+ }
}
private void startImpl(@NonNull IBinder token, @NonNull IBinder shareableActivityToken,
@@ -613,7 +620,12 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
@Override
public void flush(@FlushReason int reason) {
- runOnContentCaptureThread(() -> flushImpl(reason));
+ if (runOnBackgroundThreadEnabled()) {
+ runOnContentCaptureThread(() -> flushImpl(reason));
+ } else {
+ // Preserve the control arm behaviour.
+ flushImpl(reason);
+ }
}
private void flushImpl(@FlushReason int reason) {
@@ -904,7 +916,12 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
/** public because is also used by ViewRootImpl */
public void notifyContentCaptureEvents(
@NonNull SparseArray<ArrayList<Object>> contentCaptureEvents) {
- runOnContentCaptureThread(() -> notifyContentCaptureEventsImpl(contentCaptureEvents));
+ if (runOnBackgroundThreadEnabled()) {
+ runOnContentCaptureThread(() -> notifyContentCaptureEventsImpl(contentCaptureEvents));
+ } else {
+ // Preserve the control arm behaviour.
+ notifyContentCaptureEventsImpl(contentCaptureEvents);
+ }
}
private void notifyContentCaptureEventsImpl(
@@ -1076,19 +1093,30 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
* </p>
*/
private void runOnContentCaptureThread(@NonNull Runnable r) {
- if (!mHandler.getLooper().isCurrentThread()) {
- mHandler.post(r);
+ if (runOnBackgroundThreadEnabled()) {
+ if (!mHandler.getLooper().isCurrentThread()) {
+ mHandler.post(r);
+ } else {
+ r.run();
+ }
} else {
- r.run();
+ // Preserve the control arm behaviour to always post to the handler.
+ mHandler.post(r);
}
}
private void clearAndRunOnContentCaptureThread(@NonNull Runnable r, int what) {
- if (!mHandler.getLooper().isCurrentThread()) {
+ if (runOnBackgroundThreadEnabled()) {
+ if (!mHandler.getLooper().isCurrentThread()) {
+ mHandler.removeMessages(what);
+ mHandler.post(r);
+ } else {
+ r.run();
+ }
+ } else {
+ // Preserve the control arm behaviour to always post to the handler.
mHandler.removeMessages(what);
mHandler.post(r);
- } else {
- r.run();
}
}
}
diff --git a/core/java/android/view/inputmethod/ImeTracker.java b/core/java/android/view/inputmethod/ImeTracker.java
index d4cfd63492fc..fab8c7796dfd 100644
--- a/core/java/android/view/inputmethod/ImeTracker.java
+++ b/core/java/android/view/inputmethod/ImeTracker.java
@@ -737,7 +737,7 @@ public interface ImeTracker {
*/
public void onCancelAnimation(@AnimationType int animType) {
final int cujType = getImeInsetsCujFromAnimation(animType);
- if (cujType == -1) {
+ if (cujType != -1) {
InteractionJankMonitor.getInstance().cancel(cujType);
}
}
diff --git a/core/java/android/window/flags/accessibility.aconfig b/core/java/android/window/flags/accessibility.aconfig
new file mode 100644
index 000000000000..d467be6e5311
--- /dev/null
+++ b/core/java/android/window/flags/accessibility.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.window.flags"
+
+flag {
+ name: "do_not_check_intersection_when_non_magnifiable_window_transitions"
+ namespace: "accessibility"
+ description: "The flag controls whether the intersection check for non-magnifiable windows is needed when onWindowTransition,"
+ bug: "312624253"
+} \ No newline at end of file
diff --git a/core/java/android/window/flags/wallpaper_manager.aconfig b/core/java/android/window/flags/wallpaper_manager.aconfig
index 09be0cfc5fb0..f03c993a9c66 100644
--- a/core/java/android/window/flags/wallpaper_manager.aconfig
+++ b/core/java/android/window/flags/wallpaper_manager.aconfig
@@ -5,4 +5,11 @@ flag {
namespace: "wear_frameworks"
description: "Allow out of focus process to update wallpaper complications"
bug: "271132915"
-} \ No newline at end of file
+}
+
+flag {
+ name: "multi_crop"
+ namespace: "systemui"
+ description: "Support storing different wallpaper crops for different display dimensions. Only effective after rebooting."
+ bug: "281648899"
+}
diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java
index d4eccd458e35..7d06e3f5a7bc 100644
--- a/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java
+++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityShortcutChooserActivity.java
@@ -37,6 +37,7 @@ import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.Flags;
import android.widget.AdapterView;
@@ -114,18 +115,39 @@ public class AccessibilityShortcutChooserActivity extends Activity {
private void onTargetChecked(AdapterView<?> parent, View view, int position, long id) {
final AccessibilityTarget target = mTargets.get(position);
- if (!target.isShortcutEnabled()) {
- if (target instanceof AccessibilityServiceTarget
- || target instanceof AccessibilityActivityTarget) {
+ if (Flags.cleanupAccessibilityWarningDialog()) {
+ if (target instanceof AccessibilityServiceTarget serviceTarget) {
if (sendRestrictedDialogIntentIfNeeded(target)) {
return;
}
+ final AccessibilityManager am = getSystemService(AccessibilityManager.class);
+ if (am.isAccessibilityServiceWarningRequired(
+ serviceTarget.getAccessibilityServiceInfo())) {
+ showPermissionDialogIfNeeded(this, (AccessibilityServiceTarget) target,
+ position, mTargetAdapter);
+ return;
+ }
+ }
+ if (target instanceof AccessibilityActivityTarget activityTarget) {
+ if (!activityTarget.isShortcutEnabled()
+ && sendRestrictedDialogIntentIfNeeded(activityTarget)) {
+ return;
+ }
}
+ } else {
+ if (!target.isShortcutEnabled()) {
+ if (target instanceof AccessibilityServiceTarget
+ || target instanceof AccessibilityActivityTarget) {
+ if (sendRestrictedDialogIntentIfNeeded(target)) {
+ return;
+ }
+ }
- if (target instanceof AccessibilityServiceTarget) {
- showPermissionDialogIfNeeded(this, (AccessibilityServiceTarget) target,
- position, mTargetAdapter);
- return;
+ if (target instanceof AccessibilityServiceTarget) {
+ showPermissionDialogIfNeeded(this, (AccessibilityServiceTarget) target,
+ position, mTargetAdapter);
+ return;
+ }
}
}
@@ -156,7 +178,7 @@ public class AccessibilityShortcutChooserActivity extends Activity {
return;
}
- if (Flags.deduplicateAccessibilityWarningDialog()) {
+ if (Flags.cleanupAccessibilityWarningDialog()) {
mPermissionDialog = AccessibilityServiceWarning
.createAccessibilityServiceWarningDialog(context,
serviceTarget.getAccessibilityServiceInfo(),
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index ea4fc3910d89..82ee8fc47571 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -390,12 +390,12 @@ interface IVoiceInteractionManagerService {
int type);
/**
- * Sets the sandboxed detection training data egress op to provided op-mode.
+ * Allows/disallows receiving training data from trusted process.
* Caller must be the active assistant and a preinstalled assistant.
*
- * @param opMode app-op mode to set training data egress op to.
- *
- * @return whether was able to successfully set training data egress op.
+ * @param allowed whether to allow/disallow receiving training data produced during
+ * sandboxed detection (from trusted process).
*/
- boolean setSandboxedDetectionTrainingDataOp(int opMode);
+ @EnforcePermission("MANAGE_HOTWORD_DETECTION")
+ void setIsReceiveSandboxedTrainingDataAllowed(boolean allowed);
}
diff --git a/core/java/com/android/internal/content/PackageMonitor.java b/core/java/com/android/internal/content/PackageMonitor.java
index d85227f1a0a8..c89cfc4b0191 100644
--- a/core/java/com/android/internal/content/PackageMonitor.java
+++ b/core/java/com/android/internal/content/PackageMonitor.java
@@ -199,6 +199,11 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
public void onPackageChangedWithExtras(String packageName, Bundle extras) {
}
+ public boolean onHandleForceStop(Intent intent, String[] packages, int uid, boolean doit,
+ Bundle extras) {
+ return onHandleForceStop(intent, packages, uid, doit);
+ }
+
public boolean onHandleForceStop(Intent intent, String[] packages, int uid, boolean doit) {
return false;
}
@@ -254,6 +259,15 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
public void onPackageModified(@NonNull String packageName) {
}
+ /**
+ * Called when a package in the stopped state is started for some reason.
+ *
+ * @param packageName Name of the package that was unstopped
+ * @param uid UID of the package that was unstopped
+ */
+ public void onPackageUnstopped(String packageName, int uid, Bundle extras) {
+ }
+
public boolean didSomePackagesChange() {
return mSomePackagesChanged;
}
@@ -444,13 +458,13 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
mChangeType = PACKAGE_TEMPORARY_CHANGE;
boolean canRestart = onHandleForceStop(intent,
mDisappearingPackages,
- intent.getIntExtra(Intent.EXTRA_UID, 0), false);
+ intent.getIntExtra(Intent.EXTRA_UID, 0), false, intent.getExtras());
if (canRestart) setResultCode(Activity.RESULT_OK);
} else if (Intent.ACTION_PACKAGE_RESTARTED.equals(action)) {
mDisappearingPackages = new String[] {getPackageName(intent)};
mChangeType = PACKAGE_TEMPORARY_CHANGE;
onHandleForceStop(intent, mDisappearingPackages,
- intent.getIntExtra(Intent.EXTRA_UID, 0), true);
+ intent.getIntExtra(Intent.EXTRA_UID, 0), true, intent.getExtras());
} else if (Intent.ACTION_UID_REMOVED.equals(action)) {
onUidRemoved(intent.getIntExtra(Intent.EXTRA_UID, 0));
} else if (Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(action)) {
@@ -485,6 +499,12 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
String[] pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
mSomePackagesChanged = true;
onPackagesUnsuspended(pkgList);
+ } else if (Intent.ACTION_PACKAGE_UNSTOPPED.equals(action)) {
+ final String pkgName = getPackageName(intent);
+ mAppearingPackages = new String[] {pkgName};
+ mChangeType = PACKAGE_TEMPORARY_CHANGE;
+ onPackageUnstopped(pkgName, intent.getIntExtra(Intent.EXTRA_UID, 0),
+ intent.getExtras());
}
if (mSomePackagesChanged) {
diff --git a/core/java/com/android/internal/os/SomeArgs.java b/core/java/com/android/internal/os/SomeArgs.java
index b12df6ed36ca..4701af3f2ddc 100644
--- a/core/java/com/android/internal/os/SomeArgs.java
+++ b/core/java/com/android/internal/os/SomeArgs.java
@@ -26,6 +26,7 @@ import android.os.Build;
* it is responsibility of the client to recycle and instance
* once it is no longer used.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class SomeArgs {
private static final int MAX_POOL_SIZE = 10;
diff --git a/core/java/com/android/internal/policy/KeyInterceptionInfo.java b/core/java/com/android/internal/policy/KeyInterceptionInfo.java
index 964be01952ea..b20f6d225b69 100644
--- a/core/java/com/android/internal/policy/KeyInterceptionInfo.java
+++ b/core/java/com/android/internal/policy/KeyInterceptionInfo.java
@@ -26,10 +26,12 @@ public class KeyInterceptionInfo {
public final int layoutParamsPrivateFlags;
// Debug friendly name to help identify the window
public final String windowTitle;
+ public final int windowOwnerUid;
- public KeyInterceptionInfo(int type, int flags, String title) {
+ public KeyInterceptionInfo(int type, int flags, String title, int uid) {
layoutParamsType = type;
layoutParamsPrivateFlags = flags;
windowTitle = title;
+ windowOwnerUid = uid;
}
}
diff --git a/core/java/com/android/internal/util/BitUtils.java b/core/java/com/android/internal/util/BitUtils.java
index 154ea52bf9ba..d928bbc3e9ad 100644
--- a/core/java/com/android/internal/util/BitUtils.java
+++ b/core/java/com/android/internal/util/BitUtils.java
@@ -31,6 +31,7 @@ import java.util.function.IntFunction;
* sugar methods for {@link ByteBuffer}. Useful for networking and packet manipulations.
* {@hide}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class BitUtils {
private BitUtils() {}
diff --git a/core/java/com/android/internal/util/BitwiseInputStream.java b/core/java/com/android/internal/util/BitwiseInputStream.java
index ffae3ce89ce4..91f89f39fc4d 100644
--- a/core/java/com/android/internal/util/BitwiseInputStream.java
+++ b/core/java/com/android/internal/util/BitwiseInputStream.java
@@ -26,6 +26,7 @@ import android.compat.annotation.UnsupportedAppUsage;
*
* NOTE -- This class is not threadsafe.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BitwiseInputStream {
// The byte array being read from.
diff --git a/core/java/com/android/internal/util/BitwiseOutputStream.java b/core/java/com/android/internal/util/BitwiseOutputStream.java
index 9f4150860887..9b7568b54639 100644
--- a/core/java/com/android/internal/util/BitwiseOutputStream.java
+++ b/core/java/com/android/internal/util/BitwiseOutputStream.java
@@ -26,6 +26,7 @@ import android.compat.annotation.UnsupportedAppUsage;
*
* NOTE -- This class is not threadsafe.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class BitwiseOutputStream {
// The byte array being written to, which will be grown as needed.
diff --git a/core/java/com/android/internal/util/CallbackRegistry.java b/core/java/com/android/internal/util/CallbackRegistry.java
index 0f228d4775fd..0ae8e1d1e0c4 100644
--- a/core/java/com/android/internal/util/CallbackRegistry.java
+++ b/core/java/com/android/internal/util/CallbackRegistry.java
@@ -39,6 +39,7 @@ import java.util.List;
* @param <T> The notification sender type. Typically this is the containing class.
* @param <A> Opaque argument used to pass additional data beyond an int.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class CallbackRegistry<C, T, A> implements Cloneable {
private static final String TAG = "CallbackRegistry";
diff --git a/core/java/com/android/internal/util/DumpUtils.java b/core/java/com/android/internal/util/DumpUtils.java
index 8fe2b9cdf1e5..d1ff034ff001 100644
--- a/core/java/com/android/internal/util/DumpUtils.java
+++ b/core/java/com/android/internal/util/DumpUtils.java
@@ -37,6 +37,7 @@ import java.util.function.Predicate;
* Test:
atest FrameworksCoreTests:DumpUtilsTest
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class DumpUtils {
/**
@@ -92,6 +93,8 @@ public final class DumpUtils {
* @return true if access should be granted.
* @hide
*/
+ @android.ravenwood.annotation.RavenwoodThrow(
+ blockedBy = android.permission.PermissionManager.class)
public static boolean checkDumpPermission(Context context, String tag, PrintWriter pw) {
if (context.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
!= PackageManager.PERMISSION_GRANTED) {
@@ -112,6 +115,8 @@ public final class DumpUtils {
* @return true if access should be granted.
* @hide
*/
+ @android.ravenwood.annotation.RavenwoodThrow(
+ blockedBy = android.permission.PermissionManager.class)
public static boolean checkUsageStatsPermission(Context context, String tag, PrintWriter pw) {
// System internals always get access
final int uid = Binder.getCallingUid();
@@ -166,6 +171,8 @@ public final class DumpUtils {
* @return true if access should be granted.
* @hide
*/
+ @android.ravenwood.annotation.RavenwoodThrow(
+ blockedBy = android.permission.PermissionManager.class)
public static boolean checkDumpAndUsageStatsPermission(Context context, String tag,
PrintWriter pw) {
return checkDumpPermission(context, tag, pw) && checkUsageStatsPermission(context, tag, pw);
diff --git a/core/java/com/android/internal/util/FastMath.java b/core/java/com/android/internal/util/FastMath.java
index b7dbee53a4be..6e8fef281445 100644
--- a/core/java/com/android/internal/util/FastMath.java
+++ b/core/java/com/android/internal/util/FastMath.java
@@ -21,6 +21,7 @@ import android.compat.annotation.UnsupportedAppUsage;
/**
* Fast and loose math routines.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class FastMath {
/**
diff --git a/core/java/com/android/internal/util/FastPrintWriter.java b/core/java/com/android/internal/util/FastPrintWriter.java
index 63124def6d2f..fcd6df091c88 100644
--- a/core/java/com/android/internal/util/FastPrintWriter.java
+++ b/core/java/com/android/internal/util/FastPrintWriter.java
@@ -32,6 +32,7 @@ import java.nio.charset.CharsetEncoder;
import java.nio.charset.CoderResult;
import java.nio.charset.CodingErrorAction;
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class FastPrintWriter extends PrintWriter {
private static class DummyWriter extends Writer {
@Override
diff --git a/core/java/com/android/internal/util/GrowingArrayUtils.java b/core/java/com/android/internal/util/GrowingArrayUtils.java
index 8c12e36a27d1..83d06d180179 100644
--- a/core/java/com/android/internal/util/GrowingArrayUtils.java
+++ b/core/java/com/android/internal/util/GrowingArrayUtils.java
@@ -29,6 +29,7 @@ import android.os.Build;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class GrowingArrayUtils {
/**
diff --git a/core/java/com/android/internal/util/HeavyHitterSketch.java b/core/java/com/android/internal/util/HeavyHitterSketch.java
index e18acaf36797..2973d305f517 100644
--- a/core/java/com/android/internal/util/HeavyHitterSketch.java
+++ b/core/java/com/android/internal/util/HeavyHitterSketch.java
@@ -35,6 +35,7 @@ import java.util.List;
* <p>
* {@hide}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface HeavyHitterSketch<T> {
/**
* Return the default implementation.
diff --git a/core/java/com/android/internal/util/LineBreakBufferedWriter.java b/core/java/com/android/internal/util/LineBreakBufferedWriter.java
index 552a93f6666a..8393b229e011 100644
--- a/core/java/com/android/internal/util/LineBreakBufferedWriter.java
+++ b/core/java/com/android/internal/util/LineBreakBufferedWriter.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
*
* Note: this class is not thread-safe.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class LineBreakBufferedWriter extends PrintWriter {
/**
diff --git a/core/java/com/android/internal/util/ObjectUtils.java b/core/java/com/android/internal/util/ObjectUtils.java
index 0e7b93d406f5..292ee14911c5 100644
--- a/core/java/com/android/internal/util/ObjectUtils.java
+++ b/core/java/com/android/internal/util/ObjectUtils.java
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import java.util.Objects;
/** @hide */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ObjectUtils {
private ObjectUtils() {}
diff --git a/core/java/com/android/internal/util/Parcelling.java b/core/java/com/android/internal/util/Parcelling.java
index 3147c34a7129..70c3869d8e23 100644
--- a/core/java/com/android/internal/util/Parcelling.java
+++ b/core/java/com/android/internal/util/Parcelling.java
@@ -38,6 +38,7 @@ import java.util.regex.Pattern;
*
* @param <T> the type being [un]parcelled
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public interface Parcelling<T> {
/**
diff --git a/core/java/com/android/internal/util/ParseUtils.java b/core/java/com/android/internal/util/ParseUtils.java
index a591f4aa41fc..a16ce2b0570f 100644
--- a/core/java/com/android/internal/util/ParseUtils.java
+++ b/core/java/com/android/internal/util/ParseUtils.java
@@ -23,6 +23,7 @@ import android.annotation.Nullable;
* Test:
atest /android/pi-dev/frameworks/base/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class ParseUtils {
private ParseUtils() {
}
diff --git a/core/java/com/android/internal/util/ProcFileReader.java b/core/java/com/android/internal/util/ProcFileReader.java
index b726d5d75239..6cf241e65d00 100644
--- a/core/java/com/android/internal/util/ProcFileReader.java
+++ b/core/java/com/android/internal/util/ProcFileReader.java
@@ -32,6 +32,7 @@ import java.nio.charset.StandardCharsets;
* Currently doesn't support formats based on {@code \0}, tabs.
* Consecutive spaces are treated as a single delimiter.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class ProcFileReader implements Closeable {
private final InputStream mStream;
private final byte[] mBuffer;
diff --git a/core/java/com/android/internal/util/ProgressReporter.java b/core/java/com/android/internal/util/ProgressReporter.java
index 7a8efba8a637..5640d8f28330 100644
--- a/core/java/com/android/internal/util/ProgressReporter.java
+++ b/core/java/com/android/internal/util/ProgressReporter.java
@@ -25,6 +25,7 @@ import android.os.RemoteException;
import android.util.MathUtils;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
/**
* Tracks and reports progress of a single task to a {@link IProgressListener}.
@@ -175,7 +176,8 @@ public class ProgressReporter {
}
}
- int getProgress() {
+ @VisibleForTesting
+ public int getProgress() {
return mProgress;
}
diff --git a/core/java/com/android/internal/util/QuickSelect.java b/core/java/com/android/internal/util/QuickSelect.java
index 17739c9c8832..052efede2fba 100644
--- a/core/java/com/android/internal/util/QuickSelect.java
+++ b/core/java/com/android/internal/util/QuickSelect.java
@@ -28,6 +28,7 @@ import java.util.List;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class QuickSelect {
private static <T> int selectImpl(@NonNull List<T> list, int left, int right, int k,
@NonNull Comparator<? super T> comparator) {
diff --git a/core/java/com/android/internal/util/RingBuffer.java b/core/java/com/android/internal/util/RingBuffer.java
index 8fc4c30e54ab..04886598de35 100644
--- a/core/java/com/android/internal/util/RingBuffer.java
+++ b/core/java/com/android/internal/util/RingBuffer.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
* full, oldest events are dropped when new events are added.
* {@hide}
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class RingBuffer<T> {
// Array for storing events.
diff --git a/core/java/com/android/internal/util/StringPool.java b/core/java/com/android/internal/util/StringPool.java
index c5180a3fe8cf..94f6ec9677ec 100644
--- a/core/java/com/android/internal/util/StringPool.java
+++ b/core/java/com/android/internal/util/StringPool.java
@@ -23,6 +23,7 @@ package com.android.internal.util;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class StringPool {
private final String[] mPool = new String[512];
diff --git a/core/java/com/android/internal/util/dump/DumpableContainerImpl.java b/core/java/com/android/internal/util/dump/DumpableContainerImpl.java
index ccec6c61b92a..bb5224f65904 100644
--- a/core/java/com/android/internal/util/dump/DumpableContainerImpl.java
+++ b/core/java/com/android/internal/util/dump/DumpableContainerImpl.java
@@ -32,6 +32,7 @@ import java.util.Objects;
*
* @hide
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public final class DumpableContainerImpl implements DumpableContainer {
private static final String TAG = DumpableContainerImpl.class.getSimpleName();
diff --git a/core/java/com/google/android/collect/Lists.java b/core/java/com/google/android/collect/Lists.java
index 585847da566c..392b87e6bd04 100644
--- a/core/java/com/google/android/collect/Lists.java
+++ b/core/java/com/google/android/collect/Lists.java
@@ -25,6 +25,7 @@ import java.util.Collections;
* Provides static methods for creating {@code List} instances easily, and other
* utility methods for working with lists.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Lists {
/**
diff --git a/core/java/com/google/android/collect/Maps.java b/core/java/com/google/android/collect/Maps.java
index cd4c1280545e..6492b0350669 100644
--- a/core/java/com/google/android/collect/Maps.java
+++ b/core/java/com/google/android/collect/Maps.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
/**
* Provides static methods for creating mutable {@code Maps} instances easily.
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Maps {
/**
* Creates a {@code HashMap} instance.
diff --git a/core/java/com/google/android/collect/Sets.java b/core/java/com/google/android/collect/Sets.java
index e2429157d529..76eaf21cae04 100644
--- a/core/java/com/google/android/collect/Sets.java
+++ b/core/java/com/google/android/collect/Sets.java
@@ -31,6 +31,7 @@ import java.util.TreeSet;
* other static methods for working with Sets.
*
*/
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
public class Sets {
/**
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index c55b8089242a..dd93586c340b 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -7832,6 +7832,22 @@
<permission android:name="android.permission.PREPARE_FACTORY_RESET"
android:protectionLevel="signature|privileged" />
+ <!-- @SystemApi Allows focused window to override the default behavior of supported system keys.
+ The following keycodes are supported:
+ <p> KEYCODE_STEM_PRIMARY
+ <p>If an app is granted this permission and has a focused window, it will be allowed to
+ receive supported key events that are otherwise handled by the system. The app can choose
+ to consume the key events and trigger its own behavior, in which case the default key
+ behavior will be skipped.
+ <p>For example, KEYCODE_STEM_PRIMARY by default opens recent app launcher. If the foreground
+ fitness app is granted this permission, it can repurpose the KEYCODE_STEM_PRIMARY button
+ to pause/resume the current fitness session.
+ <p>Protection level: signature|privileged
+ @FlaggedApi("com.android.input.flags.override_key_behavior_permission_apis")
+ @hide -->
+ <permission android:name="android.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW"
+ android:protectionLevel="signature|privileged" />
+
<!-- Attribution for Geofencing service. -->
<attribution android:tag="GeofencingService" android:label="@string/geofencing_service"/>
<!-- Attribution for Country Detector. -->
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 625b1413e403..356c5e10f729 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Sleutelborduitleg is gestel op <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> … Tik om dit te verander."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fisieke sleutelborde is opgestel"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tik om sleutelborde te bekyk"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privaat"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Kloon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Werk"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Werk 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Werk 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Toets"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Gemeenskaplik"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 04fb30076217..8af993f06243 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -2363,18 +2363,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"تم ضبط تنسيق لوحة المفاتيح على <xliff:g id="LAYOUT_1">%1$s</xliff:g> و<xliff:g id="LAYOUT_2">%2$s</xliff:g> و<xliff:g id="LAYOUT_3">%3$s</xliff:g>… انقر لتغييره."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"تم إعداد لوحات المفاتيح الخارجية"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"انقر لعرض لوحات المفاتيح."</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ملف شخصي خاص"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"نسخة طبق الأصل"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ملف العمل"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ملف العمل 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ملف العمل 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ملف شخصي تجريبي"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"ملف شخصي مشترك"</string>
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 826844f4321b..5e3d0f6b8546 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"কীব’ৰ্ডৰ লে’আউট <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> হিচাপে ছেট কৰা হৈছে… সলনি কৰিবলৈ টিপক।"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ভৌতিক কীব’ৰ্ড কনফিগাৰ কৰা হৈছে"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"কীব’ৰ্ড চাবলৈ টিপক"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ব্যক্তিগত"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ক্ল’ন"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"কৰ্মস্থান"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"কৰ্মস্থান ২"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"কৰ্মস্থান ৩"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"পৰীক্ষা"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"শ্বেয়াৰ কৰা"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 66a5670ff178..a000117c8f7b 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Klaviatura düzəni <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> kimi ayarlanıb… Dəyişmək üçün toxunun."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fiziki klaviaturalar konfiqurasiya edilib"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Klaviaturalara baxmaq üçün toxunun"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Şəxsi"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"İş"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"İş 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"İş 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Kommunal"</string>
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index b6121edacfaf..080d1bddaa1a 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Raspored tastature je podešen na <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Dodirnite da biste promenili."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fizičke tastature su konfigurisane"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Dodirnite da biste videli tastature"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privatno"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klonirano"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Posao"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Posao 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Posao 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Zajedničko"</string>
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 3c01f1b4a2fe..1cca6ff09928 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -2361,18 +2361,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Раскладка клавіятуры наладжана для наступных моў: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Націсніце, каб змяніць."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Фізічныя клавіятуры наладжаны"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Націсніце, каб праглядзець клавіятуры"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Прыватны"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клон"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Працоўны"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Працоўны 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Працоўны 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Тэставы"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Супольны"</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 3b1ff9e075f4..8f994cacdef0 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"За клавиатурната подредба са зададени <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g> и <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Докоснете за промяна."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Физическите клавиатури са конфигурирани"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Докоснете за преглед на клавиатурите"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Частни"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клониране"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Служебни"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Служебни 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Служебни 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Тестване"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Общи"</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 58dd7c2165ad..f85df4050476 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"কীবোর্ড লেআউট <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>-এ সেট করা আছে… পালটাতে ট্যাপ করুন।"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ফিজিক্যাল কীবোর্ড কনফিগার করা হয়েছে"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"কীবোর্ড দেখতে ট্যাপ করুন"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ব্যক্তিগত"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ক্লোন করুন"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"অফিস"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"২য় অফিস"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"৩য় অফিস"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"পরীক্ষা"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"কমিউনাল"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index aa66e02e8c97..5d207a8c456e 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Raspored tastature je postavljen na <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Dodirnite da promijenite."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fizičke tastature su konfigurirane"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Dodirnite da pregledate tastature"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privatno"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Poslovno"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"2. poslovno"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"3. poslovno"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Testno"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Opće"</string>
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index be8654db08f6..cf3a8ade3a73 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Disseny del teclat definit en <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Toca per canviar-ho."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Teclats físic configurats"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Toca per veure els teclats"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privat"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Treball"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Treball 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Treball 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Prova"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Compartit"</string>
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 35def43ac231..0d586e472959 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Tastaturlayoutet er angivet som <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Tryk for at ændre dette."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fysiske tastaturer er konfigureret"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tryk for at se tastaturer"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privat"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Arbejde"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Arbejde 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Arbejde 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Fælles"</string>
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 179bdb435420..6c47dd674316 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Keyboard layout set to <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Tap to change."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Physical keyboards configured"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tap to view keyboards"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Private"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Work"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Work 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Work 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Communal"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 2a4f88e52b10..5c26afa9903d 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Keyboard layout set to <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Tap to change."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Physical keyboards configured"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tap to view keyboards"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Private"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Work"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Work 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Work 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Communal"</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 0f08d2fb7fd8..80da8b947742 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Keyboard layout set to <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Tap to change."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Physical keyboards configured"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tap to view keyboards"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Private"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Work"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Work 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Work 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Communal"</string>
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 29f0f8f7623a..051528d5b5b0 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Diseño del teclado definido como <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Toca para cambiarlo."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Teclados físicos configurados"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Toca para ver los teclados"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privado"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Trabajo"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Trabajo 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Trabajo 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Prueba"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Común"</string>
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 4a42b0066a96..f44b8a4bbfe1 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Klaviatuuripaigutuseks on määratud <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> … puudutage muutmiseks."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Füüsilised klaviatuurid on seadistatud"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Puudutage klaviatuuride vaatamiseks"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privaatne"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Kloon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Töö"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Töö 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Töö 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Jagatud"</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 3b76e8886613..8bf5d972f955 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Ezarri da <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g> eta <xliff:g id="LAYOUT_3">%3$s</xliff:g> gisa teklatuaren diseinua… Diseinu hori aldatzeko, sakatu hau."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Konfiguratu dira teklatu fisikoak"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Sakatu hau teklatuak ikusteko"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Pribatua"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klona"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Lanekoa"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Lanekoa 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Lanekoa 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Probakoa"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Partekatua"</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 71dbc43bb4ec..c1b67ad5c696 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"جانمایی صفحه‌کلید چنین تنظیم شد: <xliff:g id="LAYOUT_1">%1$s</xliff:g>، <xliff:g id="LAYOUT_2">%2$s</xliff:g>، <xliff:g id="LAYOUT_3">%3$s</xliff:g>… برای تغییر ضربه بزنید"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"صفحه‌کلیدهای فیزیکی پیکربندی شدند"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"برای مشاهده صفحه‌کلیدها ضربه بزنید"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"خصوصی"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"مشابه‌سازی"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"کار"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"کار ۲"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"کار ۳"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"آزمایش"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"عمومی"</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index c69bafebcf86..8c643458c90d 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Näppäimistöasetteluksi valittu <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Muuta asetuksia napauttamalla."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fyysiset näppäimistöt määritetty"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Katso näppäimistöt napauttamalla"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Yksityinen"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Kloonaus"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Työ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Työ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Työ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Testi"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Jaettu"</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 6c88f456d1b7..177fd1330378 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Disposition du clavier définie à <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Touchez pour modifier."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Claviers physiques configurés"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Touchez pour afficher les claviers"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privé"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Professionnel"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Professionnel 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Professionnel 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Commun"</string>
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index c1e2bbfe51ad..6600c2941a61 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"O deseño do teclado estableceuse en <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Toca para cambialo."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Configuráronse varios teclados físicos"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Toca para ver os teclados"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privado"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clonado"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Traballo"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Traballo 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Traballo 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Proba"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Compartido"</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index da75282afe5b..d8478695d785 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"કીબોર્ડનું લેઆઉટ <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> પર સેટ કરવામાં આવ્યું છે… બદલવા માટે ટૅપ કરો."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ભૌતિક કીબોર્ડની ગોઠવણી કરવામાં આવી છે"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"કીબોર્ડ જોવા માટે ટૅપ કરો"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ખાનગી"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ક્લોન કરો"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ઑફિસ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ઑફિસ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ઑફિસ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"પરીક્ષણ કરો"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"કૉમ્યુનલ"</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index d448b51a4c18..aaa4c5221587 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"कीबोर्ड का लेआउट <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… पर सेट कर दिया गया है. इसे बदलने के लिए टैप करें."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"फ़िज़िकल कीबोर्ड कॉन्फ़िगर किए गए"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"कीबोर्ड देखने के लिए टैप करें"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"निजी"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"क्लोन"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ऑफ़िस"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ऑफ़िस 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ऑफ़िस 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"टेस्ट"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"कम्यूनिटी"</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 5ee152741691..0e82b26e6b71 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Raspored tipkovnice postavljen je na <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Dodirnite da biste ga promijenili."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fizičke su tipkovnice konfigurirane"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Dodirnite da bi se prikazale tipkovnice"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privatno"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Kloniranje"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Posao"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Posao 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Posao 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Zajedničko"</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 2c4c77e30301..f2236503e7d0 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"A billentyűzetkiosztás a következőkre van beállítva: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… A módosításhoz koppintson."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fizikai billentyűzetek beállítva"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Koppintson a billentyűzetek megtekintéséhez"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privát"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klón"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Munkahelyi"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"2. munkahelyi"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"3. munkahelyi"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Teszt"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Közös"</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 482e0751253e..ca227df45212 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Ստեղնաշարի համար կարգավորված են <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> դասավորությունները։ Հպեք փոխելու համար։"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Ֆիզիկական ստեղնաշարերը կարգավորված են"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Հպեք՝ ստեղնաշարերը դիտելու համար"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Անձնական"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Կլոն"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Աշխատանքային"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Աշխատանքային 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Աշխատանքային 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Փորձնական"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Ընդհանուր"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index f18d83459294..86a0858a497e 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Tata letak keyboard disetel ke <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Ketuk untuk mengubah."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Keyboard fisik telah dikonfigurasi"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Ketuk untuk melihat keyboard"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Pribadi"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Kerja"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Kerja 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Kerja 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Pengujian"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Umum"</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 076c5a37fddb..1cc244ff6ed0 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Layout tastiera impostato su <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Tocca per cambiare l\'impostazione."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Tastiere fisiche configurate"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tocca per visualizzare le tastiere"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privato"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Lavoro"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Lavoro 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Lavoro 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Condiviso"</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 8931518f5ef0..390f6f1e686c 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"キーボードのレイアウトは<xliff:g id="LAYOUT_1">%1$s</xliff:g>、<xliff:g id="LAYOUT_2">%2$s</xliff:g>、<xliff:g id="LAYOUT_3">%3$s</xliff:g>などに設定されています。タップで変更できます。"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"物理キーボードの設定完了"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"タップするとキーボードを表示できます"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"非公開"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"複製"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"仕事用"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"仕事用 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"仕事用 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"テスト"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"共用"</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 3e33115d32ef..8eab926cf376 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -2329,13 +2329,13 @@
<string name="system_locale_title" msgid="711882686834677268">"Жүйенің әдепкі параметрі"</string>
<string name="default_card_name" msgid="9198284935962911468">"<xliff:g id="CARDNUMBER">%d</xliff:g>-КАРТА"</string>
<string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Сағаттарды басқаруға арналған қосымша сағат профилінің рұқсаты"</string>
- <string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Қосымша қолданбаға сағаттарды басқаруға рұқсат беріледі."</string>
+ <string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Серік қолданбаға сағаттарды басқаруға рұқсат беріледі."</string>
<string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Серіктес құрылғының бар-жоғын бақылау"</string>
- <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Қосымша қолданбаға қолданбалар маңайда немесе алыста болған кезде қосымша құрылғының бар болуын бақылауға рұқсат беріледі."</string>
+ <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Серік қолданбаға құрылғылар маңайда немесе алыста болуына қарамастан серік құрылғыны табуға рұқсат беріледі."</string>
<string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"Ілеспе хабарлар жеткізу"</string>
- <string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Қосымша қолданбаға ілеспе хабарларды басқа құрылғыларға жеткізуге рұқсат беріледі."</string>
+ <string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Серік қолданбаға басқа құрылғыларға серік хабарлар жеткізуге рұқсат беріледі."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Экрандық режимдегі қызметтерді фоннан іске қосу"</string>
- <string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Қосымша қолданбаға экрандық режимдегі қызметтерді фоннан іске қосуға рұқсат беріледі."</string>
+ <string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Серік қолданбаға экрандық режимдегі қызметтерді фоннан іске қосуға рұқсат беріледі."</string>
<string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофон қолжетімді."</string>
<string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофон блокталған."</string>
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Дисплейге көшірмені көрсету мүмкін емес"</string>
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Пернетақта схемасы \"<xliff:g id="LAYOUT_1">%1$s</xliff:g>\", \"<xliff:g id="LAYOUT_2">%2$s</xliff:g>\", \"<xliff:g id="LAYOUT_3">%3$s</xliff:g>\" деп орнатылды… Өзгерту үшін түртіңіз."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Физикалық пернетақталар конфигурацияланды"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Пернетақталарды көру үшін түртіңіз."</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Жеке"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клон"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Жұмыс"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Жұмыс 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Жұмыс 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Сынақ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Жалпы"</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 0bcf992af0c7..c677a3da30f0 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"បានកំណត់ប្លង់ក្ដារចុចទៅ <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… សូមចុចដើម្បីប្ដូរ។"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"បានកំណត់រចនាសម្ព័ន្ធ​ក្ដារចុចរូបវន្ត"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"ចុចដើម្បីមើលក្ដារចុច"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ឯកជន"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ក្លូន"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ការងារ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ការងារទី 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ការងារទី 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ការធ្វើ​តេស្ត"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"ទូទៅ"</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index a69601ad937f..bb99b5d56290 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"ಕೀಬೋರ್ಡ್ ಲೇಔಟ್ ಅನ್ನು <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> ಗೆ ಸೆಟ್ ಮಾಡಲಾಗಿದೆ… ಬದಲಾಯಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ಭೌತಿಕ ಕೀಬೋರ್ಡ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"ಕೀಬೋರ್ಡ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ಖಾಸಗಿ"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ಕ್ಲೋನ್"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ಕೆಲಸ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ಕೆಲಸ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ಕೆಲಸ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ಪರೀಕ್ಷೆ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"ಸಮುದಾಯ"</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 77d45c789563..82a3b2675d25 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"키보드 레이아웃이 <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>로 설정됩니다. 변경하려면 탭하세요."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"실제 키보드에 구성됨"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"키보드를 보려면 탭하세요."</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"비공개"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"복사"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"직장"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"직장 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"직장 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"테스트"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"공동"</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index ee7b40713624..11950aa25a31 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Баскычтопко төмөнкү калып коюлду: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Өзгөртүү үчүн басыңыз."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Физикалык баскычтоптор конфигурацияланды"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Баскычтопторду көрүү үчүн басыңыз"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Купуя"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клон"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Жумуш"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Жумуш 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Жумуш 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Сыноо"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Жалпы"</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index d9698e320d45..3e887a506d4e 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"ຕັ້ງໂຄງຮ່າງແປ້ນພິມເປັນ <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… ແຕະເພື່ອປ່ຽນແປງ."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ຕັ້ງຄ່າແປ້ນພິມແທ້ແລ້ວ"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"ແຕະເພື່ອເບິ່ງແປ້ນພິມ"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ສ່ວນຕົວ"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ໂຄລນ"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ວຽກ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ວຽກ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ວຽກ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ທົດສອບ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"ສ່ວນກາງ"</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 2a2a0883ac74..c77f78503c5f 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -2361,18 +2361,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Išdėstymas nustatytas į <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Palieskite, kad pakeistumėte."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Sukonfigūruotos fizinės klaviatūros"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Palieskite, kad peržiūrėtumėte klaviatūras"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privatu"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Identiška kopija"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Darbas"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Darbas (2)"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Darbas (3)"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Bandymas"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Bendruomenės"</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 8c7c206aeae4..f443d8ef2e38 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Ir iestatīti šādi tastatūras izkārtojumi: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Lai to mainītu, pieskarieties."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fiziskās tastatūras ir konfigurētas"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Lai skatītu tastatūras, pieskarieties"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privāts"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klons"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Darbam"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Darbam (2.)"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Darbam (3.)"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Testēšanai"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Kopīgs"</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 4d2f72e5cc40..0c1d552ecd73 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Распоредот на тастатурата е поставен на <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Допрете за да промените."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Физичките тастатури се конфигурирани"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Допрете за да ги видите тастатурите"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Приватен профил"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клониран профил"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Работен профил"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Работен профил 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Работен профил 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Профил за тестирање"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Профил на заедницата"</string>
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index be405751eca3..18eb4a941d49 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"കീബോർഡ് ലേഔട്ട് ആയി ഇനിപ്പറയുന്നവ സജ്ജീകരിച്ചു: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… മാറ്റാൻ ടാപ്പ് ചെയ്യുക."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"യഥാർത്ഥ കീബോർഡുകൾ കോൺഫിഗർ ചെയ്‌തു"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"കീബോർഡുകൾ കാണാൻ ടാപ്പ് ചെയ്യുക"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"സ്വകാര്യം"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ക്ലോൺ ചെയ്യുക"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ഔദ്യോഗികം"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ഔദ്യോഗികം 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ഔദ്യോഗികം 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ടെസ്‌റ്റ്"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"കമ്മ്യൂണൽ"</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index c215b88a6d8e..ed656cd24f7c 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Гарын бүдүүвчийг <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> болгож тохируулсан… Өөрчлөхийн тулд товшино уу."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Биет гарыг тохируулсан"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Гарыг харахын тулд товшино уу"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Хувийн"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клон"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Ажил"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Ажил 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Ажил 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Туршилт"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Нийтийн"</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 03fcc1767a75..ff475fe2a971 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"कीबोर्ड लेआउट <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> वर सेट करा… बदलण्यासाठी टॅप करा."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"वास्तविक कीबोर्ड कॉंफिगर केला"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"कीबोर्ड पाहण्यासाठी टॅप करा"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"खाजगी"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"क्लोन"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ऑफिस"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ऑफिस २"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ऑफिस ३"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"चाचणी"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"सामुदायिक"</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 84b79a806904..4821fc896275 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Reka letak papan kekunci ditetapkan kepada <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Ketik untuk menukar reka letak."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Papan kekunci fizikal dikonfigurasikan"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Ketik untuk melihat papan kekunci"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Peribadi"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Kerja"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Kerja 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Kerja 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Ujian"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Umum"</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 01906b91f6e9..6981e82c2125 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"ကီးဘုတ်အပြင်အဆင်ကို <xliff:g id="LAYOUT_1">%1$s</xliff:g>၊ <xliff:g id="LAYOUT_2">%2$s</xliff:g>၊ <xliff:g id="LAYOUT_3">%3$s</xliff:g> သို့ သတ်မှတ်လိုက်သည်… ပြောင်းရန် တို့ပါ။"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ပကတိကီးဘုတ်များကို စီစဉ်သတ်မှတ်ထားသည်"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"ကီးဘုတ်များကြည့်ရန် တို့ပါ"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"သီးသန့်"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ဆင်တူပြုလုပ်ရန်"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"အလုပ်"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"အလုပ် ၂"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"အလုပ် ၃"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"စမ်းသပ်မှု"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"အများသုံး"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index d8e3b40ee46e..e667b93baf31 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Tastaturoppsettet er satt til <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> … Trykk for å endre det."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"De fysiske tastaturene er konfigurert"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Trykk for å se tastaturene"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privat"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Jobb"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Jobb 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Jobb 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Felles"</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 126f61277491..bb06243b0fce 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"किबोर्ड लेआउट <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> भाषामा सेट गरिएको छ… बदल्न ट्याप गर्नुहोस्।"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"भौतिक किबोर्डहरू कन्फिगर गरिएका छन्"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"किबोर्डहरू हेर्न ट्याप गर्नुहोस्"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"निजी"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"क्लोन"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"कार्य प्रोफाइल"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"कार्य प्रोफाइल २"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"कार्य प्रोफाइल ३"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"परीक्षण"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"सामुदायिक"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index bc187978fb78..40239a6fef91 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Toetsenbordindeling ingesteld op <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Tik om te wijzigen."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fysieke toetsenborden zijn ingesteld"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tik om toetsenborden te bekijken"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privé"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Kloon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Werk"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Werk 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Werk 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Gemeenschappelijk"</string>
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 7f66887bee92..fc4824d44a70 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"କୀବୋର୍ଡ ଲେଆଉଟକୁ <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>ରେ ସେଟ କରାଯାଇଛି… ପରିବର୍ତ୍ତନ କରିବାକୁ ଟାପ କରନ୍ତୁ।"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ଫିଜିକାଲ କୀବୋର୍ଡଗୁଡ଼ିକୁ କନଫିଗର କରାଯାଇଛି"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"କୀବୋର୍ଡଗୁଡ଼ିକୁ ଦେଖିବା ପାଇଁ ଟାପ କରନ୍ତୁ"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ପ୍ରାଇଭେଟ"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"କ୍ଲୋନ"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ୱାର୍କ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ୱାର୍କ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ୱାର୍କ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ଟେଷ୍ଟ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"କମ୍ୟୁନାଲ"</string>
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 039614931a64..f828daef690f 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"ਕੀ-ਬੋਰਡ ਦਾ ਖਾਕਾ <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> \'ਤੇ ਸੈੱਟ ਹੈ… ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ਭੌਤਿਕ ਕੀ-ਬੋਰਡਾਂ ਦਾ ਸੰਰੂਪਣ ਕੀਤਾ ਗਿਆ"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"ਕੀ-ਬੋਰਡਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ਨਿੱਜੀ"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ਕਲੋਨ"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ਕਾਰਜ"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ਕੰਮ ਸੰਬੰਧੀ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ਕੰਮ ਸੰਬੰਧੀ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ਜਾਂਚ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"ਭਾਈਚਾਰਕ"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 66d5570e0379..f083436dfe54 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -2361,18 +2361,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Ustawiono układ klawiatury <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Kliknij, aby to zmienić."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Skonfigurowano klawiatury fizyczne"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Kliknij, aby wyświetlić klawiatury"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Prywatny"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Służbowy"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Służbowy 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Służbowy 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Testowy"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Wspólny"</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index e32c7389137d..16344880c4b2 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Layout do teclado definido como <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Toque para mudar."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Teclados físicos configurados"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Toque para conferir os teclados"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Particular"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Trabalho"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Trabalho 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Trabalho 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Teste"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Público"</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index e32c7389137d..16344880c4b2 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Layout do teclado definido como <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Toque para mudar."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Teclados físicos configurados"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Toque para conferir os teclados"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Particular"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Trabalho"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Trabalho 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Trabalho 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Teste"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Público"</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 2f16db38d2df..cda23a5c4af6 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -2361,18 +2361,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Настроены раскладки клавиатуры для яз.: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> и др. Нажмите, чтобы изменить."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Физические клавиатуры настроены"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Нажмите, чтобы посмотреть подключенные клавиатуры."</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Личный"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клон"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Рабочий"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Рабочий 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Рабочий 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Тестовый"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Совместный"</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index ac86d7b1979f..4e26aa2aa192 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"යතුරු පුවරුව <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> ලෙස සකසා ඇත… වෙනස් කිරීමට තට්ටු කරන්න."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"භෞතික යතුරු පුවරුව වින්‍යාස කෙරිණි"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"යතුරු පුවරු බැලීමට තට්ටු කරන්න"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"පෞද්ගලික"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"ක්ලෝන කරන්න"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"කාර්යාලය"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"කාර්යාලය 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"කාර්යාලය 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"පරීක්ෂණය"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"වාර්ගික"</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index d1d7897f4242..089372ef12e6 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -2361,18 +2361,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Rozloženie klávesnice je nastavené na jazyky <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g> a <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Môžete to zmeniť klepnutím."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fyzické klávesnice sú nakonfigurované"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Klávesnice si zobrazíte klepnutím"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Súkromný"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Pracovný"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"2. pracovný"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"3. pracovný"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Testovací"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Spoločný"</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 2cd76fdbee62..89658018d36c 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Struktura e tastierës u caktua në: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Trokit për ta ndryshuar."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Tastierat fizike u konfiguruan"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Trokit për të parë tastierat"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privat"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Puna"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Puna 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Puna 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"I përbashkët"</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 9e77bf68cfe6..f81d24da167c 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -2360,18 +2360,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Распоред тастатуре је подешен на <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Додирните да бисте променили."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Физичке тастатуре су конфигурисане"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Додирните да бисте видели тастатуре"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Приватно"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Клонирано"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Посао"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Посао 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Посао 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Тест"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Заједничко"</string>
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index ab5bfca9f377..994ea616d604 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Tangentbordslayouten är inställd på <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> … Tryck om du vill ändra."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fysiska tangentbord har konfigurerats"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Tryck för att visa tangentbord"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Privat"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Arbete"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Arbete 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Arbete 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Allmän"</string>
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 61c0b1754a26..912c58874937 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Muundo wa kibodi umewekwa kuwa <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Gusa ili ubadilishe."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Mipangilio ya kibodi halisi imewekwa"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Gusa ili uangalie kibodi"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Wa faragha"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Nakala"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Wa kazini"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Wa 2 wa Kazini"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Wa 3 wa Kazini"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Jaribio"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Unaoshirikiwa"</string>
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index edf6c2da383e..8ba07fba6800 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"கீபோர்டு தளவமைப்பு <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… ஆகிய மொழிகளில் அமைக்கப்பட்டது, மாற்ற தட்டவும்."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"கீபோர்டுகள் உள்ளமைக்கப்பட்டன"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"கீபோர்டுகளைப் பார்க்க தட்டவும்"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"தனிப்பட்டது"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"குளோன்"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"பணி"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"பணி 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"பணி 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"பரிசோதனை"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"பொது"</string>
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index d862e2f57651..ce7b8bcb35ac 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"కీబోర్డ్ లేఅవుట్ <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>‌కు సెట్ చేయబడింది… మార్చడానికి ట్యాప్ చేయండి."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"ఫిజికల్ కీబోర్డ్‌లు కాన్ఫిగర్ చేయబడ్డాయి"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"కీబోర్డ్‌లను చూడటానికి ట్యాప్ చేయండి"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ప్రైవేట్"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"క్లోన్ చేయండి"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"ఆఫీస్"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"ఆఫీస్ 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"ఆఫీస్ 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"పరీక్ష"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"కమ్యూనల్"</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index bda7e8ad40a4..b26389e664ce 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"ตั้งค่ารูปแบบแป้นพิมพ์เป็นภาษา<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… แตะเพื่อเปลี่ยน"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"กำหนดค่าแป้นพิมพ์จริงแล้ว"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"แตะเพื่อดูแป้นพิมพ์"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"ส่วนตัว"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"โคลน"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"งาน"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"งาน 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"งาน 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ทดสอบ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"ส่วนกลาง"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 53201ea1e07c..ceb8828ba27a 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Naitakda ang layout ng keyboard sa <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… I-tap para baguhin."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Na-configure ang mga pisikal na keyboard"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"I-tap para tingnan ang mga keyboard"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Pribado"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"I-clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Trabaho"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Trabaho 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Trabaho 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Communal"</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index ee1168f64114..528d1e542193 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Klavye düzeni <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g> olarak ayarlandı… Değiştirmek için dokunun."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Fiziksel klavyeler yapılandırıldı"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Klavyeleri görüntülemek için dokunun"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Gizli"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Klon"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"İş"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"İş 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"İş 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Paylaşılan"</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index b1adf52f5562..b0421ee54173 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -2361,18 +2361,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Вибрано такі розкладки клавіатури: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Натисніть, щоб змінити."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Фізичні клавіатури налаштовано"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Натисніть, щоб переглянути клавіатури"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Приватний профіль"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Копія профілю"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Робочий профіль"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Робочий профіль 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Робочий профіль 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Тестовий профіль"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Спільний профіль"</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 92fd2664b259..767ee1c9757a 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"کی بورڈ لے آؤٹ <xliff:g id="LAYOUT_1">%1$s</xliff:g>، <xliff:g id="LAYOUT_2">%2$s</xliff:g>، <xliff:g id="LAYOUT_3">%3$s</xliff:g> پر سیٹ ہے… تبدیل کرنے کے لیے تھپتھپائیں۔"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"فزیکل کی بورڈز کنفیگر کئے گئے"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"کی بورڈز دیکھنے کے لیے تھپتھپائیں"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"نجی"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"کلون"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"دفتری پروفائل"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"دوسری دفتری پروفائل"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"تیسری دفتری پروفائل"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"ٹیسٹ"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"کمیونل"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 79d9f9dc044c..e48d641785fb 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Klaviatura terilmasi bunga sozlandi: <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Oʻzgartirish uchun ustiga bosing."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Tashqi klaviaturalar sozlandi"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Klaviaturalarni ochish uchun ustiga bosing"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Yopiq"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Nusxasini yaratish"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Ish"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Ish 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Ish 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Test"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Umumiy"</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 2ddf49f16046..a14fa753915a 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Đã thiết lập bố cục bàn phím thành <xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Hãy nhấn để thay đổi."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Đã định cấu hình bàn phím vật lý"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Nhấn để xem bàn phím"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Riêng tư"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Sao chép"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Công việc"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Công việc 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Công việc 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Kiểm thử"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Dùng chung"</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index f3b6a395568b..db98b3440496 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"键盘布局已设为<xliff:g id="LAYOUT_1">%1$s</xliff:g>、<xliff:g id="LAYOUT_2">%2$s</xliff:g>、<xliff:g id="LAYOUT_3">%3$s</xliff:g>…点按即可更改。"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"已配置物理键盘"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"点按即可查看键盘"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"私密"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"克隆"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"工作"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"工作 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"工作 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"测试"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"共用"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index bf72080874ca..b3e7959793cf 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"鍵盤版面配置已設定為<xliff:g id="LAYOUT_1">%1$s</xliff:g>、<xliff:g id="LAYOUT_2">%2$s</xliff:g>、<xliff:g id="LAYOUT_3">%3$s</xliff:g>…輕按即可變更。"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"已設定實體鍵盤"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"輕按即可查看鍵盤"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"私人"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"複製"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"工作"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"工作 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"工作 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"測試"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"共用"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 1158cfdc33e2..247499d3d30f 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"鍵盤配置已設為<xliff:g id="LAYOUT_1">%1$s</xliff:g>、<xliff:g id="LAYOUT_2">%2$s</xliff:g>、<xliff:g id="LAYOUT_3">%3$s</xliff:g>…輕觸即可變更。"</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"已設定實體鍵盤"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"輕觸即可查看鍵盤"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"私人"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"副本"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"工作"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"工作 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"工作 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"測試"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"通用"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index db7c253f21d8..976a35e2aa11 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -2359,18 +2359,11 @@
<string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"Uhlaka lwekhibhodi lusethelwe ku-<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… Thepha ukuze ushintshe."</string>
<string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"Amakhibhodi aphathekayo amisiwe"</string>
<string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"Thepha ukuze ubuke amakhibhodi"</string>
- <!-- no translation found for profile_label_private (6463418670715290696) -->
- <skip />
- <!-- no translation found for profile_label_clone (769106052210954285) -->
- <skip />
- <!-- no translation found for profile_label_work (3495359133038584618) -->
- <skip />
- <!-- no translation found for profile_label_work_2 (4691533661598632135) -->
- <skip />
- <!-- no translation found for profile_label_work_3 (4834572253956798917) -->
- <skip />
- <!-- no translation found for profile_label_test (9168641926186071947) -->
- <skip />
- <!-- no translation found for profile_label_communal (8743921499944800427) -->
- <skip />
+ <string name="profile_label_private" msgid="6463418670715290696">"Okuyimfihlo"</string>
+ <string name="profile_label_clone" msgid="769106052210954285">"Yenza i-Clone"</string>
+ <string name="profile_label_work" msgid="3495359133038584618">"Umsebenzi"</string>
+ <string name="profile_label_work_2" msgid="4691533661598632135">"Umsebenzi 2"</string>
+ <string name="profile_label_work_3" msgid="4834572253956798917">"Umsebenzi 3"</string>
+ <string name="profile_label_test" msgid="9168641926186071947">"Hlola"</string>
+ <string name="profile_label_communal" msgid="8743921499944800427">"Okomphakathi"</string>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index ba1f3924bff3..1229453e5736 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -693,6 +693,16 @@
-->
</integer-array>
+ <!-- The device states (supplied by DeviceStateManager) that should be treated as concurrent
+ display state. Default is empty. -->
+ <integer-array name="config_concurrentDisplayDeviceStates">
+ <!-- Example:
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ -->
+ </integer-array>
+
<!-- Indicates whether the window manager reacts to half-fold device states by overriding
rotation. -->
<bool name="config_windowManagerHalfFoldAutoRotateOverride">false</bool>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 7787c5d394e4..93aacdff57df 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4142,6 +4142,7 @@
<java-symbol type="array" name="config_foldedDeviceStates" />
<java-symbol type="array" name="config_halfFoldedDeviceStates" />
<java-symbol type="array" name="config_rearDisplayDeviceStates" />
+ <java-symbol type="array" name="config_concurrentDisplayDeviceStates" />
<java-symbol type="bool" name="config_windowManagerHalfFoldAutoRotateOverride" />
<java-symbol type="bool" name="config_windowManagerPauseRotationWhenUnfolding" />
<java-symbol type="integer" name="config_pauseRotationWhenUnfolding_hingeEventTimeout" />
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 37f592f5797b..0ad349ba5281 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -167,12 +167,24 @@ android_library {
android_ravenwood_test {
name: "FrameworksCoreTestsRavenwood",
+ libs: [
+ "android.test.runner",
+ "android.test.base",
+ ],
static_libs: [
+ "core-test-rules", // for libcore.dalvik.system.CloseGuardSupport
+ "androidx.core_core",
"androidx.annotation_annotation",
"androidx.test.rules",
+ "androidx.test.ext.junit",
+ "mockito_ravenwood",
+ "platform-test-annotations",
],
srcs: [
"src/android/os/FileUtilsTest.java",
+ "src/android/util/**/*.java",
+ "src/com/android/internal/util/**/*.java",
+ "testdoubles/src/com/android/internal/util/**/*.java",
],
auto_gen_config: true,
}
diff --git a/core/tests/coretests/src/android/util/ArrayMapTest.java b/core/tests/coretests/src/android/util/ArrayMapTest.java
index b212cf6b0803..1e444adbc362 100644
--- a/core/tests/coretests/src/android/util/ArrayMapTest.java
+++ b/core/tests/coretests/src/android/util/ArrayMapTest.java
@@ -14,11 +14,17 @@
package android.util;
-import androidx.test.filters.LargeTest;
+import static org.junit.Assert.fail;
+
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
-import junit.framework.TestCase;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ConcurrentModificationException;
@@ -26,10 +32,14 @@ import java.util.ConcurrentModificationException;
* Unit tests for ArrayMap that don't belong in CTS.
*/
@LargeTest
-public class ArrayMapTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class ArrayMapTest {
private static final String TAG = "ArrayMapTest";
ArrayMap<String, String> map = new ArrayMap<>();
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
/**
* Attempt to generate a ConcurrentModificationException in ArrayMap.
* <p>
@@ -41,6 +51,7 @@ public class ArrayMapTest extends TestCase {
* @throws Exception
*/
@Test
+ @IgnoreUnderRavenwood(reason = "Long test runtime")
public void testConcurrentModificationException() throws Exception {
final int TEST_LEN_MS = 5000;
System.out.println("Starting ArrayMap concurrency test");
diff --git a/core/tests/coretests/src/android/util/ArraySetTest.java b/core/tests/coretests/src/android/util/ArraySetTest.java
index f1bebfb9bd93..51de6341179b 100644
--- a/core/tests/coretests/src/android/util/ArraySetTest.java
+++ b/core/tests/coretests/src/android/util/ArraySetTest.java
@@ -16,12 +16,14 @@
package android.util;
-import androidx.test.filters.LargeTest;
+import static org.junit.Assert.fail;
-import junit.framework.TestCase;
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ConcurrentModificationException;
@@ -29,7 +31,8 @@ import java.util.ConcurrentModificationException;
* Unit tests for ArraySet that don't belong in CTS.
*/
@LargeTest
-public class ArraySetTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class ArraySetTest {
private static final String TAG = "ArraySetTest";
ArraySet<String> mSet = new ArraySet<>();
diff --git a/core/tests/coretests/src/android/util/Base64Test.java b/core/tests/coretests/src/android/util/Base64Test.java
index 15c51af0b3e1..b64826611f81 100644
--- a/core/tests/coretests/src/android/util/Base64Test.java
+++ b/core/tests/coretests/src/android/util/Base64Test.java
@@ -16,9 +16,16 @@
package android.util;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -32,7 +39,8 @@ import java.util.Random;
import java.util.stream.Collectors;
@LargeTest
-public class Base64Test extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class Base64Test {
private static final String TAG = "Base64Test";
/** Decodes a string, returning a string. */
@@ -62,7 +70,7 @@ public class Base64Test extends TestCase {
}
/** Assert that actual equals the first len bytes of expected. */
- private void assertEquals(byte[] expected, int len, byte[] actual) {
+ private void assertPartialEquals(byte[] expected, int len, byte[] actual) {
assertEquals(len, actual.length);
for (int i = 0; i < len; ++i) {
assertEquals(expected[i], actual[i]);
@@ -70,21 +78,14 @@ public class Base64Test extends TestCase {
}
/** Assert that actual equals the first len bytes of expected. */
- private void assertEquals(byte[] expected, int len, byte[] actual, int alen) {
+ private void assertPartialEquals(byte[] expected, int len, byte[] actual, int alen) {
assertEquals(len, alen);
for (int i = 0; i < len; ++i) {
assertEquals(expected[i], actual[i]);
}
}
- /** Assert that actual equals the first len bytes of expected. */
- private void assertEquals(byte[] expected, byte[] actual) {
- assertEquals(expected.length, actual.length);
- for (int i = 0; i < expected.length; ++i) {
- assertEquals(expected[i], actual[i]);
- }
- }
-
+ @Test
public void testDecodeExtraChars() throws Exception {
// padding 0
assertEquals("hello, world", decodeString("aGVsbG8sIHdvcmxk"));
@@ -131,28 +132,30 @@ public class Base64Test extends TestCase {
(byte) 0xcc, (byte) 0xbb, (byte) 0xaa,
(byte) 0x99, (byte) 0x88, (byte) 0x77 };
+ @Test
public void testBinaryDecode() throws Exception {
- assertEquals(BYTES, 0, Base64.decode("", 0));
- assertEquals(BYTES, 1, Base64.decode("/w==", 0));
- assertEquals(BYTES, 2, Base64.decode("/+4=", 0));
- assertEquals(BYTES, 3, Base64.decode("/+7d", 0));
- assertEquals(BYTES, 4, Base64.decode("/+7dzA==", 0));
- assertEquals(BYTES, 5, Base64.decode("/+7dzLs=", 0));
- assertEquals(BYTES, 6, Base64.decode("/+7dzLuq", 0));
- assertEquals(BYTES, 7, Base64.decode("/+7dzLuqmQ==", 0));
- assertEquals(BYTES, 8, Base64.decode("/+7dzLuqmYg=", 0));
+ assertPartialEquals(BYTES, 0, Base64.decode("", 0));
+ assertPartialEquals(BYTES, 1, Base64.decode("/w==", 0));
+ assertPartialEquals(BYTES, 2, Base64.decode("/+4=", 0));
+ assertPartialEquals(BYTES, 3, Base64.decode("/+7d", 0));
+ assertPartialEquals(BYTES, 4, Base64.decode("/+7dzA==", 0));
+ assertPartialEquals(BYTES, 5, Base64.decode("/+7dzLs=", 0));
+ assertPartialEquals(BYTES, 6, Base64.decode("/+7dzLuq", 0));
+ assertPartialEquals(BYTES, 7, Base64.decode("/+7dzLuqmQ==", 0));
+ assertPartialEquals(BYTES, 8, Base64.decode("/+7dzLuqmYg=", 0));
}
+ @Test
public void testWebSafe() throws Exception {
- assertEquals(BYTES, 0, Base64.decode("", Base64.URL_SAFE));
- assertEquals(BYTES, 1, Base64.decode("_w==", Base64.URL_SAFE));
- assertEquals(BYTES, 2, Base64.decode("_-4=", Base64.URL_SAFE));
- assertEquals(BYTES, 3, Base64.decode("_-7d", Base64.URL_SAFE));
- assertEquals(BYTES, 4, Base64.decode("_-7dzA==", Base64.URL_SAFE));
- assertEquals(BYTES, 5, Base64.decode("_-7dzLs=", Base64.URL_SAFE));
- assertEquals(BYTES, 6, Base64.decode("_-7dzLuq", Base64.URL_SAFE));
- assertEquals(BYTES, 7, Base64.decode("_-7dzLuqmQ==", Base64.URL_SAFE));
- assertEquals(BYTES, 8, Base64.decode("_-7dzLuqmYg=", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 0, Base64.decode("", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 1, Base64.decode("_w==", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 2, Base64.decode("_-4=", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 3, Base64.decode("_-7d", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 4, Base64.decode("_-7dzA==", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 5, Base64.decode("_-7dzLs=", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 6, Base64.decode("_-7dzLuq", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 7, Base64.decode("_-7dzLuqmQ==", Base64.URL_SAFE));
+ assertPartialEquals(BYTES, 8, Base64.decode("_-7dzLuqmYg=", Base64.URL_SAFE));
assertEquals("", Base64.encodeToString(BYTES, 0, 0, Base64.URL_SAFE));
assertEquals("_w==\n", Base64.encodeToString(BYTES, 0, 1, Base64.URL_SAFE));
@@ -165,6 +168,7 @@ public class Base64Test extends TestCase {
assertEquals("_-7dzLuqmYg=\n", Base64.encodeToString(BYTES, 0, 8, Base64.URL_SAFE));
}
+ @Test
public void testFlags() throws Exception {
assertEquals("YQ==\n", encodeToString("a", 0));
assertEquals("YQ==", encodeToString("a", Base64.NO_WRAP));
@@ -195,6 +199,7 @@ public class Base64Test extends TestCase {
assertEquals("YWJjZA\r\n", encodeToString("abcd", Base64.CRLF | Base64.NO_PADDING));
}
+ @Test
public void testLineLength() throws Exception {
String in_56 = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd";
String in_57 = in_56 + "e";
@@ -245,7 +250,9 @@ public class Base64Test extends TestCase {
* us to get at package-private members (Base64.Encoder in
* this case).
*/
- public void XXXtestEncodeInternal() throws Exception {
+ @Test
+ @Ignore
+ public void testEncodeInternal() throws Exception {
byte[] input = { (byte) 0x61, (byte) 0x62, (byte) 0x63 };
byte[] output = new byte[100];
@@ -253,11 +260,11 @@ public class Base64Test extends TestCase {
output);
encoder.process(input, 0, 3, false);
- assertEquals("YWJj".getBytes(), 4, encoder.output, encoder.op);
+ assertPartialEquals("YWJj".getBytes(), 4, encoder.output, encoder.op);
assertEquals(0, encoder.tailLen);
encoder.process(input, 0, 3, false);
- assertEquals("YWJj".getBytes(), 4, encoder.output, encoder.op);
+ assertPartialEquals("YWJj".getBytes(), 4, encoder.output, encoder.op);
assertEquals(0, encoder.tailLen);
encoder.process(input, 0, 1, false);
@@ -269,7 +276,7 @@ public class Base64Test extends TestCase {
assertEquals(2, encoder.tailLen);
encoder.process(input, 0, 1, false);
- assertEquals("YWFh".getBytes(), 4, encoder.output, encoder.op);
+ assertPartialEquals("YWFh".getBytes(), 4, encoder.output, encoder.op);
assertEquals(0, encoder.tailLen);
encoder.process(input, 0, 2, false);
@@ -277,15 +284,15 @@ public class Base64Test extends TestCase {
assertEquals(2, encoder.tailLen);
encoder.process(input, 0, 2, false);
- assertEquals("YWJh".getBytes(), 4, encoder.output, encoder.op);
+ assertPartialEquals("YWJh".getBytes(), 4, encoder.output, encoder.op);
assertEquals(1, encoder.tailLen);
encoder.process(input, 0, 2, false);
- assertEquals("YmFi".getBytes(), 4, encoder.output, encoder.op);
+ assertPartialEquals("YmFi".getBytes(), 4, encoder.output, encoder.op);
assertEquals(0, encoder.tailLen);
encoder.process(input, 0, 1, true);
- assertEquals("YQ".getBytes(), 2, encoder.output, encoder.op);
+ assertPartialEquals("YQ".getBytes(), 2, encoder.output, encoder.op);
}
private static final String lipsum =
@@ -311,6 +318,7 @@ public class Base64Test extends TestCase {
"molestie dapibus commodo. Ut vel tellus at massa gravida " +
"semper non sed orci.";
+ @Test
public void testInputStream() throws Exception {
int[] flagses = { Base64.DEFAULT,
Base64.NO_PADDING,
@@ -343,7 +351,7 @@ public class Base64Test extends TestCase {
while ((b = b64is.read(actual, ap, actual.length-ap)) != -1) {
ap += b;
}
- assertEquals(actual, ap, plain);
+ assertPartialEquals(actual, ap, plain);
// read individual bytes
bais = new ByteArrayInputStream(encoded);
@@ -352,7 +360,7 @@ public class Base64Test extends TestCase {
while ((b = b64is.read()) != -1) {
actual[ap++] = (byte) b;
}
- assertEquals(actual, ap, plain);
+ assertPartialEquals(actual, ap, plain);
// mix reads of variously-sized arrays with one-byte reads
bais = new ByteArrayInputStream(encoded);
@@ -371,7 +379,7 @@ public class Base64Test extends TestCase {
}
}
}
- assertEquals(actual, ap, plain);
+ assertPartialEquals(actual, ap, plain);
// ----- test encoding ("plain" -> "encoded") -----
@@ -382,7 +390,7 @@ public class Base64Test extends TestCase {
while ((b = b64is.read(actual, ap, actual.length-ap)) != -1) {
ap += b;
}
- assertEquals(actual, ap, encoded);
+ assertPartialEquals(actual, ap, encoded);
// read individual bytes
bais = new ByteArrayInputStream(plain);
@@ -391,7 +399,7 @@ public class Base64Test extends TestCase {
while ((b = b64is.read()) != -1) {
actual[ap++] = (byte) b;
}
- assertEquals(actual, ap, encoded);
+ assertPartialEquals(actual, ap, encoded);
// mix reads of variously-sized arrays with one-byte reads
bais = new ByteArrayInputStream(plain);
@@ -410,11 +418,12 @@ public class Base64Test extends TestCase {
}
}
}
- assertEquals(actual, ap, encoded);
+ assertPartialEquals(actual, ap, encoded);
}
}
/** http://b/3026478 */
+ @Test
public void testSingleByteReads() throws IOException {
InputStream in = new Base64InputStream(
new ByteArrayInputStream("/v8=".getBytes()), Base64.DEFAULT);
@@ -426,6 +435,7 @@ public class Base64Test extends TestCase {
* Tests that Base64OutputStream produces exactly the same results
* as calling Base64.encode/.decode on an in-memory array.
*/
+ @Test
public void testOutputStream() throws Exception {
int[] flagses = { Base64.DEFAULT,
Base64.NO_PADDING,
@@ -456,7 +466,7 @@ public class Base64Test extends TestCase {
b64os.write(plain);
b64os.close();
actual = baos.toByteArray();
- assertEquals(encoded, actual);
+ assertArrayEquals(encoded, actual);
// many calls to write(int)
baos = new ByteArrayOutputStream();
@@ -466,7 +476,7 @@ public class Base64Test extends TestCase {
}
b64os.close();
actual = baos.toByteArray();
- assertEquals(encoded, actual);
+ assertArrayEquals(encoded, actual);
// intermixed sequences of write(int) with
// write(byte[],int,int) of various lengths.
@@ -489,7 +499,7 @@ public class Base64Test extends TestCase {
}
b64os.close();
actual = baos.toByteArray();
- assertEquals(encoded, actual);
+ assertArrayEquals(encoded, actual);
// ----- test decoding ("encoded" -> "plain") -----
@@ -499,7 +509,7 @@ public class Base64Test extends TestCase {
b64os.write(encoded);
b64os.close();
actual = baos.toByteArray();
- assertEquals(plain, actual);
+ assertArrayEquals(plain, actual);
// many calls to write(int)
baos = new ByteArrayOutputStream();
@@ -509,7 +519,7 @@ public class Base64Test extends TestCase {
}
b64os.close();
actual = baos.toByteArray();
- assertEquals(plain, actual);
+ assertArrayEquals(plain, actual);
// intermixed sequences of write(int) with
// write(byte[],int,int) of various lengths.
@@ -532,10 +542,11 @@ public class Base64Test extends TestCase {
}
b64os.close();
actual = baos.toByteArray();
- assertEquals(plain, actual);
+ assertArrayEquals(plain, actual);
}
}
+ @Test
public void testOutputStream_ioExceptionDuringClose() {
OutputStream out = new OutputStream() {
@Override public void write(int b) throws IOException { }
@@ -551,6 +562,7 @@ public class Base64Test extends TestCase {
}
}
+ @Test
public void testOutputStream_ioExceptionDuringCloseAndWrite() {
OutputStream out = new OutputStream() {
@Override public void write(int b) throws IOException {
@@ -583,6 +595,7 @@ public class Base64Test extends TestCase {
}
}
+ @Test
public void testOutputStream_ioExceptionDuringWrite() {
OutputStream out = new OutputStream() {
@Override public void write(int b) throws IOException {
diff --git a/core/tests/coretests/src/android/util/CharsetUtilsTest.java b/core/tests/coretests/src/android/util/CharsetUtilsTest.java
index c29545168758..fbbe311d44fb 100644
--- a/core/tests/coretests/src/android/util/CharsetUtilsTest.java
+++ b/core/tests/coretests/src/android/util/CharsetUtilsTest.java
@@ -18,6 +18,9 @@ package android.util;
import static org.junit.Assert.assertEquals;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.HexDump;
@@ -25,18 +28,25 @@ import com.android.internal.util.HexDump;
import dalvik.system.VMRuntime;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = CharsetUtils.class)
public class CharsetUtilsTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
private byte[] dest;
private long destPtr;
@Before
public void setUp() {
- dest = (byte[]) VMRuntime.getRuntime().newNonMovableArray(byte.class, 8);
- destPtr = VMRuntime.getRuntime().addressOf(dest);
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ dest = (byte[]) VMRuntime.getRuntime().newNonMovableArray(byte.class, 8);
+ destPtr = VMRuntime.getRuntime().addressOf(dest);
+ }
}
@Test
diff --git a/core/tests/coretests/src/android/util/CloseGuardTest.java b/core/tests/coretests/src/android/util/CloseGuardTest.java
index d86c7b79fad6..15c57b1aa6f7 100644
--- a/core/tests/coretests/src/android/util/CloseGuardTest.java
+++ b/core/tests/coretests/src/android/util/CloseGuardTest.java
@@ -16,6 +16,9 @@
package android.util;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
import libcore.dalvik.system.CloseGuardSupport;
import org.junit.Rule;
@@ -23,10 +26,21 @@ import org.junit.Test;
import org.junit.rules.TestRule;
/** Unit tests for {@link android.util.CloseGuard} */
+@IgnoreUnderRavenwood(blockedBy = CloseGuard.class)
public class CloseGuardTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
@Rule
- public final TestRule rule = CloseGuardSupport.getRule();
+ public final TestRule rule;
+
+ public CloseGuardTest() {
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ rule = CloseGuardSupport.getRule();
+ } else {
+ rule = null;
+ }
+ }
@Test
public void testEnabled_NotOpen() throws Throwable {
diff --git a/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java b/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java
index 572e9b062097..72bd578ad8b9 100644
--- a/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java
+++ b/core/tests/coretests/src/android/util/DayOfMonthCursorTest.java
@@ -16,30 +16,40 @@
package android.util;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.Calendar;
/**
* Unit tests for {@link DayOfMonthCursor}.
*/
-public class DayOfMonthCursorTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class DayOfMonthCursorTest {
+ @Test
@SmallTest
public void testMonthRows() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
Calendar.SEPTEMBER, 11, Calendar.SUNDAY);
- assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
+ assertArrayEquals(new int[]{26, 27, 28, 29, 30, 31, 1},
mc.getDigitsForRow(0));
- assertArraysEqual(new int[]{2, 3, 4, 5, 6, 7, 8},
+ assertArrayEquals(new int[]{2, 3, 4, 5, 6, 7, 8},
mc.getDigitsForRow(1));
- assertArraysEqual(new int[]{30, 1, 2, 3, 4, 5, 6},
+ assertArrayEquals(new int[]{30, 1, 2, 3, 4, 5, 6},
mc.getDigitsForRow(5));
}
+ @Test
@SmallTest
public void testMoveLeft() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
@@ -70,6 +80,7 @@ public class DayOfMonthCursorTest extends TestCase {
assertEquals(5, mc.getSelectedColumn());
}
+ @Test
@SmallTest
public void testMoveRight() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
@@ -100,6 +111,7 @@ public class DayOfMonthCursorTest extends TestCase {
assertEquals(1, mc.getSelectedColumn());
}
+ @Test
@SmallTest
public void testMoveUp() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
@@ -124,6 +136,7 @@ public class DayOfMonthCursorTest extends TestCase {
assertEquals(4, mc.getSelectedColumn());
}
+ @Test
@SmallTest
public void testMoveDown() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
@@ -147,12 +160,4 @@ public class DayOfMonthCursorTest extends TestCase {
assertEquals(1, mc.getSelectedRow());
assertEquals(0, mc.getSelectedColumn());
}
-
- private void assertArraysEqual(int[] expected, int[] actual) {
- assertEquals("array length", expected.length, actual.length);
- for (int i = 0; i < expected.length; i++) {
- assertEquals("index " + i,
- expected[i], actual[i]);
- }
- }
}
diff --git a/core/tests/coretests/src/android/util/HashedStringCacheTest.java b/core/tests/coretests/src/android/util/HashedStringCacheTest.java
index 229247353a52..08c85ac5c0d6 100644
--- a/core/tests/coretests/src/android/util/HashedStringCacheTest.java
+++ b/core/tests/coretests/src/android/util/HashedStringCacheTest.java
@@ -26,28 +26,37 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.os.storage.StorageManager;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import androidx.test.InstrumentationRegistry;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import java.io.File;
-
/**
* Unit tests for {@link HashedStringCache}.
*/
+@IgnoreUnderRavenwood(blockedBy = HashedStringCache.class)
public class HashedStringCacheTest {
private static final String TAG = "HashedStringCacheTest";
private Context mContext;
private static final String TEST_STRING = "test_string";
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
@Before
public void setup() {
- mContext = null;
- mContext = InstrumentationRegistry.getContext();
- clearSharedPreferences();
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ mContext = InstrumentationRegistry.getContext();
+ clearSharedPreferences();
+ } else {
+ mContext = null;
+ }
}
@Test
diff --git a/core/tests/coretests/src/android/util/LogNullabilityTest.java b/core/tests/coretests/src/android/util/LogNullabilityTest.java
index 370885d3d4ac..475e347141df 100644
--- a/core/tests/coretests/src/android/util/LogNullabilityTest.java
+++ b/core/tests/coretests/src/android/util/LogNullabilityTest.java
@@ -19,6 +19,8 @@ package android.util;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
+import android.platform.test.ravenwood.RavenwoodRule;
+
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
@@ -35,8 +37,10 @@ public final class LogNullabilityTest {
Log.i(null, "");
Log.w(null, "");
Log.e(null, "");
- Log.wtf(null, "");
- Log.wtfStack(null, "");
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ Log.wtf(null, "");
+ Log.wtfStack(null, "");
+ }
Log.println(Log.INFO, null, "");
// Implicit assertions of not crashing.
@@ -49,7 +53,9 @@ public final class LogNullabilityTest {
Log.i(null, "", new Throwable());
Log.w(null, "", new Throwable());
Log.e(null, "", new Throwable());
- Log.wtf(null, "", new Throwable());
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ Log.wtf(null, "", new Throwable());
+ }
Log.printlns(Log.LOG_ID_MAIN, Log.INFO, null, "", new Throwable());
// Implicit assertions of not crashing.
@@ -84,8 +90,10 @@ public final class LogNullabilityTest {
} catch (NullPointerException expected) {
}
- Log.wtf("", (String) null);
- Log.wtfStack("", (String) null);
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ Log.wtf("", (String) null);
+ Log.wtfStack("", (String) null);
+ }
// Implicit assertion of not crashing.
@@ -103,15 +111,10 @@ public final class LogNullabilityTest {
Log.i("", null, new Throwable());
Log.w("", null, new Throwable());
Log.e("", null, new Throwable());
- Log.wtf("", null, new Throwable());
-
- // Implicit assertions of not crashing.
-
- try {
- Log.printlns(Log.LOG_ID_MAIN, Log.INFO, "", null, new Throwable());
- fail();
- } catch (NullPointerException expected) {
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ Log.wtf("", null, new Throwable());
}
+ Log.printlns(Log.LOG_ID_MAIN, Log.INFO, "", null, new Throwable());
}
@Test
@@ -121,7 +124,9 @@ public final class LogNullabilityTest {
Log.i("", "", null);
Log.w("", "", null);
Log.e("", "", null);
- Log.wtf("", "", null);
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ Log.wtf("", "", null);
+ }
// Warning has its own (String, Throwable) overload.
Log.w("", (Throwable) null);
@@ -131,10 +136,12 @@ public final class LogNullabilityTest {
// Implicit assertions of not crashing.
// WTF has its own (String, Throwable) overload with different behavior.
- try {
- Log.wtf("", (Throwable) null);
- fail();
- } catch (NullPointerException expected) {
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ try {
+ Log.wtf("", (Throwable) null);
+ fail();
+ } catch (NullPointerException expected) {
+ }
}
}
@@ -145,15 +152,10 @@ public final class LogNullabilityTest {
Log.i("", null, null);
Log.w("", null, null);
Log.e("", null, null);
- Log.wtf("", null, null);
-
- // Implicit assertions of not crashing.
-
- try {
- Log.printlns(Log.LOG_ID_MAIN, Log.INFO, "", null, null);
- fail();
- } catch (NullPointerException expected) {
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ Log.wtf("", null, null);
}
+ Log.printlns(Log.LOG_ID_MAIN, Log.INFO, "", null, null);
}
@Test
diff --git a/core/tests/coretests/src/android/util/LogTest.java b/core/tests/coretests/src/android/util/LogTest.java
index d783c127d8c4..f9966a1cf65d 100644
--- a/core/tests/coretests/src/android/util/LogTest.java
+++ b/core/tests/coretests/src/android/util/LogTest.java
@@ -20,23 +20,24 @@ import android.os.SystemProperties;
import android.test.PerformanceTestCase;
import androidx.test.filters.Suppress;
+import androidx.test.runner.AndroidJUnit4;
import junit.framework.TestCase;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
//This is an empty TestCase.
@Suppress
-public class LogTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class LogTest {
private static final String PROPERTY_TAG = "log.tag.LogTest";
private static final String LOG_TAG = "LogTest";
-
- // TODO: remove this test once we uncomment out the following test.
- public void testLogTestDummy() {
- return;
- }
-
-
- /* TODO: This test is commented out because we will not be able to set properities. Fix the test.
+ @Test
+ @Ignore
public void testIsLoggable() {
// First clear any SystemProperty setting for our test key.
SystemProperties.set(PROPERTY_TAG, null);
@@ -129,8 +130,7 @@ public class LogTest extends TestCase {
Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.ERROR));
Assert.assertFalse(Log.isLoggable(LOG_TAG, Log.ASSERT));
}
- */
-
+
public static class PerformanceTest extends TestCase implements PerformanceTestCase {
private static final int ITERATIONS = 1000;
diff --git a/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java b/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java
index a1d48e689427..9dbaae0d0555 100644
--- a/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java
+++ b/core/tests/coretests/src/android/util/LongSparseLongArrayTest.java
@@ -16,9 +16,13 @@
package android.util;
+import static org.junit.Assert.assertEquals;
+
import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.HashMap;
import java.util.Iterator;
@@ -29,9 +33,11 @@ import java.util.Random;
* Tests for {@link LongSparseLongArray}.
*/
@LargeTest
-public class LongSparseLongArrayTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class LongSparseLongArrayTest {
private static final String TAG = "LongSparseLongArrayTest";
+ @Test
public void testSimplePut() throws Exception {
final LongSparseLongArray array = new LongSparseLongArray(5);
for (int i = 0; i < 48; i++) {
@@ -45,6 +51,7 @@ public class LongSparseLongArrayTest extends TestCase {
}
}
+ @Test
public void testSimplePutBackwards() throws Exception {
final LongSparseLongArray array = new LongSparseLongArray(5);
for (int i = 47; i >= 0; i--) {
@@ -58,6 +65,7 @@ public class LongSparseLongArrayTest extends TestCase {
}
}
+ @Test
public void testMiddleInsert() throws Exception {
final LongSparseLongArray array = new LongSparseLongArray(5);
for (int i = 0; i < 48; i++) {
@@ -74,6 +82,7 @@ public class LongSparseLongArrayTest extends TestCase {
assertEquals(1024, array.get(special, -1));
}
+ @Test
public void testFuzz() throws Exception {
final Random r = new Random();
diff --git a/core/tests/coretests/src/android/util/LruCacheTest.java b/core/tests/coretests/src/android/util/LruCacheTest.java
index 1928bfdfc61d..10e8308e7964 100644
--- a/core/tests/coretests/src/android/util/LruCacheTest.java
+++ b/core/tests/coretests/src/android/util/LruCacheTest.java
@@ -16,7 +16,14 @@
package android.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Arrays;
@@ -24,13 +31,15 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
-public final class LruCacheTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public final class LruCacheTest {
private int expectedCreateCount;
private int expectedPutCount;
private int expectedHitCount;
private int expectedMissCount;
private int expectedEvictionCount;
+ @Test
public void testStatistics() {
LruCache<String, String> cache = new LruCache<String, String>(3);
assertStatistics(cache);
@@ -80,6 +89,7 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache, "e", "E", "b", "B", "c", "C");
}
+ @Test
public void testStatisticsWithCreate() {
LruCache<String, String> cache = newCreatingCache();
assertStatistics(cache);
@@ -104,18 +114,21 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache, "cc", "created-cc", "dd", "created-dd", "aa", "created-aa");
}
+ @Test
public void testCreateOnCacheMiss() {
LruCache<String, String> cache = newCreatingCache();
String created = cache.get("aa");
assertEquals("created-aa", created);
}
+ @Test
public void testNoCreateOnCacheHit() {
LruCache<String, String> cache = newCreatingCache();
cache.put("aa", "put-aa");
assertEquals("put-aa", cache.get("aa"));
}
+ @Test
public void testConstructorDoesNotAllowZeroCacheSize() {
try {
new LruCache<String, String>(0);
@@ -124,6 +137,7 @@ public final class LruCacheTest extends TestCase {
}
}
+ @Test
public void testCannotPutNullKey() {
LruCache<String, String> cache = new LruCache<String, String>(3);
try {
@@ -133,6 +147,7 @@ public final class LruCacheTest extends TestCase {
}
}
+ @Test
public void testCannotPutNullValue() {
LruCache<String, String> cache = new LruCache<String, String>(3);
try {
@@ -142,6 +157,7 @@ public final class LruCacheTest extends TestCase {
}
}
+ @Test
public void testToString() {
LruCache<String, String> cache = new LruCache<String, String>(3);
assertEquals("LruCache[maxSize=3,hits=0,misses=0,hitRate=0%]", cache.toString());
@@ -160,6 +176,7 @@ public final class LruCacheTest extends TestCase {
assertEquals("LruCache[maxSize=3,hits=3,misses=2,hitRate=60%]", cache.toString());
}
+ @Test
public void testEvictionWithSingletonCache() {
LruCache<String, String> cache = new LruCache<String, String>(1);
cache.put("a", "A");
@@ -167,6 +184,7 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache, "b", "B");
}
+ @Test
public void testEntryEvictedWhenFull() {
List<String> log = new ArrayList<String>();
LruCache<String, String> cache = newRemovalLogCache(log);
@@ -184,6 +202,7 @@ public final class LruCacheTest extends TestCase {
* Replacing the value for a key doesn't cause an eviction but it does bring
* the replaced entry to the front of the queue.
*/
+ @Test
public void testPutCauseEviction() {
List<String> log = new ArrayList<String>();
LruCache<String, String> cache = newRemovalLogCache(log);
@@ -196,6 +215,7 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache, "a", "A", "c", "C", "b", "B2");
}
+ @Test
public void testCustomSizesImpactsSize() {
LruCache<String, String> cache = new LruCache<String, String>(10) {
@Override protected int sizeOf(String key, String value) {
@@ -212,6 +232,7 @@ public final class LruCacheTest extends TestCase {
assertEquals(6, cache.size());
}
+ @Test
public void testEvictionWithCustomSizes() {
LruCache<String, String> cache = new LruCache<String, String>(4) {
@Override protected int sizeOf(String key, String value) {
@@ -241,6 +262,7 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache, "j", "JJJ");
}
+ @Test
public void testEvictionThrowsWhenSizesAreInconsistent() {
LruCache<String, int[]> cache = new LruCache<String, int[]>(4) {
@Override protected int sizeOf(String key, int[] value) {
@@ -263,6 +285,7 @@ public final class LruCacheTest extends TestCase {
}
}
+ @Test
public void testEvictionThrowsWhenSizesAreNegative() {
LruCache<String, String> cache = new LruCache<String, String>(4) {
@Override protected int sizeOf(String key, String value) {
@@ -282,6 +305,7 @@ public final class LruCacheTest extends TestCase {
* because evicting a small element may be insufficient to make room for a
* large element.
*/
+ @Test
public void testDifferentElementSizes() {
LruCache<String, String> cache = new LruCache<String, String>(10) {
@Override protected int sizeOf(String key, String value) {
@@ -299,6 +323,7 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache, "e", "12345678");
}
+ @Test
public void testEvictAll() {
List<String> log = new ArrayList<String>();
LruCache<String, String> cache = newRemovalLogCache(log);
@@ -310,6 +335,7 @@ public final class LruCacheTest extends TestCase {
assertEquals(Arrays.asList("a=A", "b=B", "c=C"), log);
}
+ @Test
public void testEvictAllEvictsSizeZeroElements() {
LruCache<String, String> cache = new LruCache<String, String>(10) {
@Override protected int sizeOf(String key, String value) {
@@ -323,6 +349,7 @@ public final class LruCacheTest extends TestCase {
assertSnapshot(cache);
}
+ @Test
public void testRemoveWithCustomSizes() {
LruCache<String, String> cache = new LruCache<String, String>(10) {
@Override protected int sizeOf(String key, String value) {
@@ -335,6 +362,7 @@ public final class LruCacheTest extends TestCase {
assertEquals(4, cache.size());
}
+ @Test
public void testRemoveAbsentElement() {
LruCache<String, String> cache = new LruCache<String, String>(10);
cache.put("a", "A");
@@ -343,6 +371,7 @@ public final class LruCacheTest extends TestCase {
assertEquals(2, cache.size());
}
+ @Test
public void testRemoveNullThrows() {
LruCache<String, String> cache = new LruCache<String, String>(10);
try {
@@ -352,6 +381,7 @@ public final class LruCacheTest extends TestCase {
}
}
+ @Test
public void testRemoveCallsEntryRemoved() {
List<String> log = new ArrayList<String>();
LruCache<String, String> cache = newRemovalLogCache(log);
@@ -360,6 +390,7 @@ public final class LruCacheTest extends TestCase {
assertEquals(Arrays.asList("a=A>null"), log);
}
+ @Test
public void testPutCallsEntryRemoved() {
List<String> log = new ArrayList<String>();
LruCache<String, String> cache = newRemovalLogCache(log);
@@ -368,6 +399,7 @@ public final class LruCacheTest extends TestCase {
assertEquals(Arrays.asList("a=A>A2"), log);
}
+ @Test
public void testEntryRemovedIsCalledWithoutSynchronization() {
LruCache<String, String> cache = new LruCache<String, String>(3) {
@Override protected void entryRemoved(
@@ -385,6 +417,7 @@ public final class LruCacheTest extends TestCase {
cache.evictAll(); // multiple eviction
}
+ @Test
public void testCreateIsCalledWithoutSynchronization() {
LruCache<String, String> cache = new LruCache<String, String>(3) {
@Override protected String create(String key) {
@@ -401,6 +434,7 @@ public final class LruCacheTest extends TestCase {
* working. The map value should be returned by get(), and the created value
* should be released with entryRemoved().
*/
+ @Test
public void testCreateWithConcurrentPut() {
final List<String> log = new ArrayList<String>();
LruCache<String, String> cache = new LruCache<String, String>(3) {
@@ -423,6 +457,7 @@ public final class LruCacheTest extends TestCase {
* the first create to return is returned by both gets. The other created
* values should be released with entryRemove().
*/
+ @Test
public void testCreateWithConcurrentCreate() {
final List<String> log = new ArrayList<String>();
LruCache<String, Integer> cache = new LruCache<String, Integer>(3) {
diff --git a/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java b/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java
index 30d5f778e945..06f970fcf77c 100644
--- a/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java
+++ b/core/tests/coretests/src/android/util/MonthDisplayHelperTest.java
@@ -16,18 +16,26 @@
package android.util;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.Calendar;
/**
* Unit tests for {@link MonthDisplayHelper}.
*/
-public class MonthDisplayHelperTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class MonthDisplayHelperTest {
+ @Test
@SmallTest
public void testFirstDayOfMonth() {
@@ -40,12 +48,14 @@ public class MonthDisplayHelperTest extends TestCase {
new MonthDisplayHelper(2007, Calendar.SEPTEMBER).getFirstDayOfMonth());
}
+ @Test
@SmallTest
public void testNumberOfDaysInCurrentMonth() {
assertEquals(30,
new MonthDisplayHelper(2007, Calendar.SEPTEMBER).getNumberOfDaysInMonth());
}
+ @Test
@SmallTest
public void testMonthRows() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007, Calendar.SEPTEMBER);
@@ -59,6 +69,7 @@ public class MonthDisplayHelperTest extends TestCase {
}
+ @Test
@SmallTest
public void testMonthRowsWeekStartsMonday() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -74,6 +85,7 @@ public class MonthDisplayHelperTest extends TestCase {
helper.getDigitsForRow(5));
}
+ @Test
@SmallTest
public void testMonthRowsWeekStartsSaturday() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -98,6 +110,7 @@ public class MonthDisplayHelperTest extends TestCase {
helper.getDigitsForRow(4));
}
+ @Test
@SmallTest
public void testGetDayAt() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -109,6 +122,7 @@ public class MonthDisplayHelperTest extends TestCase {
assertEquals(2, helper.getDayAt(5, 2));
}
+ @Test
@SmallTest
public void testPrevMonth() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -124,6 +138,7 @@ public class MonthDisplayHelperTest extends TestCase {
helper.getDigitsForRow(0));
}
+ @Test
@SmallTest
public void testPrevMonthRollOver() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -135,6 +150,7 @@ public class MonthDisplayHelperTest extends TestCase {
assertEquals(Calendar.DECEMBER, helper.getMonth());
}
+ @Test
@SmallTest
public void testNextMonth() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -150,6 +166,7 @@ public class MonthDisplayHelperTest extends TestCase {
helper.getDigitsForRow(0));
}
+ @Test
@SmallTest
public void testGetRowOf() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -162,6 +179,7 @@ public class MonthDisplayHelperTest extends TestCase {
assertEquals(3, helper.getRowOf(19));
}
+ @Test
@SmallTest
public void testGetColumnOf() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
@@ -174,6 +192,7 @@ public class MonthDisplayHelperTest extends TestCase {
assertEquals(0, helper.getColumnOf(26));
}
+ @Test
@SmallTest
public void testWithinCurrentMonth() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
diff --git a/core/tests/coretests/src/android/util/NtpTrustedTimeTest.java b/core/tests/coretests/src/android/util/NtpTrustedTimeTest.java
index 4de27c332d96..ce1eabc741a3 100644
--- a/core/tests/coretests/src/android/util/NtpTrustedTimeTest.java
+++ b/core/tests/coretests/src/android/util/NtpTrustedTimeTest.java
@@ -31,10 +31,15 @@ import static java.lang.String.join;
import static java.util.Arrays.asList;
import android.net.Network;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+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.InOrder;
@@ -51,7 +56,10 @@ import java.util.stream.Stream;
@SmallTest
@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = NtpTrustedTime.class)
public class NtpTrustedTimeTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
private static final Duration VALID_TIMEOUT = Duration.ofSeconds(5);
diff --git a/core/tests/coretests/src/android/util/PatternsTest.java b/core/tests/coretests/src/android/util/PatternsTest.java
index dd8f73fd54c4..a180ec3f9e35 100644
--- a/core/tests/coretests/src/android/util/PatternsTest.java
+++ b/core/tests/coretests/src/android/util/PatternsTest.java
@@ -16,17 +16,25 @@
package android.util;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class PatternsTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class PatternsTest {
// Tests for Patterns.TOP_LEVEL_DOMAIN
+ @Test
@SmallTest
public void testTldPattern() throws Exception {
boolean t;
@@ -58,36 +66,42 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.IANA_TOP_LEVEL_DOMAINS
+ @Test
@SmallTest
public void testIanaTopLevelDomains_matchesValidTld() throws Exception {
Pattern pattern = Pattern.compile(Patterns.IANA_TOP_LEVEL_DOMAINS);
assertTrue("Should match 'com'", pattern.matcher("com").matches());
}
+ @Test
@SmallTest
public void testIanaTopLevelDomains_matchesValidNewTld() throws Exception {
Pattern pattern = Pattern.compile(Patterns.IANA_TOP_LEVEL_DOMAINS);
assertTrue("Should match 'me'", pattern.matcher("me").matches());
}
+ @Test
@SmallTest
public void testIanaTopLevelDomains_matchesPunycodeTld() throws Exception {
Pattern pattern = Pattern.compile(Patterns.IANA_TOP_LEVEL_DOMAINS);
assertTrue("Should match Punycode TLD", pattern.matcher("xn--qxam").matches());
}
+ @Test
@SmallTest
public void testIanaTopLevelDomains_matchesIriTLD() throws Exception {
Pattern pattern = Pattern.compile(Patterns.IANA_TOP_LEVEL_DOMAINS);
assertTrue("Should match IRI TLD", pattern.matcher("\uD55C\uAD6D").matches());
}
+ @Test
@SmallTest
public void testIanaTopLevelDomains_doesNotMatchWrongTld() throws Exception {
Pattern pattern = Pattern.compile(Patterns.IANA_TOP_LEVEL_DOMAINS);
assertFalse("Should not match 'mem'", pattern.matcher("mem").matches());
}
+ @Test
@SmallTest
public void testIanaTopLevelDomains_doesNotMatchWrongPunycodeTld() throws Exception {
Pattern pattern = Pattern.compile(Patterns.IANA_TOP_LEVEL_DOMAINS);
@@ -96,6 +110,7 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.WEB_URL
+ @Test
@SmallTest
public void testWebUrl_matchesValidUrlWithSchemeAndHostname() throws Exception {
String url = "http://www.android.com";
@@ -103,6 +118,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesValidUrlWithSchemeHostnameAndNewTld() throws Exception {
String url = "http://www.android.me";
@@ -110,6 +126,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesValidUrlWithHostnameAndNewTld() throws Exception {
String url = "android.me";
@@ -117,6 +134,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesChinesePunycodeUrlWithProtocol() throws Exception {
String url = "http://xn--fsqu00a.xn--0zwm56d";
@@ -124,6 +142,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesChinesePunycodeUrlWithoutProtocol() throws Exception {
String url = "xn--fsqu00a.xn--0zwm56d";
@@ -131,6 +150,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesArabicPunycodeUrlWithProtocol() throws Exception {
String url = "http://xn--4gbrim.xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c/ar/default.aspx";
@@ -138,6 +158,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesArabicPunycodeUrlWithoutProtocol() throws Exception {
String url = "xn--4gbrim.xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c/ar/default.aspx";
@@ -145,6 +166,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesUrlWithUnicodeDomainNameWithProtocol() throws Exception {
String url = "http://\uD604\uAE08\uC601\uC218\uC99D.kr";
@@ -152,6 +174,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesUrlWithUnicodeDomainNameWithoutProtocol() throws Exception {
String url = "\uD604\uAE08\uC601\uC218\uC99D.kr";
@@ -159,6 +182,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesUrlWithUnicodeTld() throws Exception {
String url = "\uB3C4\uBA54\uC778.\uD55C\uAD6D";
@@ -166,6 +190,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesUrlWithUnicodePath() throws Exception {
String url = "http://brainstormtech.blogs.fortune.cnn.com/2010/03/11/" +
@@ -174,19 +199,22 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_doesNotMatchValidUrlWithInvalidProtocol() throws Exception {
- String url = "ftp://www.example.com";
+ String url = "invalid://www.example.com";
assertFalse("Should not match URL with invalid protocol",
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesValidUrlWithPort() throws Exception {
String url = "http://www.example.com:8080";
assertTrue("Should match URL with port", Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesUrlWithPortAndQuery() throws Exception {
String url = "http://www.example.com:8080/?foo=bar";
@@ -194,12 +222,14 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesUrlWithTilde() throws Exception {
String url = "http://www.example.com:8080/~user/?foo=bar";
assertTrue("Should match URL with tilde", Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesProtocolCaseInsensitive() throws Exception {
String url = "hTtP://android.com";
@@ -207,6 +237,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesDomainNameWithDash() throws Exception {
String url = "http://a-nd.r-oid.com";
@@ -218,6 +249,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesDomainNameWithUnderscore() throws Exception {
String url = "http://a_nd.r_oid.com";
@@ -229,6 +261,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesPathAndQueryWithDollarSign() throws Exception {
String url = "http://android.com/path$?v=$val";
@@ -240,6 +273,7 @@ public class PatternsTest extends TestCase {
Patterns.WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testWebUrl_matchesEmptyPathWithQueryParams() throws Exception {
String url = "http://android.com?q=v";
@@ -261,6 +295,7 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.AUTOLINK_WEB_URL
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesValidUrlWithSchemeAndHostname() throws Exception {
String url = "http://www.android.com";
@@ -268,6 +303,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesValidUrlWithSchemeHostnameAndNewTld() throws Exception {
String url = "http://www.android.me";
@@ -275,6 +311,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesValidUrlWithHostnameAndNewTld() throws Exception {
String url = "android.me";
@@ -286,6 +323,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesChinesePunycodeUrlWithProtocol() throws Exception {
String url = "http://xn--fsqu00a.xn--0zwm56d";
@@ -293,6 +331,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesChinesePunycodeUrlWithoutProtocol() throws Exception {
String url = "xn--fsqu00a.xn--0zwm56d";
@@ -300,6 +339,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesArabicPunycodeUrlWithProtocol() throws Exception {
String url = "http://xn--4gbrim.xn--rmckbbajlc6dj7bxne2c.xn--wgbh1c/ar/default.aspx";
@@ -307,6 +347,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesArabicPunycodeUrlWithoutProtocol() throws Exception {
String url = "xn--4gbrim.xn--rmckbbajlc6dj7bxne2c.xn--wgbh1c/ar/default.aspx";
@@ -314,6 +355,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchPunycodeTldThatStartsWithDash() throws Exception {
String url = "http://xn--fsqu00a.-xn--0zwm56d";
@@ -321,6 +363,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchPunycodeTldThatEndsWithDash() throws Exception {
String url = "http://xn--fsqu00a.xn--0zwm56d-";
@@ -328,6 +371,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesUrlWithUnicodeDomainName() throws Exception {
String url = "http://\uD604\uAE08\uC601\uC218\uC99D.kr";
@@ -339,6 +383,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesUrlWithUnicodeTld() throws Exception {
String url = "\uB3C4\uBA54\uC778.\uD55C\uAD6D";
@@ -346,6 +391,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesUrlWithUnicodePath() throws Exception {
String url = "http://brainstormtech.blogs.fortune.cnn.com/2010/03/11/" +
@@ -354,13 +400,15 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchValidUrlWithInvalidProtocol() throws Exception {
- String url = "ftp://www.example.com";
+ String url = "invalid://www.example.com";
assertFalse("Should not match URL with invalid protocol",
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesValidUrlWithPort() throws Exception {
String url = "http://www.example.com:8080";
@@ -368,6 +416,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesUrlWithPortAndQuery() throws Exception {
String url = "http://www.example.com:8080/?foo=bar";
@@ -375,6 +424,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesUrlWithTilde() throws Exception {
String url = "http://www.example.com:8080/~user/?foo=bar";
@@ -382,6 +432,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesProtocolCaseInsensitive() throws Exception {
String url = "hTtP://android.com";
@@ -389,6 +440,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesUrlStartingWithHttpAndDoesNotHaveTld() throws Exception {
String url = "http://android/#notld///a/n/d/r/o/i/d&p1=1&p2=2";
@@ -396,6 +448,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchUrlsWithoutProtocolAndWithUnknownTld()
throws Exception {
@@ -405,13 +458,15 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotPartiallyMatchUnknownProtocol() throws Exception {
- String url = "ftp://foo.bar/baz";
+ String url = "invalid://foo.bar/baz";
assertFalse("Should not partially match URL with unknown protocol",
Patterns.AUTOLINK_WEB_URL.matcher(url).find());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesValidUrlWithEmoji() throws Exception {
String url = "Thank\u263A.com";
@@ -419,6 +474,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchUrlsWithEmojiWithoutProtocolAndWithoutKnownTld()
throws Exception {
@@ -427,6 +483,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchEmailAddress()
throws Exception {
@@ -435,6 +492,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesDomainNameWithSurrogatePairs() throws Exception {
String url = "android\uD83C\uDF38.com";
@@ -442,6 +500,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesTldWithSurrogatePairs() throws Exception {
String url = "http://android.\uD83C\uDF38com";
@@ -449,6 +508,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesPathWithSurrogatePairs() throws Exception {
String url = "http://android.com/path-with-\uD83C\uDF38?v=\uD83C\uDF38";
@@ -456,6 +516,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchUrlWithExcludedSurrogate() throws Exception {
String url = "http://android\uD83F\uDFFE.com";
@@ -463,6 +524,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_doesNotMatchUnicodeSpaces() throws Exception {
String part1 = "http://and";
@@ -493,6 +555,7 @@ public class PatternsTest extends TestCase {
}
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesDomainNameWithDash() throws Exception {
String url = "http://a-nd.r-oid.com";
@@ -504,6 +567,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesDomainNameWithUnderscore() throws Exception {
String url = "http://a_nd.r_oid.com";
@@ -515,6 +579,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesPathAndQueryWithDollarSign() throws Exception {
String url = "http://android.com/path$?v=$val";
@@ -526,6 +591,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testAutoLinkWebUrl_matchesEmptyPathWithQueryParams() throws Exception {
String url = "http://android.com?q=v";
@@ -547,6 +613,7 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.IP_ADDRESS
+ @Test
@SmallTest
public void testIpPattern() throws Exception {
boolean t;
@@ -560,6 +627,7 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.DOMAIN_NAME
+ @Test
@SmallTest
public void testDomain_matchesPunycodeTld() throws Exception {
String domain = "xn--fsqu00a.xn--0zwm56d";
@@ -567,6 +635,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_doesNotMatchPunycodeThatStartsWithDash() throws Exception {
String domain = "xn--fsqu00a.-xn--0zwm56d";
@@ -574,6 +643,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_doesNotMatchPunycodeThatEndsWithDash() throws Exception {
String domain = "xn--fsqu00a.xn--0zwm56d-";
@@ -581,6 +651,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_doesNotMatchPunycodeLongerThanAllowed() throws Exception {
String tld = "xn--";
@@ -592,6 +663,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesObsoleteTld() throws Exception {
String domain = "test.yu";
@@ -599,6 +671,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesWithSubDomain() throws Exception {
String domain = "mail.example.com";
@@ -606,6 +679,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesWithoutSubDomain() throws Exception {
String domain = "android.me";
@@ -613,6 +687,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesUnicodeDomainNames() throws Exception {
String domain = "\uD604\uAE08\uC601\uC218\uC99D.kr";
@@ -620,6 +695,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_doesNotMatchInvalidDomain() throws Exception {
String domain = "__+&42.xer";
@@ -627,6 +703,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesPunycodeArabicDomainName() throws Exception {
String domain = "xn--4gbrim.xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c";
@@ -634,6 +711,7 @@ public class PatternsTest extends TestCase {
Patterns.DOMAIN_NAME.matcher(domain).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesDomainNameWithDash() throws Exception {
String url = "http://a-nd.r-oid.com";
@@ -645,6 +723,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_WEB_URL.matcher(url).matches());
}
+ @Test
@SmallTest
public void testDomain_matchesDomainNameWithUnderscore() throws Exception {
String url = "http://a_nd.r_oid.com";
@@ -658,6 +737,7 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.AUTOLINK_EMAIL_ADDRESS
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesShortValidEmail() throws Exception {
String email = "a@a.co";
@@ -665,6 +745,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesRegularEmail() throws Exception {
String email = "email@android.com";
@@ -672,6 +753,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesEmailWithMultipleSubdomains() throws Exception {
String email = "email@e.somelongdomainnameforandroid.abc.uk";
@@ -679,6 +761,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithDot() throws Exception {
String email = "e.mail@android.com";
@@ -686,6 +769,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithPlus() throws Exception {
String email = "e+mail@android.com";
@@ -693,6 +777,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithUnderscore() throws Exception {
String email = "e_mail@android.com";
@@ -700,6 +785,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithDash() throws Exception {
String email = "e-mail@android.com";
@@ -707,6 +793,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithApostrophe() throws Exception {
String email = "e'mail@android.com";
@@ -714,6 +801,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithDigits() throws Exception {
String email = "123@android.com";
@@ -721,6 +809,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesUnicodeLocalPart() throws Exception {
String email = "\uD604\uAE08\uC601\uC218\uC99D@android.kr";
@@ -728,6 +817,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithEmoji() throws Exception {
String email = "smiley\u263A@android.com";
@@ -735,6 +825,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartWithSurrogatePairs() throws Exception {
String email = "\uD83C\uDF38@android.com";
@@ -742,6 +833,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesDomainWithDash() throws Exception {
String email = "email@an-droid.com";
@@ -749,6 +841,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesUnicodeDomain() throws Exception {
String email = "email@\uD604\uAE08\uC601\uC218\uC99D.kr";
@@ -756,6 +849,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesUnicodeLocalPartAndDomain() throws Exception {
String email = "\uD604\uAE08\uC601\uC218\uC99D@\uD604\uAE08\uC601\uC218\uC99D.kr";
@@ -763,6 +857,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesDomainWithEmoji() throws Exception {
String email = "smiley@\u263Aandroid.com";
@@ -770,6 +865,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesDomainWithSurrogatePairs() throws Exception {
String email = "email@\uD83C\uDF38android.com";
@@ -777,6 +873,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartAndDomainWithSurrogatePairs()
throws Exception {
@@ -785,6 +882,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchStringWithoutAtSign() throws Exception {
String email = "android.com";
@@ -792,6 +890,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchPlainString() throws Exception {
String email = "email";
@@ -799,6 +898,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchStringWithMultipleAtSigns() throws Exception {
String email = "email@android@android.com";
@@ -806,6 +906,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchEmailWithoutTld() throws Exception {
String email = "email@android";
@@ -813,6 +914,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchLocalPartEndingWithDot() throws Exception {
String email = "email.@android.com";
@@ -820,6 +922,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchLocalPartStartingWithDot() throws Exception {
String email = ".email@android.com";
@@ -827,6 +930,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchDomainStartingWithDash() throws Exception {
String email = "email@-android.com";
@@ -834,6 +938,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchDomainWithConsecutiveDots() throws Exception {
String email = "email@android..com";
@@ -841,6 +946,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchEmailWithIpAsDomain() throws Exception {
String email = "email@127.0.0.1";
@@ -848,6 +954,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_doesNotMatchEmailWithInvalidTld() throws Exception {
String email = "email@android.c";
@@ -855,6 +962,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesLocalPartUpTo64Chars() throws Exception {
String localPart = "";
@@ -871,6 +979,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesSubdomainUpTo63Chars() throws Exception {
String subdomain = "";
@@ -888,6 +997,7 @@ public class PatternsTest extends TestCase {
Patterns.AUTOLINK_EMAIL_ADDRESS.matcher(email).matches());
}
+ @Test
@SmallTest
public void testAutoLinkEmailAddress_matchesDomainUpTo255Chars() throws Exception {
String longDomain = "";
@@ -909,6 +1019,7 @@ public class PatternsTest extends TestCase {
// Tests for Patterns.PHONE
+ @Test
@SmallTest
public void testPhonePattern() throws Exception {
boolean t;
diff --git a/core/tests/coretests/src/android/util/RecurrenceRuleTest.java b/core/tests/coretests/src/android/util/RecurrenceRuleTest.java
index caa12083fafb..32548b4cff19 100644
--- a/core/tests/coretests/src/android/util/RecurrenceRuleTest.java
+++ b/core/tests/coretests/src/android/util/RecurrenceRuleTest.java
@@ -16,9 +16,17 @@
package android.util;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.time.Clock;
import java.time.Instant;
@@ -28,19 +36,18 @@ import java.time.ZonedDateTime;
import java.util.Iterator;
@SmallTest
-public class RecurrenceRuleTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class RecurrenceRuleTest {
static Clock sOriginalClock;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
sOriginalClock = RecurrenceRule.sClock;
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
+ @After
+ public void tearDown() throws Exception {
RecurrenceRule.sClock = sOriginalClock;
}
@@ -48,6 +55,7 @@ public class RecurrenceRuleTest extends TestCase {
RecurrenceRule.sClock = Clock.fixed(instant, ZoneId.systemDefault());
}
+ @Test
public void testSimpleMonth() throws Exception {
setClock(Instant.parse("2015-11-20T10:15:30.00Z"));
final RecurrenceRule r = new RecurrenceRule(
@@ -68,6 +76,7 @@ public class RecurrenceRuleTest extends TestCase {
ZonedDateTime.parse("2015-11-14T00:00:00.00Z")), it.next());
}
+ @Test
public void testSimpleDays() throws Exception {
setClock(Instant.parse("2015-01-01T10:15:30.00Z"));
final RecurrenceRule r = new RecurrenceRule(
@@ -89,6 +98,7 @@ public class RecurrenceRuleTest extends TestCase {
assertFalse(it.hasNext());
}
+ @Test
public void testNotRecurring() throws Exception {
setClock(Instant.parse("2015-01-01T10:15:30.00Z"));
final RecurrenceRule r = new RecurrenceRule(
@@ -106,6 +116,7 @@ public class RecurrenceRuleTest extends TestCase {
assertFalse(it.hasNext());
}
+ @Test
public void testNever() throws Exception {
setClock(Instant.parse("2015-01-01T10:15:30.00Z"));
final RecurrenceRule r = RecurrenceRule.buildNever();
@@ -116,6 +127,7 @@ public class RecurrenceRuleTest extends TestCase {
assertFalse(it.hasNext());
}
+ @Test
public void testSane() throws Exception {
final RecurrenceRule r = new RecurrenceRule(
ZonedDateTime.parse("1980-01-31T00:00:00.000Z"),
diff --git a/core/tests/coretests/src/android/util/SparseSetArrayTest.java b/core/tests/coretests/src/android/util/SparseSetArrayTest.java
index 3c17486aeb94..1df1090e0343 100644
--- a/core/tests/coretests/src/android/util/SparseSetArrayTest.java
+++ b/core/tests/coretests/src/android/util/SparseSetArrayTest.java
@@ -17,9 +17,13 @@ package android.util;
import static com.google.common.truth.Truth.assertThat;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -29,6 +33,9 @@ import org.junit.runner.RunWith;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class SparseSetArrayTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
@Test
public void testAddAll() {
final SparseSetArray<Integer> sparseSetArray = new SparseSetArray<>();
@@ -51,6 +58,7 @@ public class SparseSetArrayTest {
}
@Test
+ @IgnoreUnderRavenwood(reason = "b/315036461")
public void testCopyConstructor() {
final SparseSetArray<Integer> sparseSetArray = new SparseSetArray<>();
diff --git a/core/tests/coretests/src/android/util/StateSetTest.java b/core/tests/coretests/src/android/util/StateSetTest.java
index b5d62704ba29..dfd1523465ae 100644
--- a/core/tests/coretests/src/android/util/StateSetTest.java
+++ b/core/tests/coretests/src/android/util/StateSetTest.java
@@ -16,16 +16,29 @@
package android.util;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
/**
* Tests for {@link StateSet}
*/
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = StateSet.class)
+public class StateSetTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
-public class StateSetTest extends TestCase {
-
+ @Test
@SmallTest
public void testStateSetPositiveMatches() throws Exception {
int[] stateSpec = new int[2];
@@ -48,6 +61,7 @@ public class StateSetTest extends TestCase {
assertTrue(StateSet.stateSetMatches(stateSpec, stateSet));
}
+ @Test
@SmallTest
public void testStatesSetMatchMixEmUp() throws Exception {
int[] stateSpec = new int[2];
@@ -70,6 +84,7 @@ public class StateSetTest extends TestCase {
assertTrue(StateSet.stateSetMatches(stateSpec, stateSet));
}
+ @Test
@SmallTest
public void testStateSetNegativeMatches() throws Exception {
int[] stateSpec = new int[2];
@@ -92,6 +107,7 @@ public class StateSetTest extends TestCase {
assertFalse(StateSet.stateSetMatches(stateSpec, stateSet));
}
+ @Test
@SmallTest
public void testEmptySetMatchesNegtives() throws Exception {
int[] stateSpec = {-12345, -6789};
@@ -101,6 +117,7 @@ public class StateSetTest extends TestCase {
assertTrue(StateSet.stateSetMatches(stateSpec, stateSet2));
}
+ @Test
@SmallTest
public void testEmptySetFailsPositives() throws Exception {
int[] stateSpec = {12345};
@@ -110,6 +127,7 @@ public class StateSetTest extends TestCase {
assertFalse(StateSet.stateSetMatches(stateSpec, stateSet2));
}
+ @Test
@SmallTest
public void testEmptySetMatchesWildcard() throws Exception {
int[] stateSpec = StateSet.WILD_CARD;
@@ -119,6 +137,7 @@ public class StateSetTest extends TestCase {
assertTrue(StateSet.stateSetMatches(stateSpec, stateSet2));
}
+ @Test
@SmallTest
public void testSingleStatePositiveMatches() throws Exception {
int[] stateSpec = new int[2];
@@ -135,6 +154,7 @@ public class StateSetTest extends TestCase {
assertFalse(StateSet.stateSetMatches(stateSpec, state));
}
+ @Test
@SmallTest
public void testSingleStateNegativeMatches() throws Exception {
int[] stateSpec = new int[2];
@@ -151,6 +171,7 @@ public class StateSetTest extends TestCase {
assertTrue(StateSet.stateSetMatches(stateSpec, state));
}
+ @Test
@SmallTest
public void testZeroStateOnlyMatchesDefault() throws Exception {
int[] stateSpec = new int[3];
@@ -166,6 +187,7 @@ public class StateSetTest extends TestCase {
assertTrue(StateSet.stateSetMatches(stateSpec, state));
}
+ @Test
@SmallTest
public void testNullStateOnlyMatchesDefault() throws Exception {
int[] stateSpec = new int[3];
diff --git a/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java b/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java
index e0c583ddc978..48e76f79a928 100644
--- a/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java
+++ b/core/tests/coretests/src/android/util/apk/SourceStampVerifierTest.java
@@ -26,12 +26,16 @@ import static org.junit.Assert.assertTrue;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import android.content.Context;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import androidx.test.core.app.ApplicationProvider;
import libcore.io.Streams;
import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -48,13 +52,21 @@ import java.util.zip.ZipFile;
/** Unit test for {@link android.util.apk.SourceStampVerifier} */
@RunWith(JUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = SourceStampVerifier.class)
public class SourceStampVerifierTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
- private final Context mContext = ApplicationProvider.getApplicationContext();
+ private Context mContext;
private File mPrimaryApk;
private File mSecondaryApk;
+ @Before
+ public void setUp() throws Exception {
+ mContext = ApplicationProvider.getApplicationContext();
+ }
+
@After
public void tearDown() throws Exception {
if (mPrimaryApk != null) {
diff --git a/core/tests/coretests/src/android/view/menu/MenuScenario.java b/core/tests/coretests/src/android/view/menu/MenuScenario.java
index 668aec4eb18f..a1615afe4fa3 100644
--- a/core/tests/coretests/src/android/view/menu/MenuScenario.java
+++ b/core/tests/coretests/src/android/view/menu/MenuScenario.java
@@ -18,7 +18,7 @@ package android.view.menu;
import android.app.Activity;
import android.os.Bundle;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.util.SparseArray;
import android.view.Menu;
import android.view.MenuItem;
diff --git a/core/tests/coretests/src/android/util/GridScenario.java b/core/tests/coretests/src/android/widget/GridScenario.java
index e7ee1cd59c7c..d74080863895 100644
--- a/core/tests/coretests/src/android/util/GridScenario.java
+++ b/core/tests/coretests/src/android/widget/GridScenario.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Android Open Source Project
+ * 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.util;
+package android.widget;
import android.app.Activity;
import android.os.Bundle;
diff --git a/core/tests/coretests/src/android/util/InternalSelectionView.java b/core/tests/coretests/src/android/widget/InternalSelectionView.java
index 4a1baef8077a..f2d318226540 100644
--- a/core/tests/coretests/src/android/util/InternalSelectionView.java
+++ b/core/tests/coretests/src/android/widget/InternalSelectionView.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Android Open Source Project
+ * 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.util;
+package android.widget;
import android.content.Context;
import android.content.res.TypedArray;
@@ -22,6 +22,7 @@ import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
+import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
diff --git a/core/tests/coretests/src/android/util/ListScenario.java b/core/tests/coretests/src/android/widget/ListScenario.java
index 74dc4b4b34a1..589d90d82285 100644
--- a/core/tests/coretests/src/android/util/ListScenario.java
+++ b/core/tests/coretests/src/android/widget/ListScenario.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Android Open Source Project
+ * 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.
@@ -14,20 +14,15 @@
* limitations under the License.
*/
-package android.util;
+package android.widget;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
+import android.util.ListItemFactory;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.TextView;
import com.google.android.collect.Maps;
diff --git a/core/tests/coretests/src/android/util/ScrollViewScenario.java b/core/tests/coretests/src/android/widget/ScrollViewScenario.java
index ab1a642a9327..ff2ab05d645f 100644
--- a/core/tests/coretests/src/android/util/ScrollViewScenario.java
+++ b/core/tests/coretests/src/android/widget/ScrollViewScenario.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.util;
+package android.widget;
import android.app.Activity;
import android.content.Context;
@@ -23,6 +23,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
+import android.widget.InternalSelectionView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
diff --git a/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java b/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java
index 85a4509c18a3..7e2f293b3a99 100644
--- a/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java
+++ b/core/tests/coretests/src/android/widget/focus/AdjacentVerticalRectLists.java
@@ -18,7 +18,7 @@ package android.widget.focus;
import android.app.Activity;
import android.os.Bundle;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.ViewGroup;
import android.widget.LinearLayout;
@@ -30,7 +30,7 @@ import android.widget.LinearLayout;
* rectangle of the previously focused view. The view taking focus can use this
* to set an internal selection more appropriate using this rect.
*
- * This Activity excercises that behavior using three adjacent {@link android.util.InternalSelectionView}
+ * This Activity excercises that behavior using three adjacent {@link InternalSelectionView}
* that report interesting rects when giving up focus, and use interesting rects
* when taking focus to best select the internal row to show as selected.
*/
diff --git a/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java b/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java
index 26dc23398366..16a0b35c2dd5 100644
--- a/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java
+++ b/core/tests/coretests/src/android/widget/focus/FocusChangeWithInterestingRectHintTest.java
@@ -17,7 +17,7 @@
package android.widget.focus;
import android.test.ActivityInstrumentationTestCase;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.KeyEvent;
import androidx.test.filters.LargeTest;
@@ -31,7 +31,7 @@ import androidx.test.filters.MediumTest;
* rectangle of the previously focused view. The view taking focus can use this
* to set an internal selection more appropriate using this rect.
*
- * This tests that behavior using three adjacent {@link android.util.InternalSelectionView}
+ * This tests that behavior using three adjacent {@link InternalSelectionView}
* that report interesting rects when giving up focus, and use interesting rects
* when taking focus to best select the internal row to show as selected.
*
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
index c5e69b67862f..4231b40431f1 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
@@ -18,7 +18,7 @@ package android.widget.focus;
import android.app.Activity;
import android.os.Bundle;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
diff --git a/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java b/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java
index e6e76ccc2caf..46190c4ce7c7 100644
--- a/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java
+++ b/core/tests/coretests/src/android/widget/focus/ScrollingThroughListOfFocusablesTest.java
@@ -18,7 +18,7 @@ package android.widget.focus;
import android.graphics.Rect;
import android.test.InstrumentationTestCase;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.KeyEvent;
import android.widget.ListView;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridDelete.java b/core/tests/coretests/src/android/widget/gridview/GridDelete.java
index b040f69545f1..5f4326cd7758 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridDelete.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridDelete.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelection.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelection.java
index a3cda3b1f030..140dd7b696fd 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelection.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelection.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* Basic stacking from top scenario, nothing fancy. Items do not
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java
index db4f2dc224fc..1428fea9fc87 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionBaseTest.java
@@ -18,7 +18,7 @@ package android.widget.gridview;
import android.test.ActivityInstrumentationTestCase;
import android.test.ViewAsserts;
-import android.util.GridScenario;
+import android.widget.GridScenario;
import android.widget.GridView;
import androidx.test.filters.MediumTest;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionMany.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionMany.java
index a6d481f8a9fd..71766195fcc7 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionMany.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionMany.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* Basic stacking from top scenario, nothing fancy. Items do
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottom.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottom.java
index dfcd5fc09cc2..01bb2be37fb8 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottom.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottom.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* Basic stacking from bottom scenario, nothing fancy. Items do not
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomMany.java b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomMany.java
index 26a567e90cef..d79ee880ec97 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomMany.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSetSelectionStackFromBottomMany.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* Basic stacking from bottom scenario, nothing fancy. Items do
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSimple.java b/core/tests/coretests/src/android/widget/gridview/GridSimple.java
index 67bb7511122a..6ca7eaa14f40 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSimple.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSimple.java
@@ -18,7 +18,7 @@ package android.widget.gridview;
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
-import android.util.GridScenario;
+import android.widget.GridScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
diff --git a/core/tests/coretests/src/android/widget/gridview/GridSingleColumn.java b/core/tests/coretests/src/android/widget/gridview/GridSingleColumn.java
index 566e71b7e14f..aaed9ba2789f 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridSingleColumn.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridSingleColumn.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
import android.widget.GridView;
/**
diff --git a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottom.java b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottom.java
index 2f0a88fc9767..457b00ddce54 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottom.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottom.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* Basic bottom stacking from bottom scenario, nothing fancy. Items do not
diff --git a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomMany.java b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomMany.java
index 33a9592fdc9b..9029bc57ac85 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomMany.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridStackFromBottomMany.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* Basic bottom stacking from bottom scenario, nothing fancy. The grid items do not fit on the
diff --git a/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacing.java b/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacing.java
index 0d01d3087d9d..6aa864f756fc 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacing.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacing.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* A grid with vertical spacing between rows
diff --git a/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacingStackFromBottom.java b/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacingStackFromBottom.java
index bd686809dba7..25ef6820c8b5 100644
--- a/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacingStackFromBottom.java
+++ b/core/tests/coretests/src/android/widget/gridview/GridVerticalSpacingStackFromBottom.java
@@ -16,7 +16,7 @@
package android.widget.gridview;
-import android.util.GridScenario;
+import android.widget.GridScenario;
/**
* A grid with vertical spacing between rows that stacks from the bottom
diff --git a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
index 62b93d6d208a..1e57d69edec6 100644
--- a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
+++ b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
@@ -18,7 +18,7 @@ package android.widget.listview;
import android.app.Activity;
import android.os.Bundle;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
diff --git a/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java b/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java
index cd76d70acdaf..5d319c5f4930 100644
--- a/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java
+++ b/core/tests/coretests/src/android/widget/listview/ListBottomGravity.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Basic bottom gravity scenario, nothing fancy. Items do not
diff --git a/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java b/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java
index e048e3eb98a0..331fd121370c 100644
--- a/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java
+++ b/core/tests/coretests/src/android/widget/listview/ListBottomGravityMany.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Basic bottom gravity scenario, nothing fancy. There are
diff --git a/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java b/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java
index 86407411c2d0..bc7c19f34fd9 100644
--- a/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java
+++ b/core/tests/coretests/src/android/widget/listview/ListButtonsDiagonalAcrossItems.java
@@ -19,7 +19,7 @@ package android.widget.listview;
import static android.util.ListItemFactory.Slot;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListEndingWithMultipleSeparators.java b/core/tests/coretests/src/android/widget/listview/ListEndingWithMultipleSeparators.java
index 85f9924a16aa..834f0d1ec01c 100644
--- a/core/tests/coretests/src/android/widget/listview/ListEndingWithMultipleSeparators.java
+++ b/core/tests/coretests/src/android/widget/listview/ListEndingWithMultipleSeparators.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
public class ListEndingWithMultipleSeparators extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListGetSelectedView.java b/core/tests/coretests/src/android/widget/listview/ListGetSelectedView.java
index 5639195198f1..abd5d2e5dab4 100644
--- a/core/tests/coretests/src/android/widget/listview/ListGetSelectedView.java
+++ b/core/tests/coretests/src/android/widget/listview/ListGetSelectedView.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Basic top gravity scenario. This test is made to check that getSelectedView() will return
diff --git a/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java b/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java
index 74eda3b850b9..fd24d61d4327 100644
--- a/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java
+++ b/core/tests/coretests/src/android/widget/listview/ListHeterogeneous.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java b/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java
index e98de9c1204c..7ce5ee3d2f81 100644
--- a/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java
+++ b/core/tests/coretests/src/android/widget/listview/ListHorizontalFocusWithinItemWins.java
@@ -20,7 +20,7 @@ import static android.util.ListItemFactory.Slot;
import android.content.Context;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java b/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java
index 0ec7a2431b93..b613741a9c62 100644
--- a/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java
+++ b/core/tests/coretests/src/android/widget/listview/ListInterleaveFocusables.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java b/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java
index 3159e53eabc5..dc40f5f5d98b 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemFocusableAboveUnfocusable.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java
index 861e2a919052..d21d234c92aa 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesClose.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java
index e9c9c1dd586c..0bb080b071a1 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemFocusablesFarApart.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.util.ListItemFactory;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java b/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java
index 2a0e013be616..cbe07cc475f0 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemISVAndButton.java
@@ -17,8 +17,8 @@
package android.widget.listview;
import android.content.Context;
-import android.util.InternalSelectionView;
-import android.util.ListScenario;
+import android.widget.InternalSelectionView;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java b/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java
index d80fd90de53e..240119e947d6 100644
--- a/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java
+++ b/core/tests/coretests/src/android/widget/listview/ListItemsExpandOnSelection.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.content.Context;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
diff --git a/core/tests/coretests/src/android/widget/listview/ListLastItemPartiallyVisible.java b/core/tests/coretests/src/android/widget/listview/ListLastItemPartiallyVisible.java
index d7337497a443..48c70d6cd84c 100644
--- a/core/tests/coretests/src/android/widget/listview/ListLastItemPartiallyVisible.java
+++ b/core/tests/coretests/src/android/widget/listview/ListLastItemPartiallyVisible.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* A list where the very last item is partially visible, but still requires scrolling
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfItemsShorterThanScreen.java b/core/tests/coretests/src/android/widget/listview/ListOfItemsShorterThanScreen.java
index 46decfa2e578..55af8d47c803 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfItemsShorterThanScreen.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfItemsShorterThanScreen.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
public class ListOfItemsShorterThanScreen extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfItemsTallerThanScreen.java b/core/tests/coretests/src/android/widget/listview/ListOfItemsTallerThanScreen.java
index 0d8899371085..2b619e95f5dc 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfItemsTallerThanScreen.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfItemsTallerThanScreen.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
public class ListOfItemsTallerThanScreen extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfShortShortTallShortShort.java b/core/tests/coretests/src/android/widget/listview/ListOfShortShortTallShortShort.java
index 1639aa457cac..09f56b38578f 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfShortShortTallShortShort.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfShortShortTallShortShort.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Exposes fading in and out multiple items.
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfShortTallShort.java b/core/tests/coretests/src/android/widget/listview/ListOfShortTallShort.java
index 960e1297cb22..8ad8fff735fe 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfShortTallShort.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfShortTallShort.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Two short items separated by one that is taller than the screen.
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfThinItems.java b/core/tests/coretests/src/android/widget/listview/ListOfThinItems.java
index 007479f01a77..3f703afea752 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfThinItems.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfThinItems.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
public class ListOfThinItems extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java b/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java
index 70b9081128a0..f1dcdad20e89 100644
--- a/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java
+++ b/core/tests/coretests/src/android/widget/listview/ListOfTouchables.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListSetSelection.java b/core/tests/coretests/src/android/widget/listview/ListSetSelection.java
index af8e899a867a..a107117250b0 100644
--- a/core/tests/coretests/src/android/widget/listview/ListSetSelection.java
+++ b/core/tests/coretests/src/android/widget/listview/ListSetSelection.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.os.Bundle;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
diff --git a/core/tests/coretests/src/android/widget/listview/ListSimple.java b/core/tests/coretests/src/android/widget/listview/ListSimple.java
index f53638eb8ff1..9b3a98fe44d6 100644
--- a/core/tests/coretests/src/android/widget/listview/ListSimple.java
+++ b/core/tests/coretests/src/android/widget/listview/ListSimple.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.os.Bundle;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
diff --git a/core/tests/coretests/src/android/widget/listview/ListTopGravity.java b/core/tests/coretests/src/android/widget/listview/ListTopGravity.java
index 31339e9ee9c2..67ef6d15538e 100644
--- a/core/tests/coretests/src/android/widget/listview/ListTopGravity.java
+++ b/core/tests/coretests/src/android/widget/listview/ListTopGravity.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Basic top gravity scenario, nothing fancy. Items do not
diff --git a/core/tests/coretests/src/android/widget/listview/ListTopGravityMany.java b/core/tests/coretests/src/android/widget/listview/ListTopGravityMany.java
index 5592ad9f6d20..9618c81de5e1 100644
--- a/core/tests/coretests/src/android/widget/listview/ListTopGravityMany.java
+++ b/core/tests/coretests/src/android/widget/listview/ListTopGravityMany.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Basic top gravity scenario, nothing fancy. There are
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithEditTextHeader.java b/core/tests/coretests/src/android/widget/listview/ListWithEditTextHeader.java
index 5303faf8d320..1a204a24b9e3 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithEditTextHeader.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithEditTextHeader.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* A list view with a single edit text in a header.
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithFirstScreenUnSelectable.java b/core/tests/coretests/src/android/widget/listview/ListWithFirstScreenUnSelectable.java
index 526128371375..d6e7c6fe6c9e 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithFirstScreenUnSelectable.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithFirstScreenUnSelectable.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* The first item is unselectable, and takes up the whole screen.
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java b/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java
index 6030582a2445..fa2832edf614 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithHeaders.java
@@ -17,7 +17,7 @@
package android.widget.listview;
import android.os.Bundle;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithNoFadingEdge.java b/core/tests/coretests/src/android/widget/listview/ListWithNoFadingEdge.java
index b870fc855646..f8b4f786820a 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithNoFadingEdge.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithNoFadingEdge.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
public class ListWithNoFadingEdge extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithOffScreenNextSelectable.java b/core/tests/coretests/src/android/widget/listview/ListWithOffScreenNextSelectable.java
index 2e65bd0f2ffe..b8f14d21c1e1 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithOffScreenNextSelectable.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithOffScreenNextSelectable.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Pressing down from position 0 requires looking past positions 1, 2 and 3 to
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java b/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java
index 13e770cd4e47..afc4c3b754c7 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithOnItemSelectedAction.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
import android.widget.TextView;
/**
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithScreenOfNoSelectables.java b/core/tests/coretests/src/android/widget/listview/ListWithScreenOfNoSelectables.java
index 108ac4d9e6f6..fe33bf05acb3 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithScreenOfNoSelectables.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithScreenOfNoSelectables.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
public class ListWithScreenOfNoSelectables extends ListScenario {
diff --git a/core/tests/coretests/src/android/widget/listview/ListWithSeparators.java b/core/tests/coretests/src/android/widget/listview/ListWithSeparators.java
index 0f4f2d88a41b..1a3955a4b1cb 100644
--- a/core/tests/coretests/src/android/widget/listview/ListWithSeparators.java
+++ b/core/tests/coretests/src/android/widget/listview/ListWithSeparators.java
@@ -16,7 +16,7 @@
package android.widget.listview;
-import android.util.ListScenario;
+import android.widget.ListScenario;
/**
* Basic separator scenario, nothing fancy.
diff --git a/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java b/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java
index e9baabf3175a..09c140ee96d9 100644
--- a/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java
+++ b/core/tests/coretests/src/android/widget/listview/focus/AdjacentListsWithAdjacentISVsInsideTest.java
@@ -17,7 +17,7 @@
package android.widget.listview.focus;
import android.test.ActivityInstrumentationTestCase;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.KeyEvent;
import android.widget.ListView;
import android.widget.listview.AdjacentListsWithAdjacentISVsInside;
diff --git a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java
index a30985bfaf87..30f5c67f9f4e 100644
--- a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java
+++ b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionView.java
@@ -16,8 +16,8 @@
package android.widget.scroll;
-import android.util.InternalSelectionView;
-import android.util.ScrollViewScenario;
+import android.widget.InternalSelectionView;
+import android.widget.ScrollViewScenario;
import android.widget.Button;
/**
diff --git a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java
index 825aa1aa85a3..d977ab4c7efa 100644
--- a/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java
+++ b/core/tests/coretests/src/android/widget/scroll/ButtonAboveTallInternalSelectionViewTest.java
@@ -17,7 +17,7 @@
package android.widget.scroll;
import android.test.ActivityInstrumentationTestCase;
-import android.util.InternalSelectionView;
+import android.widget.InternalSelectionView;
import android.view.KeyEvent;
import androidx.test.filters.MediumTest;
diff --git a/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java b/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java
index 47d36ddf9be1..5149fd43bc65 100644
--- a/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java
+++ b/core/tests/coretests/src/android/widget/scroll/ButtonsWithTallTextViewInBetween.java
@@ -16,7 +16,7 @@
package android.widget.scroll;
-import android.util.ScrollViewScenario;
+import android.widget.ScrollViewScenario;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
diff --git a/core/tests/coretests/src/android/widget/scroll/ShortButtons.java b/core/tests/coretests/src/android/widget/scroll/ShortButtons.java
index 90ede7d35511..01d3b53ba062 100644
--- a/core/tests/coretests/src/android/widget/scroll/ShortButtons.java
+++ b/core/tests/coretests/src/android/widget/scroll/ShortButtons.java
@@ -16,7 +16,7 @@
package android.widget.scroll;
-import android.util.ScrollViewScenario;
+import android.widget.ScrollViewScenario;
import android.widget.Button;
import android.widget.LinearLayout;
diff --git a/core/tests/coretests/src/android/widget/scroll/TallTextAboveButton.java b/core/tests/coretests/src/android/widget/scroll/TallTextAboveButton.java
index 4096fe9c1c2e..bf800c0d09d7 100644
--- a/core/tests/coretests/src/android/widget/scroll/TallTextAboveButton.java
+++ b/core/tests/coretests/src/android/widget/scroll/TallTextAboveButton.java
@@ -16,7 +16,7 @@
package android.widget.scroll;
-import android.util.ScrollViewScenario;
+import android.widget.ScrollViewScenario;
/**
* An (unfocusable) text view that takes up more than the height
diff --git a/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPadding.java b/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPadding.java
index 7d5a8d8441e8..6febdf96ebbb 100644
--- a/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPadding.java
+++ b/core/tests/coretests/src/android/widget/scroll/arrowscroll/MultiPageTextWithPadding.java
@@ -16,7 +16,7 @@
package android.widget.scroll.arrowscroll;
-import android.util.ScrollViewScenario;
+import android.widget.ScrollViewScenario;
/**
* One TextView with a text covering several pages. Padding is added
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java
index 088b57feb200..6374e5df3307 100644
--- a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java
@@ -18,7 +18,6 @@ package com.android.internal.accessibility;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
-import static androidx.test.espresso.action.ViewActions.doubleClick;
import static androidx.test.espresso.action.ViewActions.scrollTo;
import static androidx.test.espresso.action.ViewActions.swipeUp;
import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
@@ -85,10 +84,13 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
+import org.mockito.stubbing.Answer;
import java.util.Collections;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* Tests for {@link AccessibilityShortcutChooserActivity}.
@@ -151,6 +153,8 @@ public class AccessibilityShortcutChooserActivityTest {
when(mAccessibilityManagerService.getInstalledAccessibilityServiceList(
anyInt())).thenReturn(new ParceledListSlice<>(
Collections.singletonList(mAccessibilityServiceInfo)));
+ when(mAccessibilityManagerService.isAccessibilityServiceWarningRequired(any()))
+ .thenReturn(true);
when(mAccessibilityManagerService.isAccessibilityTargetAllowed(
anyString(), anyInt(), anyInt())).thenReturn(true);
when(mKeyguardManager.isKeyguardLocked()).thenReturn(false);
@@ -169,7 +173,7 @@ public class AccessibilityShortcutChooserActivityTest {
}
@Test
- @RequiresFlagsDisabled(Flags.FLAG_DEDUPLICATE_ACCESSIBILITY_WARNING_DIALOG)
+ @RequiresFlagsDisabled(Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
public void selectTestService_oldPermissionDialog_deny_dialogIsHidden() {
launchActivity();
openShortcutsList();
@@ -183,7 +187,7 @@ public class AccessibilityShortcutChooserActivityTest {
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_DEDUPLICATE_ACCESSIBILITY_WARNING_DIALOG)
+ @RequiresFlagsEnabled(Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
public void selectTestService_permissionDialog_allow_rowChecked() {
launchActivity();
openShortcutsList();
@@ -197,7 +201,7 @@ public class AccessibilityShortcutChooserActivityTest {
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_DEDUPLICATE_ACCESSIBILITY_WARNING_DIALOG)
+ @RequiresFlagsEnabled(Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
public void selectTestService_permissionDialog_deny_rowNotChecked() {
launchActivity();
openShortcutsList();
@@ -211,7 +215,7 @@ public class AccessibilityShortcutChooserActivityTest {
}
@Test
- @RequiresFlagsEnabled(Flags.FLAG_DEDUPLICATE_ACCESSIBILITY_WARNING_DIALOG)
+ @RequiresFlagsEnabled(Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
public void selectTestService_permissionDialog_uninstall_callsUninstaller_rowRemoved() {
launchActivity();
openShortcutsList();
@@ -227,6 +231,59 @@ public class AccessibilityShortcutChooserActivityTest {
}
@Test
+ @RequiresFlagsEnabled(Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
+ public void selectTestService_permissionDialog_notShownWhenNotRequired() throws Exception {
+ when(mAccessibilityManagerService.isAccessibilityServiceWarningRequired(any()))
+ .thenReturn(false);
+ launchActivity();
+ openShortcutsList();
+
+ // Clicking the test service should not show a permission dialog window,
+ assertThat(mDevice.findObject(By.text(TEST_LABEL)).clickAndWait(
+ Until.newWindow(), UI_TIMEOUT_MS)).isFalse();
+ // and should become checked.
+ assertThat(mDevice.findObject(By.checked(true))).isNotNull();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
+ public void selectTestService_notPermittedByAdmin_blockedEvenIfNoWarningRequired()
+ throws Exception {
+ when(mAccessibilityManagerService.isAccessibilityServiceWarningRequired(any()))
+ .thenReturn(false);
+ when(mAccessibilityManagerService.isAccessibilityTargetAllowed(
+ eq(TEST_COMPONENT_NAME.getPackageName()), anyInt(), anyInt())).thenReturn(false);
+ // This test class mocks AccessibilityManagerService, so the restricted dialog window
+ // will not actually appear and therefore cannot be used for a wait Until.newWindow().
+ // To still allow smart waiting in this test we can instead set up the mocked method
+ // to update an atomic boolean and wait for that to be set.
+ final Object waitObject = new Object();
+ final AtomicBoolean calledSendRestrictedDialogIntent = new AtomicBoolean(false);
+ Mockito.doAnswer((Answer<Void>) invocation -> {
+ synchronized (waitObject) {
+ calledSendRestrictedDialogIntent.set(true);
+ waitObject.notify();
+ }
+ return null;
+ }).when(mAccessibilityManagerService).sendRestrictedDialogIntent(
+ eq(TEST_COMPONENT_NAME.getPackageName()), anyInt(), anyInt());
+ launchActivity();
+ openShortcutsList();
+
+ mDevice.findObject(By.text(TEST_LABEL)).click();
+ final long timeout = System.currentTimeMillis() + UI_TIMEOUT_MS;
+ synchronized (waitObject) {
+ while (!calledSendRestrictedDialogIntent.get() &&
+ (System.currentTimeMillis() < timeout)) {
+ waitObject.wait(timeout - System.currentTimeMillis());
+ }
+ }
+
+ assertThat(calledSendRestrictedDialogIntent.get()).isTrue();
+ assertThat(mDevice.findObject(By.checked(true))).isNull();
+ }
+
+ @Test
public void clickServiceTarget_notPermittedByAdmin_sendRestrictedDialogIntent()
throws Exception {
when(mAccessibilityManagerService.isAccessibilityTargetAllowed(
@@ -329,7 +386,7 @@ public class AccessibilityShortcutChooserActivityTest {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (Flags.deduplicateAccessibilityWarningDialog()) {
+ if (Flags.cleanupAccessibilityWarningDialog()) {
// Setting the Theme is necessary here for the dialog to use the proper style
// resources as designated in its layout XML.
setTheme(R.style.Theme_DeviceDefault_DayNight);
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/dialog/AccessibilityServiceWarningTest.java b/core/tests/coretests/src/com/android/internal/accessibility/dialog/AccessibilityServiceWarningTest.java
index b76dd51d3f2b..24aab6192c50 100644
--- a/core/tests/coretests/src/com/android/internal/accessibility/dialog/AccessibilityServiceWarningTest.java
+++ b/core/tests/coretests/src/com/android/internal/accessibility/dialog/AccessibilityServiceWarningTest.java
@@ -58,7 +58,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@RequiresFlagsEnabled(
- android.view.accessibility.Flags.FLAG_DEDUPLICATE_ACCESSIBILITY_WARNING_DIALOG)
+ android.view.accessibility.Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
public class AccessibilityServiceWarningTest {
private static final String A11Y_SERVICE_PACKAGE_LABEL = "TestA11yService";
private static final String A11Y_SERVICE_SUMMARY = "TestA11yService summary";
diff --git a/core/tests/coretests/src/com/android/internal/util/BitUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/BitUtilsTest.java
index fdba811f3eaa..fdde36ad8e35 100644
--- a/core/tests/coretests/src/com/android/internal/util/BitUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/BitUtilsTest.java
@@ -30,8 +30,8 @@ import static com.android.internal.util.BitUtils.unpackBits;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/util/ContrastColorUtilTest.java b/core/tests/coretests/src/com/android/internal/util/ContrastColorUtilTest.java
index 5f5bf1165004..e6ebfefd2aea 100644
--- a/core/tests/coretests/src/com/android/internal/util/ContrastColorUtilTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/ContrastColorUtilTest.java
@@ -23,6 +23,8 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
@@ -32,23 +34,21 @@ import android.text.style.TextAppearanceSpan;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.R;
-import junit.framework.TestCase;
-
-import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.runner.RunWith;
-public class ContrastColorUtilTest extends TestCase {
-
- private Context mContext;
-
- @Before
- public void setUp() {
- mContext = InstrumentationRegistry.getContext();
- }
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = Color.class)
+public class ContrastColorUtilTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+ @Test
@SmallTest
public void testEnsureTextContrastAgainstDark() {
int darkBg = 0xFF35302A;
@@ -70,6 +70,7 @@ public class ContrastColorUtilTest extends TestCase {
assertContrastIsWithinRange(selfContrastColor, darkBg, 4.5, 4.75);
}
+ @Test
@SmallTest
public void testEnsureTextContrastAgainstLight() {
int lightBg = 0xFFFFF8F2;
@@ -91,13 +92,16 @@ public class ContrastColorUtilTest extends TestCase {
assertContrastIsWithinRange(selfContrastColor, lightBg, 4.5, 4.75);
}
+ @Test
public void testBuilder_ensureColorSpanContrast_removesAllFullLengthColorSpans() {
+ Context context = InstrumentationRegistry.getContext();
+
Spannable text = new SpannableString("blue text with yellow and green");
text.setSpan(new ForegroundColorSpan(Color.YELLOW), 15, 21,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(),
Spanned.SPAN_INCLUSIVE_INCLUSIVE);
- TextAppearanceSpan taSpan = new TextAppearanceSpan(mContext,
+ TextAppearanceSpan taSpan = new TextAppearanceSpan(context,
R.style.TextAppearance_DeviceDefault_Notification_Title);
assertThat(taSpan.getTextColor()).isNotNull(); // it must be set to prove it is cleared.
text.setSpan(taSpan, 0, text.length(),
@@ -123,6 +127,7 @@ public class ContrastColorUtilTest extends TestCase {
assertThat(((ForegroundColorSpan) spans[2]).getForegroundColor()).isEqualTo(Color.GREEN);
}
+ @Test
public void testBuilder_ensureColorSpanContrast_partialLength_adjusted() {
int background = 0xFFFF0101; // Slightly lighter red
CharSequence text = new SpannableStringBuilder()
@@ -138,14 +143,17 @@ public class ContrastColorUtilTest extends TestCase {
assertContrastIsWithinRange(foregroundColor, background, 3, 3.2);
}
+ @Test
public void testBuilder_ensureColorSpanContrast_worksWithComplexInput() {
+ Context context = InstrumentationRegistry.getContext();
+
Spannable text = new SpannableString("blue text with yellow and green and cyan");
text.setSpan(new ForegroundColorSpan(Color.YELLOW), 15, 21,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(),
Spanned.SPAN_INCLUSIVE_INCLUSIVE);
// cyan TextAppearanceSpan
- TextAppearanceSpan taSpan = new TextAppearanceSpan(mContext,
+ TextAppearanceSpan taSpan = new TextAppearanceSpan(context,
R.style.TextAppearance_DeviceDefault_Notification_Title);
taSpan = new TextAppearanceSpan(taSpan.getFamily(), taSpan.getTextStyle(),
taSpan.getTextSize(), ColorStateList.valueOf(Color.CYAN), null);
diff --git a/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java
index 36c2a62ae6ed..d2d3c134f390 100644
--- a/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/DumpUtilsTest.java
@@ -25,10 +25,16 @@ import static com.android.internal.util.DumpUtils.isPlatformPackage;
import static com.google.common.truth.Truth.assertWithMessage;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import android.content.ComponentName;
import android.util.SparseArray;
-import junit.framework.TestCase;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -37,7 +43,8 @@ import java.io.StringWriter;
* Run with:
atest FrameworksCoreTests:DumpUtilsTest
*/
-public class DumpUtilsTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class DumpUtilsTest {
private final StringWriter mStringWriter = new StringWriter();
private final PrintWriter mPrintWriter = new PrintWriter(mStringWriter);
@@ -56,6 +63,7 @@ public class DumpUtilsTest extends TestCase {
return () -> cn(componentName);
}
+ @Test
public void testIsPlatformPackage() {
assertTrue(isPlatformPackage("android"));
assertTrue(isPlatformPackage("android.abc"));
@@ -79,6 +87,7 @@ public class DumpUtilsTest extends TestCase {
assertFalse(isPlatformPackage(wcn("com.google.def/abc")));
}
+ @Test
public void testIsNonPlatformPackage() {
assertFalse(isNonPlatformPackage("android"));
assertFalse(isNonPlatformPackage("android.abc"));
@@ -102,6 +111,7 @@ public class DumpUtilsTest extends TestCase {
assertTrue(isNonPlatformPackage(wcn("com.google.def/abc")));
}
+ @Test
public void testIsPlatformCriticalPackage() {
for (final ComponentName componentName : CRITICAL_SECTION_COMPONENTS) {
assertTrue(isPlatformCriticalPackage(() -> componentName));
@@ -115,6 +125,7 @@ public class DumpUtilsTest extends TestCase {
assertFalse(isPlatformCriticalPackage(null));
}
+ @Test
public void testIsPlatformNonCriticalPackage() {
for (final ComponentName componentName : CRITICAL_SECTION_COMPONENTS) {
assertFalse(isPlatformNonCriticalPackage(() -> componentName));
@@ -128,6 +139,7 @@ public class DumpUtilsTest extends TestCase {
assertFalse(isPlatformNonCriticalPackage(null));
}
+ @Test
public void testFilterRecord() {
assertFalse(filterRecord(null).test(wcn("com.google.p/abc")));
assertFalse(filterRecord(null).test(wcn("com.android.p/abc")));
@@ -178,6 +190,7 @@ public class DumpUtilsTest extends TestCase {
wcn("com.google/.abc")));
}
+ @Test
public void testDumpSparseArray_empty() {
SparseArray<String> array = new SparseArray<>();
@@ -188,6 +201,7 @@ public class DumpUtilsTest extends TestCase {
assertWithMessage("empty array dump").that(output).isEqualTo("...No whatevers\n");
}
+ @Test
public void testDumpSparseArray_oneElement() {
SparseArray<String> array = new SparseArray<>();
array.put(1, "uno");
@@ -201,6 +215,7 @@ public class DumpUtilsTest extends TestCase {
+ "..0: 1->uno\n");
}
+ @Test
public void testDumpSparseArray_oneNullElement() {
SparseArray<String> array = new SparseArray<>();
array.put(1, null);
@@ -214,6 +229,7 @@ public class DumpUtilsTest extends TestCase {
+ "..0: 1->(null)\n");
}
+ @Test
public void testDumpSparseArray_multipleElements() {
SparseArray<String> array = new SparseArray<>();
array.put(1, "uno");
@@ -231,6 +247,7 @@ public class DumpUtilsTest extends TestCase {
+ "..2: 42->(null)\n");
}
+ @Test
public void testDumpSparseArray_keyDumperOnly() {
SparseArray<String> array = new SparseArray<>();
array.put(1, "uno");
@@ -251,6 +268,7 @@ public class DumpUtilsTest extends TestCase {
+ "_2=42_(null)\n");
}
+ @Test
public void testDumpSparseArray_valueDumperOnly() {
SparseArray<String> array = new SparseArray<>();
array.put(1, "uno");
@@ -272,6 +290,7 @@ public class DumpUtilsTest extends TestCase {
+ "..2: 42->(null)\n");
}
+ @Test
public void testDumpSparseArray_keyAndValueDumpers() {
SparseArray<String> array = new SparseArray<>();
array.put(1, "uno");
@@ -295,6 +314,7 @@ public class DumpUtilsTest extends TestCase {
+ "_2=42_(null)\n");
}
+ @Test
public void testDumpSparseArrayValues() {
SparseArray<String> array = new SparseArray<>();
array.put(1, "uno");
@@ -306,7 +326,7 @@ public class DumpUtilsTest extends TestCase {
String output = flushPrintWriter();
assertWithMessage("dump of %s", array).that(output).isEqualTo(""
- + ".3 numbers:\n"
+ + ".3 number(s):\n"
+ "..uno\n"
+ "..duo\n"
+ "..(null)\n");
diff --git a/core/tests/coretests/src/com/android/internal/util/DumpableContainerImplTest.java b/core/tests/coretests/src/com/android/internal/util/DumpableContainerImplTest.java
index 589e4f98a32a..61d4e3da5036 100644
--- a/core/tests/coretests/src/com/android/internal/util/DumpableContainerImplTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/DumpableContainerImplTest.java
@@ -17,30 +17,32 @@ package com.android.internal.util;
import static com.google.common.truth.Truth.assertWithMessage;
-import static org.testng.Assert.assertThrows;
-
import android.util.Dumpable;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.util.dump.DumpableContainerImpl;
import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.concurrent.atomic.AtomicReference;
-public final class DumpableContainerImplTest {
+@RunWith(AndroidJUnit4.class)
+public class DumpableContainerImplTest {
private final DumpableContainerImpl mImpl = new DumpableContainerImpl();
private final StringWriter mSw = new StringWriter();
private final PrintWriter mWriter = new PrintWriter(mSw);
- @Test
+ @Test(expected = NullPointerException.class)
public void testAddDumpable_null() {
- assertThrows(NullPointerException.class, () -> mImpl.addDumpable(null));
+ mImpl.addDumpable(null);
}
- @Test
+ @Test(expected = NullPointerException.class)
public void testAddDumpable_dumpableWithoutName() {
Dumpable namelessDumpable = new Dumpable() {
@@ -55,7 +57,7 @@ public final class DumpableContainerImplTest {
}
};
- assertThrows(NullPointerException.class, () -> mImpl.addDumpable(namelessDumpable));
+ mImpl.addDumpable(namelessDumpable);
}
@Test
@@ -179,9 +181,9 @@ public final class DumpableContainerImplTest {
+ "......6 Args: 4,8,15,16,23,42,\n");
}
- @Test
+ @Test(expected = NullPointerException.class)
public void testRemoveDumpable_null() {
- assertThrows(NullPointerException.class, () -> mImpl.removeDumpable(null));
+ mImpl.removeDumpable(null);
}
@Test
diff --git a/core/tests/coretests/src/com/android/internal/util/FakeLatencyTrackerTest.java b/core/tests/coretests/src/com/android/internal/util/FakeLatencyTrackerTest.java
index 3946cdf76821..6bd67ea486d1 100644
--- a/core/tests/coretests/src/com/android/internal/util/FakeLatencyTrackerTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/FakeLatencyTrackerTest.java
@@ -24,12 +24,15 @@ import static com.android.internal.util.LatencyTracker.ACTION_SHOW_VOICE_INTERAC
import static com.google.common.truth.Truth.assertThat;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.provider.DeviceConfig;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -42,7 +45,10 @@ import java.util.List;
* {@link LatencyTrackerTest}
*/
@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = DeviceConfig.class)
public class FakeLatencyTrackerTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
private FakeLatencyTracker mFakeLatencyTracker;
private int mInitialSyncDisabledMode;
diff --git a/core/tests/coretests/src/com/android/internal/util/FastDataTest.java b/core/tests/coretests/src/com/android/internal/util/FastDataTest.java
index de325ab7d186..316b95ac1b7d 100644
--- a/core/tests/coretests/src/com/android/internal/util/FastDataTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/FastDataTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import android.annotation.NonNull;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.util.ExceptionUtils;
import com.android.modules.utils.FastDataInput;
@@ -29,6 +30,7 @@ import com.android.modules.utils.FastDataOutput;
import libcore.util.HexEncoding;
import org.junit.Assume;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -51,6 +53,9 @@ import java.util.function.Consumer;
@RunWith(Parameterized.class)
public class FastDataTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
private final boolean use4ByteSequence;
private static final String TEST_SHORT_STRING = "a";
@@ -59,7 +64,12 @@ public class FastDataTest {
@Parameters(name = "use4ByteSequence={0}")
public static Collection<Object[]> data() {
- return Arrays.asList(new Object[][] { {true}, {false} });
+ if (RavenwoodRule.isUnderRavenwood()) {
+ // TODO: 4-byte sequences are only supported on ART
+ return Arrays.asList(new Object[][]{{false}});
+ } else {
+ return Arrays.asList(new Object[][]{{true}, {false}});
+ }
}
public FastDataTest(boolean use4ByteSequence) {
diff --git a/core/tests/coretests/src/com/android/internal/util/FastMathTest.java b/core/tests/coretests/src/com/android/internal/util/FastMathTest.java
new file mode 100644
index 000000000000..dd263345022b
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/FastMathTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.internal.util;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class FastMathTest {
+ @Test
+ public void testRound() {
+ assertEquals(-1, FastMath.round(-1.0f));
+ assertEquals(0, FastMath.round(0.0f));
+ assertEquals(1, FastMath.round(1.0f));
+ }
+}
diff --git a/core/tests/coretests/src/com/android/internal/util/GrowingArrayUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/GrowingArrayUtilsTest.java
new file mode 100644
index 000000000000..8456161f9709
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/GrowingArrayUtilsTest.java
@@ -0,0 +1,140 @@
+/*
+ * 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.internal.util;
+
+import static com.android.internal.util.GrowingArrayUtils.append;
+import static com.android.internal.util.GrowingArrayUtils.insert;
+
+import static org.junit.Assert.assertArrayEquals;
+
+import android.util.EmptyArray;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+public class GrowingArrayUtilsTest {
+ private final Object TEST_OBJECT = new Object();
+
+ @Test
+ public void testAppend_Object() {
+ assertArrayEqualsPrefix(new Object[]{TEST_OBJECT},
+ append(EmptyArray.OBJECT, 0, TEST_OBJECT));
+ assertArrayEqualsPrefix(new Object[]{TEST_OBJECT, TEST_OBJECT},
+ append(new Object[]{TEST_OBJECT}, 1, TEST_OBJECT));
+ assertArrayEqualsPrefix(new Object[]{TEST_OBJECT},
+ append(new Object[]{null, null}, 0, TEST_OBJECT));
+ }
+
+ @Test
+ public void testInsert_Object() {
+ assertArrayEqualsPrefix(new Object[]{TEST_OBJECT},
+ insert(EmptyArray.OBJECT, 0, 0, TEST_OBJECT));
+ assertArrayEqualsPrefix(new Object[]{null, TEST_OBJECT},
+ insert(new Object[]{TEST_OBJECT}, 1, 0, null));
+ assertArrayEqualsPrefix(new Object[]{TEST_OBJECT, null},
+ insert(new Object[]{TEST_OBJECT}, 1, 1, null));
+ assertArrayEqualsPrefix(new Object[]{TEST_OBJECT, null, TEST_OBJECT},
+ insert(new Object[]{TEST_OBJECT, TEST_OBJECT}, 2, 1, null));
+ }
+
+ @Test
+ public void testAppend_Int() {
+ assertArrayEqualsPrefix(new int[]{42},
+ append(EmptyArray.INT, 0, 42));
+ assertArrayEqualsPrefix(new int[]{42, 42},
+ append(new int[]{42}, 1, 42));
+ assertArrayEqualsPrefix(new int[]{42},
+ append(new int[]{0, 0}, 0, 42));
+ }
+
+ @Test
+ public void testInsert_Int() {
+ assertArrayEqualsPrefix(new int[]{42},
+ insert(EmptyArray.INT, 0, 0, 42));
+ assertArrayEqualsPrefix(new int[]{21, 42},
+ insert(new int[]{42}, 1, 0, 21));
+ assertArrayEqualsPrefix(new int[]{42, 21},
+ insert(new int[]{42}, 1, 1, 21));
+ assertArrayEqualsPrefix(new int[]{42, 21, 43},
+ insert(new int[]{42, 43}, 2, 1, 21));
+ }
+
+ @Test
+ public void testAppend_Long() {
+ assertArrayEqualsPrefix(new long[]{42},
+ append(EmptyArray.LONG, 0, 42));
+ assertArrayEqualsPrefix(new long[]{42, 42},
+ append(new long[]{42}, 1, 42));
+ assertArrayEqualsPrefix(new long[]{42},
+ append(new long[]{0, 0}, 0, 42));
+ }
+
+ @Test
+ public void testInsert_Long() {
+ assertArrayEqualsPrefix(new long[]{42},
+ insert(EmptyArray.LONG, 0, 0, 42));
+ assertArrayEqualsPrefix(new long[]{21, 42},
+ insert(new long[]{42}, 1, 0, 21));
+ assertArrayEqualsPrefix(new long[]{42, 21},
+ insert(new long[]{42}, 1, 1, 21));
+ assertArrayEqualsPrefix(new long[]{42, 21, 43},
+ insert(new long[]{42, 43}, 2, 1, 21));
+ }
+
+ @Test
+ public void testAppend_Boolean() {
+ assertArrayEqualsPrefix(new boolean[]{true},
+ append(EmptyArray.BOOLEAN, 0, true));
+ assertArrayEqualsPrefix(new boolean[]{true, true},
+ append(new boolean[]{true}, 1, true));
+ assertArrayEqualsPrefix(new boolean[]{true},
+ append(new boolean[]{false, false}, 0, true));
+ }
+
+ @Test
+ public void testInsert_Boolean() {
+ assertArrayEqualsPrefix(new boolean[]{true},
+ insert(EmptyArray.BOOLEAN, 0, 0, true));
+ assertArrayEqualsPrefix(new boolean[]{false, true},
+ insert(new boolean[]{true}, 1, 0, false));
+ assertArrayEqualsPrefix(new boolean[]{true, false},
+ insert(new boolean[]{true}, 1, 1, false));
+ assertArrayEqualsPrefix(new boolean[]{true, false, true},
+ insert(new boolean[]{true, true}, 2, 1, false));
+ }
+
+ private <T> void assertArrayEqualsPrefix(T[] expected, T[] actual) {
+ assertArrayEquals(expected, Arrays.copyOf(actual, expected.length));
+ }
+
+ private void assertArrayEqualsPrefix(int[] expected, int[] actual) {
+ assertArrayEquals(expected, Arrays.copyOf(actual, expected.length));
+ }
+
+ private void assertArrayEqualsPrefix(long[] expected, long[] actual) {
+ assertArrayEquals(expected, Arrays.copyOf(actual, expected.length));
+ }
+
+ private void assertArrayEqualsPrefix(boolean[] expected, boolean[] actual) {
+ assertArrayEquals(expected, Arrays.copyOf(actual, expected.length));
+ }
+}
diff --git a/core/tests/coretests/src/com/android/internal/util/HexDumpTest.java b/core/tests/coretests/src/com/android/internal/util/HexDumpTest.java
index f1cd89bf49f4..dcffa1cf6975 100644
--- a/core/tests/coretests/src/com/android/internal/util/HexDumpTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/HexDumpTest.java
@@ -19,14 +19,22 @@ package com.android.internal.util;
import static com.android.internal.util.HexDump.hexStringToByteArray;
import static com.android.internal.util.HexDump.toHexString;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Random;
-public final class HexDumpTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public final class HexDumpTest {
+ @Test
public void testBytesToHexString() {
assertEquals("abcdef", HexDump.toHexString(
new byte[] { (byte) 0xab, (byte) 0xcd, (byte) 0xef }, false));
@@ -34,12 +42,14 @@ public final class HexDumpTest extends TestCase {
new byte[] { (byte) 0xab, (byte) 0xcd, (byte) 0xef }, true));
}
+ @Test
public void testNullByteArray() {
assertThrows(
NullPointerException.class,
() -> HexDump.toHexString(null));
}
+ @Test
public void testBytesToHexString_allByteValues() {
byte[] bytes = new byte[256];
for (int i = 0; i < bytes.length; i++) {
@@ -57,6 +67,7 @@ public final class HexDumpTest extends TestCase {
assertEquals(expected, HexDump.toHexString(bytes));
}
+ @Test
public void testRoundTrip_fromBytes() {
Random deterministicRandom = new Random(31337); // arbitrary but deterministic
for (int length = 0; length < 100; length++) {
@@ -68,6 +79,7 @@ public final class HexDumpTest extends TestCase {
}
}
+ @Test
public void testRoundTrip_fromString() {
String hexString = "0123456789ABCDEF72f9a3438934c378d34f32a8b932";
for (int length = 0; length < hexString.length(); length += 2) {
@@ -77,6 +89,7 @@ public final class HexDumpTest extends TestCase {
}
}
+ @Test
public void testToHexString_offsetLength() {
byte[] bytes = new byte[32];
for (int i = 0; i < 16; i++) {
@@ -97,6 +110,7 @@ public final class HexDumpTest extends TestCase {
}
}
+ @Test
public void testToHexString_case() {
byte[] bytes = new byte[32];
for (int i = 0; i < 16; i++) {
@@ -113,16 +127,19 @@ public final class HexDumpTest extends TestCase {
assertEquals(expected.toUpperCase(), toHexString(bytes));
}
+ @Test
public void testHexStringToByteArray_empty() {
assertBytesEqual(new byte[0], HexDump.hexStringToByteArray(""));
}
+ @Test
public void testHexStringToByteArray_null() {
assertThrows(
NullPointerException.class,
() -> HexDump.hexStringToByteArray((String) null));
}
+ @Test
public void testHexStringToByteArray_invalidCharacters() {
// IllegalArgumentException would probably have been better than RuntimeException, but it
// might be too late to change now.
@@ -137,6 +154,7 @@ public final class HexDumpTest extends TestCase {
() -> HexDump.hexStringToByteArray("abcdefgh"));
}
+ @Test
public void testHexStringToByteArray_oddLength() {
// IllegalArgumentException would probably have been better than
// StringIndexOutOfBoundsException, but it might be too late to change now.
diff --git a/core/tests/coretests/src/com/android/internal/util/LatencyTrackerTest.java b/core/tests/coretests/src/com/android/internal/util/LatencyTrackerTest.java
index f24894e7f263..010f72466f3a 100644
--- a/core/tests/coretests/src/com/android/internal/util/LatencyTrackerTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/LatencyTrackerTest.java
@@ -25,9 +25,11 @@ import static com.android.internal.util.LatencyTracker.STATSD_ACTION;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.provider.DeviceConfig;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.LatencyTracker.ActionProperties;
@@ -49,7 +51,11 @@ import java.util.Map;
import java.util.stream.Collectors;
@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = DeviceConfig.class)
public class LatencyTrackerTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
private static final String ENUM_NAME_PREFIX = "UIACTION_LATENCY_REPORTED__ACTION__";
@Rule
diff --git a/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java b/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java
index b2a2265d30ae..e6418fae7dca 100644
--- a/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/LineBreakBufferedWriterTest.java
@@ -16,7 +16,13 @@
package com.android.internal.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.ByteArrayOutputStream;
import java.io.Writer;
@@ -26,18 +32,18 @@ import java.util.List;
/**
* Tests for {@link IndentingPrintWriter}.
*/
-public class LineBreakBufferedWriterTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class LineBreakBufferedWriterTest {
private ByteArrayOutputStream mStream;
private RecordingWriter mWriter;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
+ @Before
+ public void setUp() throws Exception {
mWriter = new RecordingWriter();
}
+ @Test
public void testLessThanBufferSize() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 1000);
@@ -49,6 +55,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("Hello\nWorld\nTest\n");
}
+ @Test
public void testMoreThanBufferSizeNoLineBreaks() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -71,6 +78,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
}
}
+ @Test
public void testMoreThanBufferSizeNoLineBreaksSingleString() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -92,6 +100,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
}
}
+ @Test
public void testMoreThanBufferSizeLineBreakBefore() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -104,6 +113,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("aaaaaaaaaa", "bbbbcccccccccc");
}
+ @Test
public void testMoreThanBufferSizeLineBreakBeforeSingleString() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -115,6 +125,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("aaaaaaaaaa", "bbbbcccccccccc");
}
+ @Test
public void testMoreThanBufferSizeLineBreakNew() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -127,6 +138,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("aaaaaaaaaabbbbbc\nd", "ddddddddd");
}
+ @Test
public void testMoreThanBufferSizeLineBreakBeforeAndNew() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -139,6 +151,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("aaaaaaaaaa\nbbbbbc\nd", "ddddddddd");
}
+ @Test
public void testMoreThanBufferSizeInt() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 15);
@@ -151,6 +164,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("123456789098765", "4321");
}
+ @Test
public void testMoreThanBufferSizeChar() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 15);
@@ -165,6 +179,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("$$$$$$$$$$%%%%%", "%%%%%");
}
+ @Test
public void testMoreThanBufferSizeLineBreakNewChars() {
final LineBreakBufferedWriter lw = new LineBreakBufferedWriter(mWriter, 20);
@@ -177,6 +192,7 @@ public class LineBreakBufferedWriterTest extends TestCase {
assertOutput("aaaaaaaaaabbbbbc\nd", "ddddddddd");
}
+ @Test
public void testMoreThenInitialCapacitySimpleWrites() {
// This check is different from testMoreThanBufferSizeChar. The initial capacity is lower
// than the maximum buffer size here.
diff --git a/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
index 867152e720dd..d24cbfef9f10 100644
--- a/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
@@ -16,13 +16,23 @@
package com.android.internal.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
/**
* Run with:
atest /android/pi-dev/frameworks/base/core/tests/coretests/src/com/android/internal/util/ParseUtilsTest.java
*/
-public class ParseUtilsTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class ParseUtilsTest {
+ private static final float DELTA_FLOAT = 0.0f;
+ private static final double DELTA_DOUBLE = 0.0d;
+
+ @Test
public void testParseInt() {
assertEquals(1, ParseUtils.parseInt(null, 1));
assertEquals(1, ParseUtils.parseInt("", 1));
@@ -33,6 +43,7 @@ public class ParseUtilsTest extends TestCase {
assertEquals(-2, ParseUtils.parseInt("-2", 1));
}
+ @Test
public void testParseIntWithBase() {
assertEquals(1, ParseUtils.parseIntWithBase(null, 10, 1));
assertEquals(1, ParseUtils.parseIntWithBase("", 10, 1));
@@ -45,6 +56,7 @@ public class ParseUtilsTest extends TestCase {
assertEquals(-3, ParseUtils.parseIntWithBase("-10", 3, 1));
}
+ @Test
public void testParseLong() {
assertEquals(1L, ParseUtils.parseLong(null, 1));
assertEquals(1L, ParseUtils.parseLong("", 1));
@@ -52,6 +64,7 @@ public class ParseUtilsTest extends TestCase {
assertEquals(2L, ParseUtils.parseLong("2", 1));
}
+ @Test
public void testParseLongWithBase() {
assertEquals(1L, ParseUtils.parseLongWithBase(null, 10, 1));
assertEquals(1L, ParseUtils.parseLongWithBase("", 10, 1));
@@ -69,20 +82,23 @@ public class ParseUtilsTest extends TestCase {
assertEquals(10_000_000_000L, ParseUtils.parseLongWithBase(null, 10, 10_000_000_000L));
}
+ @Test
public void testParseFloat() {
- assertEquals(0.5f, ParseUtils.parseFloat(null, 0.5f));
- assertEquals(0.5f, ParseUtils.parseFloat("", 0.5f));
- assertEquals(0.5f, ParseUtils.parseFloat("1x", 0.5f));
- assertEquals(1.5f, ParseUtils.parseFloat("1.5", 0.5f));
+ assertEquals(0.5f, ParseUtils.parseFloat(null, 0.5f), DELTA_FLOAT);
+ assertEquals(0.5f, ParseUtils.parseFloat("", 0.5f), DELTA_FLOAT);
+ assertEquals(0.5f, ParseUtils.parseFloat("1x", 0.5f), DELTA_FLOAT);
+ assertEquals(1.5f, ParseUtils.parseFloat("1.5", 0.5f), DELTA_FLOAT);
}
+ @Test
public void testParseDouble() {
- assertEquals(0.5, ParseUtils.parseDouble(null, 0.5));
- assertEquals(0.5, ParseUtils.parseDouble("", 0.5));
- assertEquals(0.5, ParseUtils.parseDouble("1x", 0.5));
- assertEquals(1.5, ParseUtils.parseDouble("1.5", 0.5));
+ assertEquals(0.5, ParseUtils.parseDouble(null, 0.5), DELTA_DOUBLE);
+ assertEquals(0.5, ParseUtils.parseDouble("", 0.5), DELTA_DOUBLE);
+ assertEquals(0.5, ParseUtils.parseDouble("1x", 0.5), DELTA_DOUBLE);
+ assertEquals(1.5, ParseUtils.parseDouble("1.5", 0.5), DELTA_DOUBLE);
}
+ @Test
public void testParseBoolean() {
assertEquals(false, ParseUtils.parseBoolean(null, false));
assertEquals(true, ParseUtils.parseBoolean(null, true));
diff --git a/core/tests/coretests/src/com/android/internal/util/ProgressReporterTest.java b/core/tests/coretests/src/com/android/internal/util/ProgressReporterTest.java
index 87f2a8a67947..0d213357c9a5 100644
--- a/core/tests/coretests/src/com/android/internal/util/ProgressReporterTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/ProgressReporterTest.java
@@ -16,14 +16,28 @@
package com.android.internal.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = ProgressReporter.class)
+public class ProgressReporterTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
-public class ProgressReporterTest extends TestCase {
private ProgressReporter r;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
r = new ProgressReporter(0);
}
@@ -37,6 +51,7 @@ public class ProgressReporterTest extends TestCase {
assertEquals("len", len, range[1]);
}
+ @Test
public void testBasic() throws Exception {
assertProgress(0);
@@ -50,6 +65,7 @@ public class ProgressReporterTest extends TestCase {
assertProgress(100);
}
+ @Test
public void testSegment() throws Exception {
r.setProgress(20);
assertProgress(20);
@@ -68,6 +84,7 @@ public class ProgressReporterTest extends TestCase {
assertProgress(80);
}
+ @Test
public void testSegmentOvershoot() throws Exception {
r.setProgress(20);
assertProgress(20);
@@ -87,6 +104,7 @@ public class ProgressReporterTest extends TestCase {
assertProgress(60);
}
+ @Test
public void testSegmentNested() throws Exception {
r.setProgress(20);
assertProgress(20);
diff --git a/core/tests/coretests/src/com/android/internal/util/RingBufferTest.java b/core/tests/coretests/src/com/android/internal/util/RingBufferTest.java
index 4497770ef40d..d7a100a30ac8 100644
--- a/core/tests/coretests/src/com/android/internal/util/RingBufferTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/RingBufferTest.java
@@ -20,8 +20,8 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java b/core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java
index 8b30828a8936..ef579fe07af5 100644
--- a/core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java
+++ b/core/tests/coretests/src/com/android/internal/util/TokenBucketTest.java
@@ -16,22 +16,29 @@
package com.android.internal.util;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
import android.os.SystemClock;
import android.text.format.DateUtils;
-import junit.framework.TestCase;
+import androidx.test.runner.AndroidJUnit4;
-public class TokenBucketTest extends TestCase {
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class TokenBucketTest {
static final int FILL_DELTA_VERY_SHORT = 1;
static final int FILL_DELTA_VERY_LONG = Integer.MAX_VALUE;
+ @Test
public void testArgumentValidation() {
assertThrow(() -> new TokenBucket(0, 1, 1));
assertThrow(() -> new TokenBucket(1, 0, 1));
- assertThrow(() -> new TokenBucket(1, 1, 0));
assertThrow(() -> new TokenBucket(0, 1));
assertThrow(() -> new TokenBucket(1, 0));
assertThrow(() -> new TokenBucket(-1, 1, 1));
@@ -46,6 +53,7 @@ public class TokenBucketTest extends TestCase {
new TokenBucket(5000, 1);
}
+ @Test
public void testInitialCapacity() {
drain(new TokenBucket(FILL_DELTA_VERY_LONG, 1), 1);
drain(new TokenBucket(FILL_DELTA_VERY_LONG, 10), 10);
@@ -62,6 +70,7 @@ public class TokenBucketTest extends TestCase {
drain(new TokenBucket((int) DateUtils.DAY_IN_MILLIS, 200), 200);
}
+ @Test
public void testReset() {
TokenBucket tb = new TokenBucket(FILL_DELTA_VERY_LONG, 100, 10);
drain(tb, 10);
@@ -77,6 +86,7 @@ public class TokenBucketTest extends TestCase {
drain(tb, 30);
}
+ @Test
public void testFill() throws Exception {
int delta = 50;
TokenBucket tb = new TokenBucket(delta, 10, 0);
@@ -88,6 +98,7 @@ public class TokenBucketTest extends TestCase {
assertTrue(tb.has());
}
+ @Test
public void testRefill() throws Exception {
TokenBucket tb = new TokenBucket(FILL_DELTA_VERY_SHORT, 10, 10);
@@ -107,6 +118,7 @@ public class TokenBucketTest extends TestCase {
assertEquals(10, tb.get(100));
}
+ @Test
public void testAverage() throws Exception {
final int delta = 3;
final int want = 60;
@@ -124,6 +136,7 @@ public class TokenBucketTest extends TestCase {
assertDuration(want * delta, SystemClock.elapsedRealtime() - start);
}
+ @Test
public void testBurst() throws Exception {
final int delta = 2;
final int capacity = 20;
diff --git a/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java b/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java
index 8e653f5e828f..9cb91229ce58 100644
--- a/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java
+++ b/core/tests/packagemonitortests/src/com/android/internal/content/PackageMonitorTest.java
@@ -30,6 +30,7 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
+import android.os.SystemClock;
import android.os.UserHandle;
import androidx.test.runner.AndroidJUnit4;
@@ -38,6 +39,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -185,16 +187,44 @@ public class PackageMonitorTest {
Intent intent = new Intent(Intent.ACTION_PACKAGE_RESTARTED);
intent.putExtra(Intent.EXTRA_USER_HANDLE, FAKE_USER_ID);
intent.putExtra(Intent.EXTRA_UID, FAKE_PACKAGE_UID);
+ final long elapsedRealtimeMs = SystemClock.elapsedRealtime();
+ intent.putExtra(Intent.EXTRA_TIME, elapsedRealtimeMs);
intent.setData(Uri.fromParts("package", FAKE_PACKAGE_NAME, null));
spyPackageMonitor.doHandlePackageEvent(intent);
verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
verify(spyPackageMonitor, times(1)).onHandleForceStop(eq(intent),
- eq(new String[]{FAKE_PACKAGE_NAME}), eq(FAKE_PACKAGE_UID), eq(true));
+ eq(new String[]{FAKE_PACKAGE_NAME}), eq(FAKE_PACKAGE_UID), eq(true),
+ eqTimestamp(elapsedRealtimeMs));
verify(spyPackageMonitor, times(1)).onFinishPackageChanges();
}
@Test
+ public void testPackageMonitorDoHandlePackageEventPackageUnstopped() throws Exception {
+ PackageMonitor spyPackageMonitor = spy(new TestPackageMonitor());
+
+ Intent intent = new Intent(Intent.ACTION_PACKAGE_UNSTOPPED);
+ intent.putExtra(Intent.EXTRA_USER_HANDLE, FAKE_USER_ID);
+ intent.putExtra(Intent.EXTRA_UID, FAKE_PACKAGE_UID);
+ final long elapsedRealtimeMs = SystemClock.elapsedRealtime();
+ intent.putExtra(Intent.EXTRA_TIME, elapsedRealtimeMs);
+ intent.setData(Uri.fromParts("package", FAKE_PACKAGE_NAME, null));
+ spyPackageMonitor.doHandlePackageEvent(intent);
+
+ verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
+ verify(spyPackageMonitor, times(1)).onPackageUnstopped(
+ eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID), eqTimestamp(elapsedRealtimeMs));
+ verify(spyPackageMonitor, times(1)).onFinishPackageChanges();
+ }
+
+ private static Bundle eqTimestamp(long expectedRealtimeMs) {
+ return ArgumentMatchers.argThat(actualExtras -> {
+ final long actualRealtimeMs = actualExtras.getLong(Intent.EXTRA_TIME);
+ return expectedRealtimeMs == actualRealtimeMs;
+ });
+ }
+
+ @Test
public void testPackageMonitorDoHandlePackageEventPackageQueryRestarted() throws Exception {
PackageMonitor spyPackageMonitor = spy(new TestPackageMonitor());
diff --git a/core/tests/utiltests/Android.bp b/core/tests/utiltests/Android.bp
index 967047e74555..2ccee71c8ff7 100644
--- a/core/tests/utiltests/Android.bp
+++ b/core/tests/utiltests/Android.bp
@@ -54,21 +54,20 @@ android_test {
android_ravenwood_test {
name: "FrameworksUtilTestsRavenwood",
+ libs: [
+ "android.test.mock",
+ ],
static_libs: [
"androidx.annotation_annotation",
"androidx.test.rules",
"mockito_ravenwood",
+ "frameworks-base-testutils",
+ "servicestests-utils",
],
srcs: [
- "src/android/util/AtomicFileTest.java",
- "src/android/util/DataUnitTest.java",
- "src/android/util/EventLogTest.java",
- "src/android/util/IndentingPrintWriterTest.java",
- "src/android/util/IntArrayTest.java",
- "src/android/util/LocalLogTest.java",
- "src/android/util/LongArrayTest.java",
- "src/android/util/SlogTest.java",
- "src/android/util/TimeUtilsTest.java",
+ "src/android/util/IRemoteMemoryIntArray.aidl",
+ "src/android/util/**/*.java",
+ "src/com/android/internal/util/**/*.java",
],
auto_gen_config: true,
}
diff --git a/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java b/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java
index 1966e122ee5b..51013e4b4f00 100644
--- a/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java
+++ b/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java
@@ -23,11 +23,14 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import android.os.Parcel;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4;
import libcore.io.IoUtils;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -35,13 +38,17 @@ import java.lang.reflect.Field;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = MemoryIntArray.class)
public class MemoryIntArrayTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
static {
- System.loadLibrary("cutils");
- System.loadLibrary("memoryintarraytest");
+ if (!RavenwoodRule.isUnderRavenwood()) {
+ System.loadLibrary("cutils");
+ System.loadLibrary("memoryintarraytest");
+ }
}
@Test
diff --git a/core/tests/utiltests/src/android/util/MetadataReaderTest.java b/core/tests/utiltests/src/android/util/MetadataReaderTest.java
index a828edbac6ab..14feed8b89a1 100644
--- a/core/tests/utiltests/src/android/util/MetadataReaderTest.java
+++ b/core/tests/utiltests/src/android/util/MetadataReaderTest.java
@@ -16,37 +16,47 @@
package android.util;
+import static org.junit.Assert.assertEquals;
+
import android.media.ExifInterface;
import android.os.Bundle;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.provider.DocumentsContract;
import android.provider.MetadataReader;
-import libcore.io.IoUtils;
+import androidx.test.runner.AndroidJUnit4;
-import junit.framework.TestCase;
+import libcore.io.IoUtils;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-public class MetadataReaderTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = MetadataReader.class)
+public class MetadataReaderTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
private InputStream mInputStream;
private Bundle mData;
@Before
- protected void setUp() throws Exception {
+ public void setUp() throws Exception {
mInputStream = getClass().getClassLoader().getResourceAsStream("res/drawable/image.jpg");
mData = new Bundle();
}
@After
- protected void tearDown() throws Exception {
+ public void tearDown() throws Exception {
IoUtils.closeQuietly(mInputStream);
}
diff --git a/core/tests/utiltests/src/android/util/SystemConfigFileCommitEventLoggerTest.java b/core/tests/utiltests/src/android/util/SystemConfigFileCommitEventLoggerTest.java
index 5f6c20141c37..3bb79ec91d09 100644
--- a/core/tests/utiltests/src/android/util/SystemConfigFileCommitEventLoggerTest.java
+++ b/core/tests/utiltests/src/android/util/SystemConfigFileCommitEventLoggerTest.java
@@ -21,12 +21,22 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import android.os.SystemClock;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.Mockito;
-
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = SystemConfigFileCommitEventLogger.class)
public class SystemConfigFileCommitEventLoggerTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
@Test
public void testSimple() throws Exception {
var logger = spy(new SystemConfigFileCommitEventLogger("name"));
diff --git a/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java
index 72f3af640b67..0c5e9664bbde 100644
--- a/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/ArrayUtilsTest.java
@@ -17,19 +17,28 @@
package com.android.internal.util;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import junit.framework.TestCase;
-
/**
* Tests for {@link ArrayUtils}
*/
-public class ArrayUtilsTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class ArrayUtilsTest {
+ @Test
public void testContains() throws Exception {
final Object A = new Object();
final Object B = new Object();
@@ -46,6 +55,7 @@ public class ArrayUtilsTest extends TestCase {
assertFalse(ArrayUtils.contains(new Object[] { null }, A));
}
+ @Test
public void testIndexOf() throws Exception {
final Object A = new Object();
final Object B = new Object();
@@ -66,6 +76,7 @@ public class ArrayUtilsTest extends TestCase {
assertEquals(2, ArrayUtils.indexOf(new Object[] { A, null, B }, B));
}
+ @Test
public void testContainsAll() throws Exception {
final Object A = new Object();
final Object B = new Object();
@@ -86,6 +97,7 @@ public class ArrayUtilsTest extends TestCase {
assertFalse(ArrayUtils.containsAll(new Object[] { A }, new Object[] { null }));
}
+ @Test
public void testContainsInt() throws Exception {
assertTrue(ArrayUtils.contains(new int[] { 1, 2, 3 }, 1));
assertTrue(ArrayUtils.contains(new int[] { 1, 2, 3 }, 2));
@@ -96,6 +108,7 @@ public class ArrayUtilsTest extends TestCase {
assertFalse(ArrayUtils.contains(new int[] { }, 2));
}
+ @Test
public void testAppendInt() throws Exception {
assertArrayEquals(new int[] { 1 },
ArrayUtils.appendInt(null, 1));
@@ -107,6 +120,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.appendInt(new int[] { 1, 2 }, 1));
}
+ @Test
public void testRemoveInt() throws Exception {
assertNull(ArrayUtils.removeInt(null, 1));
assertArrayEquals(new int[] { },
@@ -123,6 +137,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.removeInt(new int[] { 1, 2, 3, 1 }, 1));
}
+ @Test
public void testContainsLong() throws Exception {
assertTrue(ArrayUtils.contains(new long[] { 1, 2, 3 }, 1));
assertTrue(ArrayUtils.contains(new long[] { 1, 2, 3 }, 2));
@@ -133,6 +148,7 @@ public class ArrayUtilsTest extends TestCase {
assertFalse(ArrayUtils.contains(new long[] { }, 2));
}
+ @Test
public void testAppendLong() throws Exception {
assertArrayEquals(new long[] { 1 },
ArrayUtils.appendLong(null, 1));
@@ -144,6 +160,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.appendLong(new long[] { 1, 2 }, 1));
}
+ @Test
public void testRemoveLong() throws Exception {
assertNull(ArrayUtils.removeLong(null, 1));
assertArrayEquals(new long[] { },
@@ -160,6 +177,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.removeLong(new long[] { 1, 2, 3, 1 }, 1));
}
+ @Test
public void testConcat_zeroObjectArrays() {
// empty varargs array
assertArrayEquals(new String[] {}, ArrayUtils.concat(String.class));
@@ -167,16 +185,19 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(new String[] {}, ArrayUtils.concat(String.class, (String[][]) null));
}
+ @Test
public void testConcat_oneObjectArray() {
assertArrayEquals(new String[] { "1", "2" },
ArrayUtils.concat(String.class, new String[] { "1", "2" }));
}
+ @Test
public void testConcat_oneEmptyObjectArray() {
assertArrayEquals(new String[] {}, ArrayUtils.concat(String.class, (String[]) null));
assertArrayEquals(new String[] {}, ArrayUtils.concat(String.class, new String[] {}));
}
+ @Test
public void testConcat_twoObjectArrays() {
assertArrayEquals(new Long[] { 1L },
ArrayUtils.concat(Long.class, new Long[] { 1L }, new Long[] {}));
@@ -188,6 +209,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.concat(Long.class, new Long[] { 1L, 2L }, new Long[] { 3L, 4L }));
}
+ @Test
public void testConcat_twoEmptyObjectArrays() {
assertArrayEquals(new Long[] {}, ArrayUtils.concat(Long.class, null, null));
assertArrayEquals(new Long[] {}, ArrayUtils.concat(Long.class, new Long[] {}, null));
@@ -196,6 +218,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.concat(Long.class, new Long[] {}, new Long[] {}));
}
+ @Test
public void testConcat_threeObjectArrays() {
String[] array1 = { "1", "2" };
String[] array2 = { "3", "4" };
@@ -205,6 +228,7 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(expectation, ArrayUtils.concat(String.class, array1, array2, array3));
}
+ @Test
public void testConcat_threeObjectArraysWithNull() {
String[] array1 = { "1", "2" };
String[] array2 = null;
@@ -214,6 +238,7 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(expectation, ArrayUtils.concat(String.class, array1, array2, array3));
}
+ @Test
public void testConcat_zeroByteArrays() {
// empty varargs array
assertArrayEquals(new byte[] {}, ArrayUtils.concat());
@@ -221,15 +246,18 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(new byte[] {}, ArrayUtils.concat((byte[][]) null));
}
+ @Test
public void testConcat_oneByteArray() {
assertArrayEquals(new byte[] { 1, 2 }, ArrayUtils.concat(new byte[] { 1, 2 }));
}
+ @Test
public void testConcat_oneEmptyByteArray() {
assertArrayEquals(new byte[] {}, ArrayUtils.concat((byte[]) null));
assertArrayEquals(new byte[] {}, ArrayUtils.concat(new byte[] {}));
}
+ @Test
public void testConcat_twoByteArrays() {
assertArrayEquals(new byte[] { 1 }, ArrayUtils.concat(new byte[] { 1 }, new byte[] {}));
assertArrayEquals(new byte[] { 1 }, ArrayUtils.concat(new byte[] {}, new byte[] { 1 }));
@@ -239,6 +267,7 @@ public class ArrayUtilsTest extends TestCase {
ArrayUtils.concat(new byte[] { 1, 2 }, new byte[] { 3, 4 }));
}
+ @Test
public void testConcat_twoEmptyByteArrays() {
assertArrayEquals(new byte[] {}, ArrayUtils.concat((byte[]) null, null));
assertArrayEquals(new byte[] {}, ArrayUtils.concat(new byte[] {}, null));
@@ -246,6 +275,7 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(new byte[] {}, ArrayUtils.concat(new byte[] {}, new byte[] {}));
}
+ @Test
public void testConcat_threeByteArrays() {
byte[] array1 = { 1, 2 };
byte[] array2 = { 3, 4 };
@@ -255,6 +285,7 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(expectation, ArrayUtils.concat(array1, array2, array3));
}
+ @Test
public void testConcat_threeByteArraysWithNull() {
byte[] array1 = { 1, 2 };
byte[] array2 = null;
@@ -264,6 +295,7 @@ public class ArrayUtilsTest extends TestCase {
assertArrayEquals(expectation, ArrayUtils.concat(array1, array2, array3));
}
+ @Test
@SmallTest
public void testUnstableRemoveIf() throws Exception {
java.util.function.Predicate<Object> isNull = new java.util.function.Predicate<Object>() {
@@ -357,31 +389,37 @@ public class ArrayUtilsTest extends TestCase {
assertEquals(0, collection.size());
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_passesWhenRangeInsideArray() {
ArrayUtils.throwsIfOutOfBounds(10, 2, 6);
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_passesWhenRangeIsWholeArray() {
ArrayUtils.throwsIfOutOfBounds(10, 0, 10);
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_passesWhenEmptyRangeAtStart() {
ArrayUtils.throwsIfOutOfBounds(10, 0, 0);
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_passesWhenEmptyRangeAtEnd() {
ArrayUtils.throwsIfOutOfBounds(10, 10, 0);
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_passesWhenEmptyArray() {
ArrayUtils.throwsIfOutOfBounds(0, 0, 0);
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_failsWhenRangeStartNegative() {
try {
@@ -392,6 +430,7 @@ public class ArrayUtilsTest extends TestCase {
}
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_failsWhenCountNegative() {
try {
@@ -402,6 +441,7 @@ public class ArrayUtilsTest extends TestCase {
}
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_failsWhenRangeStartTooHigh() {
try {
@@ -412,6 +452,7 @@ public class ArrayUtilsTest extends TestCase {
}
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_failsWhenRangeEndTooHigh() {
try {
@@ -422,6 +463,7 @@ public class ArrayUtilsTest extends TestCase {
}
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_failsWhenLengthNegative() {
try {
@@ -432,6 +474,7 @@ public class ArrayUtilsTest extends TestCase {
}
}
+ @Test
@SmallTest
public void testThrowsIfOutOfBounds_failsWhenOverflowRangeEndTooHigh() {
try {
diff --git a/core/tests/utiltests/src/com/android/internal/util/BitwiseStreamsTest.java b/core/tests/utiltests/src/com/android/internal/util/BitwiseStreamsTest.java
index 306f58fcce2e..092d6999e85e 100644
--- a/core/tests/utiltests/src/com/android/internal/util/BitwiseStreamsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/BitwiseStreamsTest.java
@@ -16,20 +16,23 @@
package com.android.internal.util;
-import com.android.internal.util.BitwiseInputStream;
-import com.android.internal.util.BitwiseOutputStream;
-import com.android.internal.util.HexDump;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+import static org.junit.Assert.assertEquals;
import android.util.Log;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.util.Random;
-public class BitwiseStreamsTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class BitwiseStreamsTest {
private final static String LOG_TAG = "BitwiseStreamsTest";
+ @Test
@SmallTest
public void testOne() throws Exception {
int offset = 3;
@@ -45,6 +48,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
+ @Test
@SmallTest
public void testTwo() throws Exception {
int offset = 3;
@@ -59,6 +63,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
+ @Test
@SmallTest
public void testThree() throws Exception {
int offset = 4;
@@ -73,6 +78,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
+ @Test
@SmallTest
public void testFour() throws Exception {
int offset = 7;
@@ -90,6 +96,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup));
}
+ @Test
@SmallTest
public void testFive() throws Exception {
Random random = new Random();
@@ -111,6 +118,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
}
}
+ @Test
@SmallTest
public void testSix() throws Exception {
int num_runs = 10;
@@ -134,6 +142,7 @@ public class BitwiseStreamsTest extends AndroidTestCase {
Log.d(LOG_TAG, "repeated encode-decode took " + (end - start) + " ms");
}
+ @Test
@SmallTest
public void testExpandArray() throws Exception {
Random random = new Random();
diff --git a/core/tests/utiltests/src/com/android/internal/util/CallbackRegistryTest.java b/core/tests/utiltests/src/com/android/internal/util/CallbackRegistryTest.java
index 1581abb5a9c6..9a1402e04011 100644
--- a/core/tests/utiltests/src/com/android/internal/util/CallbackRegistryTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/CallbackRegistryTest.java
@@ -15,19 +15,21 @@
*/
package com.android.internal.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Objects;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-public class CallbackRegistryTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class CallbackRegistryTest {
final Integer callback1 = 1;
final Integer callback2 = 2;
@@ -50,6 +52,7 @@ public class CallbackRegistryTest extends TestCase {
deepNotifyCount[callback]++;
}
+ @Test
public void testAddListener() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -89,6 +92,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(otherListener, callbacks.get(0));
}
+ @Test
public void testSimpleNotify() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -108,6 +112,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(1, notify2);
}
+ @Test
public void testRemoveWhileNotifying() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -135,6 +140,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(callback3, callbacks.get(0));
}
+ @Test
public void testDeepRemoveWhileNotifying() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -159,6 +165,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(0, callbacks.size());
}
+ @Test
public void testAddRemovedListener() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
@@ -191,6 +198,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(1, notify3);
}
+ @Test
public void testVeryDeepRemoveWhileNotifying() {
final Integer[] callbacks = new Integer[deepNotifyCount.length];
for (int i = 0; i < callbacks.length; i++) {
@@ -221,6 +229,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(0, callbackList.size());
}
+ @Test
public void testClear() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -245,6 +254,7 @@ public class CallbackRegistryTest extends TestCase {
}
}
+ @Test
public void testNestedClear() {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -268,6 +278,7 @@ public class CallbackRegistryTest extends TestCase {
assertEquals(0, callbackList.size());
}
+ @Test
public void testIsEmpty() throws Exception {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
@@ -284,6 +295,7 @@ public class CallbackRegistryTest extends TestCase {
assertFalse(registry.isEmpty());
}
+ @Test
public void testClone() throws Exception {
CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
diff --git a/core/tests/utiltests/src/com/android/internal/util/CharSequencesTest.java b/core/tests/utiltests/src/com/android/internal/util/CharSequencesTest.java
index 469a4ccd05e4..988854038e53 100644
--- a/core/tests/utiltests/src/com/android/internal/util/CharSequencesTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/CharSequencesTest.java
@@ -18,12 +18,26 @@ package com.android.internal.util;
import static com.android.internal.util.CharSequences.forAsciiBytes;
-import android.test.suitebuilder.annotation.SmallTest;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
-import junit.framework.TestCase;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
-public class CharSequencesTest extends TestCase {
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = CharSequences.class)
+public class CharSequencesTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
+ @Test
@SmallTest
public void testCharSequences() {
String s = "Hello Bob";
diff --git a/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java b/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java
index 3cef33621a01..7723d589a723 100644
--- a/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java
@@ -16,13 +16,23 @@
package com.android.internal.util;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.SmallTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+import android.provider.DeviceConfig;
import android.util.Log;
import android.util.Xml;
-import junit.framework.TestCase;
+import androidx.test.filters.LargeTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
@@ -34,7 +44,9 @@ import java.nio.charset.StandardCharsets;
* Tests for {@link FastXmlSerializer}
*/
@SmallTest
-public class FastXmlSerializerTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = Xml.class)
+public class FastXmlSerializerTest {
private static final String TAG = "FastXmlSerializerTest";
private static final boolean ENABLE_DUMP = false; // DO NOT SUBMIT WITH TRUE.
@@ -42,6 +54,10 @@ public class FastXmlSerializerTest extends TestCase {
private static final String ROOT_TAG = "root";
private static final String ATTR = "attr";
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
+ @Test
public void testEmptyText() throws Exception {
final ByteArrayOutputStream stream = new ByteArrayOutputStream();
@@ -128,6 +144,7 @@ public class FastXmlSerializerTest extends TestCase {
return ok;
}
+ @Test
@LargeTest
public void testAllCharacters() throws Exception {
boolean ok = true;
diff --git a/core/tests/utiltests/src/com/android/internal/util/FileRotatorTest.java b/core/tests/utiltests/src/com/android/internal/util/FileRotatorTest.java
index 73e47e1635b4..47c17959d28d 100644
--- a/core/tests/utiltests/src/com/android/internal/util/FileRotatorTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/FileRotatorTest.java
@@ -23,16 +23,23 @@ import static android.text.format.DateUtils.SECOND_IN_MILLIS;
import static android.text.format.DateUtils.WEEK_IN_MILLIS;
import static android.text.format.DateUtils.YEAR_IN_MILLIS;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.Suppress;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import android.util.Log;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.util.FileRotator.Reader;
import com.android.internal.util.FileRotator.Writer;
-import com.android.internal.util.test.FsUtil;
import com.google.android.collect.Lists;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
@@ -40,6 +47,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
@@ -47,7 +55,8 @@ import java.util.Random;
/**
* Tests for {@link FileRotator}.
*/
-public class FileRotatorTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class FileRotatorTest {
private static final String TAG = "FileRotatorTest";
private File mBasePath;
@@ -59,14 +68,12 @@ public class FileRotatorTest extends AndroidTestCase {
// TODO: test throwing rolls back correctly
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- mBasePath = getContext().getFilesDir();
- FsUtil.deleteContents(mBasePath);
+ @Before
+ public void setUp() throws Exception {
+ mBasePath = Files.createTempDirectory(TAG).toFile();
}
+ @Test
public void testEmpty() throws Exception {
final FileRotator rotate1 = new FileRotator(
mBasePath, PREFIX, DAY_IN_MILLIS, WEEK_IN_MILLIS);
@@ -85,6 +92,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate2);
}
+ @Test
public void testCombine() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, DAY_IN_MILLIS, WEEK_IN_MILLIS);
@@ -106,6 +114,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate, "bar");
}
+ @Test
public void testRotate() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, DAY_IN_MILLIS, WEEK_IN_MILLIS);
@@ -138,6 +147,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate, "bar", "baz");
}
+ @Test
public void testDelete() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, MINUTE_IN_MILLIS, DAY_IN_MILLIS);
@@ -168,6 +178,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate);
}
+ @Test
public void testThrowRestoresBackup() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, MINUTE_IN_MILLIS, DAY_IN_MILLIS);
@@ -201,6 +212,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate, "foo");
}
+ @Test
public void testOtherFilesAndMalformed() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, SECOND_IN_MILLIS, SECOND_IN_MILLIS);
@@ -229,6 +241,7 @@ public class FileRotatorTest extends AndroidTestCase {
private static final String BLUE = "blue";
private static final String YELLOW = "yellow";
+ @Test
public void testQueryMatch() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, HOUR_IN_MILLIS, YEAR_IN_MILLIS);
@@ -277,6 +290,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadMatching(rotate, Long.MIN_VALUE, TEST_TIME - DAY_IN_MILLIS);
}
+ @Test
public void testClockRollingBackwards() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, DAY_IN_MILLIS, YEAR_IN_MILLIS);
@@ -325,7 +339,8 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate, "meow", "yay");
}
- @Suppress
+ @Test
+ @Ignore
public void testFuzz() throws Exception {
final FileRotator rotate = new FileRotator(
mBasePath, PREFIX, HOUR_IN_MILLIS, DAY_IN_MILLIS);
@@ -352,6 +367,7 @@ public class FileRotatorTest extends AndroidTestCase {
Log.d(TAG, Arrays.toString(mBasePath.list()));
}
+ @Test
public void testRecoverAtomic() throws Exception {
write("rotator.1024-2048", "foo");
write("rotator.1024-2048.backup", "bar");
@@ -366,6 +382,7 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate, "bar");
}
+ @Test
public void testReadSorted() throws Exception {
write("rotator.1024-2048", "2");
write("rotator.2048-4096", "3");
@@ -376,11 +393,11 @@ public class FileRotatorTest extends AndroidTestCase {
assertReadAll(rotate, "1", "2", "3");
}
+ @Test
public void testFileSystemInaccessible() throws Exception {
- File inaccessibleDir = null;
- String dirPath = getContext().getFilesDir() + File.separator + "inaccessible";
- inaccessibleDir = new File(dirPath);
- final FileRotator rotate = new FileRotator(inaccessibleDir, PREFIX, SECOND_IN_MILLIS, SECOND_IN_MILLIS);
+ File inaccessibleDir = mBasePath.toPath().resolve("does_not_exist").toFile();
+ final FileRotator rotate = new FileRotator(inaccessibleDir, PREFIX,
+ SECOND_IN_MILLIS, SECOND_IN_MILLIS);
// rotate should not throw on dir not mkdir-ed (or otherwise inaccessible)
rotate.maybeRotate(TEST_TIME);
diff --git a/core/tests/utiltests/src/com/android/internal/util/HeavyHitterSketchTest.java b/core/tests/utiltests/src/com/android/internal/util/HeavyHitterSketchTest.java
index f2285a12e30a..74184cacc91c 100644
--- a/core/tests/utiltests/src/com/android/internal/util/HeavyHitterSketchTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/HeavyHitterSketchTest.java
@@ -16,10 +16,17 @@
package com.android.internal.util;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import android.util.ArraySet;
import android.util.Pair;
-import junit.framework.TestCase;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Comparator;
@@ -32,7 +39,8 @@ import java.util.stream.Collectors;
/**
* Tests for {@link HeavyHitterSketch}.
*/
-public final class HeavyHitterSketchTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public final class HeavyHitterSketchTest {
private static final float EPSILON = 0.00001f;
@@ -163,6 +171,7 @@ public final class HeavyHitterSketchTest extends TestCase {
return input;
}
+ @Test
public void testPositive() throws Exception {
// Simple case
verify(new int[]{2, 9, 9, 9, 7, 6, 4, 9, 9, 9, 3, 9}, 2, new int[]{9},
@@ -179,6 +188,7 @@ public final class HeavyHitterSketchTest extends TestCase {
new float[]{0.32f, 0.24f, 0.16f, 0.08f});
}
+ @Test
public void testNegative() throws Exception {
// Simple case
verifyNotExpected(new int[]{2, 9, 9, 9, 7, 6, 4, 9, 9, 9, 3, 9}, 2, new int[]{0, 1, 2});
@@ -193,6 +203,7 @@ public final class HeavyHitterSketchTest extends TestCase {
verifyNotExpected(input, 12, new int[]{0, 1, 2, 1000, 1005});
}
+ @Test
public void testFalsePositive() throws Exception {
// Simple case
verifyNotExpected(new int[]{2, 9, 2, 2, 7, 6, 4, 9, 9, 9, 3, 9}, 2, new int[]{9});
diff --git a/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java
index 35c56818a108..7203b8c6a8c8 100644
--- a/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/InlinePresentationStyleUtilsTest.java
@@ -22,20 +22,28 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import android.graphics.Color;
import android.os.Binder;
import android.os.Bundle;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.internal.widget.InlinePresentationStyleUtils;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
@SmallTest
+@IgnoreUnderRavenwood(blockedBy = InlinePresentationStyleUtils.class)
public class InlinePresentationStyleUtilsTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
@Test
public void testBundleEquals_empty() {
Bundle bundle1 = new Bundle();
diff --git a/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java
index 0b7019995acb..0df5b0a4093e 100644
--- a/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java
@@ -43,6 +43,8 @@ import android.content.pm.UserInfo;
import android.os.Looper;
import android.os.RemoteException;
import android.os.UserManager;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.provider.Settings;
import android.test.mock.MockContentResolver;
@@ -58,6 +60,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.google.android.collect.Lists;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -68,7 +71,10 @@ import java.util.List;
@RunWith(AndroidJUnit4.class)
@SmallTest
+@IgnoreUnderRavenwood(blockedBy = LockPatternUtils.class)
public class LockPatternUtilsTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
private static final int DEMO_USER_ID = 5;
diff --git a/core/tests/utiltests/src/com/android/internal/util/MessageUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/MessageUtilsTest.java
index 32b969a8d1b5..36f238e7429c 100644
--- a/core/tests/utiltests/src/com/android/internal/util/MessageUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/MessageUtilsTest.java
@@ -19,10 +19,13 @@ package com.android.internal.util;
import static org.junit.Assert.*;
import com.android.internal.util.MessageUtils;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
import android.util.SparseArray;
import org.junit.Test;
+import org.junit.runner.RunWith;
class A {
@@ -48,6 +51,7 @@ class B {
* Unit tests for {@link com.android.util.MessageUtils}.
*/
@SmallTest
+@RunWith(AndroidJUnit4.class)
public class MessageUtilsTest {
private static final Class[] CLASSES = { A.class, B.class };
diff --git a/core/tests/utiltests/src/com/android/internal/util/MimeIconUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/MimeIconUtilsTest.java
index 4412c2c6949c..6c3479722526 100644
--- a/core/tests/utiltests/src/com/android/internal/util/MimeIconUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/MimeIconUtilsTest.java
@@ -16,12 +16,27 @@
package com.android.internal.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
/**
* Tests for {@link MimeIconUtils}.
*/
-public class MimeIconUtilsTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = MimeIconUtils.class)
+public class MimeIconUtilsTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
+ @Test
public void testSimple() throws Exception {
assertEquals("PNG image",
MimeIconUtils.getTypeInfo("image/png").getLabel());
diff --git a/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java
index 443183eeba4d..4eaacfffd433 100644
--- a/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java
@@ -15,11 +15,18 @@
*/
package com.android.internal.util;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
@SmallTest
-public class ObjectUtilsTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class ObjectUtilsTest {
+ @Test
public void testCompare() {
assertEquals(0, ObjectUtils.compare(null, null));
assertEquals(1, ObjectUtils.compare("a", null));
diff --git a/core/tests/utiltests/src/com/android/internal/util/ObservableServiceConnectionTest.java b/core/tests/utiltests/src/com/android/internal/util/ObservableServiceConnectionTest.java
index d124ad9ddfb0..c852e9f17bc0 100644
--- a/core/tests/utiltests/src/com/android/internal/util/ObservableServiceConnectionTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/ObservableServiceConnectionTest.java
@@ -29,14 +29,19 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.ObservableServiceConnection.ServiceTransformer;
import org.junit.After;
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;
@@ -46,7 +51,12 @@ import java.util.Queue;
import java.util.concurrent.Executor;
@SmallTest
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = ObservableServiceConnection.class)
public class ObservableServiceConnectionTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
private static final ComponentName COMPONENT_NAME =
new ComponentName("test.package", "component");
diff --git a/core/tests/utiltests/src/com/android/internal/util/PersistentServiceConnectionTest.java b/core/tests/utiltests/src/com/android/internal/util/PersistentServiceConnectionTest.java
index fee46545ac62..096f303247ff 100644
--- a/core/tests/utiltests/src/com/android/internal/util/PersistentServiceConnectionTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/PersistentServiceConnectionTest.java
@@ -30,6 +30,10 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.runner.AndroidJUnit4;
import com.android.internal.util.ObservableServiceConnection.ServiceTransformer;
import com.android.server.testutils.OffsettableClock;
@@ -37,7 +41,9 @@ import com.android.server.testutils.TestHandler;
import org.junit.After;
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;
@@ -45,7 +51,12 @@ import java.util.ArrayDeque;
import java.util.Queue;
import java.util.concurrent.Executor;
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = PersistentServiceConnection.class)
public class PersistentServiceConnectionTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
private static final ComponentName COMPONENT_NAME =
new ComponentName("test.package", "component");
private static final int MAX_RETRIES = 2;
diff --git a/core/tests/utiltests/src/com/android/internal/util/ProcFileReaderTest.java b/core/tests/utiltests/src/com/android/internal/util/ProcFileReaderTest.java
index b93276053caf..4c00c1667e3c 100644
--- a/core/tests/utiltests/src/com/android/internal/util/ProcFileReaderTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/ProcFileReaderTest.java
@@ -16,7 +16,15 @@
package com.android.internal.util;
-import android.test.AndroidTestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.ByteArrayInputStream;
import java.io.File;
@@ -28,8 +36,10 @@ import java.nio.file.Files;
/**
* Tests for {@link ProcFileReader}.
*/
-public class ProcFileReaderTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class ProcFileReaderTest {
+ @Test
public void testEmpty() throws Exception {
final ProcFileReader reader = buildReader("");
@@ -43,6 +53,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testSingleString() throws Exception {
final ProcFileReader reader = buildReader("a\nb\nc\n");
@@ -59,6 +70,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testMixedNumbersSkip() throws Exception {
final ProcFileReader reader = buildReader("1 2 3\n4 abc_def 5 6 7 8 9\n10\n");
@@ -79,6 +91,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testBufferSize() throws Exception {
// read numbers using very small buffer size, exercising fillBuf()
final ProcFileReader reader = buildReader("1 21 3 41 5 61 7 81 9 10\n", 3);
@@ -97,6 +110,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testBlankLines() throws Exception {
final ProcFileReader reader = buildReader("1\n\n2\n\n3\n");
@@ -117,6 +131,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testMinMax() throws Exception {
final ProcFileReader reader = buildReader(
"1 -1024 9223372036854775807 -9223372036854775808\n");
@@ -129,6 +144,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testDelimiterNeverFound() throws Exception {
final ProcFileReader reader = buildReader("teststringwithoutdelimiters");
@@ -141,6 +157,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
}
}
+ @Test
public void testLargerThanBuffer() throws Exception {
// try finishing line larger than buffer
final ProcFileReader reader = buildReader("1 teststringlongerthanbuffer\n", 4);
@@ -155,6 +172,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
}
}
+ @Test
public void testOptionalLongs() throws Exception {
final ProcFileReader reader = buildReader("123 456\n789\n");
@@ -169,6 +187,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertEquals(-1L, reader.nextOptionalLong(-1L));
}
+ @Test
public void testInvalidLongs() throws Exception {
final ProcFileReader reader = buildReader("12: 34\n56 78@#\n");
@@ -183,6 +202,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testConsecutiveDelimiters() throws Exception {
final ProcFileReader reader = buildReader("1 2 3 4 5\n");
@@ -195,6 +215,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testIgnore() throws Exception {
final ProcFileReader reader = buildReader("a b c\n");
@@ -209,6 +230,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
+ @Test
public void testRewind() throws Exception {
final ProcFileReader reader = buildReader("abc\n");
@@ -224,7 +246,7 @@ public class ProcFileReaderTest extends AndroidTestCase {
assertFalse(reader.hasMoreData());
}
-
+ @Test
public void testRewindFileInputStream() throws Exception {
File tempFile = File.createTempFile("procfile", null, null);
Files.write(tempFile.toPath(), "abc\n".getBytes(StandardCharsets.US_ASCII));
diff --git a/core/tests/utiltests/src/com/android/internal/util/QuickSelectTest.java b/core/tests/utiltests/src/com/android/internal/util/QuickSelectTest.java
index 1b9d2ef58c10..1eb5e3ab7d6c 100644
--- a/core/tests/utiltests/src/com/android/internal/util/QuickSelectTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/QuickSelectTest.java
@@ -16,7 +16,12 @@
package com.android.internal.util;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.List;
@@ -24,8 +29,10 @@ import java.util.List;
/**
* Tests for {@link QuickSelect}.
*/
-public final class QuickSelectTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class QuickSelectTest {
+ @Test
public void testQuickSelect() throws Exception {
test((List<Integer>) null, 0, null);
test(Arrays.asList(), -1, null);
diff --git a/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java b/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java
index f67fd516fcf6..6523ed7fabb7 100644
--- a/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java
@@ -16,12 +16,21 @@
package com.android.internal.util;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
@SmallTest
-public final class StringPoolTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public final class StringPoolTest {
+ @Test
public void testStringPool() {
StringPool stringPool = new StringPool();
String bcd = stringPool.get(new char[] { 'a', 'b', 'c', 'd', 'e' }, 1, 3);
@@ -29,6 +38,7 @@ public final class StringPoolTest extends AndroidTestCase {
assertSame(bcd, stringPool.get(new char[] { 'a', 'b', 'c', 'd', 'e' }, 1, 3));
}
+ @Test
public void testHashCollision() {
StringPool stringPool = new StringPool();
char[] a = { (char) 1, (char) 0 };
diff --git a/core/tests/utiltests/src/com/android/internal/util/WakeupMessageTest.java b/core/tests/utiltests/src/com/android/internal/util/WakeupMessageTest.java
index 734ebef0007e..b0db8a1da3a8 100644
--- a/core/tests/utiltests/src/com/android/internal/util/WakeupMessageTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/WakeupMessageTest.java
@@ -24,11 +24,17 @@ import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
import org.junit.After;
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;
@@ -40,6 +46,8 @@ import org.mockito.stubbing.Answer;
* Unit tests for {@link com.android.internal.util.WakeupMessage}.
*/
@SmallTest
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = WakeupMessage.class)
public class WakeupMessageTest {
private static final String TEST_CMD_NAME = "TEST cmd Name";
private static final int TEST_CMD = 18;
@@ -47,11 +55,16 @@ public class WakeupMessageTest {
private static final int TEST_ARG2 = 182;
private static final Object TEST_OBJ = "hello";
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
+ .setProvideMainThread(true)
+ .build();
+
@Mock Context mContext;
@Mock AlarmManager mAlarmManager;
WakeupMessage mMessage;
// Make a spy so that we can verify calls to it
- @Spy MessageCapturingHandler mHandler = new MessageCapturingHandler();
+ @Spy MessageCapturingHandler mHandler;
ArgumentCaptor<AlarmManager.OnAlarmListener> mListenerCaptor =
ArgumentCaptor.forClass(AlarmManager.OnAlarmListener.class);
@@ -85,6 +98,8 @@ public class WakeupMessageTest {
*/
@Before
public void setUp() {
+ mHandler = new MessageCapturingHandler();
+
MockitoAnnotations.initMocks(this);
when(mContext.getSystemService(Context.ALARM_SERVICE)).thenReturn(mAlarmManager);
diff --git a/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java
index 0484068bf900..24eb213751bc 100644
--- a/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java
@@ -17,13 +17,17 @@
package com.android.internal.util;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
import android.util.Xml;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
-import junit.framework.TestCase;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -32,9 +36,11 @@ import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
-public class XmlUtilsTest extends TestCase {
+@RunWith(AndroidJUnit4.class)
+public class XmlUtilsTest {
// https://code.google.com/p/android/issues/detail?id=63717
+ @Test
public void testMapWithNullKeys() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
Map<String, Object> map = new HashMap<String, Object>();
@@ -48,6 +54,7 @@ public class XmlUtilsTest extends TestCase {
assertEquals("fooValue", deserialized.get("foo"));
}
+ @Test
public void testreadWriteXmlByteArrayValue() throws Exception {
byte[] testByteArray = {0x1 , 0xa, 0xb, 0x9, 0x34, (byte) 0xaa, (byte) 0xba, (byte) 0x99};
diff --git a/core/tests/utiltests/src/com/android/internal/util/test/FakeSettingsProviderTest.java b/core/tests/utiltests/src/com/android/internal/util/test/FakeSettingsProviderTest.java
index f2be109c8602..502d6b6d7270 100644
--- a/core/tests/utiltests/src/com/android/internal/util/test/FakeSettingsProviderTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/test/FakeSettingsProviderTest.java
@@ -16,33 +16,41 @@
package com.android.internal.util.test;
-import android.content.ContentResolver;
-import android.database.ContentObserver;
-import android.net.Uri;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.content.ContentProvider;
+import android.platform.test.annotations.IgnoreUnderRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
import android.provider.Settings;
-import android.test.AndroidTestCase;
import android.test.mock.MockContentResolver;
-import android.test.mock.MockContext;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
/**
* Unit tests for FakeSettingsProvider.
*/
-public class FakeSettingsProviderTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+@IgnoreUnderRavenwood(blockedBy = ContentProvider.class)
+public class FakeSettingsProviderTest {
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
private MockContentResolver mCr;
- @Override
+ @Before
public void setUp() throws Exception {
mCr = new MockContentResolver();
mCr.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
}
+ @Test
@SmallTest
public void testBasicOperation() throws Exception {
String settingName = Settings.System.SCREEN_BRIGHTNESS;
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 3cf28c919f07..69a6e6d998a4 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -535,6 +535,8 @@ applications that come with the platform
<!-- Permission required for CTS test IntentRedirectionTest -->
<permission name="android.permission.QUERY_CLONED_APPS"/>
<permission name="android.permission.GET_BINDING_UID_IMPORTANCE"/>
+ <!-- Permission required for CTS test NotificationManagerZenTest -->
+ <permission name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS" />
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
diff --git a/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_title.xml b/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_title.xml
deleted file mode 100644
index ef3006042261..000000000000
--- a/libs/WindowManager/Shell/res/drawable/desktop_mode_decor_title.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ 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.
- -->
-<shape android:shape="rectangle"
- android:tintMode="multiply"
- android:tint="@color/decor_title_color"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <solid android:color="@android:color/white" />
-</shape>
diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml
index c525a297b2e0..85bf2c1e4dca 100644
--- a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml
+++ b/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml
@@ -21,8 +21,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
- android:orientation="horizontal"
- android:background="@drawable/desktop_mode_decor_title">
+ android:orientation="horizontal">
<LinearLayout
android:id="@+id/open_menu_button"
@@ -45,7 +44,6 @@
android:layout_width="0dp"
android:layout_height="20dp"
android:minWidth="80dp"
- android:textColor="@color/desktop_mode_caption_app_name_dark"
android:textAppearance="@android:style/TextAppearance.Material.Title"
android:textSize="14sp"
android:textFontWeight="500"
@@ -62,7 +60,6 @@
android:layout_height="16dp"
android:contentDescription="@string/expand_menu_text"
android:src="@drawable/ic_baseline_expand_more_24"
- android:tint="@color/desktop_mode_caption_expand_button_dark"
android:background="@null"
android:scaleType="fitCenter"
android:clickable="false"
@@ -87,8 +84,7 @@
android:src="@drawable/decor_desktop_mode_maximize_button_dark"
android:scaleType="fitCenter"
android:gravity="end"
- android:background="@null"
- android:tint="@color/desktop_mode_caption_maximize_button_dark"/>
+ android:background="@null"/>
<ImageButton
android:id="@+id/close_window"
@@ -100,6 +96,5 @@
android:src="@drawable/decor_close_button_dark"
android:scaleType="fitCenter"
android:gravity="end"
- android:background="@null"
- android:tint="@color/desktop_mode_caption_close_button_dark"/>
+ android:background="@null"/>
</com.android.wm.shell.windowdecor.WindowDecorLinearLayout> \ No newline at end of file
diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml
index 7638132d6562..cec7ee233236 100644
--- a/libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml
+++ b/libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml
@@ -20,8 +20,7 @@
android:id="@+id/desktop_mode_caption"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:background="@drawable/desktop_mode_decor_title">
+ android:gravity="center_horizontal">
<ImageButton
android:id="@+id/caption_handle"
@@ -33,5 +32,4 @@
tools:tint="@color/desktop_mode_caption_handle_bar_dark"
android:scaleType="fitXY"
android:background="?android:selectableItemBackground"/>
-
</com.android.wm.shell.windowdecor.WindowDecorLinearLayout> \ No newline at end of file
diff --git a/libs/WindowManager/Shell/res/values/colors.xml b/libs/WindowManager/Shell/res/values/colors.xml
index 9bfd1b44dcca..fae71efe3b39 100644
--- a/libs/WindowManager/Shell/res/values/colors.xml
+++ b/libs/WindowManager/Shell/res/values/colors.xml
@@ -60,14 +60,6 @@
<!-- Desktop Mode -->
<color name="desktop_mode_caption_handle_bar_light">#EFF1F2</color>
<color name="desktop_mode_caption_handle_bar_dark">#1C1C17</color>
- <color name="desktop_mode_caption_expand_button_light">#EFF1F2</color>
- <color name="desktop_mode_caption_expand_button_dark">#48473A</color>
- <color name="desktop_mode_caption_close_button_light">#EFF1F2</color>
- <color name="desktop_mode_caption_close_button_dark">#1C1C17</color>
- <color name="desktop_mode_caption_maximize_button_light">#EFF1F2</color>
- <color name="desktop_mode_caption_maximize_button_dark">#1C1C17</color>
- <color name="desktop_mode_caption_app_name_light">#EFF1F2</color>
- <color name="desktop_mode_caption_app_name_dark">#1C1C17</color>
<color name="desktop_mode_resize_veil_light">#EFF1F2</color>
<color name="desktop_mode_resize_veil_dark">#1C1C17</color>
<color name="desktop_mode_maximize_menu_button">#DDDACD</color>
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 e74e578dc213..249f52bd6156 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
@@ -1280,7 +1280,14 @@ public class BubbleController implements ConfigurationChangeListener,
* Dismiss bubble if it exists and remove it from the stack
*/
public void dismissBubble(Bubble bubble, @Bubbles.DismissReason int reason) {
- mBubbleData.dismissBubbleWithKey(bubble.getKey(), reason);
+ dismissBubble(bubble.getKey(), reason);
+ }
+
+ /**
+ * Dismiss bubble with given key if it exists and remove it from the stack
+ */
+ public void dismissBubble(String key, @Bubbles.DismissReason int reason) {
+ mBubbleData.dismissBubbleWithKey(key, reason);
}
/**
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 65db69ad1904..b7f749e8a8b6 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
@@ -2462,6 +2462,7 @@ public class BubbleStackView extends FrameLayout
final Runnable collapseBackToStack = () ->
mExpandedAnimationController.collapseBackToStack(
mStackAnimationController.getStackPositionAlongNearestHorizontalEdge(),
+ /* fadeBubblesDuringCollapse= */ mRemovingLastBubbleWhileExpanded,
() -> {
mBubbleContainer.setActiveController(mStackAnimationController);
updateOverflowVisibility();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
index 79f306ece283..5b0239f6d659 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
@@ -107,6 +107,7 @@ public class ExpandedAnimationController
private Runnable mAfterExpand;
private Runnable mAfterCollapse;
private PointF mCollapsePoint;
+ private boolean mFadeBubblesDuringCollapse = false;
/**
* Whether the dragged out bubble is springing towards the touch point, rather than using the
@@ -201,12 +202,14 @@ public class ExpandedAnimationController
}
/** Animate collapsing the bubbles back to their stacked position. */
- public void collapseBackToStack(PointF collapsePoint, Runnable after) {
+ public void collapseBackToStack(PointF collapsePoint, boolean fadeBubblesDuringCollapse,
+ Runnable after) {
mAnimatingExpand = false;
mPreparingToCollapse = false;
mAnimatingCollapse = true;
mAfterCollapse = after;
mCollapsePoint = collapsePoint;
+ mFadeBubblesDuringCollapse = fadeBubblesDuringCollapse;
startOrUpdatePathAnimation(false /* expanding */);
}
@@ -253,6 +256,7 @@ public class ExpandedAnimationController
}
mAfterCollapse = null;
+ mFadeBubblesDuringCollapse = false;
};
}
@@ -262,7 +266,7 @@ public class ExpandedAnimationController
== LAYOUT_DIRECTION_RTL;
// Animate each bubble individually, since each path will end in a different spot.
- animationsForChildrenFromIndex(0, (index, animation) -> {
+ animationsForChildrenFromIndex(0, mFadeBubblesDuringCollapse, (index, animation) -> {
final View bubble = mLayout.getChildAt(index);
// Start a path at the bubble's current position.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java
index f3cc514d2972..ed00da848a14 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/PhysicsAnimationLayout.java
@@ -204,6 +204,13 @@ public class PhysicsAnimationLayout extends FrameLayout {
return animationForChild(mLayout.getChildAt(index));
}
+
+ protected MultiAnimationStarter animationsForChildrenFromIndex(
+ int startIndex, ChildAnimationConfigurator configurator) {
+ return animationsForChildrenFromIndex(startIndex, /* fadeChildren= */ false,
+ configurator);
+ }
+
/**
* Returns a {@link MultiAnimationStarter} whose startAll method will start the physics
* animations for all children from startIndex onward. The provided configurator will be
@@ -211,14 +218,16 @@ public class PhysicsAnimationLayout extends FrameLayout {
* animation appropriately.
*/
protected MultiAnimationStarter animationsForChildrenFromIndex(
- int startIndex, ChildAnimationConfigurator configurator) {
+ int startIndex, boolean fadeChildren, ChildAnimationConfigurator configurator) {
final Set<DynamicAnimation.ViewProperty> allAnimatedProperties = new HashSet<>();
final List<PhysicsPropertyAnimator> allChildAnims = new ArrayList<>();
// Retrieve the animator for each child, ask the configurator to configure it, then save
// it and the properties it chose to animate.
for (int i = startIndex; i < mLayout.getChildCount(); i++) {
- final PhysicsPropertyAnimator anim = animationForChildAtIndex(i);
+ final PhysicsPropertyAnimator anim = fadeChildren
+ ? animationForChildAtIndex(i).alpha(0)
+ : animationForChildAtIndex(i);
configurator.configureAnimationForChildAtIndex(i, anim);
allAnimatedProperties.addAll(anim.getAnimatedProperties());
allChildAnims.add(anim);
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 50e1f7311ce0..d073f1df938a 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
@@ -67,7 +67,6 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
private boolean mIsOverflow;
private BubbleTaskViewHelper mBubbleTaskViewHelper;
private BubbleBarMenuViewController mMenuViewController;
- private BubbleBarExpandedViewDragController mDragController;
private @Nullable Supplier<Rect> mLayerBoundsSupplier;
private @Nullable Listener mListener;
@@ -181,8 +180,6 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView
mHandleView.setOnClickListener(view -> {
mMenuViewController.showMenu(true /* animated */);
});
-
- mDragController = new BubbleBarExpandedViewDragController(this);
}
public BubbleBarHandleView getHandleView() {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
index 933794be071e..4ea18f78f5b2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
@@ -19,29 +19,47 @@ package com.android.wm.shell.bubbles.bar
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.graphics.PointF
+import android.graphics.Rect
import android.view.MotionEvent
import android.view.View
import com.android.wm.shell.animation.Interpolators
+import com.android.wm.shell.common.bubbles.DismissView
import com.android.wm.shell.common.bubbles.RelativeTouchListener
/** Controller for handling drag interactions with [BubbleBarExpandedView] */
-class BubbleBarExpandedViewDragController(private val expandedView: BubbleBarExpandedView) {
+class BubbleBarExpandedViewDragController(
+ private val expandedView: BubbleBarExpandedView,
+ private val dismissView: DismissView,
+ private val onDismissed: () -> Unit
+) {
init {
expandedView.handleView.setOnTouchListener(HandleDragListener())
}
+ private fun finishDrag(x: Float, y: Float, viewInitialX: Float, viewInitialY: Float) {
+ val dismissCircleBounds = Rect().apply { dismissView.circle.getBoundsOnScreen(this) }
+ if (dismissCircleBounds.contains(x.toInt(), y.toInt())) {
+ onDismissed()
+ } else {
+ resetExpandedViewPosition(viewInitialX, viewInitialY)
+ }
+ dismissView.hide()
+ }
+
private fun resetExpandedViewPosition(initialX: Float, initialY: Float) {
- val listener = object : AnimatorListenerAdapter() {
- override fun onAnimationStart(animation: Animator) {
- expandedView.isAnimating = true
- }
+ val listener =
+ object : AnimatorListenerAdapter() {
+ override fun onAnimationStart(animation: Animator) {
+ expandedView.isAnimating = true
+ }
- override fun onAnimationEnd(animation: Animator) {
- expandedView.isAnimating = false
+ override fun onAnimationEnd(animation: Animator) {
+ expandedView.isAnimating = false
+ }
}
- }
- expandedView.animate()
+ expandedView
+ .animate()
.translationX(initialX)
.translationY(initialY)
.setDuration(RESET_POSITION_ANIM_DURATION)
@@ -74,6 +92,7 @@ class BubbleBarExpandedViewDragController(private val expandedView: BubbleBarExp
) {
expandedView.translationX = expandedViewRestPosition.x + dx
expandedView.translationY = expandedViewRestPosition.y + dy
+ dismissView.show()
}
override fun onUp(
@@ -86,11 +105,12 @@ class BubbleBarExpandedViewDragController(private val expandedView: BubbleBarExp
velX: Float,
velY: Float
) {
- resetExpandedViewPosition(expandedViewRestPosition.x, expandedViewRestPosition.y)
+ finishDrag(ev.rawX, ev.rawY, expandedViewRestPosition.x, expandedViewRestPosition.y)
}
override fun onCancel(v: View, ev: MotionEvent, viewInitialX: Float, viewInitialY: Float) {
resetExpandedViewPosition(expandedViewRestPosition.x, expandedViewRestPosition.y)
+ dismissView.hide()
}
}
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 92cb436528cc..bdb0e206e490 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
@@ -31,17 +31,21 @@ import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.FrameLayout;
+import com.android.wm.shell.R;
import com.android.wm.shell.bubbles.BubbleController;
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.Bubbles;
import com.android.wm.shell.bubbles.DeviceConfig;
+import com.android.wm.shell.bubbles.DismissViewUtils;
+import com.android.wm.shell.common.bubbles.DismissView;
+
+import kotlin.Unit;
import java.util.Objects;
import java.util.function.Consumer;
-import kotlin.Unit;
-
/**
* Similar to {@link com.android.wm.shell.bubbles.BubbleStackView}, this view is added to window
* manager to display bubbles. However, it is only used when bubbles are being displayed in
@@ -63,7 +67,11 @@ public class BubbleBarLayerView extends FrameLayout
@Nullable
private BubbleViewProvider mExpandedBubble;
+ @Nullable
private BubbleBarExpandedView mExpandedView;
+ @Nullable
+ private BubbleBarExpandedViewDragController mDragController;
+ private DismissView mDismissView;
private @Nullable Consumer<String> mUnBubbleConversationCallback;
// TODO(b/273310265) - currently the view is always on the right, need to update for RTL.
@@ -101,6 +109,8 @@ public class BubbleBarLayerView extends FrameLayout
mScrimView.setBackgroundDrawable(new ColorDrawable(
getResources().getColor(android.R.color.system_neutral1_1000)));
+ setUpDismissView();
+
setOnClickListener(view -> hideMenuOrCollapse());
}
@@ -196,6 +206,13 @@ public class BubbleBarLayerView extends FrameLayout
}
});
+ mDragController = new BubbleBarExpandedViewDragController(mExpandedView, mDismissView,
+ () -> {
+ mBubbleController.dismissBubble(mExpandedBubble.getKey(),
+ Bubbles.DISMISS_USER_GESTURE);
+ return Unit.INSTANCE;
+ });
+
addView(mExpandedView, new FrameLayout.LayoutParams(width, height));
}
@@ -227,6 +244,7 @@ public class BubbleBarLayerView extends FrameLayout
mAnimationHelper.animateCollapse(() -> removeView(viewToRemove));
mBubbleController.getSysuiProxy().onStackExpandChanged(false);
mExpandedView = null;
+ mDragController = null;
setTouchDelegate(null);
showScrim(false);
}
@@ -252,6 +270,18 @@ public class BubbleBarLayerView extends FrameLayout
mUnBubbleConversationCallback = unBubbleConversationCallback;
}
+ private void setUpDismissView() {
+ if (mDismissView != null) {
+ removeView(mDismissView);
+ }
+ mDismissView = new DismissView(getContext());
+ DismissViewUtils.setup(mDismissView);
+ int elevation = getResources().getDimensionPixelSize(R.dimen.bubble_elevation);
+
+ addView(mDismissView);
+ mDismissView.setElevation(elevation);
+ }
+
/** Hides the current modal education/menu view, expanded view or collapses the bubble stack */
private void hideMenuOrCollapse() {
if (mEducationViewController.isEducationVisible()) {
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 d5fab441cd46..fe4980a9eb16 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
@@ -554,6 +554,11 @@ public class PipTransition extends PipTransitionController {
}
}
}
+ // if overlay is present remove it immediately, as exit transition came before it faded out
+ if (mPipOrganizer.mSwipePipToHomeOverlay != null) {
+ startTransaction.remove(mPipOrganizer.mSwipePipToHomeOverlay);
+ clearSwipePipToHomeOverlay();
+ }
if (pipChange == null) {
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
"%s: No window of exiting PIP is found. Can't play expand animation", TAG);
@@ -1007,7 +1012,6 @@ public class PipTransition extends PipTransitionController {
// the overlay to the final PIP task.
startTransaction.reparent(swipePipToHomeOverlay, leash)
.setLayer(swipePipToHomeOverlay, Integer.MAX_VALUE);
- mPipOrganizer.mSwipePipToHomeOverlay = null;
}
final Rect sourceBounds = pipTaskInfo.configuration.windowConfiguration.getBounds();
@@ -1029,7 +1033,7 @@ public class PipTransition extends PipTransitionController {
sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP);
if (swipePipToHomeOverlay != null) {
mPipOrganizer.fadeOutAndRemoveOverlay(swipePipToHomeOverlay,
- null /* callback */, false /* withStartDelay */);
+ this::clearSwipePipToHomeOverlay /* callback */, false /* withStartDelay */);
}
mPipTransitionState.setInSwipePipToHomeTransition(false);
}
@@ -1173,6 +1177,10 @@ public class PipTransition extends PipTransitionController {
mPipMenuController.updateMenuBounds(destinationBounds);
}
+ private void clearSwipePipToHomeOverlay() {
+ mPipOrganizer.mSwipePipToHomeOverlay = null;
+ }
+
@Override
public void dump(PrintWriter pw, String prefix) {
final String innerPrefix = prefix + " ";
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
index 5c02dbcb5255..473deba3b7d2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
@@ -57,7 +57,9 @@ public class HomeTransitionObserver implements TransitionObserver,
@NonNull SurfaceControl.Transaction finishTransaction) {
for (TransitionInfo.Change change : info.getChanges()) {
final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
- if (taskInfo == null || taskInfo.taskId == -1) {
+ if (taskInfo == null
+ || taskInfo.taskId == -1
+ || !taskInfo.isRunning) {
continue;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
index b739ad3793e4..589a8134c2d3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
@@ -1,14 +1,23 @@
package com.android.wm.shell.windowdecor.viewholder
+import android.annotation.ColorInt
import android.app.ActivityManager.RunningTaskInfo
import android.content.res.ColorStateList
+import android.content.res.Configuration
import android.graphics.Bitmap
-import android.graphics.drawable.GradientDrawable
+import android.graphics.Color
import android.view.View
import android.view.View.OnLongClickListener
import android.widget.ImageButton
import android.widget.ImageView
import android.widget.TextView
+import androidx.core.content.withStyledAttributes
+import com.android.internal.R.attr.materialColorOnSecondaryContainer
+import com.android.internal.R.attr.materialColorOnSurface
+import com.android.internal.R.attr.materialColorSecondaryContainer
+import com.android.internal.R.attr.materialColorSurfaceContainerHigh
+import com.android.internal.R.attr.materialColorSurfaceContainerLow
+import com.android.internal.R.attr.materialColorSurfaceDim
import com.android.wm.shell.R
/**
@@ -49,57 +58,82 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder(
}
override fun bindData(taskInfo: RunningTaskInfo) {
- val captionDrawable = captionView.background as GradientDrawable
- taskInfo.taskDescription?.statusBarColor?.let {
- captionDrawable.setColor(it)
- }
-
- closeWindowButton.imageTintList = ColorStateList.valueOf(
- getCaptionCloseButtonColor(taskInfo))
- maximizeWindowButton.imageTintList = ColorStateList.valueOf(
- getCaptionMaximizeButtonColor(taskInfo))
- expandMenuButton.imageTintList = ColorStateList.valueOf(
- getCaptionExpandButtonColor(taskInfo))
- appNameTextView.setTextColor(getCaptionAppNameTextColor(taskInfo))
+ captionView.setBackgroundColor(getCaptionBackgroundColor(taskInfo))
+ val color = getAppNameAndButtonColor(taskInfo)
+ val alpha = Color.alpha(color)
+ closeWindowButton.imageTintList = ColorStateList.valueOf(color)
+ maximizeWindowButton.imageTintList = ColorStateList.valueOf(color)
+ expandMenuButton.imageTintList = ColorStateList.valueOf(color)
+ appNameTextView.setTextColor(color)
+ appIconImageView.imageAlpha = alpha
+ maximizeWindowButton.imageAlpha = alpha
+ closeWindowButton.imageAlpha = alpha
+ expandMenuButton.imageAlpha = alpha
}
override fun onHandleMenuOpened() {}
override fun onHandleMenuClosed() {}
- private fun getCaptionAppNameTextColor(taskInfo: RunningTaskInfo): Int {
- return if (shouldUseLightCaptionColors(taskInfo)) {
- context.getColor(R.color.desktop_mode_caption_app_name_light)
- } else {
- context.getColor(R.color.desktop_mode_caption_app_name_dark)
+ @ColorInt
+ private fun getCaptionBackgroundColor(taskInfo: RunningTaskInfo): Int {
+ val materialColorAttr: Int =
+ if (isDarkMode()) {
+ if (!taskInfo.isFocused) {
+ materialColorSurfaceContainerHigh
+ } else {
+ materialColorSurfaceDim
+ }
+ } else {
+ if (!taskInfo.isFocused) {
+ materialColorSurfaceContainerLow
+ } else {
+ materialColorSecondaryContainer
+ }
}
- }
-
- private fun getCaptionCloseButtonColor(taskInfo: RunningTaskInfo): Int {
- return if (shouldUseLightCaptionColors(taskInfo)) {
- context.getColor(R.color.desktop_mode_caption_close_button_light)
- } else {
- context.getColor(R.color.desktop_mode_caption_close_button_dark)
+ context.withStyledAttributes(null, intArrayOf(materialColorAttr), 0, 0) {
+ return getColor(0, 0)
}
+ return 0
}
- private fun getCaptionMaximizeButtonColor(taskInfo: RunningTaskInfo): Int {
- return if (shouldUseLightCaptionColors(taskInfo)) {
- context.getColor(R.color.desktop_mode_caption_maximize_button_light)
- } else {
- context.getColor(R.color.desktop_mode_caption_maximize_button_dark)
+ @ColorInt
+ private fun getAppNameAndButtonColor(taskInfo: RunningTaskInfo): Int {
+ val materialColorAttr = when {
+ isDarkMode() -> materialColorOnSurface
+ else -> materialColorOnSecondaryContainer
}
+ val appDetailsOpacity = when {
+ isDarkMode() && !taskInfo.isFocused -> DARK_THEME_UNFOCUSED_OPACITY
+ !isDarkMode() && !taskInfo.isFocused -> LIGHT_THEME_UNFOCUSED_OPACITY
+ else -> FOCUSED_OPACITY
+ }
+ context.withStyledAttributes(null, intArrayOf(materialColorAttr), 0, 0) {
+ val color = getColor(0, 0)
+ return if (appDetailsOpacity == FOCUSED_OPACITY) {
+ color
+ } else {
+ Color.argb(
+ appDetailsOpacity,
+ Color.red(color),
+ Color.green(color),
+ Color.blue(color)
+ )
+ }
+ }
+ return 0
}
- private fun getCaptionExpandButtonColor(taskInfo: RunningTaskInfo): Int {
- return if (shouldUseLightCaptionColors(taskInfo)) {
- context.getColor(R.color.desktop_mode_caption_expand_button_light)
- } else {
- context.getColor(R.color.desktop_mode_caption_expand_button_dark)
- }
+ private fun isDarkMode(): Boolean {
+ return context.resources.configuration.uiMode and
+ Configuration.UI_MODE_NIGHT_MASK ==
+ Configuration.UI_MODE_NIGHT_YES
}
companion object {
private const val TAG = "DesktopModeAppControlsWindowDecorationViewHolder"
+ private const val DARK_THEME_UNFOCUSED_OPACITY = 140 // 55%
+ private const val LIGHT_THEME_UNFOCUSED_OPACITY = 166 // 65%
+ private const val FOCUSED_OPACITY = 255
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt
index b1fb0f184bff..4930cb721336 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt
@@ -2,9 +2,11 @@ package com.android.wm.shell.windowdecor.viewholder
import android.animation.ObjectAnimator
import android.app.ActivityManager.RunningTaskInfo
+import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
import android.content.res.ColorStateList
-import android.graphics.drawable.GradientDrawable
+import android.graphics.Color
import android.view.View
+import android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
import android.widget.ImageButton
import com.android.wm.shell.R
import com.android.wm.shell.animation.Interpolators
@@ -34,10 +36,8 @@ internal class DesktopModeFocusedWindowDecorationViewHolder(
override fun bindData(taskInfo: RunningTaskInfo) {
taskInfo.taskDescription?.statusBarColor?.let { captionColor ->
- val captionDrawable = captionView.background as GradientDrawable
- captionDrawable.setColor(captionColor)
+ captionView.setBackgroundColor(captionColor)
}
-
captionHandle.imageTintList = ColorStateList.valueOf(getCaptionHandleBarColor(taskInfo))
}
@@ -57,6 +57,22 @@ internal class DesktopModeFocusedWindowDecorationViewHolder(
}
}
+ /**
+ * Whether the caption items should use the 'light' color variant so that there's good contrast
+ * with the caption background color.
+ */
+ private fun shouldUseLightCaptionColors(taskInfo: RunningTaskInfo): Boolean {
+ return taskInfo.taskDescription
+ ?.let { taskDescription ->
+ if (Color.alpha(taskDescription.statusBarColor) != 0 &&
+ taskInfo.windowingMode == WINDOWING_MODE_FREEFORM) {
+ Color.valueOf(taskDescription.statusBarColor).luminance() < 0.5
+ } else {
+ taskDescription.statusBarAppearance and APPEARANCE_LIGHT_STATUS_BARS == 0
+ }
+ } ?: false
+ }
+
/** Animate appearance/disappearance of caption handle as the handle menu is animated. */
private fun animateCaptionHandleAlpha(startValue: Float, endValue: Float) {
val animator =
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
index 8b405f02ef29..690b4e4be122 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt
@@ -1,11 +1,8 @@
package com.android.wm.shell.windowdecor.viewholder
import android.app.ActivityManager.RunningTaskInfo
-import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM
import android.content.Context
-import android.graphics.Color
import android.view.View
-import android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
/**
* Encapsulates the root [View] of a window decoration and its children to facilitate looking up
@@ -20,22 +17,6 @@ internal abstract class DesktopModeWindowDecorationViewHolder(rootView: View) {
*/
abstract fun bindData(taskInfo: RunningTaskInfo)
- /**
- * Whether the caption items should use the 'light' color variant so that there's good contrast
- * with the caption background color.
- */
- protected fun shouldUseLightCaptionColors(taskInfo: RunningTaskInfo): Boolean {
- return taskInfo.taskDescription
- ?.let { taskDescription ->
- if (Color.alpha(taskDescription.statusBarColor) != 0 &&
- taskInfo.windowingMode == WINDOWING_MODE_FREEFORM) {
- Color.valueOf(taskDescription.statusBarColor).luminance() < 0.5
- } else {
- taskDescription.statusBarAppearance and APPEARANCE_LIGHT_STATUS_BARS == 0
- }
- } ?: false
- }
-
/** Callback when the handle menu is opened. */
abstract fun onHandleMenuOpened()
diff --git a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromAllApps.kt b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromAllApps.kt
index d7b306c3be23..03170a326890 100644
--- a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromAllApps.kt
+++ b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromAllApps.kt
@@ -57,10 +57,13 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
tapl.setEnableRotation(true)
tapl.setExpectedRotation(rotation.value)
+
+ tapl.enableBlockTimeout(true)
}
@Test
open fun enterSplitScreenByDragFromAllApps() {
+ tapl.showTaskbarIfHidden()
tapl.launchedAppState.taskbar
.openAllApps()
.getAppIcon(secondaryApp.appName)
@@ -72,5 +75,6 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
fun teardown() {
primaryApp.exit(wmHelper)
secondaryApp.exit(wmHelper)
+ tapl.enableBlockTimeout(false)
}
}
diff --git a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromShortcut.kt b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromShortcut.kt
index 8134fddd40e5..479d01ddaeb9 100644
--- a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromShortcut.kt
+++ b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromShortcut.kt
@@ -59,10 +59,13 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
tapl.setEnableRotation(true)
tapl.setExpectedRotation(rotation.value)
+
+ tapl.enableBlockTimeout(true)
}
@Test
open fun enterSplitScreenByDragFromShortcut() {
+ tapl.showTaskbarIfHidden()
tapl.launchedAppState.taskbar
.getAppIcon(secondaryApp.appName)
.openDeepShortcutMenu()
@@ -83,6 +86,7 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
fun teardwon() {
primaryApp.exit(wmHelper)
secondaryApp.exit(wmHelper)
+ tapl.enableBlockTimeout(false)
}
companion object {
diff --git a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromTaskbar.kt b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromTaskbar.kt
index 3417744f13a5..625c56bc4a4c 100644
--- a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromTaskbar.kt
+++ b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/splitscreen/scenarios/EnterSplitScreenByDragFromTaskbar.kt
@@ -54,6 +54,8 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
tapl.setEnableRotation(true)
tapl.setExpectedRotation(rotation.value)
+ tapl.enableBlockTimeout(true)
+
tapl.goHome()
SplitScreenUtils.createShortcutOnHotseatIfNotExist(tapl, secondaryApp.appName)
primaryApp.launchViaIntent(wmHelper)
@@ -61,6 +63,7 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
@Test
open fun enterSplitScreenByDragFromTaskbar() {
+ tapl.showTaskbarIfHidden()
tapl.launchedAppState.taskbar
.getAppIcon(secondaryApp.appName)
.dragToSplitscreen(secondaryApp.packageName, primaryApp.packageName)
@@ -71,6 +74,7 @@ constructor(val rotation: Rotation = Rotation.ROTATION_0) {
fun teardown() {
primaryApp.exit(wmHelper)
secondaryApp.exit(wmHelper)
+ tapl.enableBlockTimeout(false)
}
companion object {
diff --git a/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromAllAppsBenchmark.kt b/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromAllAppsBenchmark.kt
index 394864ad9d4d..5c43cbdb3832 100644
--- a/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromAllAppsBenchmark.kt
+++ b/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromAllAppsBenchmark.kt
@@ -23,6 +23,7 @@ import android.tools.device.flicker.legacy.LegacyFlickerTest
import android.tools.device.flicker.legacy.LegacyFlickerTestFactory
import androidx.test.filters.RequiresDevice
import com.android.wm.shell.flicker.utils.SplitScreenUtils
+import org.junit.After
import org.junit.Assume
import org.junit.Before
import org.junit.FixMethodOrder
@@ -42,8 +43,10 @@ abstract class EnterSplitScreenByDragFromAllAppsBenchmark(override val flicker:
setup {
tapl.goHome()
primaryApp.launchViaIntent(wmHelper)
+ tapl.enableBlockTimeout(true)
}
transitions {
+ tapl.showTaskbarIfHidden()
tapl.launchedAppState.taskbar
.openAllApps()
.getAppIcon(secondaryApp.appName)
@@ -57,6 +60,11 @@ abstract class EnterSplitScreenByDragFromAllAppsBenchmark(override val flicker:
Assume.assumeTrue(tapl.isTablet)
}
+ @After
+ fun after() {
+ tapl.enableBlockTimeout(false)
+ }
+
companion object {
@Parameterized.Parameters(name = "{0}")
@JvmStatic
diff --git a/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromShortcutBenchmark.kt b/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromShortcutBenchmark.kt
index 3b3be84f9841..15ad0c12c49a 100644
--- a/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromShortcutBenchmark.kt
+++ b/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromShortcutBenchmark.kt
@@ -23,6 +23,7 @@ import android.tools.device.flicker.legacy.LegacyFlickerTest
import android.tools.device.flicker.legacy.LegacyFlickerTestFactory
import androidx.test.filters.RequiresDevice
import com.android.wm.shell.flicker.utils.SplitScreenUtils
+import org.junit.After
import org.junit.Assume
import org.junit.Before
import org.junit.FixMethodOrder
@@ -42,13 +43,20 @@ abstract class EnterSplitScreenByDragFromShortcutBenchmark(
Assume.assumeTrue(tapl.isTablet)
}
+ @After
+ fun after() {
+ tapl.enableBlockTimeout(false)
+ }
+
protected val thisTransition: FlickerBuilder.() -> Unit = {
setup {
tapl.goHome()
SplitScreenUtils.createShortcutOnHotseatIfNotExist(tapl, secondaryApp.appName)
primaryApp.launchViaIntent(wmHelper)
+ tapl.enableBlockTimeout(true)
}
transitions {
+ tapl.showTaskbarIfHidden()
tapl.launchedAppState.taskbar
.getAppIcon(secondaryApp.appName)
.openDeepShortcutMenu()
diff --git a/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromTaskbarBenchmark.kt b/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromTaskbarBenchmark.kt
index eff355987cc0..ca8adb1fcb38 100644
--- a/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromTaskbarBenchmark.kt
+++ b/libs/WindowManager/Shell/tests/flicker/splitscreen/src/com/android/wm/shell/flicker/splitscreen/benchmark/EnterSplitScreenByDragFromTaskbarBenchmark.kt
@@ -23,6 +23,7 @@ import android.tools.device.flicker.legacy.LegacyFlickerTest
import android.tools.device.flicker.legacy.LegacyFlickerTestFactory
import androidx.test.filters.RequiresDevice
import com.android.wm.shell.flicker.utils.SplitScreenUtils
+import org.junit.After
import org.junit.Assume
import org.junit.Before
import org.junit.FixMethodOrder
@@ -44,6 +45,7 @@ abstract class EnterSplitScreenByDragFromTaskbarBenchmark(override val flicker:
primaryApp.launchViaIntent(wmHelper)
}
transitions {
+ tapl.showTaskbarIfHidden()
tapl.launchedAppState.taskbar
.getAppIcon(secondaryApp.appName)
.dragToSplitscreen(secondaryApp.packageName, primaryApp.packageName)
@@ -54,6 +56,12 @@ abstract class EnterSplitScreenByDragFromTaskbarBenchmark(override val flicker:
@Before
fun before() {
Assume.assumeTrue(tapl.isTablet)
+ tapl.enableBlockTimeout(true)
+ }
+
+ @After
+ fun after() {
+ tapl.enableBlockTimeout(false)
}
companion object {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationControllerTest.java
index 6403e794a33e..c1ff260836b8 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationControllerTest.java
@@ -106,7 +106,7 @@ public class ExpandedAnimationControllerTest extends PhysicsAnimationLayoutTestC
verify(afterExpand).run();
Runnable afterCollapse = mock(Runnable.class);
- mExpandedController.collapseBackToStack(mExpansionPoint, afterCollapse);
+ mExpandedController.collapseBackToStack(mExpansionPoint, false, afterCollapse);
waitForPropertyAnimations(DynamicAnimation.TRANSLATION_X, DynamicAnimation.TRANSLATION_Y);
testStackedAtPosition(mExpansionPoint.x, mExpansionPoint.y, -1);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
index 421c44511a54..50802c3759c9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
@@ -101,7 +101,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(change.getTaskInfo()).thenReturn(taskInfo);
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN, true);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -119,7 +119,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(change.getTaskInfo()).thenReturn(taskInfo);
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_TO_BACK);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_TO_BACK, true);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -137,7 +137,25 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(change.getTaskInfo()).thenReturn(taskInfo);
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK, true);
+
+ mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
+ info,
+ mock(SurfaceControl.Transaction.class),
+ mock(SurfaceControl.Transaction.class));
+
+ verify(mListener, times(0)).onHomeVisibilityChanged(anyBoolean());
+ }
+
+ @Test
+ public void testNonRunningHomeActivityDoesNotTriggerCallback() throws RemoteException {
+ TransitionInfo info = mock(TransitionInfo.class);
+ TransitionInfo.Change change = mock(TransitionInfo.Change.class);
+ ActivityManager.RunningTaskInfo taskInfo = mock(ActivityManager.RunningTaskInfo.class);
+ when(change.getTaskInfo()).thenReturn(taskInfo);
+ when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
+
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK, false);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -156,7 +174,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
when(change.hasFlags(FLAG_BACK_GESTURE_ANIMATED)).thenReturn(true);
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_CHANGE);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_CHANGE, true);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -166,16 +184,16 @@ public class HomeTransitionObserverTest extends ShellTestCase {
verify(mListener, times(1)).onHomeVisibilityChanged(true);
}
-
/**
* Helper class to initialize variables for the rest.
*/
private void setupTransitionInfo(ActivityManager.RunningTaskInfo taskInfo,
TransitionInfo.Change change,
@ActivityType int activityType,
- @TransitionMode int mode) {
+ @TransitionMode int mode,
+ boolean isRunning) {
when(taskInfo.getActivityType()).thenReturn(activityType);
when(change.getMode()).thenReturn(mode);
+ taskInfo.isRunning = isRunning;
}
-
}
diff --git a/libs/hwui/aconfig/hwui_flags.aconfig b/libs/hwui/aconfig/hwui_flags.aconfig
index 78a64795967a..ca119757e816 100644
--- a/libs/hwui/aconfig/hwui_flags.aconfig
+++ b/libs/hwui/aconfig/hwui_flags.aconfig
@@ -1,6 +1,13 @@
package: "com.android.graphics.hwui.flags"
flag {
+ name: "matrix_44"
+ namespace: "core_graphics"
+ description: "API for 4x4 matrix and related canvas functions"
+ bug: "280116960"
+}
+
+flag {
name: "limited_hdr"
namespace: "core_graphics"
description: "API to enable apps to restrict the amount of HDR headroom that is used"
@@ -41,3 +48,10 @@ flag {
description: "Enable r_8, r_16_uint, rg_1616_uint, and rgba_10101010 in the SDK"
bug: "292545615"
}
+
+flag {
+ name: "animate_hdr_transitions"
+ namespace: "core_graphics"
+ description: "Automatically animate all changes in HDR headroom"
+ bug: "314810174"
+}
diff --git a/packages/CredentialManager/res/values-el/strings.xml b/packages/CredentialManager/res/values-el/strings.xml
index 8d06765099a9..089f8989a30f 100644
--- a/packages/CredentialManager/res/values-el/strings.xml
+++ b/packages/CredentialManager/res/values-el/strings.xml
@@ -33,7 +33,7 @@
<string name="passwordless_technology_detail" msgid="6853928846532955882">"Τα κλειδιά πρόσβασης σάς επιτρέπουν να συνδέεστε χωρίς να εξαρτάστε από κωδικούς πρόσβασης. Χρειάζεται μόνο να χρησιμοποιήσετε το δακτυλικό αποτύπωμά σας, την αναγνώριση προσώπου, ένα PIN ή ένα μοτίβο σάρωσης για να επαληθεύσετε την ταυτότητά σας και να δημιουργήσετε ένα κλειδί πρόσβασης."</string>
<string name="public_key_cryptography_title" msgid="6751970819265298039">"Κρυπτογραφία δημόσιου κλειδιού"</string>
<string name="public_key_cryptography_detail" msgid="6937631710280562213">"Βάσει του FIDO Alliance (συμμετ. οι Google, Apple, Microsoft κ.ά.) και προτύπων W3C, τα κλειδιά πρόσβ. χρησιμ. συζεύξεις κλειδιών κρυπτογρ. Σε αντίθεση με το όνομα χρήστη και τη συμβολοσειρά χαρακτ. για κωδ. πρόσβ., δημιουργείται μια σύζευξη ιδιωτικού-δημόσιου κλειδ. για εφαρμ./ιστοτόπους. Το ιδιωτ. κλειδί αποθηκεύεται με ασφάλεια στη συσκευή ή στον διαχειρ. κωδ. πρόσβ. και επιβεβαιώνει την ταυτότητά σας. Το δημόσιο κλειδί κοινοπ. στον διακομιστή εφαρμ./ιστοτόπου. Τα αντίστοιχα κλειδιά επιτρέπουν άμεση εγγραφή και σύνδεση."</string>
- <string name="improved_account_security_title" msgid="1069841917893513424">"Βελτιωμένη ασφάλεια λογαριασμού"</string>
+ <string name="improved_account_security_title" msgid="1069841917893513424">"Βελτιωμένη προστασία λογαριασμού"</string>
<string name="improved_account_security_detail" msgid="9123750251551844860">"Κάθε κλειδί συνδέεται αποκλειστικά με την εφαρμογή ή τον ιστότοπο για τον οποίο δημιουργήθηκε ώστε να μην συνδέεστε ποτέ κατά λάθος σε μη νόμιμες εφαρμογές ή ιστοτόπους. Επιπλέον, οι παραβιάσεις είναι πολύ πιο δύσκολες, επειδή οι διακομιστές διατηρούν μόνο δημόσια κλειδιά."</string>
<string name="seamless_transition_title" msgid="5335622196351371961">"Απρόσκοπτη μετάβαση"</string>
<string name="seamless_transition_detail" msgid="4475509237171739843">"Καθώς κινούμαστε προς ένα μέλλον χωρίς κωδικούς πρόσβασης, οι κωδικοί πρόσβασης θα εξακολουθούν να είναι διαθέσιμοι μαζί με τα κλειδιά πρόσβασης."</string>
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt
index a5998faa68ad..db69b8bdf42b 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt
@@ -60,14 +60,15 @@ fun ModalBottomSheet(
sheetContent = sheetContent,
sheetShape = EntryShape.TopRoundedCorner,
) {}
- LaunchedEffect(state.currentValue) {
+ LaunchedEffect(state.currentValue, state.targetValue) {
if (state.currentValue == ModalBottomSheetValue.Hidden) {
if (isInitialRender) {
onInitialRenderComplete()
scope.launch { state.show() }
- } else {
+ } else if (state.targetValue == ModalBottomSheetValue.Hidden) {
+ // Only dismiss ui when the motion is downwards
onDismiss()
}
}
}
-} \ No newline at end of file
+}
diff --git a/packages/PackageInstaller/res/values-af/strings.xml b/packages/PackageInstaller/res/values-af/strings.xml
index a3496caddd6d..cb76a28c8521 100644
--- a/packages/PackageInstaller/res/values-af/strings.xml
+++ b/packages/PackageInstaller/res/values-af/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Hou <xliff:g id="SIZE">%1$s</xliff:g> se programdata."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Wil jy hierdie app uitvee?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Wil jy hierdie app deïnstalleer? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-kloon sal ook uitgevee word."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Wil jy hierdie app van jou private ruimte deïnstalleer?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Voer tans deïnstallerings uit"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislukte deïnstallerings"</string>
<string name="uninstalling" msgid="8709566347688966845">"Deïnstalleer tans …"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Stel <xliff:g id="APPNAME">%1$s</xliff:g> terug vanaf <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Hierdie app sal in die agtergrond begin aflaai"</string>
<string name="restore" msgid="8460854736328970444">"Stel terug"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Jy is vanlyn"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Hierdie app sal outomaties teruggestel word wanneer jy aan die internet gekoppel is"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Iets het skeefgeloop"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Kon nie hierdie app terugstel nie"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Te min berging"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Jy kan spasie op hierdie toestel beskikbaar maak om hierdie app terug te stel. Berging benodig: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Optrede vereis"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Volg die volgende stappe om hierdie app terug te stel"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is gedeaktiveer"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is gedeïnstalleer"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Jy sal <xliff:g id="INSTALLERNAME">%1$s</xliff:g> moet installeer om hierdie app terug te stel"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Gaan voort"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Vee berging uit"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Instellings"</string>
+ <string name="close" msgid="5214897374055647996">"Maak toe"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-am/strings.xml b/packages/PackageInstaller/res/values-am/strings.xml
index 9d0fd5328177..e58eafea65a1 100644
--- a/packages/PackageInstaller/res/values-am/strings.xml
+++ b/packages/PackageInstaller/res/values-am/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"ከመተግበሪያ ውሂብ <xliff:g id="SIZE">%1$s</xliff:g> አቆይ።"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ይህን መተግበሪያ መሰረዝ ይፈልጋሉ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ይህን መተግበሪያ ማራገፍ ይፈልጋሉ? የተባዛውም <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ይሰረዛል።"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ይህን መተግበሪያ ከግል ቦታዎ ማራገፍ ይፈልጋሉ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"በማሄድ ላይ ያሉ ማራገፎች"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ያልተሳኩ ማራገፎች"</string>
<string name="uninstalling" msgid="8709566347688966845">"በማራገፍ ላይ…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"ከ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ወደነበረበት <xliff:g id="APPNAME">%1$s</xliff:g> መልስ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ይህ መተግበሪያ በዳራ ማውረድ ይጀምራል።"</string>
<string name="restore" msgid="8460854736328970444">"ወደነበረበት መልስ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ከመስመር ውጭ ነዎት"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"እርስዎ ከበይነመረቡ ጋር ሲገናኙ ይህ መተግበሪያ በራስ-ሰር ወደነበረበት ይመለሳል"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"የሆነ ስህተት ተከስቷል"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ይህን መተግበሪያ ወደነበረበት ለመመለስ እየተሞከረ ሳለ አንድ ችግር ነበር"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"በቂ ማከማቻ የለም"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ይህን መተግበሪያ ወደነበረበት ለመመለስ፣ በዚህ መሳሪያ ላይ ቦታን ማስለቀቅ ይችላሉ። ማከማቻ ያስፈልጋል፦ <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"የሚያስፈልግ እርምጃ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ይህን መተግበሪያ ወደነበረበት ለመመለስ ቀጣዮቹን ደረጃዎች ይከተሉ"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ተሰናክሏል"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ተራግፏል"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ይህን መተግበሪያ ወደነበረበት ለመመለስ፣ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>ን መጫን አለብዎት"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ቀጥል"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ማከማቻን አጽዳ"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ቅንብሮች"</string>
+ <string name="close" msgid="5214897374055647996">"ዝጋ"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ar/strings.xml b/packages/PackageInstaller/res/values-ar/strings.xml
index f4c9581893f1..1edd9b137455 100644
--- a/packages/PackageInstaller/res/values-ar/strings.xml
+++ b/packages/PackageInstaller/res/values-ar/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"الاحتفاظ بـ <xliff:g id="SIZE">%1$s</xliff:g> من بيانات التطبيق."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"هل تريد حذف هذا التطبيق؟"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"هل تريد إلغاء تثبيت هذا التطبيق؟ سيتم أيضًا حذف نسخة \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\" الطبق الأصل."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"هل تريد إلغاء تثبيت هذا التطبيق من المساحة الخاصة؟"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"عمليات إلغاء التثبيت الجارية"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"عمليات إلغاء التثبيت غير الناجحة"</string>
<string name="uninstalling" msgid="8709566347688966845">"جارٍ إلغاء التثبيت…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"هل تريد استعادة التطبيق \"<xliff:g id="APPNAME">%1$s</xliff:g>\" من \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\"؟"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"سيبدأ تنزيل هذا التطبيق في الخلفية."</string>
<string name="restore" msgid="8460854736328970444">"استعادة"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"لا يتوفر اتصال بالإنترنت"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ستتم استعادة هذا التطبيق تلقائيًا بمجرد اتصالك بالإنترنت."</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"حدث خطأ"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"حدثت مشكلة أثناء محاولة استعادة هذا التطبيق."</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"مساحة التخزين غير كافية"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"لاستعادة هذا التطبيق، يجب إخلاء بعض المساحة على هذا الجهاز. مساحة التخزين المطلوبة: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"مطلوب اتخاذ إجراء"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"يُرجى اتّباع الخطوات التالية لاستعادة هذا التطبيق."</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"‫<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غير مفعّل"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"‫<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غير مثبَّت"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"لاستعادة هذا التطبيق، يجب تثبيت <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"متابعة"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"محو مساحة التخزين"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"الإعدادات"</string>
+ <string name="close" msgid="5214897374055647996">"إغلاق"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-as/strings.xml b/packages/PackageInstaller/res/values-as/strings.xml
index 4d264c6b06c8..9bf9cb05cbdb 100644
--- a/packages/PackageInstaller/res/values-as/strings.xml
+++ b/packages/PackageInstaller/res/values-as/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"এপৰ ডেটাৰ <xliff:g id="SIZE">%1$s</xliff:g> ৰাখক"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"আপুনি এই এপ্‌টো মচিব বিচাৰেনে?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"আপুনি এই এপ্‌টো আনইনষ্টল কৰিব বিচাৰেনে? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ৰ ক্ল’নো মচা হ’ব।"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"আপুনি আপোনাৰ ব্যক্তিগত স্পেচৰ পৰা এই এপ্‌টো আনইনষ্টল কৰিব বিচাৰেনে?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"আনইনষ্টল কৰি থকা হৈছে"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"যিবোৰ আনইনষ্টল পৰা নগ\'ল"</string>
<string name="uninstalling" msgid="8709566347688966845">"আনইনষ্টল কৰি থকা হৈছে…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>ৰ পৰা <xliff:g id="APPNAME">%1$s</xliff:g> পুনঃস্থাপন কৰিবনে?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"এই এপ্‌টোৱে নেপথ্যত ডাউনল’ড কৰিবলৈ আৰম্ভ কৰিব"</string>
<string name="restore" msgid="8460854736328970444">"পুনঃস্থাপন কৰক"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"আপুনি অফলাইন হৈ আছে"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"আপুনি ইণ্টাৰনেটৰ সৈতে সংযুক্ত হ’লে এই এপ্‌টো স্বয়ংক্ৰিয়ভাৱে পুনঃস্থাপন কৰা হ’ব"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"কিবা ভুল হ’ল"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"এই এপ্‌টো পুনঃস্থাপন কৰাত কিবা অসুবিধা হৈছিল"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ষ্ট’ৰেজত পৰ্যাপ্ত ঠাই নাই"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"এই এপ্‌টো পুনঃস্থাপন কৰিবলৈ, আপুনি এই ডিভাইচটোত ঠাই খালী কৰিব পাৰে। আৱশ্যকীয় ষ্ট’ৰেজ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"কাৰ্যব্যৱস্থা লোৱাৰ প্ৰয়োজন"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"এই এপ্‌টো পুনঃস্থাপন কৰিবলৈ পৰৱৰ্তী পদক্ষেপসমূহ অনুসৰণ কৰক"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> অক্ষম কৰা আছে"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> আনইনষ্টল কৰা হৈছে"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"এই এপ্‌টো পুনঃস্থাপন কৰিবলৈ, আপুনি <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ইনষ্টল কৰিব লাগিব"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"অব্যাহত ৰাখক"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ষ্ট’ৰেজ মচক"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ছেটিং"</string>
+ <string name="close" msgid="5214897374055647996">"বন্ধ কৰক"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-az/strings.xml b/packages/PackageInstaller/res/values-az/strings.xml
index 0807ef7dcb6c..64004e9486ce 100644
--- a/packages/PackageInstaller/res/values-az/strings.xml
+++ b/packages/PackageInstaller/res/values-az/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Tətbiq datasının <xliff:g id="SIZE">%1$s</xliff:g> hissəsini saxlayın."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Bu tətbiq silinsin?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Bu tətbiqi sistemdən silmək istəyirsiniz? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> kopya da silinəcək."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Bu tətbiqi şəxsi məkandan silmək istəyirsiniz?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"İşləyən sistemlər silinmələr"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Uğursuz olan sistemlər silinmələr"</string>
<string name="uninstalling" msgid="8709566347688966845">"Sistemdən silinir..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ünvanından bərpa edilsin?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Bu tətbiq arxa fonda endirilməyə başlayacaq"</string>
<string name="restore" msgid="8460854736328970444">"Bərpa edin"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Oflaynsınız"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"İnternetə qoşulanda bu tətbiq avtomatik bərpa ediləcək"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Xəta oldu"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Bu tətbiqi bərpa edərkən problem oldu"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Kifayət qədər yaddaş yoxdur"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Bu tətbiqi bərpa etmək üçün bu cihazda yer boşalda bilərsiniz. Lazımi yaddaş: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Tədbir görmək tələb edilir"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Bu tətbiqi bərpa etmək üçün növbəti addımları izləyin"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> deaktiv edilib"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> sistemdən silinib"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Bu tətbiqi bərpa etmək üçün <xliff:g id="INSTALLERNAME">%1$s</xliff:g> quraşdırılmalıdır"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Davam edin"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Yaddaşı təmizləyin"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Ayarlar"</string>
+ <string name="close" msgid="5214897374055647996">"Bağlayın"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml b/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
index 6b9cd047c11c..464b12014437 100644
--- a/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
+++ b/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zadrži <xliff:g id="SIZE">%1$s</xliff:g> podataka aplikacije."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Želite da izbrišete ovu aplikaciju?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Želite da deinstalirate ovu aplikaciju? Klon aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> će takođe biti izbrisan."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Želite da deinstalirate ovu aplikaciju iz privatnog prostora?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Aktivna deinstaliranja"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspela deinstaliranja"</string>
<string name="uninstalling" msgid="8709566347688966845">"Deinstalira se…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Želite da vratite <xliff:g id="APPNAME">%1$s</xliff:g> iz <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Aplikacija će započeti preuzimanje u pozadini."</string>
<string name="restore" msgid="8460854736328970444">"Vrati"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Oflajn ste"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ova aplikacija će biti vraćena automatski kada se povežete na internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Došlo je do greške"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Došlo je do problema pri vraćanju ove aplikacije"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nema dovoljno memorijskog prostora"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Možete da oslobodite prostor na ovom uređaju da biste vratili ovu aplikaciju. Potreban memorijski prostor: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Treba da reagujete"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Pratite dalja uputstva da biste vratili ovu aplikaciju"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Onemogućen <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Deinstaliran <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Da biste vratili ovu aplikaciju, treba da instalirate <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nastavi"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Obriši memorijski prostor"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Podešavanja"</string>
+ <string name="close" msgid="5214897374055647996">"Zatvori"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-be/strings.xml b/packages/PackageInstaller/res/values-be/strings.xml
index 9e6e6fd32f61..3977f228c672 100644
--- a/packages/PackageInstaller/res/values-be/strings.xml
+++ b/packages/PackageInstaller/res/values-be/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Захаваць даныя праграмы (<xliff:g id="SIZE">%1$s</xliff:g>)."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Выдаліць гэту праграму?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Выдаліць гэту праграму? Таксама будзе выдалены клон \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\"."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Выдаліць гэту праграму з прыватнай аўдыторыі?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Актыўныя выдаленні"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Нявыкананыя выдаленні"</string>
<string name="uninstalling" msgid="8709566347688966845">"Ідзе выдаленне…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Аднавіць праграму \"<xliff:g id="APPNAME">%1$s</xliff:g>\" адсюль: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Праграма пачне спампоўвацца ў фонавым рэжыме"</string>
<string name="restore" msgid="8460854736328970444">"Аднавіць"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Вы па-за сеткай"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Гэта праграма будзе аўтаматычна адноўлена, калі прылада падключыцца да інтэрнэту"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Адбылася памылка"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Пры аднаўленні праграмы ўзнікла праблема"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Не хапае месца ў сховішчы"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Каб аднавіць гэту праграму, вызваліце месца на прыладзе. Неабходны аб\'ём месца ў сховішчы: <xliff:g id="BYTES">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Патрабуецца дзеянне"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Каб аднавіць гэту праграму, выканайце далейшыя інструкцыі"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Усталёўшчык \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" адключаны"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Усталёўшчык \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" выдалены"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Каб аднавіць гэту праграму, усталюйце праграму \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\""</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Працягнуць"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Ачысціць сховішча"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Налады"</string>
+ <string name="close" msgid="5214897374055647996">"Закрыць"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-bg/strings.xml b/packages/PackageInstaller/res/values-bg/strings.xml
index 1c9187404a58..a5f34a769c7d 100644
--- a/packages/PackageInstaller/res/values-bg/strings.xml
+++ b/packages/PackageInstaller/res/values-bg/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Запазване на <xliff:g id="SIZE">%1$s</xliff:g> данни от приложението."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Искате ли да изтриете това приложение?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Искате ли да деинсталирате това приложение? Копието на <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> също ще бъде изтрито."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Искате ли да деинсталирате това приложение от личното си пространство?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активни деинсталирания"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Неуспешни деинсталирания"</string>
<string name="uninstalling" msgid="8709566347688966845">"Деинсталира се..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Да се възстанови ли <xliff:g id="APPNAME">%1$s</xliff:g> от <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Това приложение ще започне да се изтегля на заден план"</string>
<string name="restore" msgid="8460854736328970444">"Възстановяване"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Офлайн сте"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Това приложение ще бъде възстановено автоматично, когато имате връзка с интернет"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Нещо се обърка"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"При опита за възстановяване на това приложение възникна проблем"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Няма достатъчно място в хранилището"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"За да възстановите това приложение, ще трябва да освободите място на устройството. Необходимо място в хранилището: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Изисква се действие"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Изпълнете следващите стъпки, за да възстановите това приложение"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> е деактивирано"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> е деинсталирано"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"За да възстановите това приложение, ще трябва да инсталирате <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Напред"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Изчистване на данните"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Настройки"</string>
+ <string name="close" msgid="5214897374055647996">"Затваряне"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-bn/strings.xml b/packages/PackageInstaller/res/values-bn/strings.xml
index 5a78f37751e4..eef339ac2635 100644
--- a/packages/PackageInstaller/res/values-bn/strings.xml
+++ b/packages/PackageInstaller/res/values-bn/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"অ্যাপ ডেটার মধ্যে <xliff:g id="SIZE">%1$s</xliff:g> রেখে দিন।"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"আপনি এই অ্যাপ মুছে ফেলতে চান?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"আপনি এই অ্যাপ আনইনস্টল করতে চান? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ক্লোনও মুছে ফেলা হবে।"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"আপনার ব্যক্তিগত স্পেস থেকে এই অ্যাপ আনইনস্টল করতে চান?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"আনইনস্টল করা হচ্ছে"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"আনইনস্টল করা যায়নি"</string>
<string name="uninstalling" msgid="8709566347688966845">"আনইনস্টল করা হচ্ছে…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> থেকে <xliff:g id="APPNAME">%1$s</xliff:g> ফিরিয়ে আনবেন?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"এই অ্যাপটি ব্যাকগ্রাউন্ডে ডাউনলোড হওয়া শুরু হবে"</string>
<string name="restore" msgid="8460854736328970444">"ফিরিয়ে আনুন"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"আপনি অফলাইন আছেন"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"আপনি ইন্টারনেটের সাথে কানেক্ট থাকাকালীন এই অ্যাপ অটোমেটিক ফিরিয়ে আনা হবে"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"কোনও সমস্যা হয়েছে"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"এই অ্যাপ ফিরিয়ে আনতে চেষ্টা করার সময় সমস্যা হয়েছে"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"পর্যাপ্ত স্টোরেজ নেই"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"এই অ্যাপ ফিরিয়ে আনতে, এই ডিভাইসের স্পেস খালি করতে পারেন। স্টোরেজ প্রয়োজন: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ব্যবস্থা নিতে হবে"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"এই অ্যাপ ফিরিয়ে আনতে পরবর্তী ধাপগুলি ফলো করুন"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> বন্ধ করা হয়েছে"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> আনইনস্টল করা হয়েছে"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"এই অ্যাপ ফিরিয়ে আনতে, আপনাকে <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ইনস্টল করতে হবে"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"চালিয়ে যান"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"স্টোরেজ মুছুন"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"সেটিংস"</string>
+ <string name="close" msgid="5214897374055647996">"বন্ধ করুন"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-bs/strings.xml b/packages/PackageInstaller/res/values-bs/strings.xml
index aed2d22a9211..783884313b9a 100644
--- a/packages/PackageInstaller/res/values-bs/strings.xml
+++ b/packages/PackageInstaller/res/values-bs/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zadržati <xliff:g id="SIZE">%1$s</xliff:g> podataka aplikacije."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Želite li izbrisati ovu aplikaciju?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Želite li deinstalirati ovu aplikaciju? Izbrisat će se i klon aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Želite li deinstalirati ovu aplikaciju iz privatnog prostora?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Tekuća deinstaliranja"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspjela deinstaliranja"</string>
<string name="uninstalling" msgid="8709566347688966845">"Deinstaliranje..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Vratiti aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g> s usluge <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Preuzimanje aplikacije će započeti u pozadini"</string>
<string name="restore" msgid="8460854736328970444">"Vrati"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Offline ste"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Aplikacija će se automatski vratiti kada se povežete s internetom"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Nešto nije uredu"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Došlo je do problema prilikom pokušaja vraćanja aplikacije"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nema dovoljno prostora za pohranu"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Da vratite aplikaciju, možete osloboditi prostor na uređaju. Potrebna pohrana: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Potrebna je radnja"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Pratite sljedeće korake da vratite ovu aplikaciju"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je onemogućen"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je deinstaliran"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Da vratite aplikaciju, trebat ćete instalirati program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nastavi"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Obriši pohranu"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Postavke"</string>
+ <string name="close" msgid="5214897374055647996">"Zatvori"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ca/strings.xml b/packages/PackageInstaller/res/values-ca/strings.xml
index 85e5110d4405..bf28e8130205 100644
--- a/packages/PackageInstaller/res/values-ca/strings.xml
+++ b/packages/PackageInstaller/res/values-ca/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Conserva <xliff:g id="SIZE">%1$s</xliff:g> de dades de l\'aplicació."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vols suprimir aquesta aplicació?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Vols desinstal·lar aquesta aplicació? El clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> també se suprimirà."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Vols desinstal·lar aquesta aplicació del teu espai privat?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstal·lacions en curs"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstal·lacions fallides"</string>
<string name="uninstalling" msgid="8709566347688966845">"S\'està desinstal·lant…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Vols restaurar <xliff:g id="APPNAME">%1$s</xliff:g> des de <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Aquesta aplicació començarà a baixar-se en segon pla"</string>
<string name="restore" msgid="8460854736328970444">"Restaura"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"No tens connexió"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"L\'aplicació es restaurarà automàticament quan tinguis connexió a Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"S\'ha produït un error"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Hi ha hagut un problema en intentar restaurar aquesta aplicació"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"No hi ha prou emmagatzematge"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Per restaurar l\'aplicació, allibera espai en aquest dispositiu. Emmagatzematge necessari: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Acció necessària"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Segueix els passos que hi ha continuació per restaurar l\'aplicació"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> està desactivat"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> no està instal·lat"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Per restaurar l\'aplicació, cal que instal·lis <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continua"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Esborra emmagatzematge"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Configuració"</string>
+ <string name="close" msgid="5214897374055647996">"Tanca"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-cs/strings.xml b/packages/PackageInstaller/res/values-cs/strings.xml
index fc85bca3bcc5..5c0ff241fd56 100644
--- a/packages/PackageInstaller/res/values-cs/strings.xml
+++ b/packages/PackageInstaller/res/values-cs/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Ponechat data aplikace o velikosti <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Chcete tuto aplikaci smazat?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Chcete tuto aplikaci odinstalovat? Smazán bude také klon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Chcete tuto aplikaci odinstalovat ze soukromého prostoru?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Probíhající odinstalace"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neúspěšné odinstalace"</string>
<string name="uninstalling" msgid="8709566347688966845">"Odinstalace…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Obnovit aplikaci <xliff:g id="APPNAME">%1$s</xliff:g> z aplikace <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Aplikace se začne stahovat na pozadí"</string>
<string name="restore" msgid="8460854736328970444">"Obnovit"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Nejste připojeni k internetu"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Tato aplikace se automaticky obnoví, až budete připojeni k internetu"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Něco se pokazilo"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Při pokusu o obnovení této aplikace došlo k problému"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nedostatek úložného prostoru"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Pokud tuto aplikaci chcete obnovit, uvolněte na zařízení místo. Požadované úložiště: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Vyžadovaná akce"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Pokud tuto aplikaci chcete obnovit, postupujte podle následujících pokynů"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> je zakázán"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> je odinstalován"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pokud tuto aplikaci chcete obnovit, bude potřeba nainstalovat <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Pokračovat"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Vymazat úložiště"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Nastavení"</string>
+ <string name="close" msgid="5214897374055647996">"Zavřít"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-da/strings.xml b/packages/PackageInstaller/res/values-da/strings.xml
index aa6fe8f8baa0..acb888a3fc87 100644
--- a/packages/PackageInstaller/res/values-da/strings.xml
+++ b/packages/PackageInstaller/res/values-da/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Behold <xliff:g id="SIZE">%1$s</xliff:g> appdata."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vil du slette denne app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Vil du afinstallere denne app? Klonen af <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> slettes også."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Vil du afinstallere denne app fra dit private område?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Igangværende afinstallationer"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislykkede afinstallationer"</string>
<string name="uninstalling" msgid="8709566347688966845">"Afinstallerer…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Vil du gendanne <xliff:g id="APPNAME">%1$s</xliff:g> fra <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Download af denne app startes i baggrunden"</string>
<string name="restore" msgid="8460854736328970444">"Gendan"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Du er offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Denne app gendannes automatisk, når du har forbindelse til internettet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Noget gik galt"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Der opstod et problem under gendannelsen af denne app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Ikke nok lagerplads"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Hvis du vil gendanne denne app, skal du frigøre plads på enheden. Påkrævet lagerplads: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Handling påkrævet"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Følg de næste trin for at gendanne denne app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er deaktiveret"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er afinstalleret"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Du skal installere <xliff:g id="INSTALLERNAME">%1$s</xliff:g> for at gendanne denne app"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Fortsæt"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Ryd lagerplads"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Indstillinger"</string>
+ <string name="close" msgid="5214897374055647996">"Luk"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-de/strings.xml b/packages/PackageInstaller/res/values-de/strings.xml
index dc2369610cf7..faecc3e9792d 100644
--- a/packages/PackageInstaller/res/values-de/strings.xml
+++ b/packages/PackageInstaller/res/values-de/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> an App-Daten behalten."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Möchtest du diese App löschen?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Möchtest du diese App deinstallieren? Der <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-Klon wird ebenfalls gelöscht."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Möchtest du diese App in deinem privaten Bereich deinstallieren?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Laufende Deinstallationen"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Fehlgeschlagene Deinstallationen"</string>
<string name="uninstalling" msgid="8709566347688966845">"Wird deinstalliert..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> von <xliff:g id="INSTALLERNAME">%1$s</xliff:g> wiederherstellen?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Diese App beginnt im Hintergrund mit dem Herunterladen"</string>
<string name="restore" msgid="8460854736328970444">"Wiederherstellen"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Du bist offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Die App wird automatisch wiederhergestellt, sobald du mit dem Internet verbunden bist"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Ein Fehler ist aufgetreten"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Beim Wiederherstellen der App ist ein Fehler aufgetreten"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nicht genügend Speicherplatz"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Um die App wiederherzustellen, musst du erst Speicherplatz auf diesem Gerät freigeben. Erforderlicher Speicherplatz: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Aktion erforderlich"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Folge den nächsten Schritten, um die App wiederherzustellen"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ist deaktiviert"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ist deinstalliert"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Um die App wiederherzustellen, musst du den <xliff:g id="INSTALLERNAME">%1$s</xliff:g> installieren"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Weiter"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Speicherinhalt löschen"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Einstellungen"</string>
+ <string name="close" msgid="5214897374055647996">"Schließen"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-el/strings.xml b/packages/PackageInstaller/res/values-el/strings.xml
index ea4eeb68d2c1..f5deac9aa9c5 100644
--- a/packages/PackageInstaller/res/values-el/strings.xml
+++ b/packages/PackageInstaller/res/values-el/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Διατήρηση <xliff:g id="SIZE">%1$s</xliff:g> δεδομένων εφαρμογών."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Θέλετε να διαγράψετε αυτή την εφαρμογή;"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Θέλετε να απεγκαταστήσετε αυτή την εφαρμογή; Θα διαγραφεί επίσης το διπλότυπο της εφαρμογής <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Θέλετε να απεγκαταστήσετε αυτή την εφαρμογή από τον ιδιωτικό χώρο;"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Απεγκαταστάσεις σε εξέλιξη"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Αποτυχημένες απεγκαταστάσεις"</string>
<string name="uninstalling" msgid="8709566347688966845">"Απεγκατάσταση…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Επαναφορά <xliff:g id="APPNAME">%1$s</xliff:g> από <xliff:g id="INSTALLERNAME">%1$s</xliff:g>;"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Η λήψη της εφαρμογής θα ξεκινήσει στο παρασκήνιο"</string>
<string name="restore" msgid="8460854736328970444">"Επαναφορά"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Είστε εκτός σύνδεσης"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Θα γίνει αυτόματη επαναφορά αυτής της εφαρμογής όταν είστε συνδεδεμένοι στο διαδίκτυο"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Κάτι πήγε στραβά"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Παρουσιάστηκε κάποιο πρόβλημα κατά την επαναφορά αυτής της εφαρμογής"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Δεν επαρκεί ο αποθηκευτικός χώρος"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Για να επαναφέρετε αυτή την εφαρμογή, μπορείτε να ελευθερώσετε χώρο στη συσκευή. Απαιτούμενος αποθηκευτικός χώρος: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Απαιτούμενη ενέργεια"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Ακολουθήστε τα επόμενα βήματα για να επαναφέρετε αυτή την εφαρμογή"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Το <xliff:g id="INSTALLERNAME">%1$s</xliff:g> είναι απενεργοποιημένο"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Το <xliff:g id="INSTALLERNAME">%1$s</xliff:g> έχει απεγκατασταθεί"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Για να επαναφέρετε αυτή την εφαρμογή, πρέπει να εγκαταστήσετε το <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Συνέχεια"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Διαγραφή αποθηκευτικού χώρου"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Ρυθμίσεις"</string>
+ <string name="close" msgid="5214897374055647996">"Κλείσιμο"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-en-rAU/strings.xml b/packages/PackageInstaller/res/values-en-rAU/strings.xml
index 01871720605e..4ad4fa12bea7 100644
--- a/packages/PackageInstaller/res/values-en-rAU/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rAU/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Do you want to delete this app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Do you want to uninstall this app? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone will also be deleted."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Do you want to uninstall this app from your private space?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
<string name="uninstalling" msgid="8709566347688966845">"Uninstalling…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restore <xliff:g id="APPNAME">%1$s</xliff:g> from <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"This app will start downloading in the background"</string>
<string name="restore" msgid="8460854736328970444">"Restore"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"You\'re offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"This app will automatically restore when you\'re connected to the Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Something went wrong"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"There was a problem trying to restore this app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Not enough storage"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"To restore this app, you can free up space on this device. Storage required: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Clear storage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Settings"</string>
+ <string name="close" msgid="5214897374055647996">"Close"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-en-rCA/strings.xml b/packages/PackageInstaller/res/values-en-rCA/strings.xml
index 9b31f27bcd4a..831ee1b4f442 100644
--- a/packages/PackageInstaller/res/values-en-rCA/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rCA/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Do you want to delete this app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Do you want to uninstall this app? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone will also be deleted."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Do you want to uninstall this app from your private space?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstalls"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstalls"</string>
<string name="uninstalling" msgid="8709566347688966845">"Uninstalling…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restore <xliff:g id="APPNAME">%1$s</xliff:g> from <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"This app will begin to download in the background"</string>
<string name="restore" msgid="8460854736328970444">"Restore"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"You\'re offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"This app will automatically restore when you\'re connected to the internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Something went wrong"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"There was a problem trying to restore this app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Not enough storage"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"To restore this app, you can free up space on this device. Storage required: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Clear storage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Settings"</string>
+ <string name="close" msgid="5214897374055647996">"Close"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-en-rGB/strings.xml b/packages/PackageInstaller/res/values-en-rGB/strings.xml
index 01871720605e..4ad4fa12bea7 100644
--- a/packages/PackageInstaller/res/values-en-rGB/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rGB/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Do you want to delete this app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Do you want to uninstall this app? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone will also be deleted."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Do you want to uninstall this app from your private space?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
<string name="uninstalling" msgid="8709566347688966845">"Uninstalling…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restore <xliff:g id="APPNAME">%1$s</xliff:g> from <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"This app will start downloading in the background"</string>
<string name="restore" msgid="8460854736328970444">"Restore"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"You\'re offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"This app will automatically restore when you\'re connected to the Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Something went wrong"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"There was a problem trying to restore this app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Not enough storage"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"To restore this app, you can free up space on this device. Storage required: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Clear storage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Settings"</string>
+ <string name="close" msgid="5214897374055647996">"Close"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-en-rIN/strings.xml b/packages/PackageInstaller/res/values-en-rIN/strings.xml
index 01871720605e..4ad4fa12bea7 100644
--- a/packages/PackageInstaller/res/values-en-rIN/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rIN/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Do you want to delete this app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Do you want to uninstall this app? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone will also be deleted."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Do you want to uninstall this app from your private space?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
<string name="uninstalling" msgid="8709566347688966845">"Uninstalling…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restore <xliff:g id="APPNAME">%1$s</xliff:g> from <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"This app will start downloading in the background"</string>
<string name="restore" msgid="8460854736328970444">"Restore"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"You\'re offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"This app will automatically restore when you\'re connected to the Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Something went wrong"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"There was a problem trying to restore this app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Not enough storage"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"To restore this app, you can free up space on this device. Storage required: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Clear storage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Settings"</string>
+ <string name="close" msgid="5214897374055647996">"Close"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-en-rXC/strings.xml b/packages/PackageInstaller/res/values-en-rXC/strings.xml
index 67ffce594557..9ed871eb316a 100644
--- a/packages/PackageInstaller/res/values-en-rXC/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rXC/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‏‎‎Keep ‎‏‎‎‏‏‎<xliff:g id="SIZE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ of app data.‎‏‎‎‏‎"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎Do you want to delete this app?‎‏‎‎‏‎"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‎Do you want to uninstall this app? ‎‏‎‎‏‏‎<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>‎‏‎‎‏‏‏‎ clone will also be deleted.‎‏‎‎‏‎"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‎Do you want to uninstall this app from your private space?‎‏‎‎‏‎"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎Running uninstalls‎‏‎‎‏‎"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‎‎‎Failed uninstalls‎‏‎‎‏‎"</string>
<string name="uninstalling" msgid="8709566347688966845">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎Uninstalling…‎‏‎‎‏‎"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‎‎‎‎‏‏‎‏‎Restore ‎‏‎‎‏‏‎<xliff:g id="APPNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ from ‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎‎This app will begin to download in the background‎‏‎‎‏‎"</string>
<string name="restore" msgid="8460854736328970444">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎Restore‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‎‎‎‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎You\'re offline‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‎This app will automatically restore when you\'re connected to the internet‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎Something went wrong‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‏‏‎There was a problem trying to restore this app‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‎‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎Not enough storage‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‏‏‎‎‏‏‏‎‏‏‎‎‎To restore this app, you can free up space on this device. Storage required: ‎‏‎‎‏‏‎<xliff:g id="BYTES">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‏‎Action required‎‏‎‎‏‎"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎Follow the next steps to restore this app‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is disabled‎‏‎‎‏‎"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is uninstalled‎‏‎‎‏‎"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‎To restore this app, you\'ll need to install ‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎Continue‎‏‎‎‏‎"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‏‎‏‎‏‎‎‎‎Clear storage‎‏‎‎‏‎"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎Settings‎‏‎‎‏‎"</string>
+ <string name="close" msgid="5214897374055647996">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‏‏‏‏‎‎‎Close‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-es-rUS/strings.xml b/packages/PackageInstaller/res/values-es-rUS/strings.xml
index 2a8559a605ba..631875eef73b 100644
--- a/packages/PackageInstaller/res/values-es-rUS/strings.xml
+++ b/packages/PackageInstaller/res/values-es-rUS/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Guardar <xliff:g id="SIZE">%1$s</xliff:g> en datos de apps"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"¿Quieres borrar esta app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"¿Quieres desinstalar esta app? También se borrará el clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"¿Quieres desinstalar esta app de tu espacio privado?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalaciones activas"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalaciones con errores"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstalando…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"¿Quieres restablecer <xliff:g id="APPNAME">%1$s</xliff:g> desde <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Esta app comenzará la descarga en segundo plano"</string>
<string name="restore" msgid="8460854736328970444">"Restablecer"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"No tienes conexión"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Se restablecerá automáticamente esta app cuando te conectes a Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Se produjo un error"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Hubo un problema al intentar restablecer esta app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"No hay suficiente espacio de almacenamiento"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para restablecer la app, deberás liberar espacio en este dispositivo. Almacenamiento requerido: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Acción obligatoria"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Sigue los próximos pasos para restablecer esta app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Se inhabilitó <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"No se instaló <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restablecer esta app, deberás instalar <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Liberar almacenamiento"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Configuración"</string>
+ <string name="close" msgid="5214897374055647996">"Cerrar"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-es/strings.xml b/packages/PackageInstaller/res/values-es/strings.xml
index 5e1022bf4c5a..bf85728c9090 100644
--- a/packages/PackageInstaller/res/values-es/strings.xml
+++ b/packages/PackageInstaller/res/values-es/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Mantener <xliff:g id="SIZE">%1$s</xliff:g> de datos de aplicaciones."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"¿Quieres eliminar esta aplicación?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"¿Quieres desinstalar esta aplicación? El clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> también se eliminará."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"¿Quieres desinstalar esta aplicación de tu espacio privado?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalaciones en curso"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalaciones fallidas"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstalando…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"¿Restaurar <xliff:g id="APPNAME">%1$s</xliff:g> de <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Esta aplicación comenzará a descargarse en segundo plano"</string>
<string name="restore" msgid="8460854736328970444">"Restaurar"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"No tienes conexión a Internet"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Esta aplicación se restaurará automáticamente cuando tengas conexión a Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Se ha producido un error"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"No se ha podido restaurar esta aplicación"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"No hay suficiente espacio"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para restaurar esta aplicación, libera espacio del dispositivo. Almacenamiento necesario: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Acción necesaria"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Sigue los pasos que se indican a continuación para restaurar esta aplicación"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> está inhabilitada"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desinstalada"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar esta aplicación, tendrás que instalar <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Borrar almacenamiento"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Ajustes"</string>
+ <string name="close" msgid="5214897374055647996">"Cerrar"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-et/strings.xml b/packages/PackageInstaller/res/values-et/strings.xml
index 2bd2c04574da..db3c7dcb9402 100644
--- a/packages/PackageInstaller/res/values-et/strings.xml
+++ b/packages/PackageInstaller/res/values-et/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Säilita rakenduse andmete hulk <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Kas soovite selle rakenduse kustutada?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Kas soovite selle rakenduse desinstallida? Rakenduse <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> kloon kustutatakse samuti."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Kas soovite selle rakenduse oma privaatsest ruumist desinstallida?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Käimasolevad desinstallimised"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ebaõnnestunud desinstallimised"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstallimine …"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Kas taastada rakendus <xliff:g id="APPNAME">%1$s</xliff:g> rakenduse <xliff:g id="INSTALLERNAME">%1$s</xliff:g> kaudu?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Selle rakenduse allalaadimine algab taustal"</string>
<string name="restore" msgid="8460854736328970444">"Taasta"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Võrguühendus puudub"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"See rakendus taastatakse automaatselt, kui olete Internetiga ühendatud"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Midagi läks valesti"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Selle rakenduse taastamisel ilmnes probleem"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Pole piisavalt salvestusruumi"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Selle rakenduse taastamiseks saate selles seadmes ruumi vabastada. Vajalik salvestusruum: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Toiming on vajalik"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Selle rakenduse taastamiseks järgige järgmisi samme"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> on keelatud"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> on desinstallitud"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Selle rakenduse taastamiseks peate installima: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Jätka"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Tühjenda salvestusruum"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Seaded"</string>
+ <string name="close" msgid="5214897374055647996">"Sule"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-eu/strings.xml b/packages/PackageInstaller/res/values-eu/strings.xml
index 574d4ab69374..e6fe660a9aee 100644
--- a/packages/PackageInstaller/res/values-eu/strings.xml
+++ b/packages/PackageInstaller/res/values-eu/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Mantendu aplikazioetako datuen <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Aplikazioa ezabatu nahi duzu?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Aplikazioa desinstalatu nahi duzu? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> aplikazioaren klona ere ezabatuko da."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Aplikazioa eremu pribatutik desinstalatu nahi duzu?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Abian diren desinstalatze-eragiketak"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalatu ezin izan direnak"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstalatzen…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> aplikaziotik leheneratu nahi duzu <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Atzeko planoan deskargatuko da aplikazioa"</string>
<string name="restore" msgid="8460854736328970444">"Leheneratu"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Ez zaude konektatuta Internetera"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Aplikazioa automatikoki leheneratuko da Internetera konektatzen zarenean"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Arazoren bat izan da"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Arazo bat izan da aplikazioa leheneratzean"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Ez dago behar adina toki"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Aplikazioa leheneratzeko, egin tokia gailuan. Behar den tokia: <xliff:g id="BYTES">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Zerbait egin behar duzu"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Aplikazioa leheneratzeko, egin hurrengo urratsak"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> desgaituta dago"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ez dago instalatuta"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Aplikazioa leheneratzeko, <xliff:g id="INSTALLERNAME">%1$s</xliff:g> instalatu beharko duzu"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Egin aurrera"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Egin tokia"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Ezarpenak"</string>
+ <string name="close" msgid="5214897374055647996">"Itxi"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-fa/strings.xml b/packages/PackageInstaller/res/values-fa/strings.xml
index 1869cb622d35..014dd93980bf 100644
--- a/packages/PackageInstaller/res/values-fa/strings.xml
+++ b/packages/PackageInstaller/res/values-fa/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> از داده‌های برنامه را نگه‌دارید."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"می‌خواهید این برنامه را حذف کنید؟"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"می‌خواهید این برنامه را حذف نصب کنید؟ همسانه <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> هم حذف خواهد شد."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"می‌خواهید این برنامه از فضای خصوصی حذف نصب شود؟"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"حذف‌نصب‌های درحال انجام"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"حذف‌نصب‌های ناموفق"</string>
<string name="uninstalling" msgid="8709566347688966845">"درحال حذف نصب..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> از <xliff:g id="INSTALLERNAME">%1$s</xliff:g> بازیابی شود؟"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"این برنامه در پس‌زمینه شروع به بارگیری می‌کند"</string>
<string name="restore" msgid="8460854736328970444">"بازیابی"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"آفلاین هستید"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"وقتی به اینترنت متصل شوید، این برنامه به‌طور خودکار بازیابی خواهد شد"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"مشکلی پیش آمد"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"هنگام بازیابی این برنامه مشکلی پیش آمد"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"فضای ذخیره‌سازی کافی نیست"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"برای بازیابی این برنامه، می‌توانید فضای این دستگاه را آزاد کنید. فضای ذخیره‌سازی لازم: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"اقدام لازم است"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"برای بازیابی این برنامه، مراحل بعدی را دنبال کنید"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غیرفعال است"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> حذف نصب شده است"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"برای بازیابی این برنامه، باید <xliff:g id="INSTALLERNAME">%1$s</xliff:g> را نصب کنید"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ادامه دادن"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"پاک کردن فضای ذخیره‌سازی"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"تنظیمات"</string>
+ <string name="close" msgid="5214897374055647996">"بستن"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-fi/strings.xml b/packages/PackageInstaller/res/values-fi/strings.xml
index 8f960ea50166..78e4067e7be0 100644
--- a/packages/PackageInstaller/res/values-fi/strings.xml
+++ b/packages/PackageInstaller/res/values-fi/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Säilytä <xliff:g id="SIZE">%1$s</xliff:g> sovellusdataa"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Haluatko poistaa tämän sovelluksen?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Haluatko poistaa tämän sovelluksen? Myös klooni (<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>) poistetaan."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Haluatko poistaa tämän sovelluksen yksityisestä tilasta?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Käynnissä olevat poistot"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Epäonnistuneet poistot"</string>
<string name="uninstalling" msgid="8709566347688966845">"Poistetaan…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Palautetaanko <xliff:g id="APPNAME">%1$s</xliff:g> sovelluksella <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Sovelluksen lataus aloitetaan taustalla"</string>
<string name="restore" msgid="8460854736328970444">"Palauta"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Olet offline-tilassa"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Sovellus palautuu automaattiseti, kun olet yhteydessä internetiin"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Jotain meni pieleen"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Sovelluksen palauttamisessa oli ongelma"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Tallennustila ei riitä"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Voit palauttaa sovelluksen vapauttamalla tilaa laitteella. Vaadittu tallennustila: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Toimi nyt"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Seuraa vaiheita sovelluksen palauttamiseen"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> on poistettu käytöstä"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Asennus on poistettu (<xliff:g id="INSTALLERNAME">%1$s</xliff:g>)"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Asenna <xliff:g id="INSTALLERNAME">%1$s</xliff:g>, jotta voit palauttaa sovelluksen"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Jatka"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Tyhjennä tallennustila"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Asetukset"</string>
+ <string name="close" msgid="5214897374055647996">"Sulje"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-fr-rCA/strings.xml b/packages/PackageInstaller/res/values-fr-rCA/strings.xml
index 647a7b5a6141..8415b511b337 100644
--- a/packages/PackageInstaller/res/values-fr-rCA/strings.xml
+++ b/packages/PackageInstaller/res/values-fr-rCA/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Garder <xliff:g id="SIZE">%1$s</xliff:g> de données d\'application."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Voulez-vous supprimer cette application?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Voulez-vous désinstaller cette application? Le clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sera aussi supprimé."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Voulez-vous désinstaller cette application de votre Espace privé?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Désinstallations en cours…"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Désinstallations échouées"</string>
<string name="uninstalling" msgid="8709566347688966845">"Désinstallation en cours…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restaurer <xliff:g id="APPNAME">%1$s</xliff:g> à partir de <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Le téléchargement de cette application commencera en arrière-plan"</string>
<string name="restore" msgid="8460854736328970444">"Restaurer"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Vous êtes hors ligne"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Cette application sera automatiquement restaurée lorsque vous serez connecté à Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Un problème est survenu"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Un problème est survenu lors de la restauration de cette application"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Espace de stockage insuffisant"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Pour restaurer cette application, vous devez libérer de l\'espace de stockage sur cet appareil. Espace de stockage requis : <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Action requise"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Suivez les étapes suivantes pour restaurer cette application"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> est désactivé"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> est désinstallé"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pour restaurer cette application, vous devrez installer <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuer"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Effacer le stockage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Paramètres"</string>
+ <string name="close" msgid="5214897374055647996">"Fermer"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-fr/strings.xml b/packages/PackageInstaller/res/values-fr/strings.xml
index 3cf043b9c353..a90fdce1582a 100644
--- a/packages/PackageInstaller/res/values-fr/strings.xml
+++ b/packages/PackageInstaller/res/values-fr/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Conserver <xliff:g id="SIZE">%1$s</xliff:g> de données d\'application."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Voulez-vous supprimer cette appli ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Voulez-vous désinstaller cette appli ? Le clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sera supprimé aussi."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Souhaitez-vous désinstaller cette application de votre Espace privé ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Désinstallations en cours"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Échec des désinstallations"</string>
<string name="uninstalling" msgid="8709566347688966845">"Désinstallation…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restaurer <xliff:g id="APPNAME">%1$s</xliff:g> depuis <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Cette application commencera à se télécharger en arrière-plan"</string>
<string name="restore" msgid="8460854736328970444">"Restaurer"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Vous n\'êtes pas connecté"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"L\'application sera automatiquement restaurée lorsque vous serez connecté à Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Un problème est survenu"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Un problème est survenu lors de la restauration de cette application"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Espace de stockage insuffisant"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Pour restaurer cette application, vous pouvez libérer de l\'espace sur cet appareil. Espace de stockage requis : <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Action requise"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Suivre la procédure ci-dessous pour restaurer cette application"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> est désactivé"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> n\'est pas installé"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pour restaurer cette application, vous devrez installer <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuer"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Vider l\'espace de stockage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Paramètres"</string>
+ <string name="close" msgid="5214897374055647996">"Fermer"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-gl/strings.xml b/packages/PackageInstaller/res/values-gl/strings.xml
index eeb1f953a8a9..a758e32d98ce 100644
--- a/packages/PackageInstaller/res/values-gl/strings.xml
+++ b/packages/PackageInstaller/res/values-gl/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Conservar os datos da aplicación, que ocupan <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Queres eliminar esta aplicación?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Queres desinstalar esta aplicación? Tamén se eliminará o clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Queres desinstalar esta aplicación do teu espazo privado?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalacións en curso"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Erros nas desinstalacións"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstalando…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Queres restaurar <xliff:g id="APPNAME">%1$s</xliff:g> desde <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Esta aplicación comezará a descargarse en segundo plano"</string>
<string name="restore" msgid="8460854736328970444">"Restaurar"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Estás sen conexión"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Esta aplicación restaurarase automaticamente cando te conectes a Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Produciuse un erro"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Produciuse un problema ao restaurar esta aplicación"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Non hai almacenamento suficiente"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para restaurar esta aplicación, podes liberar espazo neste dispositivo. Espazo de almacenamento necesario: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Acción necesaria"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Completa os pasos seguintes para restaurar esta aplicación"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Desactivouse <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Desinstalouse <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar esta aplicación, tes que instalar <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Liberar almacenamento"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Configuración"</string>
+ <string name="close" msgid="5214897374055647996">"Pechar"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-gu/strings.xml b/packages/PackageInstaller/res/values-gu/strings.xml
index e1f188724b16..4873303d7e3f 100644
--- a/packages/PackageInstaller/res/values-gu/strings.xml
+++ b/packages/PackageInstaller/res/values-gu/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g>નો ઍપ ડેટા રાખો."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"શું તમે આ ઍપ ડિલીટ કરવા માગો છો?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"શું તમે આ ઍપને અનઇન્સ્ટૉલ કરવા માગો છો? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ની ક્લોન પણ ડિલીટ કરવામાં આવશે."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"શું તમે તમારી ખાનગી સ્પેસમાંથી આ ઍપ અનઇન્સ્ટૉલ કરવા માગો છો?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ચાલી રહેલા અનઇન્સ્ટૉલ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"નિષ્ફળ થયેલા અનઇન્સ્ટૉલ"</string>
<string name="uninstalling" msgid="8709566347688966845">"અનઇન્સ્ટૉલ કરી રહ્યાં છીએ…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>માંથી <xliff:g id="APPNAME">%1$s</xliff:g> રિસ્ટોર કરીએ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"બૅકગ્રાઉન્ડમાં આ ઍપ ડાઉનલોડ થવાનું શરૂ થશે"</string>
<string name="restore" msgid="8460854736328970444">"રિસ્ટોર કરો"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"તમે ઑફલાઇન છો"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"જ્યારે તમે ઇન્ટરનેટ સાથે કનેક્ટેડ થશો, ત્યારે આ ઍપ ઑટોમૅટિક રીતે રિસ્ટોર થશે"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"કંઈક ખોટું થયું"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"આ ઍપને રિસ્ટોર કરવામાં કોઈ સમસ્યા આવી હતી"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"પર્યાપ્ત સ્ટોરેજ નથી"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"આ ઍપને રિસ્ટોર કરવા માટે, તમે આ ડિવાઇસ પર સ્પેસ ખાલી કરી શકો છો. આવશ્યક સ્ટોરેજ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"પગલું આવશ્યક છે"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"આ ઍપને રિસ્ટોર કરવા માટે આગળના પગલાં અનુસરો"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> બંધ છે"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> અનઇન્સ્ટૉલ કર્યું છે"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"આ ઍપને રિસ્ટોર કરવા માટે, તમારે <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ઇન્સ્ટૉલ કરવું જરૂરી છે"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"આગળ વધો"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"સ્ટોરેજ સાફ કરો"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"સેટિંગ"</string>
+ <string name="close" msgid="5214897374055647996">"બંધ કરો"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-hi/strings.xml b/packages/PackageInstaller/res/values-hi/strings.xml
index 642bbd9baff3..1e2dea2a8e36 100644
--- a/packages/PackageInstaller/res/values-hi/strings.xml
+++ b/packages/PackageInstaller/res/values-hi/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ऐप्लिकेशन डेटा रखें."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"क्या आपको यह ऐप्लिकेशन मिटाना है?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"क्या आपको यह ऐप्लिकेशन अनइंस्टॉल करना है? इससे <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> का क्लोन भी मिट जाएगा."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"क्या आपको अपने प्राइवेट स्पेस से यह ऐप्लिकेशन अनइंस्टॉल करना है?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"वे अनइंस्टॉल जो चल रहे हैं"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"वे अनइंस्टॉल जो सफल नहीं रहे"</string>
<string name="uninstalling" msgid="8709566347688966845">"अनइंस्‍टॉल हो रहा है…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> को <xliff:g id="INSTALLERNAME">%1$s</xliff:g> से वापस लाएं?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"यह ऐप्लिकेशन, बैकग्राउंड में डाउनलोड होना शुरू हो जाएगा"</string>
<string name="restore" msgid="8460854736328970444">"वापस लाएं"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"आप ऑफ़लाइन हैं"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"इंटरनेट कनेक्शन होने पर, यह ऐप्लिकेशन अपने-आप वापस आ जाएगा"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"कोई गड़बड़ी हुई"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"इस ऐप्लिकेशन को वापस लाने में समस्या हुई"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"डिवाइस का स्टोरेज ज़रूरत से कम है"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"इस ऐप्लिकेशन को वापस लाने के लिए, इस डिवाइस में स्टोरेज खाली करें. इतने स्टोरेज की ज़रूरत है: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"कार्रवाई ज़रूरी है"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"इस ऐप्लिकेशन को वापस लाने के लिए, दिया गया तरीका अपनाएं"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> बंद है"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अनइंस्टॉल है"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"इस ऐप्लिकेशन को वापस लाने के लिए, आपको <xliff:g id="INSTALLERNAME">%1$s</xliff:g> इंस्टॉल करना होगा"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"जारी रखें"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"स्टोरेज खाली करें"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Settings"</string>
+ <string name="close" msgid="5214897374055647996">"बंद करें"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-hr/strings.xml b/packages/PackageInstaller/res/values-hr/strings.xml
index 69ce3f13fec8..34901a48f429 100644
--- a/packages/PackageInstaller/res/values-hr/strings.xml
+++ b/packages/PackageInstaller/res/values-hr/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zadrži <xliff:g id="SIZE">%1$s</xliff:g> podataka aplikacije."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Želite li izbrisati ovu aplikaciju?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Želite li deinstalirati ovu aplikaciju? Klon za <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> također će se izbrisati."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Želite li deinstalirati ovu aplikaciju iz svojeg privatnog prostora?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Deinstaliranja u tijeku"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspjela deinstaliranja"</string>
<string name="uninstalling" msgid="8709566347688966845">"Deinstaliranje…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Želite li vratiti aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g> putem aplikacije <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Ova aplikacija počet će se preuzimati u pozadini"</string>
<string name="restore" msgid="8460854736328970444">"Vrati"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Niste povezani s internetom"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Aplikacija će se automatski vratiti kad se povežete s internetom"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Nešto nije u redu"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Došlo je do problema s vraćanjem aplikacije"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nema dovoljno prostora za pohranu"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Da biste vratili aplikaciju, možete osloboditi prostor za pohranu na ovom uređaju. Potreban prostor za pohranu: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Potrebna je radnja"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Da biste vratili aplikaciju, slijedite upute u nastavku"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> – onemogućeno"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> – deinstalirano"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Da biste vratili aplikaciju, instalirajte sljedeće: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nastavi"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Izbriši pohranu"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Postavke"</string>
+ <string name="close" msgid="5214897374055647996">"Zatvori"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-hu/strings.xml b/packages/PackageInstaller/res/values-hu/strings.xml
index ea8cfc782f72..e8735266e258 100644
--- a/packages/PackageInstaller/res/values-hu/strings.xml
+++ b/packages/PackageInstaller/res/values-hu/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> alkalmazásadat megtartása."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Szeretné törölni ezt az alkalmazást?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Eltávolítja ezt az alkalmazást? A klónozott <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> is törlésre kerül."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Eltávolítja ezt az alkalmazást a privát területről?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Futó eltávolítások"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Sikertelen telepítések"</string>
<string name="uninstalling" msgid="8709566347688966845">"Eltávolítás…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Visszaállítja a(z) <xliff:g id="APPNAME">%1$s</xliff:g> appot innen: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"A háttérben megkezdődik az app letöltése"</string>
<string name="restore" msgid="8460854736328970444">"Visszaállítás"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Az eszköz offline állapotban van"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Automatikusan megtörténik az alkalmazás visszaállítása, amikor Ön csatlakozik az internethez."</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Hiba történt"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Hiba történt az alkalmazás visszaállítása során."</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nincs elegendő tárhely"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Az alkalmazás visszaállításához szabadítson fel tárhelyet ezen az eszközön. Szükséges tárhely: <xliff:g id="BYTES">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Fontos teendő"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Az alkalmazás visszaállításához kövesse a következő lépéseket."</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"A(z) <xliff:g id="INSTALLERNAME">%1$s</xliff:g> le van tiltva"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"A(z) <xliff:g id="INSTALLERNAME">%1$s</xliff:g> nincs telepítve"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Az alkalmazás app visszaállításához telepítse a következőt: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Tovább"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Tárhely ürítése"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Beállítások"</string>
+ <string name="close" msgid="5214897374055647996">"Bezárás"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-hy/strings.xml b/packages/PackageInstaller/res/values-hy/strings.xml
index a447371c8ca4..cccf6b657510 100644
--- a/packages/PackageInstaller/res/values-hy/strings.xml
+++ b/packages/PackageInstaller/res/values-hy/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Չհեռացնել հավելվածների տվյալները (<xliff:g id="SIZE">%1$s</xliff:g>):"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Ջնջե՞լ այս հավելվածը"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Ապատեղադրե՞լ այս հավելվածը։ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-ի կլոնը նույնպես կջնջվի։"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Ապատեղադրե՞լ այս հավելվածը ձեր անձնական տարածքից"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Ընթացիկ ապատեղադրումներ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ձախողված ապատեղադրումներ"</string>
<string name="uninstalling" msgid="8709566347688966845">"Ապատեղադրվում է…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Վերականգնե՞լ <xliff:g id="APPNAME">%1$s</xliff:g> հավելվածը <xliff:g id="INSTALLERNAME">%1$s</xliff:g>-ից"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Այս հավելվածը կներբեռնվի ֆոնային ռեժիմում"</string>
<string name="restore" msgid="8460854736328970444">"Վերականգնել"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Կապ չկա"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Այս հավելվածն ավտոմատ կվերականգնվի, երբ միանաք ինտերնետին"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Սխալ առաջացավ"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Չհաջողվեց վերականգնել այս հավելվածը"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Բավարար տարածք չկա"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Հավելվածը վերականգնելու համար տարածք ազատեք սարքում։ Պահանջվում է <xliff:g id="BYTES">%1$s</xliff:g>։"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Պահանջվում է գործողություն"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Այս հավելվածը վերականգնելու համար կատարեք հաջորդ քայլերը"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածն անջատված է"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածն ապատեղադրված է"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Այս հավելվածը վերականգնելու համար տեղադրեք <xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածը"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Շարունակել"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Մաքրել պահոցը"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Կարգավորումներ"</string>
+ <string name="close" msgid="5214897374055647996">"Փակել"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-in/strings.xml b/packages/PackageInstaller/res/values-in/strings.xml
index 9e24424d9360..5ab5649fab19 100644
--- a/packages/PackageInstaller/res/values-in/strings.xml
+++ b/packages/PackageInstaller/res/values-in/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Pertahankan data aplikasi sebesar <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Ingin menghapus aplikasi ini?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Ingin meng-uninstal aplikasi ini? Clone <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> juga akan dihapus."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Ingin meng-uninstal aplikasi ini dari ruang pribadi?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Menjalankan proses uninstal"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Proses uninstal yang gagal"</string>
<string name="uninstalling" msgid="8709566347688966845">"Meng-uninstal..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Pulihkan <xliff:g id="APPNAME">%1$s</xliff:g> dari <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Aplikasi ini akan mulai didownload di latar belakang"</string>
<string name="restore" msgid="8460854736328970444">"Pulihkan"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Anda offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Aplikasi ini akan otomatis dipulihkan saat Anda terhubung ke internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Terjadi error"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Terjadi error saat mencoba memulihkan aplikasi ini"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Penyimpanan tidak cukup"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Untuk memulihkan aplikasi ini, Anda perlu mengosongkan ruang penyimpanan di perangkat ini. Penyimpanan yang diperlukan: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Tindakan diperlukan"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Ikuti langkah berikutnya untuk memulihkan aplikasi ini"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> dinonaktifkan"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> diuninstal"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Untuk memulihkan aplikasi ini, Anda harus menginstal <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Lanjutkan"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Hapus penyimpanan"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Setelan"</string>
+ <string name="close" msgid="5214897374055647996">"Tutup"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-is/strings.xml b/packages/PackageInstaller/res/values-is/strings.xml
index c24f2844a77a..3822994272cd 100644
--- a/packages/PackageInstaller/res/values-is/strings.xml
+++ b/packages/PackageInstaller/res/values-is/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Halda <xliff:g id="SIZE">%1$s</xliff:g> af forritagögnum."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Viltu eyða þessu forriti?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Viltu fjarlægja þetta forrit? Afriti af <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> verður einnig eytt."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Viltu fjarlægja þetta forrit úr einkarýminu?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Fjarlægingar í gangi"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Fjarlægingar sem mistókust"</string>
<string name="uninstalling" msgid="8709566347688966845">"Fjarlægir…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Endurheimta <xliff:g id="APPNAME">%1$s</xliff:g> úr <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Forritið verður sótt í bakgrunni"</string>
<string name="restore" msgid="8460854736328970444">"Endurheimta"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Þú ert ekki á netinu"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Þetta forrit verður endurheimt sjálfkrafa þegar þú tengist netinu"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Eitthvað fór úrskeiðis"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Vandamál kom upp við að endurheimta þetta forrit"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Ekki nógu mikið geymslurými"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Til að endurheimta þetta forrit geturðu losað um pláss í þessu tæki. Geymslurýmið sem þarf: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Aðgerðar krafist"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Fylgdu næstu skrefum til að endurheimta þetta forrit"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Slökkt er á <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Búið er að fjarlægja <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Þú þarft að setja upp <xliff:g id="INSTALLERNAME">%1$s</xliff:g> til að endurheimta þetta forrit"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Halda áfram"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Hreinsa geymslu"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Stillingar"</string>
+ <string name="close" msgid="5214897374055647996">"Loka"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-it/strings.xml b/packages/PackageInstaller/res/values-it/strings.xml
index 604d88ac4e1d..669a8db80c8f 100644
--- a/packages/PackageInstaller/res/values-it/strings.xml
+++ b/packages/PackageInstaller/res/values-it/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Mantieni <xliff:g id="SIZE">%1$s</xliff:g> di dati delle app."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vuoi eliminare questa app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Vuoi disinstallare questa app? Verrà eliminato anche il clone di <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Vuoi disinstallare questa app dal tuo spazio privato?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Disinstallazioni in esecuzione"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Disinstallazioni non riuscite"</string>
<string name="uninstalling" msgid="8709566347688966845">"Disinstallazione…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Ripristinare <xliff:g id="APPNAME">%1$s</xliff:g> da <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Il download di quest\'app inizierà in background"</string>
<string name="restore" msgid="8460854736328970444">"Ripristina"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Sei offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Quest\'app verrà ripristinata automaticamente quando il dispositivo è connesso a internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Si è verificato un problema"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Si è verificato un problema durante il ripristino di questa app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Spazio di archiviazione insufficiente"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Per ripristinare quest\'app, puoi liberare spazio sul dispositivo. Spazio di archiviazione necessario: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Azione richiesta"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Segui i passaggi successivi per ripristinare quest\'app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> non è attivo"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> è stato disinstallato"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Per ripristinare quest\'app, dovrai installare <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continua"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Libera spazio di archiviazione"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Impostazioni"</string>
+ <string name="close" msgid="5214897374055647996">"Chiudi"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-iw/strings.xml b/packages/PackageInstaller/res/values-iw/strings.xml
index 0e37b2ebd39c..1030e03e19b4 100644
--- a/packages/PackageInstaller/res/values-iw/strings.xml
+++ b/packages/PackageInstaller/res/values-iw/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"שמירת <xliff:g id="SIZE">%1$s</xliff:g> מנתוני האפליקציה."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"למחוק את האפליקציה הזו?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"להסיר את ההתקנה של האפליקציה הזו? השכפול של <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> גם יימחק."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"להסיר את ההתקנה של האפליקציה הזו מהמרחב הפרטי?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"התקנות בתהליכי הסרה"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"הסרות התקנה שנכשלו"</string>
<string name="uninstalling" msgid="8709566347688966845">"בתהליך הסרת התקנה..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"לשחזר את <xliff:g id="APPNAME">%1$s</xliff:g> מ-<xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"תהליך ההורדה של האפליקציה יתחיל ברקע"</string>
<string name="restore" msgid="8460854736328970444">"שחזור"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"אין חיבור לאינטרנט"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"שחזור האפליקציה יתחיל אוטומטית כשהמכשיר יחובר לאינטרנט"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"משהו השתבש"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"הייתה בעיה בניסיון לשחזר את האפליקציה הזו"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"אין מספיק נפח אחסון פנוי"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"כדי לשחזר את האפליקציה הזו צריך לפנות מקום במכשיר. נפח האחסון הנדרש: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"נדרשת פעולה"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"כדי לשחזר את האפליקציה הזו יש לפעול לפי השלבים הבאים"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> במצב מושבת"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"ההתקנה של <xliff:g id="INSTALLERNAME">%1$s</xliff:g> הוסרה"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"כדי לשחזר את האפליקציה הזו, צריך להתקין את <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"המשך"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"צריך לפנות נפח אחסון"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"הגדרות"</string>
+ <string name="close" msgid="5214897374055647996">"סגירה"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ja/strings.xml b/packages/PackageInstaller/res/values-ja/strings.xml
index 58e46a61f872..80b60ffe8f9f 100644
--- a/packages/PackageInstaller/res/values-ja/strings.xml
+++ b/packages/PackageInstaller/res/values-ja/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"アプリのデータ(<xliff:g id="SIZE">%1$s</xliff:g>)を保持"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"このアプリを削除しますか?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"このアプリをアンインストールしますか?<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> のクローンも削除されます。"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"このアプリをプライベート スペースからアンインストールしますか?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"アンインストールを実行しています"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"エラーになったアンインストール"</string>
<string name="uninstalling" msgid="8709566347688966845">"アンインストールしています…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> から <xliff:g id="APPNAME">%1$s</xliff:g> を復元しますか?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"このアプリのダウンロードをバックグラウンドで開始します"</string>
<string name="restore" msgid="8460854736328970444">"復元する"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"オフラインです"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"インターネットに接続すると、このアプリは自動的に復元されます"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"エラーが発生しました"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"このアプリを復元しようとしたときに問題が発生しました"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"空き容量が不足しています"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"このアプリを復元するには、このデバイスの空き容量を増やしてください。必要なストレージ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"必要な対応"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"このアプリを復元するには、次の手順を行います"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> は無効です"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> はアンインストールされています"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"このアプリを復元するには、<xliff:g id="INSTALLERNAME">%1$s</xliff:g> をインストールする必要があります"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"続行"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ストレージの消去"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"設定"</string>
+ <string name="close" msgid="5214897374055647996">"閉じる"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ka/strings.xml b/packages/PackageInstaller/res/values-ka/strings.xml
index bbd63d168072..cfe90500d291 100644
--- a/packages/PackageInstaller/res/values-ka/strings.xml
+++ b/packages/PackageInstaller/res/values-ka/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"შენარჩუნდეს აპების მონაცემების <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"გსურთ ამ აპის წაშლა?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"გსურთ ამ აპის დეინსტალაცია? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> კლონი ასევე წაიშლება."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"გსურთ ამ აპის დეინსტალაცია თქვენი პირადი სივრციდან?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"გაშვებული დეინსტალაციები"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"შეუსრულებელი დეინსტალაციები"</string>
<string name="uninstalling" msgid="8709566347688966845">"მიმდინარეობს დეინსტალაცია…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"აღვადგინოთ <xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="INSTALLERNAME">%1$s</xliff:g>-დან?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ამ აპის ჩამოტვირთვა ფონურ რეჟიმში დაიწყება"</string>
<string name="restore" msgid="8460854736328970444">"აღდგენა"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"თქვენ ხაზგარეშე რეჟიმში ხართ"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ეს აპი ავტომატურად აღდგება, როცა დაუკავშირდებით ინტერნეტს"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"წარმოიქმნა შეფერხება"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ამ აპის აღდგენისას წარმოიქმნა პრობლემა"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"მეხსიერება საკმარისი არ არის"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ამ აპის აღსადგენად შეგიძლიათ, გამოათავისუფლოთ მეხსიერება ამ მოწყობილობაზე. საჭიროა მეხსიერება: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"საჭიროა მოქმედება"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ამ აპის აღსადგენად მიჰყევით შემდეგ ნაბიჯებს"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> გამორთულია"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> დეინსტალირებულია"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ამ აპის აღსადგენად უნდა დააინსტალიროთ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"გაგრძელება"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"მეხსიერების გასუფთავება"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"პარამეტრები"</string>
+ <string name="close" msgid="5214897374055647996">"დახურვა"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-kk/strings.xml b/packages/PackageInstaller/res/values-kk/strings.xml
index 02843b8b2f3d..60f3e66e9776 100644
--- a/packages/PackageInstaller/res/values-kk/strings.xml
+++ b/packages/PackageInstaller/res/values-kk/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Қолданба деректерін (<xliff:g id="SIZE">%1$s</xliff:g>) сақтау."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Осы қолданба жойылсын ба?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Осы қолданба жойылсын ба? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> клоны да жойылады."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Осы құрылғыны жеке бөлмеңізден жойғыңыз келе ме?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Орындалып жатқан жою процестері"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Сәтсіз жою әрекеттері"</string>
<string name="uninstalling" msgid="8709566347688966845">"Жойылуда…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> қолданбасын <xliff:g id="INSTALLERNAME">%1$s</xliff:g> арқылы қалпына келтіру керек пе?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Бұл қолданба фондық режимде жүктеп алына бастайды."</string>
<string name="restore" msgid="8460854736328970444">"Қалпына келтіру"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Құрылғыңыз офлайн режимде"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Бұл қолданба құрылғыңыз интернетке қосылғанда автоматты түрде қалпына келеді."</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Бірдеңе дұрыс болмады"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Бұл құрылғыны қалпына келтіру үшін әрекет жасалғанда мәселе туындады."</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Жадта орын жеткіліксіз"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Бұл қолданбаны қалпына келтіргіңіз келсе, осы құрылғыда орын босатуға болады. Қажетті жад көлемі: <xliff:g id="BYTES">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Әрекет қажет"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Бұл қолданбаны қалпына келтіру үшін келесі қадамдарды орындаңыз."</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> өшірілген"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> жойылған"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Бұл қолданбаны қалпына келтіру үшін орнатқышты (<xliff:g id="INSTALLERNAME">%1$s</xliff:g>) орнатуыңыз керек."</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Жалғастыру"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Жадты тазалау"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Параметрлер"</string>
+ <string name="close" msgid="5214897374055647996">"Жабу"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-km/strings.xml b/packages/PackageInstaller/res/values-km/strings.xml
index bb849762d52f..c7a2b876b802 100644
--- a/packages/PackageInstaller/res/values-km/strings.xml
+++ b/packages/PackageInstaller/res/values-km/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"រក្សាទុក​ទិន្នន័យ​កម្មវិធីទំហំ <xliff:g id="SIZE">%1$s</xliff:g>។"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"តើអ្នកចង់លុបកម្មវិធីនេះដែរឬទេ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"តើ​អ្នក​ចង់​លុប​កម្មវិធី​នេះ​ដែរឬទេ? ក្លូន <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ក៏នឹងត្រូវបានលុបផងដែរ។"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"តើអ្នកចង់លុបកម្មវិធីនេះចេញពី private space របស់អ្នកដែរទេ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"កំពុង​ដំណើរការ​ការលុប"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ការលុប​ដែល​បរាជ័យ"</string>
<string name="uninstalling" msgid="8709566347688966845">"កំពុង​លុប…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"ស្ដារ <xliff:g id="APPNAME">%1$s</xliff:g> ពី <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ឬ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"កម្មវិធីនេះនឹងចាប់ផ្ដើមទាញយកនៅផ្ទៃខាងក្រោយ"</string>
<string name="restore" msgid="8460854736328970444">"ស្ដារ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"អ្នកគ្មាន​អ៊ីនធឺណិត​ទេ"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"កម្មវិធីនេះនឹងស្ដារដោយស្វ័យប្រវត្តិ នៅពេលអ្នកភ្ជាប់អ៊ីនធឺណិត"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"មានអ្វីមួយខុសប្រក្រតី"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"មានបញ្ហាក្នុងការព្យាយាមស្ដារកម្មវិធីនេះ"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ទំហំផ្ទុក​មិន​គ្រប់គ្រាន់"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ដើម្បីស្ដារកម្មវិធីនេះ អ្នកត្រូវបង្កើនទំហំផ្ទុកទំនេរនៅលើឧបករណ៍នេះ។ តម្រូវឱ្យមានទំហំផ្ទុក៖ <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"សកម្មភាព​ដែលតម្រូវឱ្យធ្វើ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"អនុវត្តតាមជំហានបន្ទាប់ ដើម្បីស្ដារកម្មវិធីនេះ"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ត្រូវបានបិទ"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ត្រូវបានលុប"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ដើម្បីស្ដារកម្មវិធីនេះ អ្នកនឹងត្រូវដំឡើង <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"បន្ត"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"សម្អាត​ទំហំ​ផ្ទុក"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ការកំណត់"</string>
+ <string name="close" msgid="5214897374055647996">"បិទ"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-kn/strings.xml b/packages/PackageInstaller/res/values-kn/strings.xml
index 476b45d57261..200edf04c01b 100644
--- a/packages/PackageInstaller/res/values-kn/strings.xml
+++ b/packages/PackageInstaller/res/values-kn/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"ಆ್ಯಪ್ ಡೇಟಾದಲ್ಲಿ <xliff:g id="SIZE">%1$s</xliff:g> ಇರಿಸಿಕೊಳ್ಳಿ."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅಳಿಸಲು ಬಯಸುತ್ತೀರಾ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ಕ್ಲೋನ್ ಅನ್ನು ಸಹ ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ನಿಮ್ಮ ಖಾಸಗಿ ಸ್ಪೇಸ್‌ನಿಂದ ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ನೀವು ಬಯಸುತ್ತೀರಾ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ಚಾಲನೆಯಲ್ಲಿರುವ ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ಗಳು"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ವಿಫಲಗೊಂಡ ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ಗಳು"</string>
<string name="uninstalling" msgid="8709566347688966845">"ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ನಿಂದ <xliff:g id="APPNAME">%1$s</xliff:g> ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಬೇಕೆ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಆಗಲು ಈ ಆ್ಯಪ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ"</string>
<string name="restore" msgid="8460854736328970444">"ಮರುಸ್ಥಾಪಿಸಿ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ನೀವು ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿರುವಿರಿ"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ನೀವು ಇಂಟರ್ನೆಟ್‌ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿದಾಗ, ಈ ಆ್ಯಪ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಸ್ಥಾಪನೆಯಾಗುತ್ತದೆ"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"ಏನೋ ತಪ್ಪಾಗಿದೆ"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ಸಾಕಷ್ಟು ಸಂಗ್ರಹಣೆ ಇಲ್ಲ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು, ನೀವು ಈ ಸಾಧನದಲ್ಲಿ ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಬಹುದು. ಅಗತ್ಯವಿರುವ ಸಂಗ್ರಹಣೆ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ಕ್ರಮದ ಅಗತ್ಯವಿದೆ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಮುಂದಿನ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿದೆ"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು, ನೀವು <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ಮುಂದುವರಿಸಿ"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ಸಂಗ್ರಹಣೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+ <string name="close" msgid="5214897374055647996">"ಮುಚ್ಚಿರಿ"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ko/strings.xml b/packages/PackageInstaller/res/values-ko/strings.xml
index 7ae19ac37cce..d44909072682 100644
--- a/packages/PackageInstaller/res/values-ko/strings.xml
+++ b/packages/PackageInstaller/res/values-ko/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"앱 데이터 크기를 <xliff:g id="SIZE">%1$s</xliff:g>로 유지합니다."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"이 앱을 삭제하시겠습니까?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"이 앱을 제거하시겠습니까? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> 클론도 삭제됩니다."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"비공개 스페이스에서 이 앱을 제거하시겠습니까?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"실행 중인 제거 작업"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"실패한 제거 작업"</string>
<string name="uninstalling" msgid="8709566347688966845">"제거 중..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>에서 <xliff:g id="APPNAME">%1$s</xliff:g> 앱을 복원하시겠습니까?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"백그라운드에서 앱이 다운로드되기 시작합니다"</string>
<string name="restore" msgid="8460854736328970444">"복원"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"오프라인 상태"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"인터넷에 연결되면 이 앱은 자동으로 복원됩니다"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"문제가 발생했습니다"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"이 앱을 복원하려고 시도하던 중 문제가 발생했습니다"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"저장용량 부족"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"이 앱을 사용하려면 이 기기의 여유 공간을 확보해야 합니다 필요한 저장용량: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"조치 필요"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"이 앱을 복원하려면 다음 단계를 따르세요"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 사용 중지됨"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 제거됨"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"이 앱을 복원하려면 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>를 설치해야 합니다"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"계속"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"저장용량 비우기"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"설정"</string>
+ <string name="close" msgid="5214897374055647996">"닫기"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ky/strings.xml b/packages/PackageInstaller/res/values-ky/strings.xml
index faf3df24e8e4..952e6175899a 100644
--- a/packages/PackageInstaller/res/values-ky/strings.xml
+++ b/packages/PackageInstaller/res/values-ky/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Колдонмонун <xliff:g id="SIZE">%1$s</xliff:g> дайындарын сактоо."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Бул колдонмону өчүрөсүзбү?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Бул колдонмону чыгарып саласызбы? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> клону да өчүрүлөт."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Бул колдонмону жеке чөйрөдөн чыгарып саласызбы?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Чыгарылып салынууда"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Чыгарылып салынбай калгандар"</string>
<string name="uninstalling" msgid="8709566347688966845">"Чыгарылып салынууда…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="INSTALLERNAME">%1$s</xliff:g> платформасынан калыбына келтирилсинби?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Бул колдонмо фондо жүктөлүп алына баштайт"</string>
<string name="restore" msgid="8460854736328970444">"Калыбына келтирүү"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Интернет байланышыңыз жок"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Интернетке туташканыңызда бул колдонмо автоматтык түрдө калыбына келтирилет"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Бир жерден ката кетти"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Бул колдонмону калыбына келтирүүдө маселе келип чыкты"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Сактагычта орун жетишсиз"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Бул колдонмону калыбына келтирүү үчүн түзмөктө орун бошотуңуз. Сактагыч талап кылынат: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Аракет талап кылынат"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Бул колдонмону калыбына келтирүү үчүн кийинки кадамдарды аткарыңыз"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> өчүрүлгөн"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> орнотулду"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Бул колдонмону калыбына келтирүү үчүн <xliff:g id="INSTALLERNAME">%1$s</xliff:g> кызматын орнотуп алышыңыз керек"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Улантуу"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Сактагычты тазалоо"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Параметрлер"</string>
+ <string name="close" msgid="5214897374055647996">"Жабуу"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-lo/strings.xml b/packages/PackageInstaller/res/values-lo/strings.xml
index e9b3e8e3bcbb..55c10d47dd7b 100644
--- a/packages/PackageInstaller/res/values-lo/strings.xml
+++ b/packages/PackageInstaller/res/values-lo/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"ຮັກສາຂະໜາດຂໍ້ມູນແອັບ <xliff:g id="SIZE">%1$s</xliff:g> ໄວ້."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ທ່ານຕ້ອງການລຶບແອັບນີ້ບໍ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງແອັບນີ້ບໍ່? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ໂຄລນຈະຖືກລຶບນຳ."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງແອັບນີ້ຈາກພື້ນທີ່ສ່ວນຕົວຂອງທ່ານບໍ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ກຳລັງຖອນການຕິດຕັ້ງ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ຖອນການຕິດຕັ້ງບໍ່ສຳເລັດ"</string>
<string name="uninstalling" msgid="8709566347688966845">"ກຳລັງຖອນການຕິດຕັ້ງ..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"ກູ້ຄືນ <xliff:g id="APPNAME">%1$s</xliff:g> ຈາກ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ບໍ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ແອັບນີ້ຈະເລີ່ມດາວໂຫຼດໃນພື້ນຫຼັງ"</string>
<string name="restore" msgid="8460854736328970444">"ກູ້ຄືນ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ທ່ານອອບລາຍຢູ່"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ແອັບນີ້ຈະກູ້ຄືນໂດຍອັດຕະໂນມັດເມື່ອທ່ານເຊື່ອມຕໍ່ກັບອິນເຕີເນັດ"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ເກີດບັນຫາໃນລະຫວ່າງທີ່ພະຍາຍາມກູ້ຄືນແອັບນີ້"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ບ່ອນຈັດເກັບຂໍ້ມູນບໍ່ພຽງພໍ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ເພື່ອກູ້ຄືນແອັບນີ້, ທ່ານສາມາດເພີ່ມພື້ນທີ່ຫວ່າງໃນອຸປະກອນນີ້ໄດ້. ໂດຍຈະຕ້ອງໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ຕ້ອງດຳເນີນການ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ປະຕິບັດຕາມຂັ້ນຕອນຕໍ່ໄປເພື່ອກູ້ຄືນແອັບນີ້"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ຖືກປິດການນຳໃຊ້"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ຖືກຖອນການຕິດຕັ້ງ"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ເພື່ອກູ້ຄືນແອັບນີ້, ທ່ານຈະຕ້ອງຕິດຕັ້ງ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ສືບຕໍ່"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ລຶບລ້າງບ່ອນຈັດເກັບຂໍ້ມູນ"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ການຕັ້ງຄ່າ"</string>
+ <string name="close" msgid="5214897374055647996">"ປິດ"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-lt/strings.xml b/packages/PackageInstaller/res/values-lt/strings.xml
index 654dee06f895..1184bab48f88 100644
--- a/packages/PackageInstaller/res/values-lt/strings.xml
+++ b/packages/PackageInstaller/res/values-lt/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Palikti <xliff:g id="SIZE">%1$s</xliff:g> programų duomenų."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Ar norite ištrinti šią programą?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Ar norite pašalinti šią programą? „<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>“ kopija taip pat bus ištrinta."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Ar norite pašalinti šią programą iš privačios erdvės?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Vykdomi pašalinimai"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Nepavykę pašalinimai"</string>
<string name="uninstalling" msgid="8709566347688966845">"Pašalinama…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Atkurti „<xliff:g id="APPNAME">%1$s</xliff:g>“ iš „<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Šios programos atsisiuntimas bus pradėtas fone"</string>
<string name="restore" msgid="8460854736328970444">"Atkurti"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Esate neprisijungę"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ši programa bus automatiškai atkurta, kai prisijungsite prie interneto"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Kažkas nepavyko"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Bandant atkurti šią programą iškilo problema"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Trūksta saugyklos vietos"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Kad atkurtumėte šią programą, galite atlaisvinti vietos šiame įrenginyje. Reikia saugyklos vietos: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Būtina imtis veiksmų"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Atlikite toliau nurodytus veiksmus, kad atkurtumėte šią programą"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"„<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“ išjungta"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"„<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“ pašalinta"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Kad atkurtumėte šią programą, turėsite įdiegti „<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Tęsti"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Išvalyti saugyklą"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Nustatymai"</string>
+ <string name="close" msgid="5214897374055647996">"Uždaryti"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-lv/strings.xml b/packages/PackageInstaller/res/values-lv/strings.xml
index 2d319fcc68b7..71d25d4f1cad 100644
--- a/packages/PackageInstaller/res/values-lv/strings.xml
+++ b/packages/PackageInstaller/res/values-lv/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Iegūstiet <xliff:g id="SIZE">%1$s</xliff:g> (lietotnes dati)."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vai vēlaties izdzēst šo lietotni?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Vai vēlaties atinstalēt šo lietotni? Tiks izdzēsts arī lietotnes <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> klons."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Vai vēlaties atinstalēt šo lietotni no savas privātās mapes?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Pašreizējās atinstalēšanas operācijas"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Nesekmīgi atinstalēšanas mēģinājumi"</string>
<string name="uninstalling" msgid="8709566347688966845">"Notiek atinstalēšana…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Vai atjaunot lietotni <xliff:g id="APPNAME">%1$s</xliff:g> no <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Fonā tiks sākta šīs lietotnes lejupielāde."</string>
<string name="restore" msgid="8460854736328970444">"Atjaunot"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Jūs esat bezsaistē"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Šī lietotne tiks automātiski atjaunota, kad izveidosiet savienojumu ar internetu."</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Radās problēma"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Mēģinot atjaunot šo lietotni, radās problēma."</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Krātuvē nepietiek vietas"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Lai atjaunotu šo lietotni, jums ir jāatbrīvo vieta ierīces krātuvē. Nepieciešamā vieta: <xliff:g id="BYTES">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Nepieciešamā darbība"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Veiciet tālāk minētās darbības, lai atjaunotu šo lietotni."</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Programma <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ir atspējota"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Programma <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ir atinstalēta"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Lai atjaunotu šo lietotni, jums ir jāinstalē programma <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Turpināt"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Notīrīt krātuvi"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Iestatījumi"</string>
+ <string name="close" msgid="5214897374055647996">"Aizvērt"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-mk/strings.xml b/packages/PackageInstaller/res/values-mk/strings.xml
index e02c3c53b6db..e68fe06c10e6 100644
--- a/packages/PackageInstaller/res/values-mk/strings.xml
+++ b/packages/PackageInstaller/res/values-mk/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Задржи <xliff:g id="SIZE">%1$s</xliff:g> податоци на апликацијата."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Дали сакате да ја избришете оваа апликација?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Дали сакате да ја деинсталирате оваа апликација? Ќе се избрише и клонот на <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Дали сакате да ја деинсталирате апликацијава од вашиот „Приватен простор“?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Деинсталации во тек"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Неуспешни деинсталации"</string>
<string name="uninstalling" msgid="8709566347688966845">"Се деинсталира…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Да се врати <xliff:g id="APPNAME">%1$s</xliff:g> од <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Апликацијава ќе почне да се презема во заднина"</string>
<string name="restore" msgid="8460854736328970444">"Враќање"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Офлајн сте"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Апликацијава ќе се врати автоматски кога ќе се поврзете на интернет"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Нешто тргна наопаку"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Се јави проблем при обидот за враќање на апликацијава"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Нема доволно простор"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"За да ја вратите апликацијава, може да ослободите простор на уредов. Потребен простор: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Потребно е дејство"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Следете ги следниве чекори за да ја вратите апликацијава"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Оневозможено: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Деинсталирано: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"За да ја вратите апликацијава, треба да инсталирате <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Продолжете"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Ослободете простор"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Поставки"</string>
+ <string name="close" msgid="5214897374055647996">"Затворете"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ml/strings.xml b/packages/PackageInstaller/res/values-ml/strings.xml
index 2e5dcfb7bb4b..0b4b81a06983 100644
--- a/packages/PackageInstaller/res/values-ml/strings.xml
+++ b/packages/PackageInstaller/res/values-ml/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ആപ്പ് ഡാറ്റ വയ്ക്കുക."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ഈ ആപ്പ് ഇല്ലാതാക്കണോ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ഈ ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്യണോ? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ക്ലോൺ ചെയ്യലും ഇല്ലാതാക്കും."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"നിങ്ങളുടെ സ്വകാര്യ സ്‌പെയ്‌സിൽ നിന്ന് ഈ ആപ്പ് അൺഇൻസ്റ്റാൾ ചെയ്യണോ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"നിലവിൽ അൺഇൻസ്‌റ്റാൾ ചെയ്യുന്നവ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"അൺ ഇൻസ്‌റ്റാൾ ചെയ്യാൻ കഴിയാഞ്ഞവ"</string>
<string name="uninstalling" msgid="8709566347688966845">"അണ്‍‌ ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> എന്നതിൽ നിന്ന് <xliff:g id="APPNAME">%1$s</xliff:g> പുനഃസ്ഥാപിക്കണോ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"പശ്ചാത്തലത്തിൽ ഈ ആപ്പ് ഡൗൺലോഡ് ചെയ്ത് തുടങ്ങും"</string>
<string name="restore" msgid="8460854736328970444">"പുനഃസ്ഥാപിക്കുക"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"നിങ്ങൾ ഓഫ്‌ലൈനാണ്"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"നിങ്ങൾ ഇന്റർനെറ്റിലേക്ക് കണക്റ്റ് ചെയ്തിരിക്കുമ്പോൾ, ഈ ആപ്പ് സ്വയമേവ പുനഃസ്ഥാപിക്കും"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"എന്തോ കുഴപ്പമുണ്ടായി"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായി"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"മതിയായ സ്‌റ്റോറേജ് ഇല്ല"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കുന്നതിന്, ഈ ഉപകരണത്തിൽ ഇടം സൃഷ്ടിക്കാം. ആവശ്യമായ സ്‌റ്റോറേജ്: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"നടപടി ആവശ്യമാണ്"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കാൻ തുടർന്നുള്ള ഘട്ടങ്ങൾ പാലിക്കുക"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> അൺഇൻസ്റ്റാൾ ചെയ്തു"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കുന്നതിന്, നിങ്ങൾ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"തുടരുക"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"സ്‌റ്റോറേജ് മായ്‌ക്കുക"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ക്രമീകരണം"</string>
+ <string name="close" msgid="5214897374055647996">"അടയ്‌ക്കുക"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-mn/strings.xml b/packages/PackageInstaller/res/values-mn/strings.xml
index 5deda94ced32..32952ae3796f 100644
--- a/packages/PackageInstaller/res/values-mn/strings.xml
+++ b/packages/PackageInstaller/res/values-mn/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Аппын өгөгдлийн <xliff:g id="SIZE">%1$s</xliff:g>-г үлдээнэ үү."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Та энэ аппыг устгахыг хүсэж байна уу?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Та энэ аппыг устгахыг хүсэж байна уу? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-н хувилалыг мөн устгана."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Та энэ аппыг хувийн орон зайнаасаа устгахдаа итгэлтэй байна уу?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Устгаж байна"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Устгаж чадсангүй"</string>
<string name="uninstalling" msgid="8709566347688966845">"Устгаж байна…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g>-г <xliff:g id="INSTALLERNAME">%1$s</xliff:g>-с сэргээх үү?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Энэ аппыг дэвсгэрт татаж эхэлнэ"</string>
<string name="restore" msgid="8460854736328970444">"Сэргээх"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Та офлайн байна"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Таныг интернэтэд холбогдсон үед энэ аппыг автоматаар сэргээнэ"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Ямар нэг алдаа гарлаа"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Энэ аппыг сэргээхээр оролдоход асуудал гарлаа"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Хангалттай хадгалах сан байхгүй"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Энэ аппыг сэргээхийн тулд та энэ төхөөрөмжид сул зай гаргах боломжтой. Шаардлагатай хадгалах сан: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Арга хэмжээ авах шаардлагатай"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Энэ аппыг сэргээхийн тулд дараах алхмуудыг дагана уу"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г идэвхгүй болгосон"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г устгасан"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Энэ аппыг сэргээхийн тулд та <xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г суулгах шаардлагатай"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Үргэлжлүүлэх"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Хадгалах санг цэвэрлэх"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Тохиргоо"</string>
+ <string name="close" msgid="5214897374055647996">"Хаах"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-mr/strings.xml b/packages/PackageInstaller/res/values-mr/strings.xml
index 53ca4039d93c..77a5b9b86d1e 100644
--- a/packages/PackageInstaller/res/values-mr/strings.xml
+++ b/packages/PackageInstaller/res/values-mr/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"ॲप डेटा पैकी <xliff:g id="SIZE">%1$s</xliff:g> ठेवा."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"तुम्हाला हे अ‍ॅप हटवायचे आहे का?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"तुम्हाला हे अ‍ॅप अनइंस्टॉल करायचे आहे का? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> क्लोनदेखील हटवले जाईल."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"तुम्हाला तुमच्या खाजगी स्पेसमधून हे अ‍ॅप काढून टाकायचे आहे का?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"अनइंस्टॉल रन होत आहेत"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"अनइंस्टॉल करता आले नाही"</string>
<string name="uninstalling" msgid="8709566347688966845">"अनइंस्टॉल करत आहे…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> मधून <xliff:g id="APPNAME">%1$s</xliff:g> रिस्टोअर करायचे आहे का?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"हे ॲप बॅकग्राउंडमध्ये डाउनलोड होण्यास सुरुवात होईल"</string>
<string name="restore" msgid="8460854736328970444">"रिस्टोअर करा"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"तुम्ही ऑफलाइन आहात"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"तुम्ही इंटरनेटशी कनेक्ट केले असेल, तेव्हा हे अ‍ॅप आपोआप रिस्टोअर होईल"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"काहीतरी चुकले"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"हे अ‍ॅप रिस्टोअर करताना समस्या आली होती"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"पुरेसे स्टोरेज नाही"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"हे अ‍ॅप रिस्टोअर करण्यासाठी, तुम्ही या डिव्हाइसवरील जागा मोकळी करू शकता. स्टोरेज आवश्यक आहे: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"कृती आवश्यक आहे"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"हे अ‍ॅप रिस्टोअर करण्यासाठी पुढील पायऱ्या फॉलो करा"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> बंद केले आहे"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अनइंस्टॉल केले आहे"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"हे अ‍ॅप रिस्टोअर करण्यासाठी, तुम्हाला <xliff:g id="INSTALLERNAME">%1$s</xliff:g> इंस्टॉल करावे लागेल"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"पुढे सुरू ठेवा"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"स्‍टोरेज साफ करा"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"सेटिंग्ज"</string>
+ <string name="close" msgid="5214897374055647996">"बंद करा"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ms/strings.xml b/packages/PackageInstaller/res/values-ms/strings.xml
index 4b0b560be73d..7a8537094ef8 100644
--- a/packages/PackageInstaller/res/values-ms/strings.xml
+++ b/packages/PackageInstaller/res/values-ms/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Simpan <xliff:g id="SIZE">%1$s</xliff:g> data apl."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Adakah anda mahu memadamkan apl ini?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Adakah anda mahu menyahpasang apl ini? Klon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> juga akan dipadamkan."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Adakah anda mahu menyahpasang apl ini daripada ruang peribadi anda?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Penyahpasangan yang sedang berjalan"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Penyahpasangan yang gagal"</string>
<string name="uninstalling" msgid="8709566347688966845">"Menyahpasang…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Pulihkan <xliff:g id="APPNAME">%1$s</xliff:g> daripada <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Apl ini akan mula dimuat turun dalam latar"</string>
<string name="restore" msgid="8460854736328970444">"Pulihkan"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Anda berstatus luar talian"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Apl ini akan dipulihkan secara automatik apabila anda disambungkan kepada Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Ada yang tidak kena"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Terdapat masalah semasa memuatkan apl ini"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Storan tidak mencukupi"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Untuk memulihkan apl ini, anda boleh mengosongkan ruang storan pada peranti ini. Storan diperlukan: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Tindakan diperlukan"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Ikut langkah seterusnya untuk memulihkan apl ini"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> dilumpuhkan"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> dinyahpasang"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Untuk memulihkan apl ini, anda perlu memasang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Teruskan"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Kosongkan storan"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Tetapan"</string>
+ <string name="close" msgid="5214897374055647996">"Tutup"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-my/strings.xml b/packages/PackageInstaller/res/values-my/strings.xml
index 302c2c3a1178..21c223c12cbf 100644
--- a/packages/PackageInstaller/res/values-my/strings.xml
+++ b/packages/PackageInstaller/res/values-my/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"အက်ပ်ဒေတာများ၏ <xliff:g id="SIZE">%1$s</xliff:g> ကို ထားရှိရန်။"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ဤအက်ပ်ကို ဖျက်လိုသလား။"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ဤအက်ပ်ကို ဖယ်ရှားလိုသလား။ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ပုံတူပွားကိုလည်း ဖျက်လိုက်မည်။"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ဤအက်ပ်ကို သင့်သီးသန့်နေရာမှ ဖယ်ရှားလိုသလား။"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ပရိုဂရမ်ကို ဖယ်ရှားနေပါသည်"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ပရိုဂရမ်ကို ဖယ်ရှား၍မရပါ"</string>
<string name="uninstalling" msgid="8709566347688966845">"ပရိုဂရမ်ကို ဖယ်ရှားနေသည်..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> မှ <xliff:g id="APPNAME">%1$s</xliff:g> ကို ပြန်ယူမလား။"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ဤအက်ပ်ကို နောက်ခံတွင် စတင်ဒေါင်းလုဒ်လုပ်ပါမည်"</string>
<string name="restore" msgid="8460854736328970444">"ပြန်ယူရန်"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"သင်အော့ဖ်လိုင်း ဖြစ်နေသည်"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"အင်တာနက် ချိတ်ဆက်ထားသည့်အခါ ဤအက်ပ်ကို အလိုအလျောက် ပြန်ယူပါမည်"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"တစ်ခုခုမှားသွားသည်"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ဤအက်ပ်ကို ပြန်ယူရန် ကြိုးပမ်းရာတွင် ပြဿနာရှိသည်"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"သိုလှောင်ခန်း မလုံလောက်ပါ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ဤအက်ပ်ကို ပြန်ယူရန် ဤစက်တွင် နေရာလွတ်ပြုလုပ်နိုင်သည်။ သိုလှောင်ခန်း လိုအပ်သည်- <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"လုပ်ဆောင်ချက် လိုအပ်သည်"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ဤအက်ပ်ကို ပြန်ယူရန် နောက်အဆင့်များအတိုင်း လုပ်ဆောင်ပါ"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ကို ပိတ်ထားသည်"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ကို ဖယ်ရှားထားသည်"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ဤအက်ပ်ကို ပြန်ယူရန် <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ကို ထည့်သွင်းရမည်"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ရှေ့ဆက်ရန်"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"သိုလှောင်ခန်း ရှင်းလင်းရန်"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ဆက်တင်များ"</string>
+ <string name="close" msgid="5214897374055647996">"ပိတ်ရန်"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-nb/strings.xml b/packages/PackageInstaller/res/values-nb/strings.xml
index 65c0cb800a71..86442e1249cb 100644
--- a/packages/PackageInstaller/res/values-nb/strings.xml
+++ b/packages/PackageInstaller/res/values-nb/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Behold <xliff:g id="SIZE">%1$s</xliff:g> med appdata."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vil du slette denne appen?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Vil du avinstallere denne appen? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-klonen slettes også."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Vil du avinstallere denne appen fra det private området ditt?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Avinstalleringer som er i gang"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislykkede avinstalleringer"</string>
<string name="uninstalling" msgid="8709566347688966845">"Avinstallerer …"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Vil du gjenopprette <xliff:g id="APPNAME">%1$s</xliff:g> fra <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Denne appen begynner å laste ned i bakgrunnen"</string>
<string name="restore" msgid="8460854736328970444">"Gjenopprett"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Du er uten nett"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Denne appen gjenopprettes automatisk når du er koblet til internett"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Noe gikk galt"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Det oppsto et problem med å gjenopprette denne appen"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Ikke nok lagringsplass"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"For å gjenopprette denne appen kan du frigjøre plass på enheten. Nødvendig lagringsplass: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Handling påkrevd"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Følg de neste trinnene for å gjenopprette denne appen"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er deaktivert"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er avinstallert"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"For å gjenopprette denne appen må du installere <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Fortsett"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Frigjør lagringsplass"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Innstillinger"</string>
+ <string name="close" msgid="5214897374055647996">"Lukk"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ne/strings.xml b/packages/PackageInstaller/res/values-ne/strings.xml
index b72218c53af7..ee704d00c8eb 100644
--- a/packages/PackageInstaller/res/values-ne/strings.xml
+++ b/packages/PackageInstaller/res/values-ne/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> एपको डेटा राख्नुहोस्।"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"तपाईं यो एप मेटाउन चाहनुहुन्छ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"तपाईं यो एप अनइन्स्टल गर्न चाहनुहुन्छ? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> क्लोन पनि मेटाइने छ।"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"तपाईं आफ्नो निजी स्पेसबाट यो एप अनइन्स्टल गर्न चाहनुहुन्छ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"चलिरहेका स्थापना रद्द गर्ने कार्यहरू"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"असफल भएका स्थापना रद्द गर्ने कार्यहरू"</string>
<string name="uninstalling" msgid="8709566347688966845">"स्थापना रद्द गर्दै…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> बाट <xliff:g id="APPNAME">%1$s</xliff:g> रिस्टोर गर्ने हो?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"यो एप ब्याकग्राउन्डमा डाउनलोड हुन थाल्ने छ"</string>
<string name="restore" msgid="8460854736328970444">"रिस्टोर गर्नुहोस्"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"तपाईंको डिभाइस अफलाइन छ"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"तपाईंको डिभाइस इन्टरनेटमा कनेक्ट भएपछि यो एप स्वतः रिस्टोर हुने छ"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"कुनै समस्या आयो"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"यो एप रिस्टोर गर्ने क्रममा कुनै समस्या आयो"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"पर्याप्त खाली ठाउँ छैन"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"यो एप रिस्टोर गर्न तपाईं यो डिभाइसमा ठाउँ खाली गर्न सक्नुहुन्छ। आवश्यक भण्डारण: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"कारबाही गर्नु पर्ने हुन्छ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"यो एप रिस्टोर गर्न आगामी चरणहरू पालना गर्नुहोस्"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अफ गरिएको छ"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अनइन्स्टल गरिएको छ"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"यो एप रिस्टोर गर्न तपाईंले <xliff:g id="INSTALLERNAME">%1$s</xliff:g> इन्स्टल गर्नु पर्ने हुन्छ"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"जारी राख्नुहोस्"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"भण्डारण खाली गर्नुहोस्"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"सेटिङ"</string>
+ <string name="close" msgid="5214897374055647996">"बन्द गर्नुहोस्"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-nl/strings.xml b/packages/PackageInstaller/res/values-nl/strings.xml
index a1eb7083ab57..a63ff935ade9 100644
--- a/packages/PackageInstaller/res/values-nl/strings.xml
+++ b/packages/PackageInstaller/res/values-nl/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> aan app-gegevens behouden."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Wil je deze app verwijderen?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Wil je deze app verwijderen? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-kloon wordt ook verwijderd."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Wil je deze app verwijderen uit je privéruimte?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Actieve verwijderingen"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislukte verwijderingen"</string>
<string name="uninstalling" msgid="8709566347688966845">"Verwijderen…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> herstellen via <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Deze app wordt gedownload op de achtergrond"</string>
<string name="restore" msgid="8460854736328970444">"Herstellen"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Je bent offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Deze app wordt automatisch hersteld als je verbinding hebt met internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Er is iets misgegaan"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Er is iets misgegaan bij het herstellen van deze app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Onvoldoende opslagruimte"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Je kunt ruimte op dit apparaat vrijmaken om deze app te herstellen. Vereiste opslagruimte: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Actie vereist"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Voer de volgende stappen uit om deze app te herstellen"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uitgezet"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is verwijderd"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Je moet <xliff:g id="INSTALLERNAME">%1$s</xliff:g> installeren om deze app te herstellen"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Doorgaan"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Opslag wissen"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Instellingen"</string>
+ <string name="close" msgid="5214897374055647996">"Sluiten"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml
index a1c685c61122..c9041d1c51cc 100644
--- a/packages/PackageInstaller/res/values-or/strings.xml
+++ b/packages/PackageInstaller/res/values-or/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ଆକାରର ଆପ୍‍ ଡାଟା ରଖନ୍ତୁୁ।"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ଆପଣ ଏହି ଆପକୁ ଡିଲିଟ କରିବାକୁ ଚାହୁଁଛନ୍ତି?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ଆପଣ ଏହି ଆପକୁ ଅନଇନଷ୍ଟଲ କରିବାକୁ ଚାହୁଁଛନ୍ତି? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> କ୍ଲୋନକୁ ମଧ୍ୟ ଡିଲିଟ କରାଯିବ।"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ଆପଣ ଆପଣଙ୍କ ପ୍ରାଇଭେଟ ସ୍ପେସରୁ ଏହି ଆପକୁ ଅନଇନଷ୍ଟଲ କରିବାକୁ ଚାହାଁନ୍ତି?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ଅନଇନଷ୍ଟଲ୍‌ ଚାଲୁଛି"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ବିଫଳ ହୋଇଥିବା ଅନଇନଷ୍ଟଲ୍‌"</string>
<string name="uninstalling" msgid="8709566347688966845">"ଅନ୍‌ଇନଷ୍ଟଲ୍‌ କରାଯାଉଛି…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>ରୁ <xliff:g id="APPNAME">%1$s</xliff:g>କୁ ରିଷ୍ଟୋର କରିବେ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ଏହି ଆପ ପୃଷ୍ଠପଟରେ ଡାଉନଲୋଡ ହେବା ଆରମ୍ଭ କରିବ"</string>
<string name="restore" msgid="8460854736328970444">"ରିଷ୍ଟୋର କରନ୍ତୁ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ଆପଣ ଅଫଲାଇନ ଅଛନ୍ତି"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ଆପଣ ଇଣ୍ଟରନେଟ ସହ କନେକ୍ଟ ହେଲେ ଏହି ଆପ ସ୍ୱତଃ ରିଷ୍ଟୋର ହେବ"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"କିଛି ତ୍ରୁଟି ହୋଇଛି"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ଏହି ଆପ ରିଷ୍ଟୋର କରିବାକୁ ଚେଷ୍ଟା କରିବା ସମୟରେ ଏକ ସମସ୍ୟା ହୋଇଛି"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ଯଥେଷ୍ଟ ଷ୍ଟୋରେଜ ନାହିଁ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ଏହି ଆପ ରିଷ୍ଟୋର କରିବା ପାଇଁ ଆପଣ ଏହି ଡିଭାଇସରେ ସ୍ପେସ ଖାଲି କରିପାରିବେ। ଷ୍ଟୋରେଜ ଆବଶ୍ୟକ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ପଦକ୍ଷେପ ନେବା ଆବଶ୍ୟକ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ଏହି ଆପ ରିଷ୍ଟୋର କରିବାକୁ ପରବର୍ତ୍ତୀ ଷ୍ଟେପଗୁଡ଼ିକୁ ଫଲୋ କରନ୍ତୁ"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>କୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>କୁ ଅନଇନଷ୍ଟଲ କରାଯାଇଛି"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ଏହି ଆପ ରିଷ୍ଟୋର କରିବା ପାଇଁ ଆପଣଙ୍କୁ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ଇନଷ୍ଟଲ କରିବାକୁ ହେବ"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ଜାରି ରଖନ୍ତୁ"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ଷ୍ଟୋରେଜ ଖାଲି କରନ୍ତୁ"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ସେଟିଂସ"</string>
+ <string name="close" msgid="5214897374055647996">"ବନ୍ଦ କରନ୍ତୁ"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-pa/strings.xml b/packages/PackageInstaller/res/values-pa/strings.xml
index 1c7fb862f7bd..d96867231814 100644
--- a/packages/PackageInstaller/res/values-pa/strings.xml
+++ b/packages/PackageInstaller/res/values-pa/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ਐਪ ਡਾਟਾ ਰੱਖੋ।"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ਦੇ ਕਲੋਨ ਨੂੰ ਵੀ ਮਿਟਾਇਆ ਜਾਵੇਗਾ।"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਆਪਣੇ ਨਿੱਜੀ ਸਪੇਸ ਤੋਂ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ਚੱਲ ਰਹੀਆਂ ਅਣਸਥਾਪਨਾਵਾਂ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ਅਸਫਲ ਅਣਸਥਾਪਨਾਵਾਂ"</string>
<string name="uninstalling" msgid="8709566347688966845">"ਅਣਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"ਕੀ <xliff:g id="APPNAME">%1$s</xliff:g> ਨੂੰ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਤੋਂ ਮੁੜ-ਬਹਾਲ ਕਰਨਾ ਹੈ?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ਇਹ ਐਪ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਡਾਊਨਲੋਡ ਹੋਣੀ ਸ਼ੁਰੂ ਹੋ ਜਾਵੇਗੀ"</string>
<string name="restore" msgid="8460854736328970444">"ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ਤੁਸੀਂ ਆਫ਼ਲਾਈਨ ਹੋ"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ਜਦੋਂ ਤੁਸੀਂ ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਹ ਐਪ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਮੁੜ-ਬਹਾਲ ਹੋ ਜਾਵੇਗੀ"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਵੇਲੇ ਕੋਈ ਸਮੱਸਿਆ ਆਈ"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ਲੋੜੀਂਦੀ ਸਟੋਰੇਜ ਨਹੀਂ ਹੈ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਜਗ੍ਹਾ ਖਾਲੀ ਕਰ ਸਕਦੇ ਹੋ। ਲੋੜੀਂਦੀ ਸਟੋਰੇਜ: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ਕਾਰਵਾਈ ਦੀ ਲੋੜ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ ਅਗਲੇ ਪੜਾਵਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਅਣਸਥਾਪਤ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ਜਾਰੀ ਰੱਖੋ"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ਸਟੋਰੇਜ ਕਲੀਅਰ ਕਰੋ"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ਸੈਟਿੰਗਾਂ"</string>
+ <string name="close" msgid="5214897374055647996">"ਬੰਦ ਕਰੋ"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-pl/strings.xml b/packages/PackageInstaller/res/values-pl/strings.xml
index 8fa11ed2bcf4..6aa6aff23598 100644
--- a/packages/PackageInstaller/res/values-pl/strings.xml
+++ b/packages/PackageInstaller/res/values-pl/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zachowaj <xliff:g id="SIZE">%1$s</xliff:g> danych aplikacji."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Chcesz usunąć tę aplikację?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Chcesz odinstalować tę aplikację? Klon aplikacji <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> również zostanie usunięty."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Chcesz odinstalować tę aplikację ze swojego obszaru prywatnego?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Aktywne odinstalowania"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Nieudane odinstalowania"</string>
<string name="uninstalling" msgid="8709566347688966845">"Odinstalowuję…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Przywrócić aplikację <xliff:g id="APPNAME">%1$s</xliff:g> z aplikacji <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Ta aplikacja zacznie pobieranie w tle"</string>
<string name="restore" msgid="8460854736328970444">"Przywróć"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Jesteś offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ta aplikacja zostanie automatycznie przywrócona, gdy połączysz się z internetem"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Coś poszło nie tak"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Podczas przywracania tej aplikacji wystąpił błąd"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Za mało miejsca na dane"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Aby przywrócić tę aplikację, musisz zwolnić miejsce na urządzeniu. Wymagane miejsce na dane: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Wymagane działanie"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Aby przywrócić tę aplikację, wykonaj następne czynności"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Aplikacja <xliff:g id="INSTALLERNAME">%1$s</xliff:g> jest wyłączona"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Aplikacja <xliff:g id="INSTALLERNAME">%1$s</xliff:g> jest odinstalowana"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Aby przywrócić tę aplikację, musisz zainstalować aplikację <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Dalej"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Wyczyść pamięć"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Ustawienia"</string>
+ <string name="close" msgid="5214897374055647996">"Zamknij"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-pt-rBR/strings.xml b/packages/PackageInstaller/res/values-pt-rBR/strings.xml
index 71ecb2b391fc..3f71c4964411 100644
--- a/packages/PackageInstaller/res/values-pt-rBR/strings.xml
+++ b/packages/PackageInstaller/res/values-pt-rBR/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Manter <xliff:g id="SIZE">%1$s</xliff:g> de dados do app."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Quer excluir este app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Quer desinstalar este app? O clone <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> também vai ser excluído."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Você quer desinstalar esse app do seu espaço particular?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Executando desinstalações"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Falha nas desinstalações"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstalando…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restaurar <xliff:g id="APPNAME">%1$s</xliff:g> usando o app <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"O download desse app será feito em segundo plano"</string>
<string name="restore" msgid="8460854736328970444">"Restaurar"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Você está off-line"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Este app será restaurado automaticamente quando você tiver uma conexão de Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Algo deu errado"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Ocorreu um problema ao tentar restaurar este app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Armazenamento insuficiente"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para restaurar o app, libere espaço no dispositivo. Armazenamento necessário: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Ação necessária"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Siga as próximas etapas para restaurar este app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desativada"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> não está instalada"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar o app, instale a <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Limpar armazenamento"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Configurações"</string>
+ <string name="close" msgid="5214897374055647996">"Fechar"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-pt-rPT/strings.xml b/packages/PackageInstaller/res/values-pt-rPT/strings.xml
index 1d5c1a21b140..9d472767d50d 100644
--- a/packages/PackageInstaller/res/values-pt-rPT/strings.xml
+++ b/packages/PackageInstaller/res/values-pt-rPT/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Manter <xliff:g id="SIZE">%1$s</xliff:g> de dados da app."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Quer apagar esta app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Quer desinstalar esta app? O clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> também vai ser apagado."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Quer desinstalar esta app do seu espaço privado?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalações em execução"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalações com falha"</string>
<string name="uninstalling" msgid="8709566347688966845">"A desinstalar…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restaurar <xliff:g id="APPNAME">%1$s</xliff:g> a partir da <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Esta app vai começar a ser transferida em segundo plano"</string>
<string name="restore" msgid="8460854736328970444">"Restaurar"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Está offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Esta app vai ser reposta automaticamente quando estabelecer ligação à Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Algo correu mal"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Ocorreu um problema ao tentar repor esta app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Sem armazenamento suficiente"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para repor esta app, pode libertar espaço neste dispositivo. Armazenamento necessário: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Ação necessária"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Siga os passos abaixo para repor esta app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"O instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desativado"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"O instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desinstalado"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para repor esta app, tem de instalar o instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Limpar armazenamento"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Definições"</string>
+ <string name="close" msgid="5214897374055647996">"Fechar"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-pt/strings.xml b/packages/PackageInstaller/res/values-pt/strings.xml
index 71ecb2b391fc..3f71c4964411 100644
--- a/packages/PackageInstaller/res/values-pt/strings.xml
+++ b/packages/PackageInstaller/res/values-pt/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Manter <xliff:g id="SIZE">%1$s</xliff:g> de dados do app."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Quer excluir este app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Quer desinstalar este app? O clone <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> também vai ser excluído."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Você quer desinstalar esse app do seu espaço particular?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Executando desinstalações"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Falha nas desinstalações"</string>
<string name="uninstalling" msgid="8709566347688966845">"Desinstalando…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restaurar <xliff:g id="APPNAME">%1$s</xliff:g> usando o app <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"O download desse app será feito em segundo plano"</string>
<string name="restore" msgid="8460854736328970444">"Restaurar"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Você está off-line"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Este app será restaurado automaticamente quando você tiver uma conexão de Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Algo deu errado"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Ocorreu um problema ao tentar restaurar este app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Armazenamento insuficiente"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para restaurar o app, libere espaço no dispositivo. Armazenamento necessário: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Ação necessária"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Siga as próximas etapas para restaurar este app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desativada"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> não está instalada"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar o app, instale a <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Limpar armazenamento"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Configurações"</string>
+ <string name="close" msgid="5214897374055647996">"Fechar"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ro/strings.xml b/packages/PackageInstaller/res/values-ro/strings.xml
index 810f5449b052..a48c9c5b62c4 100644
--- a/packages/PackageInstaller/res/values-ro/strings.xml
+++ b/packages/PackageInstaller/res/values-ro/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Păstrează <xliff:g id="SIZE">%1$s</xliff:g> din datele aplicației."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vrei să ștergi această aplicație?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Dezinstalezi această aplicație? Se va șterge și clona <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Dezinstalezi aplicația din spațiul privat?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Dezinstalări în curs"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Dezinstalări nereușite"</string>
<string name="uninstalling" msgid="8709566347688966845">"Se dezinstalează…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Restabilești <xliff:g id="APPNAME">%1$s</xliff:g> din <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Descărcarea aplicației va începe în fundal"</string>
<string name="restore" msgid="8460854736328970444">"Restabilește"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Ești offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Aplicația va fi restabilită automat după ce te conectezi la internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"A apărut o eroare"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"A apărut o problemă la restabilirea aplicației"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nu există suficient spațiu de stocare"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Pentru a restabili aplicația, eliberează spațiu pe dispozitiv. Spațiu de stocare necesar: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Acțiune necesară"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Urmează pașii de mai jos pentru a restabili aplicația"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> este dezactivat"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> este dezinstalat"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pentru a restabili aplicația, va trebui să instalezi <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuă"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Șterge datele stocate"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Setări"</string>
+ <string name="close" msgid="5214897374055647996">"Închide"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ru/strings.xml b/packages/PackageInstaller/res/values-ru/strings.xml
index e368f12db0f0..93cc6d8f7d50 100644
--- a/packages/PackageInstaller/res/values-ru/strings.xml
+++ b/packages/PackageInstaller/res/values-ru/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Сохранить данные приложения (<xliff:g id="SIZE">%1$s</xliff:g>)"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Удалить это приложение?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Удалить это приложение? Клон приложения <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> также будет удален."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Удалить это приложение из личного пространства?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активные процессы удаления"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ошибки удаления"</string>
<string name="uninstalling" msgid="8709566347688966845">"Удаление…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Восстановить приложение \"<xliff:g id="APPNAME">%1$s</xliff:g>\" из <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Приложение начнет скачиваться в фоновом режиме."</string>
<string name="restore" msgid="8460854736328970444">"Восстановить"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Нет доступа к Сети"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Приложение автоматически восстановится, когда устройство будет подключено к интернету."</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Что-то пошло не так"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Не удалось восстановить приложение."</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Недостаточно места"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Чтобы восстановить приложение, освободите место на устройстве. Необходимо <xliff:g id="BYTES">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Требуется действие"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Чтобы восстановить приложение, следуйте дальнейшим инструкциям."</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Установщик \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" отключен"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Установщик \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" удален"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Чтобы восстановить приложение, установите программу \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\"."</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Продолжить"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Очистить хранилище"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Настройки"</string>
+ <string name="close" msgid="5214897374055647996">"Закрыть"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-si/strings.xml b/packages/PackageInstaller/res/values-si/strings.xml
index cea50a608624..7ee1c78fb55f 100644
--- a/packages/PackageInstaller/res/values-si/strings.xml
+++ b/packages/PackageInstaller/res/values-si/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"යෙදුම් දත්තවලින් <xliff:g id="SIZE">%1$s</xliff:g> තබා ගන්න."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ඔබට මෙම යෙදුම මැකීමට අවශ්‍ය ද?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ඔබට මෙම යෙදුම අස්ථාපනය කිරීමට අවශ්‍ය ද? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ක්ලෝනය ද මකා දැමෙනු ඇත."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"ඔබට ඔබේ පෞද්ගලික අවකාශයෙන් මෙම යෙදුම අස්ථාපනය කිරීමට අවශ්‍ය ද?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"අස්ථාපන ධාවනය කරමින්"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"අසාර්ථක වූ අස්ථාපන"</string>
<string name="uninstalling" msgid="8709566347688966845">"අස්ථාපනය කරමින්…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> වෙතින් <xliff:g id="APPNAME">%1$s</xliff:g> ප්‍රතිසාධනය කරන්න ද?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"මෙම යෙදුම පසුබිමේ බාගැනීම ආරම්භ කරනු ඇත"</string>
<string name="restore" msgid="8460854736328970444">"ප්‍රතිසාධනය කරන්න"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ඔබ නොබැඳි වේ"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"ඔබ අන්තර්ජාලයට සම්බන්ධ වූ විට මෙම යෙදුම ස්වයංක්‍රීයව ප්‍රතිසාධනය වනු ඇත"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"යමක් වැරදී ඇත"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"මෙම යෙදුම ප්‍රතිසාධනය කිරීමට උත්සාහ කිරීමේ ගැටලුවක් ඇති විය"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"ප්‍රමාණවත් ආචයනයක් නොමැත"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"මෙම යෙදුම ප්‍රතිසාධනය කිරීම සඳහා, ඔබට මෙම උපාංගයෙහි ඉඩ නිදහස් කර ගත හැක. අවශ්‍ය ආචයනය: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ක්‍රියාමාර්ගය අවශ්‍යයි"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"මෙම යෙදුම ප්‍රතිසාධනය කිරීමට මීළඟ පියවර අනුගමනය කරන්න"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> අබල කර ඇත"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> අස්ථාපනය කර ඇත"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"මෙම යෙදුම ප්‍රතිසාධනය කිරීම සඳහා, ඔබට <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ඉදිරියට යන්න"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ආචයනය හිස් කරන්න"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"සැකසීම්"</string>
+ <string name="close" msgid="5214897374055647996">"වසන්න"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-sk/strings.xml b/packages/PackageInstaller/res/values-sk/strings.xml
index 34117c364a29..785a0801ec22 100644
--- a/packages/PackageInstaller/res/values-sk/strings.xml
+++ b/packages/PackageInstaller/res/values-sk/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zachovať nasledujúcu veľkosť dát aplikácie: <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Chcete túto aplikáciu odstrániť?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Chcete túto aplikáciu odinštalovať? Bude odstránený aj klon aplikácie <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Chcete túto aplikáciu odinštalovať zo svojho súkromného priestoru?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Prebiehajúce odinštalovania"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neúspešné odinštalácie"</string>
<string name="uninstalling" msgid="8709566347688966845">"Prebieha odinštalovanie..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Chcete obnoviť <xliff:g id="APPNAME">%1$s</xliff:g> z inštalátora <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Táto aplikácia sa začne sťahovať na pozadí"</string>
<string name="restore" msgid="8460854736328970444">"Obnoviť"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Ste offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Po pripojení k internetu bude táto aplikácia automaticky obnovená"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Niečo sa pokazilo"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Pri pokuse o obnovenie tejto aplikácie sa vyskytol problém"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Úložisko je nedostatočné"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Ak chcete túto aplikáciu obnoviť, môžete uvoľniť priestor v tomto zariadení. Potrebný priestor: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Vyžaduje sa akcia"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Podľa nasledujúcich krokov obnovte túto aplikáciu"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Inštalátor <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je deaktivovaný"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Inštalátor <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je odinštalovaný"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Ak chcete túto aplikáciu obnoviť, musíte si nainštalovať <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Pokračovať"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Vymazať priestor"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Nastavenia"</string>
+ <string name="close" msgid="5214897374055647996">"Zavrieť"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-sl/strings.xml b/packages/PackageInstaller/res/values-sl/strings.xml
index a3037599523f..eae7c2726bc8 100644
--- a/packages/PackageInstaller/res/values-sl/strings.xml
+++ b/packages/PackageInstaller/res/values-sl/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Obdrži <xliff:g id="SIZE">%1$s</xliff:g> podatkov aplikacije."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Ali želite izbrisati to aplikacijo?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Ali želite odmestiti to aplikacijo? Izbrisana bo tudi klonirana aplikacija <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Ali želite to aplikacijo odmestiti iz zasebnega prostora?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Odstranitve v teku"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspele odstranitve"</string>
<string name="uninstalling" msgid="8709566347688966845">"Odstranjevanje …"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Želite obnoviti aplikacijo <xliff:g id="APPNAME">%1$s</xliff:g> iz aplikacije <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Aplikacija bo začela prenos v ozadju"</string>
<string name="restore" msgid="8460854736328970444">"Obnovi"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Nimate vzpostavljene povezave"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ta aplikacija bo samodejno obnovljena, ko boste povezani v internet."</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Prišlo je do težave"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Pri obnavljanju te aplikacije je prišlo do težave."</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Ni dovolj prostora za shranjevanje"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Če želite obnoviti to aplikacijo, sprostite prostor v tej napravi. Potrebni prostor za shranjevanje: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Potrebno je ukrepanje"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Če želite obnoviti to aplikacijo, uporabite postopek, opisan v nadaljevanju."</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Namestitveni program <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je onemogočen"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Namestitveni program <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je odmeščen"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Če želite obnoviti to aplikacijo, morate namestiti <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nadaljuj"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Počisti shrambo"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Nastavitve"</string>
+ <string name="close" msgid="5214897374055647996">"Zapri"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-sq/strings.xml b/packages/PackageInstaller/res/values-sq/strings.xml
index 7f68c8b9106e..b1f27755a220 100644
--- a/packages/PackageInstaller/res/values-sq/strings.xml
+++ b/packages/PackageInstaller/res/values-sq/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Mbaj <xliff:g id="SIZE">%1$s</xliff:g> nga të dhënat e aplikacionit."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Dëshiron ta fshish këtë aplikacion?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Dëshiron ta çinstalosh këtë aplikacion? Kloni i <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> do të fshihet gjithashtu."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Dëshiron ta çinstalosh këtë aplikacion nga hapësira jote private?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Çinstalimet në ekzekutim"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Çinstalimet e dështuara"</string>
<string name="uninstalling" msgid="8709566347688966845">"Po çinstalohet…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Të restaurohet <xliff:g id="APPNAME">%1$s</xliff:g> nga <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Ky aplikacion do të fillojë të shkarkohet në sfond"</string>
<string name="restore" msgid="8460854736328970444">"Restauro"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Je offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ky aplikacion do të restaurohet automatikisht kur të lidhesh me internetin"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Ndodhi një gabim"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Pati një problem gjatë përpjekjes për të restauruar këtë aplikacion"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Hapësira ruajtëse e pamjaftueshme"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Për ta restauruar këtë aplikacion, mund të lirosh hapësirë në këtë pajisje. Hapësira ruajtëse e kërkuar: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Kërkohet veprim"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Ndiq hapat e radhës për të restauruar këtë aplikacion"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> është çaktivizuar"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> është çinstaluar"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Për ta restauruar këtë aplikacion, do të të duhet të instalosh <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Vazhdo"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Pastro hapësirën ruajtëse"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Cilësimet"</string>
+ <string name="close" msgid="5214897374055647996">"Mbyll"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-sr/strings.xml b/packages/PackageInstaller/res/values-sr/strings.xml
index 196e78473eca..3c51f3482ef3 100644
--- a/packages/PackageInstaller/res/values-sr/strings.xml
+++ b/packages/PackageInstaller/res/values-sr/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Задржи <xliff:g id="SIZE">%1$s</xliff:g> података апликације."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Желите да избришете ову апликацију?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Желите да деинсталирате ову апликацију? Клон апликације <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ће такође бити избрисан."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Желите да деинсталирате ову апликацију из приватног простора?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активна деинсталирања"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Неуспела деинсталирања"</string>
<string name="uninstalling" msgid="8709566347688966845">"Деинсталира се…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Желите да вратите <xliff:g id="APPNAME">%1$s</xliff:g> из <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Апликација ће започети преузимање у позадини."</string>
<string name="restore" msgid="8460854736328970444">"Врати"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Офлајн сте"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ова апликација ће бити враћена аутоматски када се повежете на интернет"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Дошло је до грешке"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Дошло је до проблема при враћању ове апликације"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Нема довољно меморијског простора"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Можете да ослободите простор на овом уређају да бисте вратили ову апликацију. Потребан меморијски простор: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Треба да реагујете"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Пратите даља упутства да бисте вратили ову апликацију"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Онемогућен <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Деинсталиран <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Да бисте вратили ову апликацију, треба да инсталирате <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Настави"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Обриши меморијски простор"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Подешавања"</string>
+ <string name="close" msgid="5214897374055647996">"Затвори"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-sv/strings.xml b/packages/PackageInstaller/res/values-sv/strings.xml
index 0ce696ed45f9..3fd403c884bc 100644
--- a/packages/PackageInstaller/res/values-sv/strings.xml
+++ b/packages/PackageInstaller/res/values-sv/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Behåll <xliff:g id="SIZE">%1$s</xliff:g> appdata."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Vill du radera den här appen?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Vill du avinstallera den här appen? Klonen av <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> raderas också."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Vill du avinstallera appen från ditt privata rum?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Avinstallationer som pågår"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Avinstallationer som misslyckats"</string>
<string name="uninstalling" msgid="8709566347688966845">"Avinstallerar …"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Vill du återställa <xliff:g id="APPNAME">%1$s</xliff:g> från <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Appen börjar ladda ned i bakgrunden"</string>
<string name="restore" msgid="8460854736328970444">"Återställ"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Du är offline"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Appen återställs automatiskt när du är ansluten till internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Något gick fel"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Det gick inte att återställa appen"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Inte tillräckligt med lagringsutrymme"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Frigör lagringsutrymme på enheten om du vill återställa appen. Tillgängligt lagringsutrymme som krävs: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Åtgärd krävs"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Följ anvisningarna för att återställa appen"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> är inaktiverad"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> är avinstallerad"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Du måste installera <xliff:g id="INSTALLERNAME">%1$s</xliff:g> om du vill återställa appen"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Fortsätt"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Rensa lagringsutrymme"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Inställningar"</string>
+ <string name="close" msgid="5214897374055647996">"Stäng"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-sw/strings.xml b/packages/PackageInstaller/res/values-sw/strings.xml
index 0a34d8156443..58d32777f9d5 100644
--- a/packages/PackageInstaller/res/values-sw/strings.xml
+++ b/packages/PackageInstaller/res/values-sw/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Dumisha <xliff:g id="SIZE">%1$s</xliff:g> ya data ya programu."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Ungependa kufuta programu hii?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Ungependa kuondoa programu hii? Nakala ya <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> pia itafutwa."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Je, ungependa kuondoa programu hii kwenye nafasi yako ya faragha?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Programu zinazoondolewa"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mara ambazo programu haikuondolewa"</string>
<string name="uninstalling" msgid="8709566347688966845">"Inaondoa…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Je, ungependa kurejesha <xliff:g id="APPNAME">%1$s</xliff:g> kutoka kwenye <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Itaanza kupakua programu hii chinichini"</string>
<string name="restore" msgid="8460854736328970444">"Rejesha"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Uko nje ya mtandao"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Programu hii itarejeshwa kiotomatiki utakapounganisha kwenye intaneti"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Hitilafu fulani imetokea"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Hitilafu fulani imetokea wakati wa kujaribu kurejesha programu hii"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nafasi ya hifadhi haitoshi"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Ili urejeshe programu hii, unaweza kufuta faili ili upate nafasi kwenye kifaa hiki. Nafasi ya hifadhi inayohitajika: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Unahitaji kuchukua hatua"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Fuata hatua zinazofuata ili urejeshe programu hii"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> imezimwa"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> imeondolewa"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Ili urejeshe programu hii, utahitaji kusakinisha <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Endelea"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Futa data kwenye hifadhi"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Mipangilio"</string>
+ <string name="close" msgid="5214897374055647996">"Funga"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ta/strings.xml b/packages/PackageInstaller/res/values-ta/strings.xml
index 322ce5c2a3d2..4ae9e91bcf0f 100644
--- a/packages/PackageInstaller/res/values-ta/strings.xml
+++ b/packages/PackageInstaller/res/values-ta/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ஆப்ஸ் தரவை வைத்திரு."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"இந்த ஆப்ஸை நீக்க வேண்டுமா?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"இந்த ஆப்ஸை நிறுவல் நீக்க வேண்டுமா? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> குளோனும் நீக்கப்படும்."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"உங்கள் தனிப்பட்ட சேமிப்பிடத்திலிருந்து இந்த ஆப்ஸை நிறுவல் நீக்க வேண்டுமா?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"இயக்கத்திலுள்ள நிறுவல் நீக்கங்கள்"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"தோல்வியுற்ற நிறுவல் நீக்கங்கள்"</string>
<string name="uninstalling" msgid="8709566347688966845">"நிறுவல் நீக்குகிறது…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>ல் இருந்து <xliff:g id="APPNAME">%1$s</xliff:g> ஐ மீட்டெடுக்கவா?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"இந்த ஆப்ஸ் பின்னணியில் பதிவிறக்கத் தொடங்கும்"</string>
<string name="restore" msgid="8460854736328970444">"மீட்டெடு"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"ஆஃப்லைனில் உள்ளீர்கள்"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"நீங்கள் இணையத்துடன் இணைக்கப்பட்டிருக்கும்போது இந்த ஆப்ஸ் தானாக மீட்டெடுக்கப்படும்"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"ஏதோ தவறாகிவிட்டது"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"இந்த ஆப்ஸை மீட்டெடுக்க முயலும்போது சிக்கல் ஏற்பட்டது"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"போதுமான சேமிப்பகம் இல்லை"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"இந்த ஆப்ஸை மீட்டெடுக்க, இந்தச் சாதனத்தில் உள்ள சேமிப்பகத்தை காலியாக்கலாம். தேவைப்படும் சேமிப்பகம்: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"நடவடிக்கை தேவை"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"இந்த ஆப்ஸை மீட்டெடுக்க அடுத்த வழிமுறைகளைப் பின்பற்றுங்கள்"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> முடக்கப்பட்டுள்ளது"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> நிறுவல் நீக்கப்பட்டது"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"இந்த ஆப்ஸை மீட்டெடுக்க <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ஐ நிறுவ வேண்டும்"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"தொடர்க"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"சேமிப்பகத்தைக் காலியாக்கு"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"அமைப்புகள்"</string>
+ <string name="close" msgid="5214897374055647996">"மூடுக"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-te/strings.xml b/packages/PackageInstaller/res/values-te/strings.xml
index 9abc87e81de2..45f895bb3ceb 100644
--- a/packages/PackageInstaller/res/values-te/strings.xml
+++ b/packages/PackageInstaller/res/values-te/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> యాప్ డేటాను ఉంచండి."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"మీరు ఈ యాప్‌ను తొలగించాలనుకుంటున్నారా?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"మీరు ఈ యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> క్లోన్ కూడా తొలగించబడుతుంది."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"మీరు మీ ప్రైవేట్ స్పేస్ నుండి ఈ యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"అన్ఇన్‌స్టాల్ చేయబడుతున్నవి"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"విఫలమైన అన్‌ఇన్‌స్టాల్‌లు"</string>
<string name="uninstalling" msgid="8709566347688966845">"అన్ఇన్‌స్టాల్ చేస్తోంది…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> నుండి <xliff:g id="APPNAME">%1$s</xliff:g>‌ను రీస్టోర్ చేయాలా?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"ఈ యాప్ బ్యాక్‌గ్రౌండ్‌లో డౌన్‌లోడ్ అవ్వడం ప్రారంభమవుతుంది"</string>
<string name="restore" msgid="8460854736328970444">"రీస్టోర్ చేయండి"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"మీరు ఆఫ్‌లైన్‌లో ఉన్నారు"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"మీరు ఇంటర్నెట్‌కు కనెక్ట్ అయ్యి ఉన్నప్పుడు ఈ యాప్ ఆటోమేటిక్‌గా రీస్టోర్ చేయబడుతుంది"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"ఏదో పొరపాటు జరిగింది"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి ట్రై చేస్తున్నపుడు సమస్య ఏర్పడింది"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"తగినంత స్టోరేజ్ స్పేస్ లేదు"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి, మీరు ఈ పరికరంలో స్పేస్‌ను ఖాళీ చేయవచ్చు. స్టోరేజ్ అవసరం: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"మీరు పూర్తి చేయాల్సిన చర్య"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి తదుపరి దశలను ఫాలో అవ్వండి"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> డిజేబుల్ చేయబడింది"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> అన్‌ఇన్‌స్టాల్ చేయబడింది"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి, మీరు <xliff:g id="INSTALLERNAME">%1$s</xliff:g>‌ను ఇన్‌స్టాల్ చేయాలి"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"కొనసాగించండి"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"స్టోరేజ్‌ను క్లియర్ చేయండి"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"సెట్టింగ్‌లు"</string>
+ <string name="close" msgid="5214897374055647996">"మూసివేయండి"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-th/strings.xml b/packages/PackageInstaller/res/values-th/strings.xml
index b1faa1c35d67..7cdb3b29ce67 100644
--- a/packages/PackageInstaller/res/values-th/strings.xml
+++ b/packages/PackageInstaller/res/values-th/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"เก็บข้อมูลแอปไว้ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"ต้องการลบแอปนี้ไหม"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"ต้องการถอนการติดตั้งแอปนี้ไหม ระบบจะลบโคลนของ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ด้วย"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"คุณต้องการถอนการติดตั้งแอปนี้จากพื้นที่ส่วนตัวไหม"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"กำลังเรียกใช้การถอนการติดตั้ง"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ถอนการติดตั้งไม่สำเร็จ"</string>
<string name="uninstalling" msgid="8709566347688966845">"กำลังถอนการติดตั้ง…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"กู้คืน <xliff:g id="APPNAME">%1$s</xliff:g> จาก <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ใช่ไหม"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"แอปนี้จะเริ่มดาวน์โหลดในเบื้องหลัง"</string>
<string name="restore" msgid="8460854736328970444">"กู้คืน"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"คุณออฟไลน์อยู่"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"แอปนี้จะคืนค่าโดยอัตโนมัติเมื่อคุณเชื่อมต่อกับอินเทอร์เน็ต"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"เกิดข้อผิดพลาด"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"เกิดปัญหาขณะพยายามคืนค่าแอปนี้"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"พื้นที่เก็บข้อมูลไม่เพียงพอ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"หากต้องการคืนค่าแอปนี้ คุณสามารถเพิ่มพื้นที่ว่างในอุปกรณ์ โดยจะต้องใช้พื้นที่เก็บข้อมูล <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"ขอให้ดำเนินการ"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"ทำตามขั้นตอนถัดไปเพื่อคืนค่าแอปนี้"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ถูกปิดใช้"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ถูกถอนการติดตั้ง"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"หากต้องการคืนค่าแอปนี้ คุณจะต้องติดตั้ง <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"ต่อไป"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"ล้างพื้นที่เก็บข้อมูล"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"การตั้งค่า"</string>
+ <string name="close" msgid="5214897374055647996">"ปิด"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-tl/strings.xml b/packages/PackageInstaller/res/values-tl/strings.xml
index 8e6e2517e473..f08403073421 100644
--- a/packages/PackageInstaller/res/values-tl/strings.xml
+++ b/packages/PackageInstaller/res/values-tl/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Panatilihin ang <xliff:g id="SIZE">%1$s</xliff:g> ng data ng app."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Gusto mo bang i-delete ang app na ito?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Gusto mo bang i-uninstall ang app na ito? Made-delete din ang clone ng <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Gusto mo bang i-uninstall ang app na ito sa iyong pribadong space?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Mga kasalukuyang pag-uninstall"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mga hindi na-uninstall"</string>
<string name="uninstalling" msgid="8709566347688966845">"Ina-uninstall…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"I-restore ang <xliff:g id="APPNAME">%1$s</xliff:g> mula sa <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Magsisimulang mag-download ang app na ito sa background"</string>
<string name="restore" msgid="8460854736328970444">"I-restore"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Offline ka"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Awtomatikong mare-restore ang app na ito kapag nakakonekta ka sa internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Nagkaproblema"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Nagkaproblema sa pagsubok na i-restore ang app na ito"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Hindi sapat ang storage"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Para i-restore ang app na ito, puwede kang magbakante ng espasyo sa device na ito. Kinakailangang storage: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Nangangailangan ng pagkilos"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Sundin ang mga susunod na hakbang para i-restore ang app na ito"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Naka-disable ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Na-uninstall ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para i-restore ang app na ito, kailangan mong i-install ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Magpatuloy"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"I-clear ang storage"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Mga Setting"</string>
+ <string name="close" msgid="5214897374055647996">"Isara"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-tr/strings.xml b/packages/PackageInstaller/res/values-tr/strings.xml
index dc840306e091..c3229910b0eb 100644
--- a/packages/PackageInstaller/res/values-tr/strings.xml
+++ b/packages/PackageInstaller/res/values-tr/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Uygulama verilerinin <xliff:g id="SIZE">%1$s</xliff:g> kadarını sakla."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Bu uygulamayı silmek istiyor musunuz?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Bu uygulamanın yüklemesini kaldırmak istiyor musunuz? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> klonu da silinecektir."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Bu uygulamanın gizli alanınızdaki yüklemesini kaldırmak istiyor musunuz?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Devam eden yükleme kaldırma işlemleri"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Başarısız yükleme kaldırma işlemleri"</string>
<string name="uninstalling" msgid="8709566347688966845">"Yükleme kaldırılıyor…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> uygulaması <xliff:g id="INSTALLERNAME">%1$s</xliff:g> üzerinden geri yüklensin mi?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Bu uygulama arka planda indirilmeye başlanacak"</string>
<string name="restore" msgid="8460854736328970444">"Geri yükle"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"İnternete bağlı değilsiniz"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Bu uygulama, internete bağlandığınızda otomatik olarak geri yüklenecek"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Bir hata oluştu"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Bu uygulamayı geri yüklemeye çalışırken bir sorun oluştu"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Yeterli depolama alanı yok"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Bu uygulamayı geri yüklemek için bu cihazda yer açabilirsiniz. Bunun için <xliff:g id="BYTES">%1$s</xliff:g> depolama alanı gerekiyor"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"İşlem gerekli"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Bu uygulamayı geri yüklemek için sonraki adımları uygulayın"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> devre dışı bırakıldı"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> yüklemesi kaldırılmış"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Bu uygulamayı geri yüklemek için <xliff:g id="INSTALLERNAME">%1$s</xliff:g> yükleyicisini yüklemeniz gerekiyor"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Devam"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Depolama alanını temizle"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Ayarlar"</string>
+ <string name="close" msgid="5214897374055647996">"Kapat"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-uk/strings.xml b/packages/PackageInstaller/res/values-uk/strings.xml
index 3d7083f9f1f8..657eb3914c5f 100644
--- a/packages/PackageInstaller/res/values-uk/strings.xml
+++ b/packages/PackageInstaller/res/values-uk/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Залишити <xliff:g id="SIZE">%1$s</xliff:g> даних додатка."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Видалити цей додаток?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Видалити цей додаток? Копію <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> також буде видалено."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Видалити цей додаток із вашого приватного простору?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активні видалення"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Невиконані видалення"</string>
<string name="uninstalling" msgid="8709566347688966845">"Видалення..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Відновити додаток <xliff:g id="APPNAME">%1$s</xliff:g> з <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Цей додаток почне завантажуватись у фоновому режимі"</string>
<string name="restore" msgid="8460854736328970444">"Відновити"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Пристрій не в мережі"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Додаток автоматично відновиться, коли пристрій підключиться до Інтернету"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Помилка"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Під час спроби відновити цей додаток сталася помилка"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Недостатньо пам’яті"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Щоб відновити цей додаток, ви можете звільнити місце на пристрої. Потрібний обсяг пам’яті: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Потрібна дія"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Виконайте подальші вказівки, щоб відновити цей додаток"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> вимкнено"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> видалено"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Щоб відновити цей додаток, установіть <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Продовжити"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Очистити пам’ять"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Налаштування"</string>
+ <string name="close" msgid="5214897374055647996">"Закрити"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-ur/strings.xml b/packages/PackageInstaller/res/values-ur/strings.xml
index 08a8315d5caf..f496e1022e51 100644
--- a/packages/PackageInstaller/res/values-ur/strings.xml
+++ b/packages/PackageInstaller/res/values-ur/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"ایپ ڈیٹا کا <xliff:g id="SIZE">%1$s</xliff:g> رکھیں۔"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"کیا آپ یہ ایپ حذف کرنا چاہتے ہیں؟"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"کیا آپ یہ ایپ اَن انسٹال کرنا چاہتے ہیں؟ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> کلون کو بھی حذف کر دیا جائے گا۔"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"کیا آپ اس ایپ کو اپنی نجی جگہ سے اَن انسٹال کرنا چاہتے ہیں؟"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"چل رہے اَن انسٹالز"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ناکام اَن انسٹالز"</string>
<string name="uninstalling" msgid="8709566347688966845">"اَن انسٹال ہو رہا ہے…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> کو <xliff:g id="INSTALLERNAME">%1$s</xliff:g> سے بحال کریں"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"یہ ایپ پس منظر میں ڈاؤن لوڈ ہونا شروع ہو جائے گی"</string>
<string name="restore" msgid="8460854736328970444">"بحال کریں"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"آپ آف لائن ہیں"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"جب آپ انٹرنیٹ سے منسلک ہوں گے تو یہ ایپ خودکار طور پر بحال ہو جائے گی"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"کچھ غلط ہو گیا"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"اس ایپ کو بحال کرنے کی کوشش میں ایک مسئلہ تھا"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"کافی اسٹوریج نہیں ہے"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"اس ایپ کو بحال کرنے کے لیے، آپ اس آلہ پر اسپیس خالی کر سکتے ہیں۔ درکار اسٹوریج: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"کارروائی درکار ہے"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"اس ایپ کو بحال کرنے کے لیے اگلے مراحل کی پیروی کریں"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غیر فعال ہے"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> اَن انسٹال ہو گیا ہے"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"اس ایپ کو بحال کرنے کے لیے، آپ کو <xliff:g id="INSTALLERNAME">%1$s</xliff:g> انسٹال کرنا ہوگا"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"جاری رکھیں"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"اسٹوریج صاف کریں"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"ترتیبات"</string>
+ <string name="close" msgid="5214897374055647996">"بند کریں"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-uz/strings.xml b/packages/PackageInstaller/res/values-uz/strings.xml
index 894e8676f8d4..a1f116d9e08f 100644
--- a/packages/PackageInstaller/res/values-uz/strings.xml
+++ b/packages/PackageInstaller/res/values-uz/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> hajmdagi ilova axborotlari saqlab qolinsin"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Bu ilova oʻchirilsinmi?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Bu ilovani oʻchirib tashlamoqchimisiz? <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nusxasi ham oʻchib ketadi."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Bu ilovani maxfiy joydan olib tashlamoqchimisiz?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Davom etayotganlar"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Amalga oshmaganlar"</string>
<string name="uninstalling" msgid="8709566347688966845">"O‘chirilmoqda…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"<xliff:g id="APPNAME">%1$s</xliff:g> ilovasi <xliff:g id="INSTALLERNAME">%1$s</xliff:g> orqali tiklansinmi?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Bu ilova orqa fonda yuklab olinishi boshlanadi"</string>
<string name="restore" msgid="8460854736328970444">"Tiklash"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Siz internetga ulanmagansiz"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Internetga ulanganingizda bu ilova avtomatik ravishda tiklanadi"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Nimadir xato ketdi"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Bu ilovani tiklashda muammo chiqdi"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Xotirada yetarli boʻsh joy yoʻq"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Bu ilovani tiklash uchun ushbu qurilmada joy ochishingiz mumkin. Kerakli joy: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Amal bajarish zarur"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Bu ilovani tiklash uchun keyingi qadamlarga rioya qiling"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> faolsizlantirilgan"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> oʻchirib tashlandi"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Bu ilovani tiklash uchun <xliff:g id="INSTALLERNAME">%1$s</xliff:g> oʻrnatilishi kerak"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Davom etish"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Xotirani tozalash"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Sozlamalar"</string>
+ <string name="close" msgid="5214897374055647996">"Yopish"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-vi/strings.xml b/packages/PackageInstaller/res/values-vi/strings.xml
index 14959da4d147..39d67251e469 100644
--- a/packages/PackageInstaller/res/values-vi/strings.xml
+++ b/packages/PackageInstaller/res/values-vi/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Giữ lại <xliff:g id="SIZE">%1$s</xliff:g> dữ liệu ứng dụng."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Bạn có muốn xoá ứng dụng này không?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Bạn có muốn gỡ cài đặt ứng dụng này không? Bản sao của <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> cũng sẽ bị xoá."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Bạn có muốn gỡ cài đặt ứng dụng này khỏi không gian riêng tư của mình không?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Các quá trình gỡ cài đặt đang chạy"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Gỡ cài đặt không thành công"</string>
<string name="uninstalling" msgid="8709566347688966845">"Đang gỡ cài đặt..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Khôi phục <xliff:g id="APPNAME">%1$s</xliff:g> từ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Ứng dụng này sẽ bắt đầu tải xuống ở chế độ nền"</string>
<string name="restore" msgid="8460854736328970444">"Khôi phục"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Không có kết nối mạng"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Ứng dụng này sẽ tự động khôi phục khi bạn kết nối với Internet"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Đã xảy ra lỗi"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Đã xảy ra vấn đề khi tìm cách khôi phục ứng dụng này"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Không đủ dung lượng lưu trữ"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Để khôi phục ứng dụng này, bạn có thể giải phóng dung lượng trên thiết bị này. Dung lượng lưu trữ cần thiết: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Việc cần làm"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Hãy làm theo các bước tiếp theo để khôi phục ứng dụng này"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> đã bị tắt"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> đã bị gỡ cài đặt"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Để khôi phục ứng dụng này, bạn sẽ phải cài đặt <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Tiếp tục"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Xoá bộ nhớ"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Cài đặt"</string>
+ <string name="close" msgid="5214897374055647996">"Đóng"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-zh-rCN/strings.xml b/packages/PackageInstaller/res/values-zh-rCN/strings.xml
index ae125593ab6e..07cadbfb4ad4 100644
--- a/packages/PackageInstaller/res/values-zh-rCN/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rCN/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"保留 <xliff:g id="SIZE">%1$s</xliff:g> 的应用数据。"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"要删除此应用吗?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"要卸载此应用吗?<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> 克隆应用也会被删除。"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"要从私密空间卸载此应用吗?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"正在进行卸载操作"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"卸载操作失败"</string>
<string name="uninstalling" msgid="8709566347688966845">"正在卸载…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"要从 <xliff:g id="INSTALLERNAME">%1$s</xliff:g> 中恢复 <xliff:g id="APPNAME">%1$s</xliff:g> 吗?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"系统将开始在后台下载此应用"</string>
<string name="restore" msgid="8460854736328970444">"恢复"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"您没有联网"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"当您联网后,此应用将自动恢复"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"出了点问题"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"尝试恢复此应用时出现问题"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"存储空间不足"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"若要恢复此应用,您需要释放此设备上的空间。所需的存储空间为:<xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"请采取行动"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"请按照后续步骤恢复此应用"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 已停用"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 已卸载"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"若要恢复此应用,您需要安装 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"继续"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"清空存储空间"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"设置"</string>
+ <string name="close" msgid="5214897374055647996">"关闭"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-zh-rHK/strings.xml b/packages/PackageInstaller/res/values-zh-rHK/strings.xml
index 5a79817b7e6e..3e13aff12e27 100644
--- a/packages/PackageInstaller/res/values-zh-rHK/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rHK/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"保留應用程式資料 (<xliff:g id="SIZE">%1$s</xliff:g>)。"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"要刪除此應用程式嗎?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"要解除安裝此應用程式嗎?「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」複製本亦將被刪除。"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"要從私人空間解除安裝此應用程式嗎?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"正在執行的解除安裝操作"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"失敗的解除安裝操作"</string>
<string name="uninstalling" msgid="8709566347688966845">"正在解除安裝…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"要從「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」還原「<xliff:g id="APPNAME">%1$s</xliff:g>」嗎?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"此應用程式將開始在背景下載"</string>
<string name="restore" msgid="8460854736328970444">"還原"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"你已離線"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"連接互聯網後,系統就會自動還原此應用程式"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"發生問題"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"嘗試還原此應用程式時發生問題"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"儲存空間不足"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"如要還原此應用程式,請騰出此裝置的儲存空間。需要的儲存空間大小:<xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"請即行動"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"按照後續步驟還原此應用程式"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"已停用 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"已解除安裝 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"如要還原此應用程式,你必須安裝 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"繼續"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"清除儲存空間"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"設定"</string>
+ <string name="close" msgid="5214897374055647996">"關閉"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-zh-rTW/strings.xml b/packages/PackageInstaller/res/values-zh-rTW/strings.xml
index 873392bf240c..f457462196b5 100644
--- a/packages/PackageInstaller/res/values-zh-rTW/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rTW/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"保留 <xliff:g id="SIZE">%1$s</xliff:g> 的應用程式資料。"</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"要刪除這個應用程式嗎?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"要解除安裝這個應用程式嗎?系統也會一併刪除「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」副本。"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"想要從私人空間解除安裝這個應用程式嗎?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"執行中的解除安裝作業"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"失敗的解除安裝作業"</string>
<string name="uninstalling" msgid="8709566347688966845">"解除安裝中…"</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"要從「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」還原「<xliff:g id="APPNAME">%1$s</xliff:g>」嗎?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"系統將開始在背景下載這個應用程式"</string>
<string name="restore" msgid="8460854736328970444">"還原"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"裝置目前離線"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"連上網際網路後,系統就會自動還原這個應用程式"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"發生錯誤"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"嘗試還原這個應用程式時發生問題"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"儲存空間不足"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"如要還原這個應用程式,請釋出這部裝置的儲存空間。需要的儲存空間大小:<xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"敬請採取行動"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"請按照後續步驟還原這個應用程式"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」已停用"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」已解除安裝"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"如要還原這個應用程式,請安裝「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"繼續"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"清除儲存空間"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"設定"</string>
+ <string name="close" msgid="5214897374055647996">"關閉"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-zu/strings.xml b/packages/PackageInstaller/res/values-zu/strings.xml
index 8ff1e38bc7a3..1de22a47ab59 100644
--- a/packages/PackageInstaller/res/values-zu/strings.xml
+++ b/packages/PackageInstaller/res/values-zu/strings.xml
@@ -66,6 +66,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Gcina u-<xliff:g id="SIZE">%1$s</xliff:g> wedatha yohlelo lokusebenza."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Ingabe ufuna ukusula le app?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Ufuna ukukhipha le app? I-clone ye-<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nayo izosulwa."</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Ingabe ufuna ukukhipha le app endaweni yakho egodliwe?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Ukukhishwa okuqhubekayo"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ukukhishwa okuhlulekile"</string>
<string name="uninstalling" msgid="8709566347688966845">"Iyakhipha..."</string>
@@ -106,4 +107,21 @@
<string name="unarchive_application_title" msgid="7958278328280721421">"Buyisela i-<xliff:g id="APPNAME">%1$s</xliff:g> ukusuka ku-<xliff:g id="INSTALLERNAME">%1$s</xliff:g>?"</string>
<string name="unarchive_body_text" msgid="8244155079861708964">"Le app izoqala ukudawuniloda ingemuva"</string>
<string name="restore" msgid="8460854736328970444">"Buyisela"</string>
+ <string name="unarchive_error_offline_title" msgid="4021785324565678605">"Awuxhunyiwe ku-inthanethi"</string>
+ <string name="unarchive_error_offline_body" msgid="255717000519772755">"Le app izobuyiswa ngokuzenzakalelayo uma usuxhume ku-inthanethi"</string>
+ <string name="unarchive_error_generic_title" msgid="7123457671482449992">"Kukhona okungahambanga kahle"</string>
+ <string name="unarchive_error_generic_body" msgid="4486803312463813079">"Kube nenkinga ekuzameni ukubuyisa le app"</string>
+ <string name="unarchive_error_storage_title" msgid="5080723357273852630">"Indawo yokubeka ayanele"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Ukuze ubuyise le app, ungavula isikhala kule divayisi. Isitoreji esidingekayo: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_title" msgid="4971245740162604619">"Kudingeka isenzo"</string>
+ <string name="unarchive_action_required_body" msgid="1679431572983989231">"Landela izinyathelo ezilandelayo ukuze ubuyise le app"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ivimbelwe"</string>
+ <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
+ <skip />
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Okuthi <xliff:g id="INSTALLERNAME">%1$s</xliff:g> kukhishiwe"</string>
+ <string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Ukuze ubuyise le app, kuzodingeka ufake okuthi <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_action_required_continue" msgid="5711202111224184257">"Qhubeka"</string>
+ <string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Sula isitoreji"</string>
+ <string name="unarchive_settings_button" msgid="3504171760009177425">"Amasethingi"</string>
+ <string name="close" msgid="5214897374055647996">"Vala"</string>
</resources>
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlow.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlow.kt
index 2c60db4e76c7..8c52d574b156 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlow.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlow.kt
@@ -21,13 +21,17 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.UserHandle
+import android.util.Log
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.conflate
import kotlinx.coroutines.flow.flowOn
+private const val TAG = "BroadcastReceiverAsUser"
+
/**
* A [BroadcastReceiver] flow for the given [intentFilter].
*/
@@ -50,4 +54,6 @@ fun Context.broadcastReceiverAsUserFlow(
)
awaitClose { unregisterReceiver(broadcastReceiver) }
+}.catch { e ->
+ Log.e(TAG, "Error while broadcastReceiverAsUserFlow", e)
}.conflate().flowOn(Dispatchers.Default)
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlowTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlowTest.kt
index dfb8e22c7b52..9cb33d2e9b2c 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlowTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/framework/common/BroadcastReceiverAsUserFlowTest.kt
@@ -32,9 +32,11 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.doAnswer
+import org.mockito.kotlin.doThrow
import org.mockito.kotlin.eq
import org.mockito.kotlin.isNull
import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
@RunWith(AndroidJUnit4::class)
class BroadcastReceiverAsUserFlowTest {
@@ -83,6 +85,18 @@ class BroadcastReceiverAsUserFlowTest {
assertThat(onReceiveIsCalled).isTrue()
}
+ @Test
+ fun broadcastReceiverAsUserFlow_unregisterReceiverThrowException_noCrash() = runBlocking {
+ context.stub {
+ on { unregisterReceiver(any()) } doThrow IllegalArgumentException()
+ }
+ val flow = context.broadcastReceiverAsUserFlow(INTENT_FILTER, USER_HANDLE)
+
+ flow.firstWithTimeoutOrNull()
+
+ assertThat(registeredBroadcastReceiver).isNotNull()
+ }
+
private companion object {
val USER_HANDLE: UserHandle = UserHandle.of(0)
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 3a258380b3d0..9ae4d0cc13c2 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Gekoppel deur ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Gekoppel deur eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV-verstek"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-uitset"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interne luidsprekers"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Kan nie koppel nie. Skakel toestel af en weer aan"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Bedrade oudiotoestel"</string>
<string name="help_label" msgid="3528360748637781274">"Hulp en terugvoer"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 6dd70fa0dbf4..6c31c7687a55 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"‏متّصل من خلال ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"‏متّصل من خلال eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"الجهاز التلقائي لإخراج صوت التلفزيون"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"‏إخراج الصوت من خلال HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"مكبّرات الصوت الداخلية"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"حدثت مشكلة أثناء الاتصال. يُرجى إيقاف الجهاز ثم إعادة تشغيله."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"جهاز سماعي سلكي"</string>
<string name="help_label" msgid="3528360748637781274">"المساعدة والملاحظات"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index c8eeee330fd9..8b06f5d40aff 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARCৰ জৰিয়তে সংযুক্ত"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARCৰ জৰিয়তে সংযুক্ত"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"টিভি ডিফ’ল্ট"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI আউটপুট"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"অভ্যন্তৰীণ স্পীকাৰ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"সংযোগ হোৱাত সমস্যা হৈছে। ডিভাইচটো অফ কৰি পুনৰ অন কৰক"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"তাঁৰযুক্ত অডিঅ’ ডিভাইচ"</string>
<string name="help_label" msgid="3528360748637781274">"সহায় আৰু মতামত"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 34f506e94ab3..a36ab27a8f12 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Chrome-da Tətbiqin İşləmə Müddəti vasitəsilə qoşulub"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC vasitəsilə qoşulub"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV defoltu"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI çıxışı"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Daxili dinamiklər"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Qoşulmaqla bağlı problem. Cihazı deaktiv edin, sonra yenidən aktiv edin"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Simli audio cihaz"</string>
<string name="help_label" msgid="3528360748637781274">"Yardım və rəy"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index ee75df24eae3..83f7c0572887 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Povezano preko ARC-a"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Povezano preko eARC-a"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Podrazumevana vrednost za TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI izlaz"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Unutrašnji zvučnici"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem pri povezivanju. Isključite uređaj, pa ga ponovo uključite"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string>
<string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index c17d7236376d..7e8cd8b7b97a 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Падключана праз ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Падключана праз eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Стандартны аўдыявыхад тэлевізара"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Выхад HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Унутраныя дынамікі"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Праблема з падключэннем. Выключыце і зноў уключыце прыладу"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Правадная аўдыяпрылада"</string>
<string name="help_label" msgid="3528360748637781274">"Даведка і водгукі"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 222e758601cf..d279349df5e3 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Свързано посредством ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Свързано посредством eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Стандартното за телевизора"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI изход"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Вградени високоговорители"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"При свързването възникна проблем. Изключете устройството и го включете отново"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Аудиоустройство с кабел"</string>
<string name="help_label" msgid="3528360748637781274">"Помощ и отзиви"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index a7c95dfa4e07..3ac3a3b03c70 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC-এর মাধ্যমে কানেক্ট করা হয়েছে"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC-এর মাধ্যমে কানেক্ট করা হয়েছে"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"টিভির ডিফল্ট সেটিং"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI আউটপুট"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ইন্টার্নাল স্পিকার"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"কানেক্ট করতে সমস্যা হচ্ছে। ডিভাইস বন্ধ করে আবার চালু করুন"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ওয়্যার অডিও ডিভাইস"</string>
<string name="help_label" msgid="3528360748637781274">"সহায়তা ও মতামত"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index 31ea4d406e8f..f84ccb0b1955 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Povezano je putem ARC-a"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Povezano je putem eARC-a"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Zadano za TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI izlaz"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interni zvučnici"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Došlo je do problema prilikom povezivanja. Isključite, pa ponovo uključite uređaj"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string>
<string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 1bb02c279c73..c205f748a91d 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Connectat mitjançant ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Connectat mitjançant eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Televisor predeterminat"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Sortida HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Altaveus interns"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Hi ha hagut un problema amb la connexió. Apaga el dispositiu i torna\'l a encendre."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositiu d\'àudio amb cable"</string>
<string name="help_label" msgid="3528360748637781274">"Ajuda i suggeriments"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 7ab666980285..2a6a247dca36 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Forbundet via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Forbundet via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Standardindstillinger for fjernsyn"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-udgang"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interne højttalere"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Der kunne ikke oprettes forbindelse. Sluk og tænd enheden"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Lydenhed med ledning"</string>
<string name="help_label" msgid="3528360748637781274">"Hjælp og feedback"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index 29038bcde637..a5f089a7b200 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Connected via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Connected via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV default"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI output"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Internal speakers"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
<string name="help_label" msgid="3528360748637781274">"Help and feedback"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index 29038bcde637..a5f089a7b200 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Connected via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Connected via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV default"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI output"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Internal speakers"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
<string name="help_label" msgid="3528360748637781274">"Help and feedback"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index 29038bcde637..a5f089a7b200 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Connected via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Connected via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV default"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI output"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Internal speakers"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
<string name="help_label" msgid="3528360748637781274">"Help and feedback"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 82cd2bffbae9..c07e1fd5ec42 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Conectado mediante ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Conectado mediante eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Predeterminada de la televisión"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Salida HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Altavoces internos"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"No se ha podido conectar; reinicia el dispositivo"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string>
<string name="help_label" msgid="3528360748637781274">"Ayuda y comentarios"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 35ae73ee7460..ddc16b02ed81 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Ühendatud ARC-i kaudu"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Ühendatud eARC-i kaudu"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Teleri vaikeväljund"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-väljund"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Sisemised kõlarid"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Probleem ühendamisel. Lülitage seade välja ja uuesti sisse"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Juhtmega heliseade"</string>
<string name="help_label" msgid="3528360748637781274">"Abi ja tagasiside"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 7ebad6842eb1..deb4bc63ea93 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC bidez konektatuta"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC bidez konektatuta"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Telebistaren audio-erreproduzigailu lehenetsia"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI irteera"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Barneko bozgorailuak"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Arazo bat izan da konektatzean. Itzali gailua eta pitz ezazu berriro."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Audio-gailu kableduna"</string>
<string name="help_label" msgid="3528360748637781274">"Laguntza eta iritziak"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 51fd6266d8d1..d73571e2f570 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"‏متصل ازطریق ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"‏متصل ازطریق eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"پیش‌فرض تلویزیون"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"‏خروجی HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"بلندگوهای داخلی"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"مشکل در اتصال. دستگاه را خاموش و دوباره روشن کنید"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"دستگاه صوتی سیمی"</string>
<string name="help_label" msgid="3528360748637781274">"راهنما و بازخورد"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index f8c9054ac266..3533d77cb8db 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Yhdistetty ARC:n kautta"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Yhdistetty eARC:n kautta"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV:n oletusasetus"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-toisto"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Sisäiset kaiuttimet"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Yhteysvirhe. Sammuta laite ja käynnistä se uudelleen."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Langallinen äänilaite"</string>
<string name="help_label" msgid="3528360748637781274">"Ohje ja palaute"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 2a7266d911d5..06eeae03a46c 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Connecté par ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Connecté par eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Sortie audio par défaut de la télévision"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Sortie HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Haut-parleurs internes"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problème de connexion. Éteingez et rallumez l\'appareil"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Appareil audio à câble"</string>
<string name="help_label" msgid="3528360748637781274">"Aide et commentaires"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 7b793863f804..f896d16c07f2 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Conectado mediante ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Conectado mediante eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Opción predeterminada da televisión"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Saída HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Altofalantes internos"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Produciuse un problema coa conexión. Apaga e acende o dispositivo."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string>
<string name="help_label" msgid="3528360748637781274">"Axuda e comentarios"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index ec534daec56e..50741ddb72da 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC મારફતે કનેક્ટેડ"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC મારફતે કનેક્ટેડ"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ડિવાઇસનું ડિફૉલ્ટ ઑડિયો આઉટપુટ, ટીવી"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI આઉટપુટ"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"આંતરિક સ્પીકર"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"કનેક્ટ કરવામાં સમસ્યા આવી રહી છે. ડિવાઇસને બંધ કરીને ફરી ચાલુ કરો"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"વાયરવાળો ઑડિયો ડિવાઇસ"</string>
<string name="help_label" msgid="3528360748637781274">"સહાય અને પ્રતિસાદ"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 092c729e7504..0a29b6a06835 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"एचडीएमआई eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC से कनेक्ट किए गए डिवाइस"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC से कनेक्ट किए गए डिवाइस"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"टीवी की डिफ़ॉल्ट सेटिंग"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"एचडीएमआई आउटपुट"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"इंटरनल स्पीकर"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"कनेक्ट करने में समस्या हो रही है. डिवाइस को बंद करके चालू करें"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"वायर वाला ऑडियो डिवाइस"</string>
<string name="help_label" msgid="3528360748637781274">"सहायता और सुझाव"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index eaebfc90af37..b206ac0f59e6 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Povezano putem ARC-a"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Povezano putem eARC-a"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Zadano za TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI izlaz"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Unutarnji zvučnici"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem s povezivanjem. Isključite i ponovo uključite uređaj"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audiouređaj"</string>
<string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index d287ce35b58a..68ff9ae62d18 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Csatlakoztatva ARC-n keresztül"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Csatlakoztatva eARC-n keresztül"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Tévé alapértelmezett eszköze"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-kimenet"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Belső hangszórók"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Sikertelen csatlakozás. Kapcsolja ki az eszközt, majd kapcsolja be újra."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Vezetékes audioeszköz"</string>
<string name="help_label" msgid="3528360748637781274">"Súgó és visszajelzés"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 4d2709961857..f3061a704f0b 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Միացված է ARC-ի միջոցով"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Միացված է eARC-ի միջոցով"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Հեռուստացույցի կանխադրված կարգավորումներ"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI ելք"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Ներքին բարձրախոսներ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Կապի խնդիր կա: Սարքն անջատեք և նորից միացրեք:"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Լարով աուդիո սարք"</string>
<string name="help_label" msgid="3528360748637781274">"Օգնություն և հետադարձ կապ"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index ce770af09438..2c166039b38a 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Terhubung melalui ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Terhubung melalui eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV sebagai default"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Output HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Speaker internal"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ada masalah saat menghubungkan. Nonaktifkan perangkat &amp; aktifkan kembali"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Perangkat audio berkabel"</string>
<string name="help_label" msgid="3528360748637781274">"Bantuan &amp; masukan"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index fd68d1405a28..5a82e16bb9a4 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"eARC HDMI"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Connessione tramite ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Connessione tramite eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV predefinita"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Uscita HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Speaker interni"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problema di connessione. Spegni e riaccendi il dispositivo"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo audio cablato"</string>
<string name="help_label" msgid="3528360748637781274">"Guida e feedback"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 58d4f0ec8388..5d578431e9ba 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC 経由で接続済み"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC 経由で接続済み"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"テレビのデフォルト"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI 出力"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"内蔵スピーカー"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"接続エラーです。デバイスを OFF にしてから ON に戻してください"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線オーディオ デバイス"</string>
<string name="help_label" msgid="3528360748637781274">"ヘルプとフィードバック"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 0d31dde9d87b..a8fb9aa6054d 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC арқылы жалғанған."</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC арқылы жалғанған."</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Теледидардың әдепкі шығысы"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI шығыс интерфейсі"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Ішкі динамиктер"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Байланыс орнату қатесі шығуып жатыр. Құрылғыны өшіріп, қайта қосыңыз."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Сымды аудио құрылғысы"</string>
<string name="help_label" msgid="3528360748637781274">"Анықтама және пікір"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 8ee7987cc78b..16f14ff6c906 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"បានភ្ជាប់តាមរយៈ ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"បានភ្ជាប់តាមរយៈ eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"លំនាំដើម​ទូរទស្សន៍"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"ធាតុចេញ HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ឧបករណ៍បំពងសំឡេងខាងក្នុង"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"មាន​បញ្ហា​ក្នុងការ​ភ្ជាប់។ បិទ រួច​បើក​ឧបករណ៍​វិញ"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ឧបករណ៍​សំឡេងប្រើខ្សែ"</string>
<string name="help_label" msgid="3528360748637781274">"ជំនួយ និងមតិកែលម្អ"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 73f7a20cc706..640d4e949a94 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC ಮೂಲಕ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC ಮೂಲಕ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ಟಿವಿ ಡೀಫಾಲ್ಟ್"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI ಔಟ್‌‌ಪುಟ್"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ಆಂತರಿಕ ಸ್ಪೀಕರ್‌ಗಳು"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ಕನೆಕ್ಟ್ ಮಾಡುವಾಗ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ ಸಾಧನವನ್ನು ಆಫ್ ಮಾಡಿ ಹಾಗೂ ನಂತರ ಪುನಃ ಆನ್ ಮಾಡಿ"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ವೈರ್ ಹೊಂದಿರುವ ಆಡಿಯೋ ಸಾಧನ"</string>
<string name="help_label" msgid="3528360748637781274">"ಸಹಾಯ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 418e47e41ce5..1bf0a5130f32 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC를 통해 연결됨"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC를 통해 연결됨"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV 기본값"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI 출력"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"내부 스피커"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"연결 중에 문제가 발생했습니다. 기기를 껐다가 다시 켜 보세요."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"유선 오디오 기기"</string>
<string name="help_label" msgid="3528360748637781274">"고객센터"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 182e912fe74c..9565fb0ce64b 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC аркылуу туташты"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC аркылуу туташты"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Cыналгыдагы демейки түзмөк"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI аудио түзмөгү"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Ички динамиктер"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Туташууда маселе келип чыкты. Түзмөктү өчүрүп, кайра күйгүзүп көрүңүз"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Зымдуу аудио түзмөк"</string>
<string name="help_label" msgid="3528360748637781274">"Жардам/Пикир билдирүү"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 5f8ba5fe135d..23f249a0dfc4 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ເຊື່ອມຕໍ່ຜ່ານ ARC ແລ້ວ"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"ເຊື່ອມຕໍ່ຜ່ານ eARC ແລ້ວ"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ຄ່າເລີ່ມຕົ້ນສຳລັບໂທລະທັດ"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"ເອົ້າພຸດ HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ລຳໂພງຂອງເຄື່ອງ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ເກີດບັນຫາໃນການເຊື່ອມຕໍ່. ປິດອຸປະກອນແລ້ວເປີດກັບຄືນມາໃໝ່"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ອຸປະກອນສຽງແບບມີສາຍ"</string>
<string name="help_label" msgid="3528360748637781274">"ຊ່ວຍເຫຼືອ ແລະ ຕິຊົມ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 5294f4abdb35..f529ca48deb9 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI „eARC“"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Prisijungta per ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Prisijungta per „eARC“"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV numatytoji išvestis"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI išvestis"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Vidiniai garsiakalbiai"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Prisijungiant kilo problema. Išjunkite įrenginį ir vėl jį įjunkite"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Laidinis garso įrenginys"</string>
<string name="help_label" msgid="3528360748637781274">"Pagalba ir atsiliepimai"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 7ea01e73b884..24be0aaef92f 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Savienojums izveidots, izmantojot ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Savienojums izveidots, izmantojot eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Noklusējuma iestatījums televizorā"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI izvade"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Iekšējie skaļruņi"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Radās problēma ar savienojuma izveidi. Izslēdziet un atkal ieslēdziet ierīci."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Vadu audioierīce"</string>
<string name="help_label" msgid="3528360748637781274">"Palīdzība un atsauksmes"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index d38f42c9fb3b..030a438576b0 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Поврзано преку ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Поврзано преку eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Стандарден излез на телевизор"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Излез за HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Внатрешни звучници"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем со поврзување. Исклучете го уредот и повторно вклучете го"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичен аудиоуред"</string>
<string name="help_label" msgid="3528360748637781274">"Помош и повратни информации"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 8b6150d50c5c..9a01b5333d7c 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC വഴി കണക്റ്റ് ചെയ്തിരിക്കുന്നു"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC വഴി കണക്റ്റ് ചെയ്തിരിക്കുന്നു"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ടിവി ഡിഫോൾട്ട്"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI ഔട്ട്പുട്ട്"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ആന്തരിക സ്‌പീക്കറുകൾ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"കണക്‌റ്റ് ചെയ്യുന്നതിൽ പ്രശ്‌നമുണ്ടായി. ഉപകരണം ഓഫാക്കി വീണ്ടും ഓണാക്കുക"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"വയർ മുഖേന ബന്ധിപ്പിച്ച ഓഡിയോ ഉപകരണം"</string>
<string name="help_label" msgid="3528360748637781274">"സഹായവും ഫീഡ്‌ബാക്കും"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index e7c83a87ea45..03fecc411d9d 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC-р холбогдсон"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC-р холбогдсон"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ТВ-ийн өгөгдмөл"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI гаралт"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Дотоод чанга яригч"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Холбогдоход асуудал гарлаа. Төхөөрөмжийг унтраагаад дахин асаана уу"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Утастай аудио төхөөрөмж"</string>
<string name="help_label" msgid="3528360748637781274">"Тусламж, санал хүсэлт"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 381d0b861324..e4edf088a002 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC द्वारे कनेक्ट केलेली"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC द्वारे कनेक्ट केलेली"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"टीव्ही डीफॉल्ट"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI आउटपुट"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"अंतर्गत स्पीकर"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"कनेक्‍ट करण्‍यात समस्‍या आली. डिव्हाइस बंद करा आणि नंतर सुरू करा"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"वायर असलेले ऑडिओ डिव्हाइस"</string>
<string name="help_label" msgid="3528360748637781274">"मदत आणि फीडबॅक"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 3e7d901addd6..88f13f6f4797 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Disambungkan melalui ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Disambungkan melalui eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Tetapan lalai TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Output HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Pembesar suara dalaman"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Masalah penyambungan. Matikan &amp; hidupkan kembali peranti"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Peranti audio berwayar"</string>
<string name="help_label" msgid="3528360748637781274">"Bantuan &amp; maklum balas"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 68ae54962991..58e2cf44bd0a 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV မူရင်း"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI အထွက်"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"စက်ရှိ စပီကာများ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ချိတ်ဆက်ရာတွင် ပြဿနာရှိပါသည်။ စက်ကိုပိတ်ပြီး ပြန်ဖွင့်ပါ"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ကြိုးတပ် အသံစက်ပစ္စည်း"</string>
<string name="help_label" msgid="3528360748637781274">"အကူအညီနှင့် အကြံပြုချက်"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index a11bfff7a31f..a5bfe5e1d893 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Tilkoblet via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Tilkoblet via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV-ens standardinnstilling"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-utgang"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interne høyttalere"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Tilkoblingsproblemer. Slå enheten av og på igjen"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Lydenhet med kabel"</string>
<string name="help_label" msgid="3528360748637781274">"Hjelp og tilbakemelding"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index b833c140e996..d8e11522f4f1 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC मार्फत कनेक्ट गरिएका"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC मार्फत कनेक्ट गरिएका"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"टिभीको डिफल्ट अडियो आउटपुट"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI आउटपुट"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"आन्तरिक स्पिकरहरू"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"जोड्ने क्रममा समस्या भयो। यन्त्रलाई निष्क्रिय पारेर फेरि अन गर्नुहोस्"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"तारयुक्त अडियो यन्त्र"</string>
<string name="help_label" msgid="3528360748637781274">"मद्दत र प्रतिक्रिया"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index f9215e547cfe..a65ff730dc8c 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Verbonden via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Verbonden via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Tv-standaard"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-uitvoer"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interne speakers"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Probleem bij verbinding maken. Zet het apparaat uit en weer aan."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Bedraad audioapparaat"</string>
<string name="help_label" msgid="3528360748637781274">"Hulp en feedback"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index c4ed00585cb9..add9ff708d5e 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC ମାଧ୍ୟମରେ କନେକ୍ଟ କରାଯାଇଛି"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC ମାଧ୍ୟମରେ କନେକ୍ଟ କରାଯାଇଛି"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ଟିଭିର ଡିଫଲ୍ଟ ଅଡିଓ ଆଉଟପୁଟ"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI ଆଉଟପୁଟ"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ଇଣ୍ଟର୍ନଲ ସ୍ପିକର"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ସଂଯୋଗ କରିବାରେ ସମସ୍ୟା ହେଉଛି। ଡିଭାଇସ୍ ବନ୍ଦ କରି ପୁଣି ଚାଲୁ କରନ୍ତୁ"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ତାରଯୁକ୍ତ ଅଡିଓ ଡିଭାଇସ୍"</string>
<string name="help_label" msgid="3528360748637781274">"ସାହାଯ୍ୟ ଓ ମତାମତ"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index b7a67fd4a5ac..4a33f050c0d0 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤੇ ਗਏ ਡੀਵਾਈਸ"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤੇ ਗਏ ਡੀਵਾਈਸ"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ਟੀਵੀ ਦਾ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਆਊਟਪੁੱਟ"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI ਆਊਟਪੁੱਟ"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ਅੰਦਰੂਨੀ ਸਪੀਕਰ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ। ਡੀਵਾਈਸ ਨੂੰ ਬੰਦ ਕਰਕੇ ਵਾਪਸ ਚਾਲੂ ਕਰੋ"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ਤਾਰ ਵਾਲਾ ਆਡੀਓ ਡੀਵਾਈਸ"</string>
<string name="help_label" msgid="3528360748637781274">"ਮਦਦ ਅਤੇ ਵਿਚਾਰ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 3ef8fd7e01f3..b319cab8395a 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Połączono przez ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Połączono przez eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Ustawienie domyślne telewizora"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Wyjście HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Głośniki wewnętrzne"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem z połączeniem. Wyłącz i ponownie włącz urządzenie"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Przewodowe urządzenie audio"</string>
<string name="help_label" msgid="3528360748637781274">"Pomoc i opinie"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index b76b37bb8e05..32fa1b621e01 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -237,8 +237,8 @@
<string name="adb_wireless_error" msgid="721958772149779856">"Erro"</string>
<string name="adb_wireless_settings" msgid="2295017847215680229">"Depuração por Wi-Fi"</string>
<string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Para acessar e usar dispositivos disponíveis, ative a depuração por Wi-Fi."</string>
- <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parear o dispositivo com um código QR"</string>
- <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Parear novos dispositivos usando um leitor de código QR"</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parear o dispositivo com um QR code"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Parear novos dispositivos usando um leitor de QR code"</string>
<string name="adb_pair_method_code_title" msgid="1122590300445142904">"Parear o dispositivo com um código de pareamento"</string>
<string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Parear novos dispositivos usando um código de seis dígitos"</string>
<string name="adb_paired_devices_title" msgid="5268997341526217362">"Dispositivos pareados"</string>
@@ -252,12 +252,12 @@
<string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Código de pareamento por Wi‑Fi"</string>
<string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Falha no pareamento"</string>
<string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Verifique se o dispositivo está conectado à mesma rede."</string>
- <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do código QR"</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do QR code"</string>
<string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Pareando dispositivo…"</string>
- <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Falha ao parear o dispositivo. O código QR está incorreto ou o dispositivo não está conectado à mesma rede."</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Falha ao parear o dispositivo. O QR code está incorreto ou o dispositivo não está conectado à mesma rede."</string>
<string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Endereço IP e porta"</string>
- <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Ler código QR"</string>
- <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do código QR"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Ler QR code"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do QR code"</string>
<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>
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Conectado via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Conectado via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Padrão da TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Saída HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Alto-falantes internos"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ocorreu um problema na conexão. Desligue o dispositivo e ligue-o novamente"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fio"</string>
<string name="help_label" msgid="3528360748637781274">"Ajuda e feedback"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index b76b37bb8e05..32fa1b621e01 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -237,8 +237,8 @@
<string name="adb_wireless_error" msgid="721958772149779856">"Erro"</string>
<string name="adb_wireless_settings" msgid="2295017847215680229">"Depuração por Wi-Fi"</string>
<string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Para acessar e usar dispositivos disponíveis, ative a depuração por Wi-Fi."</string>
- <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parear o dispositivo com um código QR"</string>
- <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Parear novos dispositivos usando um leitor de código QR"</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parear o dispositivo com um QR code"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Parear novos dispositivos usando um leitor de QR code"</string>
<string name="adb_pair_method_code_title" msgid="1122590300445142904">"Parear o dispositivo com um código de pareamento"</string>
<string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Parear novos dispositivos usando um código de seis dígitos"</string>
<string name="adb_paired_devices_title" msgid="5268997341526217362">"Dispositivos pareados"</string>
@@ -252,12 +252,12 @@
<string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Código de pareamento por Wi‑Fi"</string>
<string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Falha no pareamento"</string>
<string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Verifique se o dispositivo está conectado à mesma rede."</string>
- <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do código QR"</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do QR code"</string>
<string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Pareando dispositivo…"</string>
- <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Falha ao parear o dispositivo. O código QR está incorreto ou o dispositivo não está conectado à mesma rede."</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Falha ao parear o dispositivo. O QR code está incorreto ou o dispositivo não está conectado à mesma rede."</string>
<string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Endereço IP e porta"</string>
- <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Ler código QR"</string>
- <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do código QR"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Ler QR code"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Parear dispositivo na rede Wi‑Fi fazendo a leitura do QR code"</string>
<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>
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Conectado via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Conectado via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Padrão da TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Saída HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Alto-falantes internos"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ocorreu um problema na conexão. Desligue o dispositivo e ligue-o novamente"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fio"</string>
<string name="help_label" msgid="3528360748637781274">"Ajuda e feedback"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 862e3d4c2df4..fe65be5114b0 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Подключено через ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Подключено через eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Стандартный выход на телевизоре"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Выход HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Внутренние динамики"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ошибка подключения. Выключите и снова включите устройство."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Проводное аудиоустройство"</string>
<string name="help_label" msgid="3528360748637781274">"Справка/отзыв"</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 795abec84d40..55e0778662ea 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC හරහා සම්බන්ධ කර ඇත"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC හරහා සම්බන්ධ කර ඇත"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"රූපවාහිනී පෙරනිමිය"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI ප්‍රතිදානය"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"අභ්‍යන්තර ස්පීකර්"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"සම්බන්ධ කිරීමේ ගැටලුවකි උපාංගය ක්‍රියාවිරහිත කර &amp; ආපසු ක්‍රියාත්මක කරන්න"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"රැහැන්ගත කළ ඕඩියෝ උපාංගය"</string>
<string name="help_label" msgid="3528360748637781274">"උදවු &amp; ප්‍රතිපෝෂණ"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 00c0bc1c5c00..4d03ddd79201 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Pripojené prostredníctvom rozhrania ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Pripojené prostredníctvom rozhrania eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Predvolené nastavenie televízora"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Výstup HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interné reproduktory"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Pri pripájaní sa vyskytol problém. Zariadenie vypnite a znova zapnite."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Audio zariadenie s káblom"</string>
<string name="help_label" msgid="3528360748637781274">"Pomocník a spätná väzba"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index f20401744b8e..b627d097055b 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Lidhur përmes ARC-së"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Lidhur përmes eARC-së"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Parazgjedhja e televizorit"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Dalja HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Altoparlantët e brendshëm"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem me lidhjen. Fike dhe ndize përsëri pajisjen"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Pajisja audio me tel"</string>
<string name="help_label" msgid="3528360748637781274">"Ndihma dhe komentet"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index b83986a8ac42..224be52fb23d 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Повезано преко ARC-а"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Повезано преко eARC-а"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Подразумевана вредност за ТВ"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI излаз"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Унутрашњи звучници"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем при повезивању. Искључите уређај, па га поново укључите"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичани аудио уређај"</string>
<string name="help_label" msgid="3528360748637781274">"Помоћ и повратне информације"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 58e3705e0ec3..7ffad7c387b7 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Ansluten via ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Ansluten via eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Standardutgång för tv:n"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI-utgång"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Interna högtalare"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Det gick inte att ansluta. Stäng av enheten och slå på den igen"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Ljudenhet med kabelanslutning"</string>
<string name="help_label" msgid="3528360748637781274">"Hjälp och feedback"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 2a2536b2cbfa..b76f7e34fbb7 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC மூலம் இணைக்கப்பட்டுள்ளவை"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC மூலம் இணைக்கப்பட்டுள்ளவை"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"டிவி இயல்புநிலை"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI அவுட்புட்"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"உட்புற ஸ்பீக்கர்கள்"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"இணைப்பதில் சிக்கல். சாதனத்தை ஆஃப் செய்து மீண்டும் ஆன் செய்யவும்"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"வயருடன்கூடிய ஆடியோ சாதனம்"</string>
<string name="help_label" msgid="3528360748637781274">"உதவியும் கருத்தும்"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 303d31044b6b..23c00c11e866 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC ద్వారా కనెక్ట్ చేయబడింది"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC ద్వారా కనెక్ట్ చేయబడింది"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"టీవీ ఆటోమేటిక్ సెట్టింగ్"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI అవుట్‌పుట్"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"అంతర్గత స్పీకర్‌లు"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"కనెక్ట్ చేయడంలో సమస్య ఉంది. పరికరాన్ని ఆఫ్ చేసి, ఆపై తిరిగి ఆన్ చేయండి"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"వైర్ గల ఆడియో పరికరం"</string>
<string name="help_label" msgid="3528360748637781274">"సహాయం &amp; ఫీడ్‌బ్యాక్"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 0ac8cb858a2c..4d9d382c83ba 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"เชื่อมต่อผ่าน ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"เชื่อมต่อผ่าน eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"ค่าเริ่มต้นของทีวี"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"เอาต์พุต HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"ลำโพงของเครื่อง"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"เกิดปัญหาในการเชื่อมต่อ ปิดอุปกรณ์แล้วเปิดใหม่อีกครั้ง"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"อุปกรณ์เสียงแบบมีสาย"</string>
<string name="help_label" msgid="3528360748637781274">"ความช่วยเหลือและความคิดเห็น"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 4f92e1d1bab1..c9e34941cfe1 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Nakakonekta sa pamamagitan ng ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Nakakonekta sa pamamagitan ng eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Default ng TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI output"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Mga internal speaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Nagkaproblema sa pagkonekta. I-off at pagkatapos ay i-on ang device"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired na audio device"</string>
<string name="help_label" msgid="3528360748637781274">"Tulong at feedback"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 795bb303e292..0f628b44fe69 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC ile bağlandı"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC ile bağlandı"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"TV varsayılanı"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI çıkışı"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Dahili hoparlörler"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Bağlanırken sorun oluştu. Cihazı kapatıp tekrar açın"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kablolu ses cihazı"</string>
<string name="help_label" msgid="3528360748637781274">"Yardım ve geri bildirim"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index beb2c917e923..e00fbc990461 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Підключено через ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Підключено через eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Стандартний вихід телевізора"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Вихід HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Внутрішні динаміки"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Не вдається підключитися. Перезавантажте пристрій."</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Дротовий аудіопристрій"</string>
<string name="help_label" msgid="3528360748637781274">"Довідка й відгуки"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 13718d94eee0..0dcb12fb0e64 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"‏ARC کے ذریعے منسلک ہے"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"‏eARC کے ذریعے منسلک ہے"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"‏TV ڈیفالٹ"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"‏HDMI آؤٹ پٹ"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"اندرونی اسپیکرز"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"منسلک کرنے میں مسئلہ پیش آ گیا۔ آلہ کو آف اور بیک آن کریں"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"وائرڈ آڈیو آلہ"</string>
<string name="help_label" msgid="3528360748637781274">"مدد اور تاثرات"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 7559a3dbd89f..c94ff4d1a8f0 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"ARC orqali ulangan"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"eARC orqali ulangan"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Televizorda birlamchi"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI chiqishi"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Ichki karnaylar"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ulanishda muammo yuz berdi. Qurilmani oʻchiring va yoqing"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Simli audio qurilma"</string>
<string name="help_label" msgid="3528360748637781274">"Yordam/fikr-mulohaza"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index ccdc0bc96cc4..03f0770bad8d 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Đã kết nối qua ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Đã kết nối qua eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"Chế độ mặc định của TV"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"Đầu ra HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Các loa trong"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Sự cố kết nối. Hãy tắt thiết bị rồi bật lại"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Thiết bị âm thanh có dây"</string>
<string name="help_label" msgid="3528360748637781274">"Trợ giúp và phản hồi"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 6b3e06104efa..30db0331f99f 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"已通过 ARC 连接"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"已通过 eARC 连接"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"电视默认设置"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI 输出"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"内置扬声器"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"连接时遇到问题。请关闭并重新开启设备"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有线音频设备"</string>
<string name="help_label" msgid="3528360748637781274">"帮助和反馈"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 35171090b977..2ce4de9ee7e0 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"已透過 ARC 連接"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"已透過 eARC 連接"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"電視預設的音訊輸出"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI 輸出"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"內置喇叭"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"無法連接,請關閉裝置然後重新開機"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線音響裝置"</string>
<string name="help_label" msgid="3528360748637781274">"說明與意見反映"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index eeed9f3ea5d4..2fac076a51cc 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"透過 ARC 連線"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"透過 eARC 連線"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"電視預設的音訊輸出裝置"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"HDMI 輸出裝置"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"內建揚聲器"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"無法連線,請關閉裝置後再重新開啟"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線音訊裝置"</string>
<string name="help_label" msgid="3528360748637781274">"說明與意見回饋"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index e94b9299e187..9a818082a624 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -567,12 +567,9 @@
<string name="tv_media_transfer_earc_fallback_title" msgid="3098685494578519940">"I-HDMI eARC"</string>
<string name="tv_media_transfer_arc_subtitle" msgid="1040017851325069082">"Ixhunywe nge-ARC"</string>
<string name="tv_media_transfer_earc_subtitle" msgid="645191413103303077">"Ixhunywe nge-eARC"</string>
- <!-- no translation found for tv_media_transfer_default (5403053145185843843) -->
- <skip />
- <!-- no translation found for tv_media_transfer_hdmi (692569220956829921) -->
- <skip />
- <!-- no translation found for tv_media_transfer_internal_speakers (8181494402866565865) -->
- <skip />
+ <string name="tv_media_transfer_default" msgid="5403053145185843843">"I-TV ezenzakalelayo"</string>
+ <string name="tv_media_transfer_hdmi" msgid="692569220956829921">"umphumela we-HDMI"</string>
+ <string name="tv_media_transfer_internal_speakers" msgid="8181494402866565865">"Izipikha zangaphakathi"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Inkinga yokuxhumeka. Vala idivayisi futhi uphinde uyivule"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Idivayisi yomsindo enentambo"</string>
<string name="help_label" msgid="3528360748637781274">"Usizo nempendulo"</string>
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index b6a0c7bafa44..d12d9d665a8c 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -562,6 +562,9 @@
<!-- Permissions required for CTS test - NotificationManagerTest -->
<uses-permission android:name="android.permission.MANAGE_NOTIFICATION_LISTENERS" />
+ <!-- Permissions required for CTS test - NotificationManagerZenTest -->
+ <uses-permission android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS" />
+
<!-- Permissions required for CTS test - CtsContactsProviderTestCases -->
<uses-permission android:name="android.contacts.permission.MANAGE_SIM_ACCOUNTS" />
<uses-permission android:name="android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS" />
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 7cf562f48ff3..c2c5e001a5df 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -190,6 +190,7 @@ android_library {
"androidx.room_room-runtime",
"androidx.room_room-ktx",
"com.google.android.material_material",
+ "device_state_flags_lib",
"kotlinx_coroutines_android",
"kotlinx_coroutines",
"iconloader_base",
@@ -302,6 +303,7 @@ android_library {
"androidx.exifinterface_exifinterface",
"androidx.room_room-runtime",
"androidx.room_room-ktx",
+ "device_state_flags_lib",
"kotlinx-coroutines-android",
"kotlinx-coroutines-core",
"kotlinx_coroutines_test",
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt
index 658b45f68c92..2986504b7dbc 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt
@@ -17,11 +17,13 @@
package com.android.compose.animation.scene
import androidx.compose.foundation.gestures.Orientation
-import androidx.compose.runtime.DisposableEffect
-import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
-import androidx.compose.ui.composed
-import androidx.compose.ui.input.nestedscroll.nestedScroll
+import androidx.compose.ui.input.nestedscroll.nestedScrollModifierNode
+import androidx.compose.ui.node.DelegatableNode
+import androidx.compose.ui.node.DelegatingNode
+import androidx.compose.ui.node.ModifierNodeElement
+import androidx.compose.ui.platform.InspectorInfo
+import com.android.compose.nestedscroll.PriorityNestedScrollConnection
/**
* Defines the behavior of the [SceneTransitionLayout] when a scrollable component is scrolled.
@@ -32,8 +34,9 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
*/
enum class NestedScrollBehavior(val canStartOnPostFling: Boolean) {
/**
- * During scene transitions, scroll events are consumed by the [SceneTransitionLayout] instead
- * of the scrollable component.
+ * During scene transitions, if we are within
+ * [SceneTransitionLayoutImpl.transitionInterceptionThreshold], the [SceneTransitionLayout]
+ * consumes scroll events instead of the scrollable component.
*/
DuringTransitionBetweenScenes(canStartOnPostFling = false),
@@ -72,21 +75,101 @@ internal fun Modifier.nestedScrollToScene(
orientation: Orientation,
startBehavior: NestedScrollBehavior,
endBehavior: NestedScrollBehavior,
-): Modifier = composed {
- val connection =
- remember(layoutImpl, orientation, startBehavior, endBehavior) {
+) =
+ this then
+ NestedScrollToSceneElement(
+ layoutImpl = layoutImpl,
+ orientation = orientation,
+ startBehavior = startBehavior,
+ endBehavior = endBehavior,
+ )
+
+private data class NestedScrollToSceneElement(
+ private val layoutImpl: SceneTransitionLayoutImpl,
+ private val orientation: Orientation,
+ private val startBehavior: NestedScrollBehavior,
+ private val endBehavior: NestedScrollBehavior,
+) : ModifierNodeElement<NestedScrollToSceneNode>() {
+ override fun create() =
+ NestedScrollToSceneNode(
+ layoutImpl = layoutImpl,
+ orientation = orientation,
+ startBehavior = startBehavior,
+ endBehavior = endBehavior,
+ )
+
+ override fun update(node: NestedScrollToSceneNode) {
+ node.update(
+ layoutImpl = layoutImpl,
+ orientation = orientation,
+ startBehavior = startBehavior,
+ endBehavior = endBehavior,
+ )
+ }
+
+ override fun InspectorInfo.inspectableProperties() {
+ name = "nestedScrollToScene"
+ properties["layoutImpl"] = layoutImpl
+ properties["orientation"] = orientation
+ properties["startBehavior"] = startBehavior
+ properties["endBehavior"] = endBehavior
+ }
+}
+
+private class NestedScrollToSceneNode(
+ layoutImpl: SceneTransitionLayoutImpl,
+ orientation: Orientation,
+ startBehavior: NestedScrollBehavior,
+ endBehavior: NestedScrollBehavior,
+) : DelegatingNode() {
+ private var priorityNestedScrollConnection: PriorityNestedScrollConnection =
+ scenePriorityNestedScrollConnection(
+ layoutImpl = layoutImpl,
+ orientation = orientation,
+ startBehavior = startBehavior,
+ endBehavior = endBehavior,
+ )
+
+ private var nestedScrollNode: DelegatableNode =
+ nestedScrollModifierNode(
+ connection = priorityNestedScrollConnection,
+ dispatcher = null,
+ )
+
+ override fun onAttach() {
+ delegate(nestedScrollNode)
+ }
+
+ override fun onDetach() {
+ // Make sure we reset the scroll connection when this modifier is removed from composition
+ priorityNestedScrollConnection.reset()
+ }
+
+ fun update(
+ layoutImpl: SceneTransitionLayoutImpl,
+ orientation: Orientation,
+ startBehavior: NestedScrollBehavior,
+ endBehavior: NestedScrollBehavior,
+ ) {
+ // Clean up the old nested scroll connection
+ priorityNestedScrollConnection.reset()
+ undelegate(nestedScrollNode)
+
+ // Create a new nested scroll connection
+ priorityNestedScrollConnection =
scenePriorityNestedScrollConnection(
layoutImpl = layoutImpl,
orientation = orientation,
startBehavior = startBehavior,
- endBehavior = endBehavior
+ endBehavior = endBehavior,
)
- }
-
- // Make sure we reset the scroll connection when this modifier is removed from composition
- DisposableEffect(connection) { onDispose { connection.reset() } }
-
- nestedScroll(connection = connection)
+ nestedScrollNode =
+ nestedScrollModifierNode(
+ connection = priorityNestedScrollConnection,
+ dispatcher = null,
+ )
+ delegate(nestedScrollNode)
+ }
}
private fun scenePriorityNestedScrollConnection(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt
index ea3006f0b502..8896e6e64bd9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalEditModeViewModelTest.kt
@@ -39,6 +39,7 @@ import com.android.systemui.smartspace.data.repository.FakeSmartspaceRepository
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
+import javax.inject.Provider
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -83,7 +84,7 @@ class CommunalEditModeViewModelTest : SysuiTestCase() {
underTest =
CommunalEditModeViewModel(
withDeps.communalInteractor,
- shadeViewController,
+ Provider { shadeViewController },
powerManager,
mediaHost,
)
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 9bd083501780..7fbcae0d8986 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
@@ -39,6 +39,7 @@ import com.android.systemui.smartspace.data.repository.FakeSmartspaceRepository
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
+import javax.inject.Provider
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -84,7 +85,7 @@ class CommunalViewModelTest : SysuiTestCase() {
CommunalViewModel(
withDeps.communalInteractor,
withDeps.tutorialInteractor,
- shadeViewController,
+ Provider { shadeViewController },
powerManager,
mediaHost,
)
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
new file mode 100644
index 000000000000..7497ebdc2978
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileDataInteractorTest.kt
@@ -0,0 +1,200 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain
+
+import android.app.UiModeManager
+import android.content.res.Configuration
+import android.content.res.Configuration.UI_MODE_NIGHT_NO
+import android.content.res.Configuration.UI_MODE_NIGHT_YES
+import android.os.UserHandle
+import android.testing.LeakCheck
+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.tiles.base.interactor.DataUpdateTrigger
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.interactor.UiModeNightTileDataInteractor
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.model.UiModeNightTileModel
+import com.android.systemui.statusbar.phone.ConfigurationControllerImpl
+import com.android.systemui.statusbar.policy.ConfigurationController
+import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import com.android.systemui.util.time.DateFormatUtil
+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
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.verify
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class UiModeNightTileDataInteractorTest : SysuiTestCase() {
+ private val configurationController: ConfigurationController =
+ ConfigurationControllerImpl(context)
+ private val batteryController = FakeBatteryController(LeakCheck())
+ private val locationController = FakeLocationController(LeakCheck())
+
+ private lateinit var underTest: UiModeNightTileDataInteractor
+
+ @Mock private lateinit var uiModeManager: UiModeManager
+ @Mock private lateinit var dateFormatUtil: DateFormatUtil
+
+ @Before
+ fun setup() {
+ uiModeManager = mock<UiModeManager>()
+ dateFormatUtil = mock<DateFormatUtil>()
+
+ whenever(uiModeManager.customNightModeStart).thenReturn(LocalTime.MIN)
+ whenever(uiModeManager.customNightModeEnd).thenReturn(LocalTime.MAX)
+
+ underTest =
+ UiModeNightTileDataInteractor(
+ context,
+ configurationController,
+ uiModeManager,
+ batteryController,
+ locationController,
+ dateFormatUtil
+ )
+ }
+
+ @Test
+ fun collectTileDataReadsUiModeManagerNightMode() = runTest {
+ val expectedNightMode = Configuration.UI_MODE_NIGHT_UNDEFINED
+ whenever(uiModeManager.nightMode).thenReturn(expectedNightMode)
+
+ val model by
+ collectLastValue(
+ underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest))
+ )
+ runCurrent()
+
+ assertThat(model).isNotNull()
+ val actualNightMode = model?.uiMode
+ assertThat(actualNightMode).isEqualTo(expectedNightMode)
+ }
+
+ @Test
+ fun collectTileDataReadsUiModeManagerNightModeCustomTypeAndTimes() = runTest {
+ collectLastValue(underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest)))
+
+ runCurrent()
+
+ verify(uiModeManager).nightMode
+ verify(uiModeManager).nightModeCustomType
+ verify(uiModeManager).customNightModeStart
+ verify(uiModeManager).customNightModeEnd
+ }
+
+ /** Here, available refers to the tile showing up, not the tile being clickable. */
+ @Test
+ fun isAvailableRegardlessOfPowerSaveModeOn() = runTest {
+ batteryController.setPowerSaveMode(true)
+
+ runCurrent()
+ val availability by collectLastValue(underTest.availability(TEST_USER))
+
+ assertThat(availability).isTrue()
+ }
+
+ @Test
+ fun dataMatchesConfigurationController() = runTest {
+ setUiMode(UI_MODE_NIGHT_NO)
+ val flowValues: List<UiModeNightTileModel> by
+ collectValues(underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest)))
+
+ runCurrent()
+ setUiMode(UI_MODE_NIGHT_YES)
+ runCurrent()
+ setUiMode(UI_MODE_NIGHT_NO)
+ runCurrent()
+
+ assertThat(flowValues.size).isEqualTo(3)
+ assertThat(flowValues.map { it.isNightMode }).containsExactly(false, true, false).inOrder()
+ }
+
+ @Test
+ fun dataMatchesBatteryController() = runTest {
+ batteryController.setPowerSaveMode(false)
+ val flowValues: List<UiModeNightTileModel> by
+ collectValues(underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest)))
+
+ runCurrent()
+ batteryController.setPowerSaveMode(true)
+ runCurrent()
+ batteryController.setPowerSaveMode(false)
+ runCurrent()
+
+ assertThat(flowValues.size).isEqualTo(3)
+ assertThat(flowValues.map { it.isPowerSave }).containsExactly(false, true, false).inOrder()
+ }
+
+ @Test
+ fun dataMatchesLocationController() = runTest {
+ locationController.setLocationEnabled(false)
+ val flowValues: List<UiModeNightTileModel> by
+ collectValues(underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest)))
+
+ runCurrent()
+ locationController.setLocationEnabled(true)
+ runCurrent()
+ locationController.setLocationEnabled(false)
+ runCurrent()
+
+ assertThat(flowValues.size).isEqualTo(3)
+ assertThat(flowValues.map { it.isLocationEnabled })
+ .containsExactly(false, true, false)
+ .inOrder()
+ }
+
+ @Test
+ fun collectTileDataReads24HourFormatFromDateTimeUtil() = runTest {
+ collectLastValue(underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest)))
+ runCurrent()
+
+ verify(dateFormatUtil).is24HourFormat
+ }
+
+ /**
+ * Use this method to trigger [ConfigurationController.ConfigurationListener.onUiModeChanged]
+ */
+ private fun setUiMode(uiMode: Int) {
+ val config = context.resources.configuration
+ val newConfig = Configuration(config)
+ newConfig.uiMode = uiMode
+
+ /** [underTest] will see this config the next time it creates a model */
+ context.orCreateTestableResources.overrideConfiguration(newConfig)
+
+ /** Trigger updateUiMode callbacks */
+ configurationController.onConfigurationChanged(newConfig)
+ }
+
+ private companion object {
+ val TEST_USER = UserHandle.of(1)!!
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapperTest.kt
new file mode 100644
index 000000000000..87f50090e58b
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapperTest.kt
@@ -0,0 +1,481 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain
+
+import android.app.UiModeManager
+import android.text.TextUtils
+import android.view.View
+import android.widget.Switch
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.qs.tiles.impl.custom.QSTileStateSubject
+import com.android.systemui.qs.tiles.impl.uimodenight.UiModeNightTileModelHelper.createModel
+import com.android.systemui.qs.tiles.impl.uimodenight.qsUiModeNightTileConfig
+import com.android.systemui.qs.tiles.viewmodel.QSTileState
+import com.android.systemui.res.R
+import kotlin.reflect.KClass
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class UiModeNightTileMapperTest : SysuiTestCase() {
+ private val kosmos = Kosmos()
+ private val qsTileConfig = kosmos.qsUiModeNightTileConfig
+
+ private val mapper by lazy {
+ UiModeNightTileMapper(context.orCreateTestableResources.resources)
+ }
+
+ private fun createUiNightModeTileState(
+ iconRes: Int = R.drawable.qs_light_dark_theme_icon_off,
+ label: CharSequence = context.getString(R.string.quick_settings_ui_mode_night_label),
+ activationState: QSTileState.ActivationState = QSTileState.ActivationState.INACTIVE,
+ secondaryLabel: CharSequence? = null,
+ supportedActions: Set<QSTileState.UserAction> =
+ if (activationState == QSTileState.ActivationState.UNAVAILABLE)
+ setOf(QSTileState.UserAction.LONG_CLICK)
+ else setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK),
+ contentDescription: CharSequence? = null,
+ stateDescription: CharSequence? = null,
+ sideViewIcon: QSTileState.SideViewIcon = QSTileState.SideViewIcon.None,
+ enabledState: QSTileState.EnabledState = QSTileState.EnabledState.ENABLED,
+ expandedAccessibilityClass: KClass<out View>? = Switch::class,
+ ): QSTileState {
+ return QSTileState(
+ { Icon.Resource(iconRes, null) },
+ label,
+ activationState,
+ secondaryLabel,
+ supportedActions,
+ contentDescription,
+ stateDescription,
+ sideViewIcon,
+ enabledState,
+ expandedAccessibilityClass?.qualifiedName
+ )
+ }
+
+ @Test
+ fun mapsEnabledDataToUnavailableStateWhenOnPowerSave() {
+ val inputModel = createModel(nightMode = true, powerSave = true)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_battery_saver)
+ val expectedContentDescription =
+ TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel)
+ val expectedState =
+ createUiNightModeTileState(
+ activationState = QSTileState.ActivationState.UNAVAILABLE,
+ secondaryLabel = expectedSecondaryLabel,
+ contentDescription = expectedContentDescription
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun mapsDisabledDataToUnavailableStateWhenOnPowerSave() {
+ val inputModel = createModel(nightMode = false, powerSave = true)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_battery_saver)
+ val expectedContentDescription =
+ TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel)
+ val expectedState =
+ createUiNightModeTileState(
+ activationState = QSTileState.ActivationState.UNAVAILABLE,
+ secondaryLabel = expectedSecondaryLabel,
+ contentDescription = expectedContentDescription
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun mapsDisabledDataToInactiveState() {
+ val inputModel = createModel(nightMode = false, powerSave = false)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[1]
+ val expectedState =
+ createUiNightModeTileState(
+ activationState = QSTileState.ActivationState.INACTIVE,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ contentDescription = expectedLabel
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun mapsEnabledDataToActiveState() {
+ val inputModel = createModel(true, false)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[2]
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_on,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.ACTIVE,
+ contentDescription = expectedLabel
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun mapsEnabledDataToOnIconState() {
+ val inputModel = createModel(nightMode = true, powerSave = false)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[2]
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_on,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.ACTIVE,
+ contentDescription = expectedLabel
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun mapsDisabledDataToOffIconState() {
+ val inputModel = createModel(nightMode = false, powerSave = false)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[1]
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.INACTIVE,
+ contentDescription = expectedLabel
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun supportsClickAndLongClickActionsWhenNotInPowerSaveInNightMode() {
+ val inputModel = createModel(nightMode = true, powerSave = false)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[2]
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_on,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.ACTIVE,
+ contentDescription = expectedLabel,
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun supportsOnlyLongClickActionWhenUnavailableInPowerSaveInNightMode() {
+ val inputModel = createModel(nightMode = true, powerSave = true)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_battery_saver)
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedContentDescription =
+ TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.UNAVAILABLE,
+ contentDescription = expectedContentDescription,
+ supportedActions = setOf(QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun supportsClickAndLongClickActionsWhenNotInPowerSaveNotInNightMode() {
+ val inputModel = createModel(nightMode = false, powerSave = false)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[1]
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.INACTIVE,
+ contentDescription = expectedLabel,
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun supportsOnlyClickActionWhenUnavailableInPowerSaveNotInNightMode() {
+ val inputModel = createModel(nightMode = false, powerSave = true)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_battery_saver)
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.UNAVAILABLE,
+ contentDescription = TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel),
+ supportedActions = setOf(QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenInPowerSaveMode() {
+ val inputModel = createModel(powerSave = true)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_battery_saver)
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.UNAVAILABLE,
+ contentDescription = TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel),
+ supportedActions = setOf(QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenInNightModeNotInPowerSaveModeLocationEnabledUiModeIsNightAuto() {
+ val inputModel =
+ createModel(
+ nightMode = true,
+ powerSave = false,
+ isLocationEnabled = true,
+ uiMode = UiModeManager.MODE_NIGHT_AUTO
+ )
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_until_sunrise)
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_on,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.ACTIVE,
+ contentDescription = TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel),
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenNotInNightModeNotInPowerSaveModeLocationEnableUiModeIsNightAuto() {
+ val inputModel =
+ createModel(
+ nightMode = false,
+ powerSave = false,
+ isLocationEnabled = true,
+ uiMode = UiModeManager.MODE_NIGHT_AUTO
+ )
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_on_at_sunset)
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.INACTIVE,
+ contentDescription = TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel),
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenNotInPowerSaveAndUiModeIsNightYesInNightMode() {
+ val inputModel =
+ createModel(nightMode = true, powerSave = false, uiMode = UiModeManager.MODE_NIGHT_YES)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[2]
+
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_on,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.ACTIVE,
+ contentDescription = expectedLabel,
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenNotInPowerSaveAndUiModeIsNightNoNotInNightMode() {
+ val inputModel =
+ createModel(nightMode = false, powerSave = false, uiMode = UiModeManager.MODE_NIGHT_NO)
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[1]
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.INACTIVE,
+ contentDescription = expectedLabel,
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenNotInPowerSaveAndUiModeIsUnknownCustomNotInNightMode() {
+ val inputModel =
+ createModel(
+ nightMode = false,
+ powerSave = false,
+ uiMode = UiModeManager.MODE_NIGHT_CUSTOM,
+ nighModeCustomType = UiModeManager.MODE_NIGHT_CUSTOM_TYPE_UNKNOWN
+ )
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[1]
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.INACTIVE,
+ contentDescription = expectedLabel,
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenNotInPowerSaveAndUiModeIsUnknownCustomInNightMode() {
+ val inputModel =
+ createModel(
+ nightMode = true,
+ powerSave = false,
+ uiMode = UiModeManager.MODE_NIGHT_CUSTOM,
+ nighModeCustomType = UiModeManager.MODE_NIGHT_CUSTOM_TYPE_UNKNOWN
+ )
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel = context.resources.getStringArray(R.array.tile_states_dark)[2]
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_on,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.ACTIVE,
+ contentDescription = expectedLabel,
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun secondaryLabelCorrectWhenInPowerSaveAndUiModeIsUnknownCustomNotInNightMode() {
+ val inputModel =
+ createModel(
+ nightMode = false,
+ powerSave = true,
+ uiMode = UiModeManager.MODE_NIGHT_CUSTOM,
+ nighModeCustomType = UiModeManager.MODE_NIGHT_CUSTOM_TYPE_UNKNOWN
+ )
+
+ val actualState: QSTileState = mapper.map(qsTileConfig, inputModel)
+
+ val expectedSecondaryLabel =
+ context.getString(R.string.quick_settings_dark_mode_secondary_label_battery_saver)
+ val expectedLabel = context.getString(R.string.quick_settings_ui_mode_night_label)
+ val expectedContentDescription =
+ TextUtils.concat(expectedLabel, ", ", expectedSecondaryLabel)
+ val expectedState =
+ createUiNightModeTileState(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ label = expectedLabel,
+ secondaryLabel = expectedSecondaryLabel,
+ activationState = QSTileState.ActivationState.UNAVAILABLE,
+ contentDescription = expectedContentDescription,
+ supportedActions = setOf(QSTileState.UserAction.LONG_CLICK)
+ )
+ QSTileStateSubject.assertThat(actualState).isEqualTo(expectedState)
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileUserActionInteractorTest.kt
new file mode 100644
index 000000000000..004ec6250e7e
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileUserActionInteractorTest.kt
@@ -0,0 +1,125 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain
+
+import android.app.UiModeManager
+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.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler
+import com.android.systemui.qs.tiles.base.actions.intentInputs
+import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
+import com.android.systemui.qs.tiles.impl.uimodenight.UiModeNightTileModelHelper.createModel
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.interactor.UiModeNightTileUserActionInteractor
+import com.android.systemui.util.mockito.any
+import com.android.systemui.util.mockito.mock
+import com.google.common.truth.Truth
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class UiModeNightTileUserActionInteractorTest : SysuiTestCase() {
+
+ private val qsTileIntentUserActionHandler = FakeQSTileIntentUserInputHandler()
+
+ private lateinit var underTest: UiModeNightTileUserActionInteractor
+
+ @Mock private lateinit var uiModeManager: UiModeManager
+
+ @Before
+ fun setup() {
+ uiModeManager = mock<UiModeManager>()
+ underTest =
+ UiModeNightTileUserActionInteractor(
+ EmptyCoroutineContext,
+ uiModeManager,
+ qsTileIntentUserActionHandler
+ )
+ }
+
+ @Test
+ fun handleClickToEnable() = runTest {
+ val stateBeforeClick = false
+
+ underTest.handleInput(QSTileInputTestKtx.click(createModel(stateBeforeClick)))
+
+ verify(uiModeManager).setNightModeActivated(!stateBeforeClick)
+ }
+
+ @Test
+ fun handleClickToDisable() = runTest {
+ val stateBeforeClick = true
+
+ underTest.handleInput(QSTileInputTestKtx.click(createModel(stateBeforeClick)))
+
+ verify(uiModeManager).setNightModeActivated(!stateBeforeClick)
+ }
+
+ @Test
+ fun clickToEnableDoesNothingWhenInPowerSaveInNightMode() = runTest {
+ val isNightMode = true
+ val isPowerSave = true
+
+ underTest.handleInput(QSTileInputTestKtx.click(createModel(isNightMode, isPowerSave)))
+
+ verify(uiModeManager, never()).setNightModeActivated(any())
+ }
+
+ @Test
+ fun clickToEnableDoesNothingWhenInPowerSaveNotInNightMode() = runTest {
+ val isNightMode = false
+ val isPowerSave = true
+
+ underTest.handleInput(QSTileInputTestKtx.click(createModel(isNightMode, isPowerSave)))
+
+ verify(uiModeManager, never()).setNightModeActivated(any())
+ }
+
+ @Test
+ fun handleLongClickNightModeEnabled() = runTest {
+ val isNightMode = true
+
+ underTest.handleInput(QSTileInputTestKtx.longClick(createModel(isNightMode)))
+
+ Truth.assertThat(qsTileIntentUserActionHandler.handledInputs).hasSize(1)
+ val intentInput = qsTileIntentUserActionHandler.intentInputs.last()
+ val actualIntentAction = intentInput.intent.action
+ val expectedIntentAction = Settings.ACTION_DARK_THEME_SETTINGS
+ Truth.assertThat(actualIntentAction).isEqualTo(expectedIntentAction)
+ }
+
+ @Test
+ fun handleLongClickNightModeDisabled() = runTest {
+ val isNightMode = false
+
+ underTest.handleInput(QSTileInputTestKtx.longClick(createModel(isNightMode)))
+
+ Truth.assertThat(qsTileIntentUserActionHandler.handledInputs).hasSize(1)
+ val intentInput = qsTileIntentUserActionHandler.intentInputs.last()
+ val actualIntentAction = intentInput.intent.action
+ val expectedIntentAction = Settings.ACTION_DARK_THEME_SETTINGS
+ Truth.assertThat(actualIntentAction).isEqualTo(expectedIntentAction)
+ }
+}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
index 06e9b10f6e7f..5d85fbade873 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
@@ -174,7 +174,7 @@ public interface QSTile {
public String spec;
/** Get the state text. */
- public String getStateText(int arrayResId, Resources resources) {
+ public CharSequence getStateText(int arrayResId, Resources resources) {
if (state == Tile.STATE_UNAVAILABLE || this instanceof QSTile.BooleanState) {
String[] array = resources.getStringArray(arrayResId);
return array[state];
@@ -184,13 +184,13 @@ public interface QSTile {
}
/** Get the text for secondaryLabel. */
- public String getSecondaryLabel(String stateText) {
+ public CharSequence getSecondaryLabel(CharSequence stateText) {
// Use a local reference as the value might change from other threads
CharSequence localSecondaryLabel = secondaryLabel;
if (TextUtils.isEmpty(localSecondaryLabel)) {
return stateText;
}
- return localSecondaryLabel.toString();
+ return localSecondaryLabel;
}
public boolean copyTo(State other) {
diff --git a/packages/SystemUI/res-keyguard/drawable/bouncer_password_text_view_focused_background.xml b/packages/SystemUI/res-keyguard/drawable/bouncer_password_text_view_focused_background.xml
new file mode 100644
index 000000000000..02e10cd4ad7c
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/drawable/bouncer_password_text_view_focused_background.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_focused="true">
+ <shape android:shape="rectangle">
+ <corners android:radius="16dp" />
+ <stroke android:width="3dp"
+ android:color="@color/bouncer_password_focus_color" />
+ </shape>
+ </item>
+</selector> \ No newline at end of file
diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_bouncer_message_area.xml b/packages/SystemUI/res-keyguard/layout/keyguard_bouncer_message_area.xml
index 66c54f2a668e..0b35559148af 100644
--- a/packages/SystemUI/res-keyguard/layout/keyguard_bouncer_message_area.xml
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_bouncer_message_area.xml
@@ -23,7 +23,7 @@
android:layout_marginTop="@dimen/keyguard_lock_padding"
android:importantForAccessibility="no"
android:ellipsize="marquee"
- android:focusable="true"
+ android:focusable="false"
android:gravity="center"
android:singleLine="true" />
</merge>
diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml
index 88f7bcd5d907..6e6709f94abb 100644
--- a/packages/SystemUI/res-keyguard/values/styles.xml
+++ b/packages/SystemUI/res-keyguard/values/styles.xml
@@ -76,6 +76,7 @@
</style>
<style name="Widget.TextView.Password" parent="@android:style/Widget.TextView">
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
+ <item name="android:background">@drawable/bouncer_password_text_view_focused_background</item>
<item name="android:gravity">center</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
diff --git a/packages/SystemUI/res/layout/connected_display_dialog.xml b/packages/SystemUI/res/layout/connected_display_dialog.xml
index 3f65aa7984b5..8d7f7ebd82dc 100644
--- a/packages/SystemUI/res/layout/connected_display_dialog.xml
+++ b/packages/SystemUI/res/layout/connected_display_dialog.xml
@@ -45,6 +45,15 @@
android:text="@string/connected_display_dialog_start_mirroring"
android:textAppearance="@style/TextAppearance.Dialog.Title" />
+ <TextView
+ android:id="@+id/dual_display_warning"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:visibility="gone"
+ android:text="@string/connected_display_dialog_dual_display_stop_warning"
+ android:textAppearance="@style/TextAppearance.Dialog.Body" />
+
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/packages/SystemUI/res/layout/screen_record_options.xml b/packages/SystemUI/res/layout/screen_record_options.xml
index 8916e427a1d5..fa345c929c25 100644
--- a/packages/SystemUI/res/layout/screen_record_options.xml
+++ b/packages/SystemUI/res/layout/screen_record_options.xml
@@ -40,16 +40,22 @@
android:popupBackground="@drawable/screenrecord_spinner_background"
android:dropDownWidth="274dp"
android:importantForAccessibility="yes"/>
- <Switch
+ <FrameLayout
+ android:id="@+id/screenrecord_audio_switch_container"
android:layout_width="wrap_content"
- android:minWidth="48dp"
- android:layout_height="48dp"
- android:layout_weight="0"
- android:layout_gravity="end"
- android:id="@+id/screenrecord_audio_switch"
- android:contentDescription="@string/screenrecord_audio_label"
- style="@style/ScreenRecord.Switch"
- android:importantForAccessibility="yes"/>
+ android:layout_height="wrap_content">
+ <Switch
+ android:layout_width="wrap_content"
+ android:minWidth="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="end"
+ android:focusable="false"
+ android:clickable="false"
+ android:id="@+id/screenrecord_audio_switch"
+ android:contentDescription="@string/screenrecord_audio_label"
+ style="@style/ScreenRecord.Switch"
+ android:importantForAccessibility="yes"/>
+ </FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/show_taps"
@@ -75,13 +81,20 @@
android:fontFamily="@*android:string/config_bodyFontFamily"
android:textColor="?android:attr/textColorPrimary"
android:contentDescription="@string/screenrecord_taps_label"/>
- <Switch
+ <FrameLayout
+ android:id="@+id/screenrecord_taps_switch_container"
android:layout_width="wrap_content"
- android:minWidth="48dp"
- android:layout_height="48dp"
- android:id="@+id/screenrecord_taps_switch"
- android:contentDescription="@string/screenrecord_taps_label"
- style="@style/ScreenRecord.Switch"
- android:importantForAccessibility="yes"/>
+ android:layout_height="wrap_content">
+ <Switch
+ android:layout_width="wrap_content"
+ android:minWidth="48dp"
+ android:layout_height="48dp"
+ android:focusable="false"
+ android:clickable="false"
+ android:id="@+id/screenrecord_taps_switch"
+ android:contentDescription="@string/screenrecord_taps_label"
+ style="@style/ScreenRecord.Switch"
+ android:importantForAccessibility="yes"/>
+ </FrameLayout>
</LinearLayout>
</LinearLayout> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/udfps_touch_overlay.xml b/packages/SystemUI/res/layout/udfps_touch_overlay.xml
index ea92776aba2d..498d59b44e62 100644
--- a/packages/SystemUI/res/layout/udfps_touch_overlay.xml
+++ b/packages/SystemUI/res/layout/udfps_touch_overlay.xml
@@ -17,6 +17,5 @@
<com.android.systemui.biometrics.ui.view.UdfpsTouchOverlay xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/udfps_touch_overlay"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:contentDescription="@string/accessibility_fingerprint_label">
+ android:layout_height="match_parent">
</com.android.systemui.biometrics.ui.view.UdfpsTouchOverlay>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 09f37669cb74..14f6821bed04 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Knoppie <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Oppyl"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Afpyl"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Linkspyl"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Regspyl"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Middel"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Spasie"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Kennisgewings"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Kortpadsleutels"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Wissel sleutelborduitleg"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"of"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Maak soeknavraag skoon"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Kortpaaie"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Soek kortpaaie"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Geen kortpaaie gevind nie"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Invoer"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Maak apps oop"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Huidige app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Wys tans soekresultate"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Wys tans stelselkortpaaie"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Wys tans invoerkortpaaie"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Wys tans kortpaaie wat apps oopmaak"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Wys tans kortpaaie vir die huidige app"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Bekyk kennisgewings"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Neem skermskoot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Wys kortpaaie"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 1c065bb20bec..17ff32fad2c8 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"الزر <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"سهم متّجه للأعلى"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"سهم متّجه للأسفل"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"سهم متّجه لليسار"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"سهم متّجه لليمين"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"وسط"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"مسافة"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"تبديل تنسيق لوحة المفاتيح"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"أو"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"محو طلب البحث"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"الاختصارات"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"البحث في الاختصارات"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"لم يُعثَر على اختصارات."</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"إدخال"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"فتح التطبيقات"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"التطبيق الحالي"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"جارٍ عرض نتائج البحث"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"جارٍ عرض اختصارات النظام"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"جارٍ عرض اختصارات الإدخال"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"جارٍ عرض اختصارات فتح التطبيقات"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"جارٍ عرض اختصارات التطبيق الحالي"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"عرض الإشعارات"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"أخذ لقطة شاشة"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"عرض الاختصارات"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 0c5f1044b1d5..457f931d94fb 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> বুটাম"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"হ\'ম"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"উভতি যাওক"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ওপৰলৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"তললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"বাওঁফাললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"সোঁফাললৈ নিৰ্দেশ কৰা কাঁড় চিহ্ন"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"স্ক্ৰীনৰ মাজত"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"স্পেচ"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"কীব\'ৰ্ডৰ সজ্জা সলনি কৰক"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"অথবা"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"সন্ধান কৰা প্ৰশ্ন মচক"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"শ্বৰ্টকাট"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"সন্ধানৰ শ্বৰ্টকাট"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"কোনো শ্বৰ্টকাট বিচাৰি পোৱা নাই"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ইনপুট"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"এপ্ খোলক"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"বৰ্তমানৰ এপ্"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"সন্ধানৰ ফলাফল দেখুৱাই থকা হৈছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"ছিষ্টেমৰ শ্বৰ্টকাট দেখুৱাই থকা হৈছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ইনপুট শ্বৰ্টকাট দেখুৱাই থকা হৈছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"এনে শ্বৰ্টকাট দেখুৱাই থকা হৈছে যিয়ে এপ্‌সমূহ খোলে"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"বৰ্তমানৰ এপ্‌টোৰ বাবে শ্বৰ্টকাট দেখুৱাই থকা হৈছে"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"জাননী চাওক"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"স্ক্ৰীনশ্বট লওক"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"শ্বৰ্টকাট দেখুৱাওক"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index b2ee45529680..3603135e4a5e 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Düymə <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Əsas səhifə"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Geri"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Yuxarı ox"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Aşağı ox"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Sol ox"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Sağ ox"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Mərkəz"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Boşluq"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Bildirişlər"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Klaviatura qısa yolları"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Klaviatura düzümünü dəyişin"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"və ya"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Axtarış sorğusunu silin"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Qısayollar"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Qısayollar axtarın"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Qısayol tapılmadı"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Daxiletmə"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Açıq tətbiqlər"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Cari tətbiq"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Axtarış nəticələri göstərilir"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Sistem qısayolları göstərilir"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Daxiletmə qısayolları göstərilir"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Tətbiqləri açan qısayollar göstərilir"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Cari tətbiq üçün qısayollar göstərilir"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Bildirişlərə baxın"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Skrinşot çəkin"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Qısayolları göstərin"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index ce734dc7b9fc..f26a9c573298 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Dugme <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Taster Početna"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Taster Nazad"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strelica nagore"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strelica nadole"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strelica nalevo"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strelica nadesno"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Taster sa centralnom strelicom"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Razmak"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Obaveštenja"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tasterske prečice"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Promeni raspored tastature"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ili"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Obriši upit za pretragu"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Prečice"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Pretražite prečice"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nisu pronađene prečice"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Unos"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Otvaranje aplik"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aktuelna aplik"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Prikazuju se rezultati pretrage"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Prikazuju se sistemske prečice"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Prikazuju se prečice za umetanje"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Prikazuju se prečice za otvaranje aplikacija"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Prikazuju se prečice za aktuelnu aplikaciju"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Prikaži obaveštenja"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Napravi snimak ekrana"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Prikaži prečice"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 74e46fc3f154..c3d1d0a47b1d 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрэлка ўверх"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрэлка ўніз"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрэлка ўлева"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрэлка ўправа"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Цэнтр"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Прабел"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Пераключыць раскладку клавіятуры"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"або"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Ачысціць пошукавы запыт"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Ярлыкі"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Пошук ярлыкоў"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Ярлыкі не знойдзены"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Увод"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Адкрытыя праграмы"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Бягучая праграма"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Паказаны вынікі пошуку"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Паказаны сістэмныя спалучэнні клавіш"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Паказаны спалучэнні клавіш, звязаныя з уводам"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Паказаны спалучэнні клавіш для адкрыцця праграм"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Паказаны спалучэнні клавіш для бягучай праграмы"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Праглядзець апавяшчэнні"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Зрабіць здымак экрана"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Паказаць спалучэнні клавіш"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 7a00ded88cc9..e3eb1e0a7b83 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Бутон „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Начало"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелка за нагоре"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелка за надолу"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелка за наляво"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелка за надясно"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Център"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Интервал"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Превкл. на клавиат. подредба"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"или"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Изчистване на заявката за търсене"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Клавишни комбинации"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Търсете комбинации"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Няма клавишни комбинации"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Въвеждане"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Отворени прил."</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Текущо прилож."</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Показани са резултатите от търсенето"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Показани са системните преки пътища"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Показани са преките пътища за въвеждане"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Показани са преките пътища, които отварят приложения"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Показани са преките пътища за текущото приложение"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Преглед на известията"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Създаване на екранна снимка"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Показване на клавишните комбинации"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 9954fbd4d5eb..6972379502e4 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> বোতাম"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"হোম"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"ফিরুন"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ঊর্ধমুখী তীরচিহ্ন"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"নিম্নমুখী তীরচিহ্ন"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"বাঁদিকের তীরচিহ্ন"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ডানদিকের তীরচিহ্ন"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"কেন্দ্র"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"কীবোর্ড লে-আউট পাল্টান"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"অথবা"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"সার্চ কোয়েরি মুছুন"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"শর্টকাট"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"শর্টকাট সার্চ করুন"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"কোনও শর্টকার্ট পাওয়া যায়নি"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ইনপুট"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"খুলে রাখা অ্যাপ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"বর্তমান অ্যাপ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"সার্চ ফলাফল দেখানো হচ্ছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"সিস্টেম শর্টকাট দেখানো হচ্ছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ইনপুট শর্টকাট দেখানো হচ্ছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"যে শর্টকাট ব্যবহার করলে অ্যাপ খুলবে, সেগুলি দেখানো হচ্ছে"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"বর্তমান অ্যাপের জন্য শর্টকাট দেখানো হচ্ছে"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"বিজ্ঞপ্তি দেখুন"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"স্ক্রিনশট নিন"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"শর্টকাট দেখুন"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 041e3b6a78f0..939c2b2b6d1b 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Dugme <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Tipka za početak"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Nazad"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strelica nagore"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strelica nadolje"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strelica ulijevo"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strelica udesno"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Sredina"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Tipka za razmak"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Obavještenja"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Prečice tastature"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Zamijeni raspored tastature"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ili"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Brisanje upita za pretraživanje"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Prečice"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Pretraživanje prečica"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nisu pronađene prečice"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Unos"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Otvorene aplik."</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Trenutna aplik."</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Prikazivanje rezultata pretraživanja"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Prikazivanje prečica za sistem"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Prikazivanje prečica za unos"</string>
+ <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_access_system_app_shortcuts" msgid="8562482996626694026">"Prikaz prečica"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index eb652a16cca0..1a95e2a9e6b5 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Botó <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Inici"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Enrere"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Fletxa amunt"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Fletxa avall"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Fletxa esquerra"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Fletxa dreta"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Espai"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notificacions"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tecles de drecera"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Canvia disposició de teclat"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"o"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Esborra la consulta de cerca"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Dreceres"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Cerca dreceres"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"No s\'ha trobat cap drecera"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Entrada"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Obre aplicacions"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aplicació actual"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"S\'estan mostrant els resultats de la cerca"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"S\'estan mostrant les dreceres del sistema"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"S\'estan mostrant les dreceres d\'entrada"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"S\'estan mostrant les dreceres que obren aplicacions"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"S\'estan mostrant les dreceres per a l\'aplicació actual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Mostra les notificacions"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Fes una captura de pantalla"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostra les dreceres"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 1cfb005b3140..f97a754bf6d7 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g>-knap"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Tilbage"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Pil op"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pil ned"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Venstrepil"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Højrepil"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Midtertast"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Mellemrumstast"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifikationer"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tastaturgenveje"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Skift tastaturlayout"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"eller"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Ryd søgeforespørgsel"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Genveje"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Søg efter genveje"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Ingen genveje blev fundet"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Åbn apps"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aktuel app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Viser søgeresultater"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Viser systemgenveje"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Viser tastaturgenveje"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Viser genveje til at åbne apps"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Viser genveje til den aktuelle app"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Se notifikationer"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Tag et screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Vis genveje"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 30b03b21a9fb..937fe6712bd3 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifications"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Keyboard shortcuts"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Switch keyboard layout"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"or"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Clear search query"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Shortcuts"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Search shortcuts"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"No shortcuts found"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Open apps"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Current app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Showing search results"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Showing system shortcuts"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Showing input shortcuts"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Showing shortcuts that open apps"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Showing shortcuts for the current app"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"View notifications"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Take screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Show shortcuts"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 30b03b21a9fb..937fe6712bd3 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifications"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Keyboard shortcuts"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Switch keyboard layout"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"or"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Clear search query"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Shortcuts"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Search shortcuts"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"No shortcuts found"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Open apps"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Current app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Showing search results"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Showing system shortcuts"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Showing input shortcuts"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Showing shortcuts that open apps"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Showing shortcuts for the current app"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"View notifications"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Take screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Show shortcuts"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 30b03b21a9fb..937fe6712bd3 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Button <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Up arrow"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Down arrow"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Left arrow"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Right arrow"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centre"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifications"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Keyboard shortcuts"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Switch keyboard layout"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"or"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Clear search query"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Shortcuts"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Search shortcuts"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"No shortcuts found"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Open apps"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Current app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Showing search results"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Showing system shortcuts"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Showing input shortcuts"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Showing shortcuts that open apps"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Showing shortcuts for the current app"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"View notifications"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Take screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Show shortcuts"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index f64238656d03..329b0f04b897 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Botón <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Inicio"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Atrás"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Flecha hacia arriba"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Flecha hacia abajo"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Flecha hacia la izquierda"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Flecha hacia la derecha"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centro"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tabulador"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Espacio"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notificaciones"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Ver combinaciones de teclas"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Cambiar diseño del teclado"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"o"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Borrar la consulta de búsqueda"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Combinaciones de teclas"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Buscar combinaciones de teclas"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Ninguna encontrada"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Entrada"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Apps abiertas"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"App en uso"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Mostrando resultados de la búsqueda"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Mostrando combinaciones de teclas del sistema"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Mostrando combinaciones de teclas de entrada"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Mostrando combinaciones de teclas que abren aplicaciones"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando combinaciones de teclas de la aplicación actual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Ver notificaciones"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Hacer captura de pantalla"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar accesos directos"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 8e9616fc2948..48bf1d508216 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Nupp <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Avakuva"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Tagasi"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Ülesnool"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Allanool"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Vasaknool"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Paremnool"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Keskele"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Tühik"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Märguanded"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Klaviatuuri otseteed"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Klaviatuuripaigutuse vahetus"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"või"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Otsingupäringu tühjendamine"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Otseteed"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Otseteede otsing"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Otseteid ei leitud"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Sisend"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Rakenduste avamine"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Praegune rakendus"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Kuvatakse otsingutulemused"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Kuvatakse süsteemi otseteed"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Kuvatakse sisendi otseteed"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Kuvatakse rakenduste avamise otseteed"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Kuvatakse praeguse rakenduse otseteed"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Märguannete vaatamine"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ekraanipildi jäädvustamine"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Otseteede kuvamine"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index fe04218bcbd6..e48115728de8 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> botoia"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Hasiera"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Atzera"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Gora egiteko gezi-tekla"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Behera egiteko gezi-tekla"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Ezkerrera egiteko gezi-tekla"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Eskuinera egiteko gezi-tekla"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Erdiratu"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Zuriunea"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Jakinarazpenak"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Lasterbideak"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Aldatu tekl. diseinua"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"edo"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Garbitu bilaketa-kontsulta"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Lasterbideak"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Bilatu lasterbideak"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Ez da aurkitu lasterbiderik"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Sarrera"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Irekitako aplikazioak"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Uneko aplikazioa"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Bilaketa-emaitzak daude ikusgai"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Sistemaren lasterbideak daude ikusgai"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Informazioa sartzeko lasterbideak daude ikusgai"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Aplikazioak irekitzen dituzten lasterbideak daude ikusgai"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Oraingo aplikaziorako lasterbideak daude ikusgai"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Ikusi jakinarazpenak"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Atera pantaila-argazki bat"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Erakutsi lasterbideak"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 2f1783523919..fa5cce2b6d41 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"دکمه <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"ابتدا"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"برگشت"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"پیکان رو به‌بالا"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"پیکان روبه‌پایین"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"پیکان چپ"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"پیکان راست"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"مرکز"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"تغییر جانمایی صفحه‌کلید"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"یا"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"پاک کردن پُرسمان جستجو"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"میان‌برها"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"جستجوی میان‌برها"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"میان‌بری پیدا نشد"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ورودی"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"باز کردن برنامه‌ها"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"برنامه فعلی"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"درحال نمایش نتایج جستجو"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"درحال نمایش میان‌برهای سیستم"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"درحال نمایش میان‌برهای ورودی"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"درحال نمایش میان‌برهای باز کردن برنامه‌ها"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"درحال نمایش میان‌برهای برنامه کنونی"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"مشاهده اعلان‌ها"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"گرفتن نماگرفت"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"نمایش میان‌برها"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index d1bd05be11ad..aebcd58289ef 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Painike <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Takaisin"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Ylänuoli"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Alanuoli"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Vasen nuoli"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Oikea nuoli"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Keskelle"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Välilyönti"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Ilmoitukset"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Pikanäppäimet"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Vaihda näppäimistöasettelu"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"tai"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Tyhjennä hakulauseke"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Pikanäppäimet"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Hae pikanäppäimiä"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Pikanäppäimiä ei löytynyt"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Syöttötapa"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Avoimet"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Sovelluslista"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Näytetään hakutuloksia"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Näytetään järjestelmän pikanäppäimiä"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Näytetään pikanäppäimiä"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Näytetään sovellusten avaamiseen tarkoitettuja pikanäppäimiä"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Näytetään sovelluksen pikanäppäimiä"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Katso ilmoitukset"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ota kuvakaappaus"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Näytä pikakuvakkeet"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index bcf0e96c1d60..9440689fdc89 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Bouton <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Accueil"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Précédent"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Flèche vers le haut"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Flèche vers le bas"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Flèche vers la gauche"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Flèche vers la droite"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centrer"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Espace"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifications"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Raccourcis clavier"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Changer la disposition du clavier"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ou"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Effacez la requête de recherche"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Raccourcis"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Recherchez des raccourcis"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Aucun raccourci trouvé"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Entrée"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Ouvrir applis"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Appli actuelle"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Affichage des résultats de recherche en cours…"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Affichage des raccourcis du système en cours…"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Affichage des raccourcis d\'entrée en cours…"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Affichage des raccourcis qui ouvrent les applications en cours…"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Affichage des raccourcis de l\'application actuelle en cours…"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Afficher les notifications"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Prendre une capture d\'écran"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Afficher les raccourcis"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 716fcf23f485..38daccbf536c 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Botón <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Inicio"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Volver"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Frecha arriba"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Frecha abaixo"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Frecha esquerda"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Frecha dereita"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centro"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Espazo"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notificacións"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Atallos de teclado"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Cambiar deseño do teclado"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ou"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Borrar a busca"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Atallos"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Buscar atallos"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Non se atoparon atallos"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Entrada"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Abrir aplicacións"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"App actual"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Mostrando resultados da busca"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Mostrando atallos do sistema"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Mostrando atallos de introdución de datos"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Mostrando atallos que abren aplicacións"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando atallos da aplicación actual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Ver notificacións"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Facer captura de pantalla"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar atallos"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 837986546e78..be5328b942d3 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"બટન <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ઉપરની ઍરો કી"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"નીચેની ઍરો કી"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ડાબી ઍરો કી"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"જમણી ઍરો કી"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"કીબોર્ડ લેઆઉટ સ્વિચ કરો"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"અથવા"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"શોધ ક્વેરી સાફ કરો"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"શૉર્ટકટ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"શૉર્ટકટ શોધો"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"કોઈ શૉર્ટકટ મળ્યો નથી"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ઇનપુટ"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ઍપ ખોલો"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"હાલની ઍપ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"શોધ પરિણામો બતાવી રહ્યાં છીએ"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"સિસ્ટમના શૉર્ટકટ બતાવી રહ્યાં છીએ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ઇનપુટ માટે શૉર્ટકટ બતાવી રહ્યાં છીએ"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ઍપ ખોલનારા શૉર્ટકટ બતાવી રહ્યાં છીએ"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"હાલની ઍપ માટે શૉર્ટકટ બતાવી રહ્યાં છીએ"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"નોટિફિકેશન જુઓ"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"સ્ક્રીનશૉટ લો"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"શૉર્ટકટ બતાવો"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index ab01d2bd79aa..da72681388a6 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"बटन <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"अप ऐरो"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"डाउन ऐरो"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"लेफ़्ट ऐरो"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"राइट ऐरो"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"मध्य तीर"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"कीबोर्ड लेआउट बदलें"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"या"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"सर्च क्वेरी साफ़ करें"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"शॉर्टकट"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"शॉर्टकट खोजें"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"कोई शॉर्टकट नहीं मिला"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"इनपुट"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"खुले हुए ऐप्लिकेशन"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"मौजूदा ऐप्लिकेशन"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"खोज के नतीजे दिखाए जा रहे हैं"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"सिस्टम के शॉर्टकट दिखाए जा रहे हैं"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"इनपुट के लिए शॉर्टकट दिखाए जा रहे हैं"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ऐसे शॉर्टकट दिखाए जा रहे हैं जिनसे ऐप्लिकेशन खोले जा सकें"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"मौजूदा ऐप्लिकेशन के लिए शॉर्टकट दिखाए जा रहे हैं"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"सूचनाएं देखें"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"स्क्रीनशॉट लें"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"शॉर्टकट दिखाएं"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 7584e8ae6e32..065bc281323f 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Tipka <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Početak"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Natrag"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strelica prema gore"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strelica prema dolje"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strelica lijevo"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strelica desno"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Sredina"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Razmaknica"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Obavijesti"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tipkovni prečaci"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Promjena rasporeda tipkovnice"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ili"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Brisanje upita za pretraživanje"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Prečaci"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Pretražite prečace"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nema nijednog prečaca"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Unos"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Otvaranje aplikacija"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Trenutačna aplikacija"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Prikazuju se rezultati pretraživanja"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Prikazuju se prečaci sustava"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Prikazuju se prečaci za unos"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Prikazuju se prečaci koji otvaraju aplikacije"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Prikazuju se prečaci za trenutačnu aplikaciju"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Prikaži obavijesti"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Snimi zaslon"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Prikaži prečace"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 85fe45525ea5..2a08e1599f7a 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> gomb"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Kezdőképernyő"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Vissza"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Felfelé nyíl"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Lefelé nyíl"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Balra nyíl"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Jobbra nyíl"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Középre"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Szóköz"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Értesítések"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Billentyűkódok"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Billentyűzetkiosztás váltása"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"vagy"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Keresőkifejezés törlése"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Billentyűparancsok"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Billentyűparancs keresése"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nincs billentyűparancs"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Bevitel"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Futó appok"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aktuális app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Keresési találatok megjelenítve"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Rendszer-billentyűparancsok megjelenítve"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Beviteli billentyűparancsok megjelenítve"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Alkalmazásokat megnyitó billentyűparancsok megjelenítve"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"A jelenlegi alkalmazáshoz tartozó billentyűparancsok megjelenítve"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Értesítések megtekintése"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Képernyőkép készítése"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Parancsikonok megjelenítése"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 5be6a874af0e..58162647e6f6 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> կոճակ"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Գլխավոր էջ"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Հետ"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Վերև սլաք"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Ներքև սլաք"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Ձախ սլաք"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Աջ սլաք"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Կենտրոն"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Բացատ"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Դասավորության փոխարկում"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"կամ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Մաքրել որոնման դաշտը"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Դյուրանցումներ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Դյուրանցումների որոնում"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Դյուրանցումներ չեն գտնվել"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Ներածում"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Բաց հավելվածներ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Այս հավելվածը"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Ցուցադրվում են որոնման արդյունքները"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Ցուցադրվում են համակարգի դյուրանցումները"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Ցուցադրվում են մուտքագրման դյուրանցումները"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Ցուցադրվում են հավելվածներ բացող դյուրանցումները"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Ցուցադրվում են ընթացիկ հավելվածի դյուրանցումները"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Դիտել ծանուցումները"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Սքրինշոթ անել"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Ցույց տալ դյուրանցումները"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 8d372dc16f6b..428bd386af94 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Tombol <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Panah atas"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Panah bawah"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Panah kiri"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Panah kanan"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifikasi"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Pintasan keyboard"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Ganti tata letak keyboard"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"atau"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Hapus kueri penelusuran"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Pintasan"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Pintasan penelusuran"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Tidak ditemukan pintasan"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Aplikasi yang terbuka"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aplikasi saat ini"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Menampilkan hasil penelusuran"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Menampilkan pintasan sistem"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Menampilkan pintasan input"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Menampilkan pintasan yang membuka aplikasi"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Menampilkan pintasan untuk aplikasi saat ini"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Lihat notifikasi"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ambil screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Tampilkan pintasan"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index aad1e56d88bc..d4847e5f72ff 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Pulsante <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home page"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Indietro"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Freccia su"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Freccia giù"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Freccia sinistra"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Freccia destra"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Al centro"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Spazio"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notifiche"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Scorciatoie da tastiera"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Cambia layout della tastiera"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"oppure"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Cancella la query di ricerca"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Scorciatoie"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Cerca scorciatoie"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Scorciatoie non trovate"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Inserimento"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"App aperte"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"App corrente"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Visualizzazione dei risultati di ricerca"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Visualizzazione delle scorciatoie di sistema"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Visualizzazione delle scorciatoie degli ingressi"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Visualizzazione delle scorciatoie che aprono le app"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Visualizzazione delle scorciatoie per l\'app corrente"</string>
<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>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index c8a0a540fb6a..8e1fd1ca541b 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> ボタン"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"戻る"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"上矢印"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"下矢印"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"左矢印"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"右矢印"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"中央"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"キーボード レイアウトの切り替え"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"または"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"検索クエリをクリア"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ショートカット"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ショートカットの検索"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ショートカットがありません"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"入力"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"開いているアプリ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"現在のアプリ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"検索結果を表示しています"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"システムのショートカットを表示しています"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"入力用のショートカットを表示しています"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"アプリを開くショートカットを表示しています"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"現在のアプリのショートカットを表示しています"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"お知らせを表示する"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"スクリーンショットを撮る"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ショートカットを表示する"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 2831cf941861..20eeb76f3140 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> түймесі"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Артқа"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Жоғары бағыт пернесі"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Төмен бағыт пернесі"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Сол бағыт пернесі"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Оң бағыт пернесі"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Орталық"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Бос орын"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Пернетақта форматын ауыстыру"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"немесе"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Іздеу сұрауын өшіру"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Перне тіркесімдері"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Перне тіркесімдерін іздеу"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Перне тіркесімдері табылмады."</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Енгізу"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Ашылған қолданбалар"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Ағымдағы қолданба"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Іздеу нәтижелерін көрсетеді."</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Жүйе жылдам пәрмендерін көрсетеді."</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Енгізу жылдам пәрмендерін көрсетеді."</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Қолданбаларды ашатын жылдам пәрмендерді көрсетеді."</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Қазіргі қолданбаға арналған жылдам пәрмендер көрсетіледі."</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Хабарландыруларды көру"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Скриншот жасау"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Жылдам пәрмендерді көрсету"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index aff6ef7ae59c..2167443a9c20 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ប៊ូតុង <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ព្រួញ​ឡើង​លើ"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ព្រួញ​ចុះ​ក្រោម"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ព្រួញ​ទៅឆ្វេង"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ព្រួញទៅ​ស្ដាំ"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"ប្ដូរប្លង់ក្ដារចុច"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ឬ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"សម្អាត​សំណួរ​ស្វែងរក"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ផ្លូវកាត់"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ស្វែងរកផ្លូវកាត់"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"រកផ្លូវកាត់មិនឃើញទេ"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"បញ្ចូល"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"កម្មវិធីដែលបើក"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"កម្មវិធីបច្ចុប្បន្ន"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"កំពុងបង្ហាញលទ្ធផល​ស្វែងរក"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"កំពុងបង្ហាញផ្លូវកាត់ប្រព័ន្ធ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"កំពុងបង្ហាញផ្លូវកាត់បញ្ចូល"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"កំពុងបង្ហាញផ្លូវកាត់ដែលបើកកម្មវិធី"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"កំពុងបង្ហាញផ្លូវកាត់សម្រាប់កម្មវិធីបច្ចុប្បន្ន"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"មើលការជូនដំណឹង"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ថតរូប​អេក្រង់"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"បង្ហាញផ្លូវកាត់"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 5be72d837d00..1118a19f402c 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> ಬಟನ್"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"ಹಿಂದೆ"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ಅಪ್ ಆ್ಯರೋ"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ಡೌನ್ ಆ್ಯರೋ"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ಲೆಫ್ಟ್ ಆ್ಯರೋ"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ರೈಟ್ ಆ್ಯರೋ"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ಮಧ್ಯ"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"ಸ್ಪೇಸ್"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"ಕೀಬೋರ್ಡ್‌ ಲೇಔಟ್‌ ಬದಲಾಯಿಸಿ"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ಅಥವಾ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"ಹುಡುಕಾಟದ ಪ್ರಶ್ನೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಹುಡುಕಿ"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ಯಾವುದೇ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳಿಲ್ಲ"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ಇನ್‌ಪುಟ್"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ಆ್ಯಪ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"ಪ್ರಸ್ತುತ ಆ್ಯಪ್"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"ಸಿಸ್ಟಂ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ಇನ್‌ಪುಟ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ಆ್ಯಪ್‌ಗಳನ್ನು ತೆರೆಯುವ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"ಪ್ರಸ್ತುತ ಆ್ಯಪ್‌ಗಾಗಿ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"ನೋಟಿಫಿಕೇಶನ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಿ"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ತೋರಿಸಿ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 71c0a3526154..0fa92665c825 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 버튼"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"뒤로"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"위쪽 화살표"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"아래쪽 화살표"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"왼쪽 화살표"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"오른쪽 화살표"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"중앙"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"키보드 레이아웃 전환"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"또는"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"검색어 삭제"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"단축키"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"단축키 검색"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"단축키 없음"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"입력"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"열린 앱"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"현재 앱"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"검색 결과 표시"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"시스템 바로가기 표시"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"입력 바로가기 표시"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"앱 열기 바로가기 표시"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"현재 앱 바로가기 표시"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"알림 보기"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"스크린샷 촬영"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"단축키 표시"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 6276160ff67a..06c0f99e48f6 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> баскычы"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Башкы бет"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Артка"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Өйдө жебе"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Ылдый жебе"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Солго жебе"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Оңго жебе"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Ортолотуу"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Боштук"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Баскычтоп калыбын которуштуруу"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"же"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Изделген суроону тазалоо"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Ыкчам баскычтар"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Ыкчам баскычтарды издөө"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Ыкчам баскычтар жок"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Киргизүү"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Ачык колдон-лор"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Учурдагы кол-мо"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Табылган нерселер көрсөтүлүүдө"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Тутумдун ыкчам баскычтары көрсөтүлүүдө"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Киргизүү үчүн ыкчам баскычтар көрсөтүлүүдө"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Колдонмолорду ачкан ыкчам баскычтар көрсөтүлүүдө"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Учурдагы колдонмонун ыкчам баскычтары көрсөтүлүүдө"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Билдирмелерди көрүү"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Скриншот тартуу"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Ыкчам баскычтарды көрсөтүү"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 5da52a5d97c2..f88de0c99dee 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ປຸ່ມ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"ກັບຄືນ"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ລູກສອນຂຶ້ນ"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ລູກສອນລົງ"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ລູກສອນຊ້າຍ"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ລູກສອນຂວາ"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ເຄິ່ງກາງ"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"ສະຫຼັບແປ້ນພິມ"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ຫຼື"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"ລຶບລ້າງຄຳຊອກຫາ"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ທາງລັດ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ທາງລັດການຊອກຫາ"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ບໍ່ພົບທາງລັດ"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ການປ້ອນຂໍ້ມູນ"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ແອັບທີ່ເປີດຢູ່"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"ແອັບປັດຈຸບັນ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"ສະແດງຜົນການຊອກຫາ"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"ສະແດງທາງລັດລະບົບ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ສະແດງທາງລັດອິນພຸດ"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ສະແດງທາງລັດທີ່ເປີດແອັບ"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"ສະແດງທາງລັດສຳລັບແອັບປັດຈຸບັນ"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"ເບິ່ງການແຈ້ງເຕືອນ"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ຖ່າຍຮູບໜ້າຈໍ"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ສະແດງທາງລັດ"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 34c06bd89d99..de8756cd6c46 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Mygtukas <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Pagrindinis"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Atgal"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Rodyklė aukštyn"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Rodyklė žemyn"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Rodyklė kairėn"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Rodyklė dešinėn"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centras"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Tarpas"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Pranešimai"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Spartieji klavišai"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Perjungti klaviat. išdėstymą"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"arba"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Išvalyti paieškos užklausą"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Spartieji klavišai"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Ieškoti sparčiųjų klavišų"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Sparčiųjų klavišų nerasta"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Įvestis"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Atidar. progr."</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Esama programa"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Rodomi paieškos rezultatai"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Rodomi sistemos spartieji klavišai"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Rodomi įvesties spartieji klavišai"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Rodomi programas atidarantys spartieji klavišai"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Rodomi dabartinės programos spartieji klavišai"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Peržiūrėti pranešimus"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Padaryti ekrano kopiją"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Rodyti sparčiuosius klavišus"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 66933bc2f112..258423034e67 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Poga <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Sākumvietas taustiņš"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Atpakaļ"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Augšupvērstā bultiņa"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Lejupvērstā bultiņa"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Kreisā bultiņa"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Labā bultiņa"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centrā"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Atstarpe"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Paziņojumi"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Īsinājumtaustiņi"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Mainīt tastatūras izkārtojumu"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"vai"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Notīrīt meklēšanas vaicājumu"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Īsinājumtaustiņi"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Meklēt īsinājumtaustiņus"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nav atrasti"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Ievade"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Atvērtās"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Pašreizējā"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Tiek rādīti meklēšanas rezultāti"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Tiek rādīti sistēmas īsinājumtaustiņi"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Tiek rādīti ievades īsinājumtaustiņi"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Tiek rādīti īsinājumtaustiņi lietotņu atvēršanai"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Tiek rādīti īsinājumtaustiņi pašreizējai lietotnei"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Skatīt paziņojumus"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Izveidot ekrānuzņēmumu"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Rādīt īsinājumtaustiņus"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 44f6e0c0e772..f0036b84421c 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Копче <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home-копче"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелка нагоре"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелка надолу"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелка налево"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелка надесно"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Центар"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Промени јазик на тастатура"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"или"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Бришење поим за пребарување"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Кратенки"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Пребарувајте кратенки"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Не се пронајдени кратенки"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Внесување"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Отворени аплик."</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Тековна аплик."</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Се прикажуваат резултати од пребарувањето"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Се прикажуваат системски кратенки"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Се прикажуваат кратенки за внесување"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Се прикажуваат кратенки за отворање апликации"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Се прикажуваат кратенки за тековната апликација"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Прегледајте ги известувањата"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Направете слика од екранот"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Прикажи кратенки"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 4644fa5e5886..dadf2ce32595 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ബട്ടൺ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"ഹോം"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"ബാക്ക്"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"മുകളിലേക്കുള്ള അമ്പടയാളം"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"താഴേക്കുള്ള അമ്പടയാളം"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ഇടത് അമ്പടയാളം"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"വലത് അമ്പടയാളം"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"മധ്യം"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"TAB"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"സ്പെയ്സ്"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"കീബോർഡ് ലേഔട്ട് മാറുക"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"അല്ലെങ്കിൽ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"തിരയൽ ചോദ്യം മായ്‌ക്കുക"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"കുറുക്കുവഴികൾ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"കുറുക്കുവഴികൾ തിരയുക"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"കുറുക്കുവഴി കണ്ടെത്തിയില്ല"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ഇൻപുട്ട്"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"തുറന്ന ആപ്പുകൾ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"നിലവിലെ ആപ്പ്"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"തിരയൽ ഫലങ്ങൾ കാണിക്കുന്നു"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"സിസ്‌റ്റം കുറുക്കുവഴികൾ കാണിക്കുന്നു"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ഇൻപുട്ട് കുറുക്കുവഴികൾ കാണിക്കുന്നു"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ആപ്പുകൾ തുറക്കുന്ന കുറുക്കുവഴികൾ കാണിക്കുന്നു"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"നിലവിലെ ആപ്പിനുള്ള കുറുക്കുവഴികൾ കാണിക്കുന്നു"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"അറിയിപ്പുകൾ കാണുക"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"സ്ക്രീൻഷോട്ട് എടുക്കുക"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"കുറുക്കുവഴികൾ കാണിക്കുക"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 217eeb1a3192..9c73642c9537 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> товчлуур"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Нүүр хуудас"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Буцах"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Дээш сум"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Доош сум"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Зүүн сум"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Баруун сум"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Гол хэсэг"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Зай"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Гарын бүдүүвч рүү сэлгэх"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"эсвэл"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Хайлтын асуулгыг арилгах"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Товчлолууд"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Товчлолууд хайх"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Ямар ч товчлол олдсонгүй"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Оролт"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Нээлттэй аппууд"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Одоогийн апп"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Хайлтын илэрцүүдийг харуулж байна"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Системийн товчлолуудыг харуулж байна"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Оролтын товчлолуудыг харуулж байна"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Аппуудыг нээдэг товчлолуудыг харуулж байна"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Одоогийн аппад товчлолууд харуулж байна"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Мэдэгдлийг харах"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Дэлгэцийн агшныг авах"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Товчлол харуулах"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index f7688810007d..27f1b8ca7070 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"बटण <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"परत"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"अप अ‍ॅरो"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"डाउन अ‍ॅरो"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"लेफ्ट अ‍ॅरो"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"राइट अ‍ॅरो"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"मध्यवर्ती"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"कीबोर्ड लेआउट स्विच करा"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"किंवा"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"शोध क्वेरी साफ करा"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"शॉर्टकट"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"शॉर्टकट शोधा"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"एकही शॉर्टकट आढळला नाहीत"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"इनपुट"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ॲप्स उघडा"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"सध्याचे अ‍ॅप"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"शोध परिणाम दाखवत आहे"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"सिस्टीम शॉर्टकट दाखवत आहे"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"इनपुट शॉर्टकट दाखवत आहे"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ॲप्स उघडणारे शॉर्टकट दाखवत आहे"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"सद्य अ‍ॅपसाठी शॉर्टकट दाखवत आहे"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"सूचना पहा"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"स्क्रीनशॉट घ्या"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"शॉर्टकट दाखवा"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index db538904255c..704cd66d38be 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Butang <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Skrin Utama"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Kembali"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Anak panah ke atas"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Anak panah ke bawah"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Anak panah ke kiri"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Anak panah ke kanan"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Tengah"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Pemberitahuan"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Pintasan Papan Kekunci"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Tukar reka letak papan kekunci"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"atau"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Kosongkan pertanyaan carian"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Pintasan"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Cari pintasan"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Tiada pintasan ditemukan"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Apl yang dibuka"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Apl semasa"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Memaparkan hasil carian"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Memaparkan pintasan sistem"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Memaparkan pintasan input"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Memaparkan pintasan yang membuka apl"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Memaparkan pintasan untuk apl semasa"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Lihat pemberitahuan"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ambil tangkapan skrin"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Tunjukkan pintasan"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 6221ca1c62fe..333165995372 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ခလုတ် <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"ပင်မ"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"နောက်သို့"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"အပေါ်ညွှန်မြား"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"အောက်ညွှန်မြား"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ဘယ်ညွှန်မြား"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ညာညွှန်မြား"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"ဌာန"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"ကီးဘုတ်အပြင်အဆင် ပြောင်းခြင်း"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"သို့မဟုတ်"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"ရှာဖွေစာလုံး ရှင်းထုတ်ရန်"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ဖြတ်လမ်းလင့်ခ်များ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ဖြတ်လမ်းလင့်ခ်များ ရှာပါ"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ဖြတ်လမ်းလင့်ခ် မတွေ့ပါ"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"စာရိုက်ခြင်း"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ဖွင့်ထားသောအက်ပ်"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"လက်ရှိအက်ပ်"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"ရှာဖွေမှုရလဒ်များ ပြထားသည်"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"စနစ်ဖြတ်လမ်းလင့်ခ်များ ပြထားသည်"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ထည့်သွင်းသည့် ဖြတ်လမ်းလင့်ခ်များ ပြထားသည်"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"အက်ပ်ဖွင့်သည့် ဖြတ်လမ်းလင့်ခ်များ ပြထားသည်"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"လက်ရှိအက်ပ်အတွက် ဖြတ်လမ်းလင့်ခ်များ ပြထားသည်"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"အကြောင်းကြားချက်များ ကြည့်ရန်"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ဖန်သားပြင်ဓာတ်ပုံ ရိုက်ရန်"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ဖြတ်လမ်းလင့်ခ်များ ပြပါ"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 9fc3625203ae..e0761027cc74 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g>-knappen"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Startskjerm"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Tilbake"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Oppoverpil"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Nedoverpil"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Venstrepil"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Høyrepil"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Midttasten"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Mellomrom"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Varsler"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Hurtigtaster"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Bytt tastaturoppsett"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"eller"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Fjern søket"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Hurtigtaster"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Søk etter hurtigtaster"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Fant ingen hurtigtaster"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Inndata"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Åpne apper"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aktiv app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Viser søkeresultater"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Viser systemsnarveier"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Viser inndatasnarveier"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Viser snarveier som åpner apper"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Viser snarveier for den gjeldende appen"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Se varsler"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ta skjermdump"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Vis snarveier"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 79cb7037b5c8..1a0eacb9d01e 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> बटन"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"पछाडि"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"अप एरो"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"डाउन एरो"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"लेफ्ट एरो"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"राइट एरो"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"केन्द्र"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"स्पेस"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"किबोर्डको लेआउट बदल्नुहोस्"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"वा"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"किवर्ड हटाउनुहोस्"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"सर्टकटहरू"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"सर्टकटहरू खोज्नुहोस्"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"कुनै पनि सर्टकट भेटिएन"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"इनपुट"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"खोलिएका एपहरू"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"हालको एप"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"खोज परिणामहरू देखाइँदै छ"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"सिस्टमका सर्टकटहरू देखाइँदै छ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"इनपुट गर्ने सर्टकटहरू देखाइँदै छ"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"एपहरू खोल्ने सर्टकटहरू देखाइँदै छ"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"हालको एपका लागि सर्टकटहरू देखाइँदै छ"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"सूचनाहरू हेर्नुहोस्"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"स्क्रिनसट खिच्नुहोस्"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"सर्टकटहरू देखाइऊन्"</string>
diff --git a/packages/SystemUI/res/values-night/colors.xml b/packages/SystemUI/res/values-night/colors.xml
index bcc3c83b4560..a22fd18fc2c0 100644
--- a/packages/SystemUI/res/values-night/colors.xml
+++ b/packages/SystemUI/res/values-night/colors.xml
@@ -93,6 +93,9 @@
<color name="qs_user_switcher_selected_avatar_icon_color">#202124</color>
<!-- Color of background circle of user avatars in quick settings user switcher -->
<color name="qs_user_switcher_avatar_background">#3C4043</color>
+ <!-- Color of border for keyguard password input when focused -->
+ <color name="bouncer_password_focus_color">@*android:color/system_secondary_dark</color>
+
<!-- Accessibility floating menu -->
<color name="accessibility_floating_menu_background">#B3000000</color> <!-- 70% -->
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 60ddb891ad5a..875447334174 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Knop <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Terug"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Pijl-omhoog"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pijl-omlaag"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Pijl-links"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Pijl-rechts"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Midden"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Spatiebalk"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Meldingen"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Sneltoetsen"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Toetsenbordindeling wisselen"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"of"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Zoekopdracht wissen"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Sneltoetsen"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Sneltoetsen zoeken"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Geen sneltoetsen gevonden"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Invoer"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Apps openen"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Huidige app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Zoekresultaten tonen"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Systeemsnelkoppelingen tonen"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Invoersnelkoppelingen tonen"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Snelkoppelingen tonen die apps openen"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Snelkoppelingen voor de huidige app tonen"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Meldingen bekijken"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Screenshot maken"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Snelkoppelingen tonen"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index e02a5a72591b..8914d95ddaa6 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ବଟନ୍‍ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"ହୋମ"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"ଫେରନ୍ତୁ"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ଅପ ତୀର କୀ"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ଡାଉନ ଆରୋ"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ବାମ ତୀର କୀ"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ଡାହାଣ ତୀର କୀ"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"କେନ୍ଦ୍ର"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"ସ୍ପେସ୍‍"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"କୀ\'ବୋର୍ଡ୍‍ର ଲେଆଉଟ୍‍କୁ ବଦଳାନ୍ତୁ"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"କିମ୍ବା"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"ସର୍ଚ୍ଚ କ୍ୱେରୀକୁ ଖାଲି କରନ୍ତୁ"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ସର୍ଟକଟଗୁଡ଼ିକ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ସର୍ଟକଟ ସର୍ଚ୍ଚ କରନ୍ତୁ"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"କୌଣସି ସର୍ଟକଟ ମିଳିଲା ନାହିଁ"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ଇନପୁଟ କରନ୍ତୁ"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ଆପ୍ସ ଖୋଲନ୍ତୁ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"ବର୍ତ୍ତମାନର ଆପ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"ସର୍ଚ୍ଚ ଫଳାଫଳ ଦେଖାଯାଉଛି"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"ସିଷ୍ଟମ ସର୍ଟକଟ ଦେଖାଯାଉଛି"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ଇନପୁଟ ସର୍ଟକଟ ଦେଖାଯାଉଛି"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ଆପ୍ସକୁ ଖୋଲୁଥିବା ସର୍ଟକଟ ଦେଖାଯାଉଛି"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"ବର୍ତ୍ତମାନର ଆପ ପାଇଁ ସର୍ଟକଟ ଦେଖାଯାଉଛି"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଭ୍ୟୁ କରନ୍ତୁ"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ସ୍କ୍ରିନସଟ ନିଅନ୍ତୁ"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ସର୍ଟକଟଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 4ab6e8be44c7..e450b2d401aa 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ਬਟਨ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ਉੱਪਰ ਤੀਰ"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ਹੇਠਾਂ ਤੀਰ"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ਖੱਬਾ ਤੀਰ"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ਸੱਜਾ ਤੀਰ"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"ਕੀ-ਬੋਰਡ ਖਾਕਾ ਬਦਲੋ"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ਜਾਂ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"ਖੋਜ ਪੁੱਛਗਿੱਛ ਕਲੀਅਰ ਕਰੋ"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ਸ਼ਾਰਟਕੱਟ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਖੋਜੋ"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ਕੋਈ ਸ਼ਾਰਟਕੱਟ ਨਹੀਂ ਮਿਲਿਆ"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ਇਨਪੁੱਟ"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ਐਪਾਂ ਖੋਲ੍ਹੋ"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"ਮੌਜੂਦਾ ਐਪ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"ਖੋਜ ਨਤੀਜੇ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"ਸਿਸਟਮ ਸ਼ਾਰਟਕੱਟ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ਇਨਪੁੱਟ ਸ਼ਾਰਟਕੱਟ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ਐਪਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਵਾਲੇ ਸ਼ਾਰਟਕੱਟ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"ਮੌਜੂਦਾ ਐਪ ਦੇ ਸ਼ਾਰਟਕੱਟ ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"ਸੂਚਨਾਵਾਂ ਦੇਖੋ"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਓ"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ਸ਼ਾਰਟਕੱਟ ਦਿਖਾਓ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 3647bd418c95..2d064fa33c45 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Przycisk <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Wstecz"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Strzałka w górę"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Strzałka w dół"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Strzałka w lewo"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Strzałka w prawo"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Do środka"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Spacja"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Powiadomienia"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Skróty klawiszowe"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Przełącz układ klawiatury"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"lub"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Wyczyść wyszukiwanie hasło"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Skróty"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Wyszukiwanie skrótów"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nie znaleziono skrótów"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Wprowadzanie"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Otwieranie aplikacji"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Bieżąca aplikacja"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Pokazuję wyniki wyszukiwania"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Pokazuję skróty systemowe"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Pokazuję skróty dotyczące danych wejściowych"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Pokazuję skróty otwierające aplikacje"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Pokazuję skróty dotyczące bieżącej aplikacji"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Wyświetlanie powiadomień"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Robienie zrzutu ekranu"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Pokazywanie skrótów"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 329f40a5739d..320c6b2fa380 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -133,7 +133,7 @@
<string name="accessibility_phone_button" msgid="4256353121703100427">"Telefone"</string>
<string name="accessibility_voice_assist_button" msgid="6497706615649754510">"Assistência de voz"</string>
<string name="accessibility_wallet_button" msgid="1458258783460555507">"Carteira"</string>
- <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"Leitor de código QR"</string>
+ <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"Leitor de QR code"</string>
<string name="accessibility_unlock_button" msgid="3613812140816244310">"Desbloqueado"</string>
<string name="accessibility_lock_icon" msgid="661492842417875775">"Dispositivo bloqueado"</string>
<string name="accessibility_scanning_face" msgid="3093828357921541387">"Verificando rosto"</string>
@@ -568,7 +568,7 @@
<string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string>
<string name="wallet_error_generic" msgid="257704570182963611">"Ocorreu um problema ao carregar os cards. Tente novamente mais tarde"</string>
<string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Configurações de tela de bloqueio"</string>
- <string name="qr_code_scanner_title" msgid="1938155688725760702">"Leitor de código QR"</string>
+ <string name="qr_code_scanner_title" msgid="1938155688725760702">"Leitor de QR code"</string>
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Atualizando"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabalho"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Modo avião"</string>
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Botão <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Voltar"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Seta para cima"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Seta para baixo"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Seta para a esquerda"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Seta para a direita"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centralizar"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notificações"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Atalhos do teclado"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Alterar layout do teclado"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ou"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Limpar a consulta de pesquisa"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Atalhos"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Atalhos de pesquisa"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nenhum atalho encontrado"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Entrada"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Apps abertos"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"App atual"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Mostrando resultados da pesquisa"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Mostrando atalhos do sistema"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Mostrando atalhos de entrada"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Mostrando atalhos que abrem apps"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando atalhos do app atual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Mostrar as notificações"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Fazer uma captura de tela"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar atalhos"</string>
@@ -1043,7 +1032,7 @@
<string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Como funciona a transmissão"</string>
<string name="media_output_broadcast" msgid="3555580945878071543">"Transmitir"</string>
<string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"As pessoas próximas a você com dispositivos Bluetooth compatíveis podem ouvir a mídia que você está transmitindo"</string>
- <string name="media_output_broadcasting_message" msgid="4150299923404886073">"As pessoas próximas com dispositivos Bluetooth compatíveis podem ler seu código QR ou usar o nome da transmissão e a senha para ouvir a transmissão."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"As pessoas próximas com dispositivos Bluetooth compatíveis podem ler seu QR code ou usar o nome da transmissão e a senha para ouvir a transmissão."</string>
<string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome da transmissão"</string>
<string name="media_output_broadcast_code" msgid="870795639644728542">"Senha"</string>
<string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salvar"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 329f40a5739d..320c6b2fa380 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -133,7 +133,7 @@
<string name="accessibility_phone_button" msgid="4256353121703100427">"Telefone"</string>
<string name="accessibility_voice_assist_button" msgid="6497706615649754510">"Assistência de voz"</string>
<string name="accessibility_wallet_button" msgid="1458258783460555507">"Carteira"</string>
- <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"Leitor de código QR"</string>
+ <string name="accessibility_qr_code_scanner_button" msgid="7521277927692910795">"Leitor de QR code"</string>
<string name="accessibility_unlock_button" msgid="3613812140816244310">"Desbloqueado"</string>
<string name="accessibility_lock_icon" msgid="661492842417875775">"Dispositivo bloqueado"</string>
<string name="accessibility_scanning_face" msgid="3093828357921541387">"Verificando rosto"</string>
@@ -568,7 +568,7 @@
<string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string>
<string name="wallet_error_generic" msgid="257704570182963611">"Ocorreu um problema ao carregar os cards. Tente novamente mais tarde"</string>
<string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Configurações de tela de bloqueio"</string>
- <string name="qr_code_scanner_title" msgid="1938155688725760702">"Leitor de código QR"</string>
+ <string name="qr_code_scanner_title" msgid="1938155688725760702">"Leitor de QR code"</string>
<string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"Atualizando"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabalho"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Modo avião"</string>
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Botão <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Voltar"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Seta para cima"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Seta para baixo"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Seta para a esquerda"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Seta para a direita"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centralizar"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Notificações"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Atalhos do teclado"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Alterar layout do teclado"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ou"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Limpar a consulta de pesquisa"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Atalhos"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Atalhos de pesquisa"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nenhum atalho encontrado"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Entrada"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Apps abertos"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"App atual"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Mostrando resultados da pesquisa"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Mostrando atalhos do sistema"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Mostrando atalhos de entrada"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Mostrando atalhos que abrem apps"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando atalhos do app atual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Mostrar as notificações"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Fazer uma captura de tela"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar atalhos"</string>
@@ -1043,7 +1032,7 @@
<string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Como funciona a transmissão"</string>
<string name="media_output_broadcast" msgid="3555580945878071543">"Transmitir"</string>
<string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"As pessoas próximas a você com dispositivos Bluetooth compatíveis podem ouvir a mídia que você está transmitindo"</string>
- <string name="media_output_broadcasting_message" msgid="4150299923404886073">"As pessoas próximas com dispositivos Bluetooth compatíveis podem ler seu código QR ou usar o nome da transmissão e a senha para ouvir a transmissão."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"As pessoas próximas com dispositivos Bluetooth compatíveis podem ler seu QR code ou usar o nome da transmissão e a senha para ouvir a transmissão."</string>
<string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome da transmissão"</string>
<string name="media_output_broadcast_code" msgid="870795639644728542">"Senha"</string>
<string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salvar"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index ee3945df6365..5ea8f36228a5 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Главный экран"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелка вверх"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелка вниз"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелка влево"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелка вправо"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Центральная стрелка"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Пробел"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Переключение раскладки"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"или"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Удалить поисковый запрос"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Сочетания клавиш"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Поиск сочетаний клавиш"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Нет сочетаний клавиш."</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Ввод"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Запущенные приложения"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Это приложение"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Показаны результаты поиска"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Показаны системные сочетания клавиш"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Показаны сочетания клавиш, связанные с вводом"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Показаны сочетания клавиш для открытия приложений"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Показаны сочетания клавиш для текущего приложения"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Посмотреть уведомления"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Сделать скриншот"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Показать сочетания клавиш"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index e03c7c0f1c2d..afd720831cab 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> බොත්තම"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home යතුර"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"ආපසු"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ඉහළ ඊතලය"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"පහළ ඊතලය"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"වම් ඊතලය"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"දකුණු ඊතලය"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"මැද"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"ඉඩ යතුර"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"යතුරුපුවරු පිරිසැලසුම මාරු කරන්න"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"හෝ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"සෙවීම් විමසුම හිස් කරන්න"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"කෙටිමං"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"කෙටිමං සොයන්න"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"කෙටිමං හමු නොවුණි"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ආදානය"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"විවෘත යෙදුම්"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"වත්මන් යෙදුම"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"සෙවීම් ප්‍රතිඵල පෙන්වමින්"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"පද්ධති කෙටිමං පෙන්වමින්"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ආදාන කෙටිමං පෙන්වමින්"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"යෙදුම් විවෘත කරන කෙටිමං පෙන්වමින්"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"වත්මන් යෙදුම සඳහා කෙටිමං පෙන්වමින්"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"දැනුම්දීම් බලන්න"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"තිර රුව ගන්න"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"කෙටිමං පෙන්වන්න"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index ca49d66716d8..6019e1897500 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Tlačidlo <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Domov"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Späť"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Šípka nahor"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Šípka nadol"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Šípka doľava"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Šípka doprava"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Do stredu"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Medzerník"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Upozornenia"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Klávesové skratky"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Prepnúť rozloženie klávesnice"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"alebo"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Vymazať vyhľadávací dopyt"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Skratky"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Hľadajte skratky"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nenašli sa žiadne skratky"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Vstup"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Otvorenie apl."</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aktuálna aplik."</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Zobrazujú sa výsledky vyhľadávania"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Zobrazujú sa skratky systému"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Zobrazujú sa skratky vstupu"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Zobrazujú sa skratky na otvorenie aplikácií"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Zobrazujú sa skratky aktuálnej aplikácie"</string>
<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>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index c779b65c239f..80ce4ec4d08e 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Butoni <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Kreu"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Prapa"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Shigjeta lart"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Shigjeta poshtë"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Shigjeta majtas"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Shigjeta djathtas"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Qendror"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Hapësirë"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Njoftimet"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Shkurtoret e tastierës"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Ndërro strukturën e tastierës"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"ose"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Pastro pyetjen e kërkimit"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Shkurtoret"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Kërko shkurtoret"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Nuk u gjet shkurtore"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Hyrja"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Apl. e hapura"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Apl. aktual"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Po shfaqen rezultatet e kërkimit"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Po shfaqen shkurtoret e sistemit"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Po shfaqen shkurtoret e hyrjes"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Po shfaqen shkurtoret që hapin aplikacionet"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Po shfaqen shkurtoret për aplikacionin aktual"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Shiko njoftimet"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Nxirr një pamje ekrani"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Shfaq shkurtoret"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 48673b90ca8f..a6d00ba088a5 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Дугме <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Тастер Почетна"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Тастер Назад"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрелица нагоре"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрелица надоле"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрелица налево"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрелица надесно"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Тастер са централном стрелицом"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Размак"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Промени распоред тастатуре"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"или"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Обриши упит за претрагу"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Пречице"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Претражите пречице"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Нису пронађене пречице"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Унос"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Отварање аплик"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Актуелна аплик"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Приказују се резултати претраге"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Приказују се системске пречице"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Приказују се пречице за уметање"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Приказују се пречице за отварање апликација"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Приказују се пречице за актуелну апликацију"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Прикажи обавештења"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Направи снимак екрана"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Прикажи пречице"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 0b2cab0454f8..6b6fa6ae7290 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Knappen <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Start"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Tillbaka"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Uppåtpil"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Nedåtpil"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Vänsterpil"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Högerpil"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Centrera"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Blanksteg"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Aviseringar"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Kortkommandon"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Byt tangentbordslayout"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"eller"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Rensa sökfråga"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Kortkommandon"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Sök efter kortkommando"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Inga resultat"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Inmatning"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Öppna appar"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Aktuell app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Visar sökresultat"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Visar genvägar för systemet"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Visar genvägar för indata"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Visar genvägar som öppnar appar"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Visar genvägar för den aktuella appen"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Se aviseringar"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ta skärmbild"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Se genvägar"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 7989a3539cf5..f247da5a6579 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> பட்டன்"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"ஹோம்"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"பேக்"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"மேல்நோக்கிய அம்புக்குறி"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"கீழ்நோக்கிய அம்புக்குறி"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"இடது அம்புக்குறி"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"வலது அம்புக்குறி"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"நடு"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"ஸ்பேஸ்"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"கீபோர்டு லே அவுட்டை மாற்று"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"அல்லது"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"தேடல் வினவலை அழிக்கும்"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"ஷார்ட்கட்கள்"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ஷார்ட்கட்களைத் தேடுக"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ஷார்ட்கட்கள் எதுவுமில்லை"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"உள்ளீடு"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"திறந்த ஆப்ஸ்"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"தற்போதைய ஆப்ஸ்"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"தேடல் முடிவுகளைக் காட்டுகிறது"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"சிஸ்டம் ஷார்ட்கட்களைக் காட்டுகிறது"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"உள்ளிடுவதற்கான ஷார்ட்கட்களைக் காட்டுகிறது"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ஆப்ஸைத் திறப்பதற்கான ஷார்ட்கட்களைக் காட்டுகிறது"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"தற்போது உபயோகத்தில் இருக்கும் ஆப்ஸுக்கான ஷார்ட்கட்களைக் காட்டுகிறது"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"அறிவிப்புகளைக் காட்டுதல்"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ஸ்கிரீன்ஷாட் எடுத்தல்"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"ஷார்ட்கட்களைக் காட்டுதல்"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 6b2c032fcb22..cdc57c8fcc24 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"బటన్ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"వెనుకకు"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"పై వైపు బాణం"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"కింది వైపు బాణం"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ఎడమ వైపు బాణం"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"కుడి వైపు బాణం"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"మధ్య"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"అంతరం"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"కీబోర్డ్ లేఅవుట్‌ను మార్చండి"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"లేదా"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"సెర్చ్ క్వెరీని క్లియర్ చేయండి"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"షార్ట్‌కట్‌లు"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"షార్ట్‌కట్స్ సెర్చ్ చేయండి"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"షార్ట్‌కట్‌లు ఏవీ లేవు"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ఇన్‌పుట్"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"యాప్స్ తెరవండి"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"ప్రస్తుత యాప్"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"సెర్చ్ ఫలితాలను చూపుతోంది"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"సిస్టమ్ షార్ట్‌కట్‌లను చూపుతోంది"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ఇన్‌పుట్ షార్ట్‌కట్‌లను చూపుతోంది"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"యాప్‌లను తెరిచే షార్ట్‌కట్‌లను చూపుతోంది"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"ప్రస్తుత యాప్ కోసం షార్ట్‌కట్‌లను చూపుతోంది"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"నోటిఫికేషన్‌లను చూడండి"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"స్క్రీన్‌షాట్‌ను తీయండి"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"షార్ట్‌కట్‌లను చూపించండి"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 3c5396fe4823..945563bd3b1a 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"ปุ่ม <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"กลับ"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"ลูกศรขึ้น"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"ลูกศรลง"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"ลูกศรซ้าย"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"ลูกศรขวา"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"กึ่งกลาง"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"วรรค"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"สลับรูปแบบแป้นพิมพ์"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"หรือ"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"ล้างคำค้นหา"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"แป้นพิมพ์ลัด"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"ค้นหาแป้นพิมพ์ลัด"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"ไม่พบแป้นพิมพ์ลัด"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"อินพุต"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"แอปที่เปิดอยู่"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"แอปปัจจุบัน"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"แสดงผลการค้นหา"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"แสดงแป้นพิมพ์ลัดสำหรับระบบ"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"แสดงแป้นพิมพ์ลัดสำหรับอินพุต"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"แสดงแป้นพิมพ์ลัดที่เปิดแอป"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"แสดงแป้นพิมพ์ลัดสำหรับแอปปัจจุบัน"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"ดูการแจ้งเตือน"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"ถ่ายภาพหน้าจอ"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"แสดงแป้นพิมพ์ลัด"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 21111a405308..c251ae888fc9 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Button na <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Back"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Pataas na arrow"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pababang arrow"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Pakaliwang arrow"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Pakanang arrow"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Center"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Mga Notification"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Mga Keyboard Shortcut"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Magpalit ng layout ng keyboard"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"o"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"I-clear ang query sa paghahanap"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Mga Shortcut"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Maghanap ng mga shortcut"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Walang nakitang shortcut"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Input"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Buksan ang app"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Kasalukuyang app"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Ipinapakita ang mga resulta ng paghahanap"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Ipinapakita ang mga shortcut ng system"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Ipinapakita ang mga shortcut ng input"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Ipinapakita ang mga shortcut na nagbubukas ng mga app"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Ipinapakita ang mga shortcut para sa kasalukuyang app"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Tumingin ng mga notification"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Kumuha ng screenshot"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Ipakita ang mga shortcut"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 08b0251d6438..f56b331a76f4 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> düğmesi"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Geri"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Yukarı ok"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Aşağı ok"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Sol ok"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Sağ ok"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Orta"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Boşluk"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Bildirimler"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Klavye Kısayolları"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Klavye düzenini değiştir"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"veya"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Arama sorgusunu temizle"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Kısayollar"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Kısayol araması yapın"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Kısayol bulunamadı"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Giriş"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Uygulamaları açma"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Mevcut uygulama"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Arama sonuçları gösteriliyor"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Sistem kısayolları gösteriliyor"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Giriş kısayolları gösteriliyor"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Uygulamaları açan kısayollar gösteriliyor"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mevcut uygulamanın kısayolları gösteriliyor"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Bildirimleri görüntüle"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Ekran görüntüsü al"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Kısayolları göster"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 9048b6326368..2ea23263a217 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Кнопка <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Назад"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Стрілка вгору"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Стрілка вниз"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Стрілка вліво"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Стрілка вправо"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Центр"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Пробіл"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"Змінити розкладку клавіатури"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"або"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Очистити пошуковий запит"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Швидкі команди"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Пошук швидких команд"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Швидк. команд не знайдено"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Метод введення"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Відкр. додатки"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Поточн. додаток"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Показано результати пошуку"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Показано комбінації клавіш для системних дій"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Показано комбінації клавіш для введення даних"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Показано комбінації клавіш, які відкривають додатки"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Показано комбінації клавіш для поточного додатка"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Переглянути сповіщення"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Зробити знімок екрана"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Показати комбінації клавіш"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index d9bb0aeb0abb..6fb08c42152b 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"بٹن <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"پیچھے"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"اوپر تیر کا نشان"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"نیچے تیر کا نشان"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"بایاں تیر"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"دایاں تیر"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"سینٹر"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"کی بورڈ لے آؤٹ سوئچ کریں"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"یا"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"تلاش کا استفسار صاف کریں"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"شارٹ کٹس"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"شارٹ کٹس تلاش کریں"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"کوئی شارٹ کٹ نہیں ملا"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"ان پٹ"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"ایپس کھولیں"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"موجودہ ایپ"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"تلاش کے نتائج دکھائے جا رہے ہیں"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"سسٹم کے شارٹ کٹس دکھائے جا رہے ہیں"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"ان پٹ شارٹ کٹس دکھائے جا رہے ہیں"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"ایپس کو کھولنے والے شارٹ کٹس دکھائے جا رہے ہیں"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"موجودہ ایپ کے شارٹ کٹس دکھائے جا رہے ہیں"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"اطلاعات دیکھیں"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"اسکرین شاٹ لیں"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"شارٹ کٹس دکھائيں"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 5696c61fba35..4f1e1a1c6d39 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> tugmasi"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Bosh ekran"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Orqaga"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Tepaga strelka"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Pastga strelka"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Chapga strelka"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Oʻngga strelka"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Markaziy ko‘rsatkichli chiziq"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Probel"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Bildirishnomalar"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tezkor tugmalar"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Klaviatura terilmasini almashtirish"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"yoki"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Qidiruv soʻrovini tozalash"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Tezkor tugmalar"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Tezkor tugmalar qidiruvi"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Tezkor tugmalar topilmadi"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Kiritish"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Ochiq ilovalar"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Joriy ilova"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Qidiruv natijalarini koʻrsatadi"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Tizim tezkor tugmalari koʻrsatiladi"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Kirish bilan bogʻliq tezkor tugmalarni koʻrsatiladi"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Ilovalarni ochuvchi tezkor tugmalar koʻrsatiladi"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Joriy ilova uchun tezkor tugmalar koʻrsatiladi"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Bildirishnomalarni ochish"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Skrinshot olish"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Yorliqlarni ochish"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index c281d906b749..aae84c2c6e5c 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Nút <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Quay lại"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Mũi tên lên"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Mũi tên xuống"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Mũi tên trái"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Mũi tên phải"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Giữa"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Dấu cách"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Thông báo"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Phím tắt"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Chuyển đổi bố cục bàn phím"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"hoặc"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Xoá cụm từ tìm kiếm"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Lối tắt"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Lối tắt tìm kiếm"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Không tìm thấy lối tắt"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Đầu vào"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Ứng dụng đang mở"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"Ứng dụng hiện tại"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Hiện các kết quả tìm kiếm"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Hiện các phím tắt cho hệ thống"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Hiện các phím tắt cho phương thức nhập"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Hiện các phím tắt mở ứng dụng"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Hiện các phím tắt cho ứng dụng hiện tại"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Xem thông báo"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Chụp ảnh màn hình"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Hiện phím tắt"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 7cde292938e8..6e73dc1df4df 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g>按钮"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"返回"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"向上键"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"向下键"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"向左键"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"向右键"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"中心"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"空格"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"切换键盘布局"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"或"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"清除搜索查询"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"快捷键"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"搜索快捷键"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"未找到任何快捷键"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"输入"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"已开应用"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"当前应用"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"目前显示的是搜索结果"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"目前显示的是系统快捷键"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"目前显示的是输入法的快捷键"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"目前显示的是用于打开应用的快捷键"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"目前显示的是当前应用的快捷键"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"查看通知"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"截取屏幕截图"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"显示快捷键"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index a997d060ee38..1286fce4425f 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 鍵"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"返回"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"向上箭咀"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"向下箭咀"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"向左箭咀"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"向右箭咀"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"箭咀中央"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"空格"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"切換鍵盤配置"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"或"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"清除搜尋查詢"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"快速鍵"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"搜尋快速鍵"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"找不到快速鍵"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"輸入"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"已開應用程式"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"目前的應用程式"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"顯示緊搜尋結果"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"顯示緊系統嘅快速鍵"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"顯示緊輸入裝置嘅快速鍵"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"顯示緊打開應用程式嘅快速鍵"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"顯示緊而家呢個應用程式用到嘅快速鍵"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"查看通知"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"擷取螢幕截圖"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"顯示快速鍵"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 9900adf22da5..ff9b88a4e004 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"<xliff:g id="NAME">%1$s</xliff:g> 按鈕"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Home 鍵"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"返回"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"向上箭頭"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"向下箭頭"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"向左箭頭"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"向右箭頭"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"中央鍵"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"空格鍵"</string>
@@ -675,10 +671,8 @@
<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_group_system_switch_input" msgid="952555530383268166">"切換鍵盤配置"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"或"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"清除搜尋查詢"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"快速鍵"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"搜尋快速鍵"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"找不到快速鍵"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"輸入"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"已開啟的應用程式"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"目前的應用程式"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"顯示搜尋結果"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"顯示系統快速鍵"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"顯示輸入快速鍵"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"顯示可開啟應用程式的快速鍵"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"顯示目前應用程式的快速鍵"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"查看通知"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"拍攝螢幕截圖"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"顯示快速鍵"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 42ddb35aa16a..6c4261a9b035 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -640,14 +640,10 @@
<string name="keyboard_key_button_template" msgid="8005673627272051429">"Inkinobho <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="keyboard_key_home" msgid="3734400625170020657">"Ekhaya"</string>
<string name="keyboard_key_back" msgid="4185420465469481999">"Emuva"</string>
- <!-- no translation found for keyboard_key_dpad_up (7199805608386368673) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_down (3354221123220737397) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_left (144176368026538621) -->
- <skip />
- <!-- no translation found for keyboard_key_dpad_right (8485763312139820037) -->
- <skip />
+ <string name="keyboard_key_dpad_up" msgid="7199805608386368673">"Umcibisholo waphezulu"</string>
+ <string name="keyboard_key_dpad_down" msgid="3354221123220737397">"Umcibisholo waphansi"</string>
+ <string name="keyboard_key_dpad_left" msgid="144176368026538621">"Umcibisholo wangokwesokunxele"</string>
+ <string name="keyboard_key_dpad_right" msgid="8485763312139820037">"Umcibisholo wangokwesokudla"</string>
<string name="keyboard_key_dpad_center" msgid="4079412840715672825">"Maphakathi"</string>
<string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string>
<string name="keyboard_key_space" msgid="6980847564173394012">"Isikhala"</string>
@@ -675,10 +671,8 @@
<string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Izaziso"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Izinqamulelo Zekhibhodi"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Shintsha isakhiwo sekhibhodi"</string>
- <!-- no translation found for keyboard_shortcut_join (3578314570034512676) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_clear_text (6631051796030377857) -->
- <skip />
+ <string name="keyboard_shortcut_join" msgid="3578314570034512676">"noma"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Sula umbuzo wosesho"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Izinqamuleli"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Sesha izinqamuleli"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Azikho izinqamuleli ezitholakele"</string>
@@ -686,16 +680,11 @@
<string name="keyboard_shortcut_search_category_input" msgid="5440558509904296233">"Okokufaka"</string>
<string name="keyboard_shortcut_search_category_open_apps" msgid="1450959949739257562">"Vula ama-app"</string>
<string name="keyboard_shortcut_search_category_current_app" msgid="2011953559133734491">"I-app yamanje"</string>
- <!-- no translation found for keyboard_shortcut_a11y_show_search_results (2865241062981833705) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_system (7744143131119370483) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_input (4589316004510335529) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_open_apps (6175417687221004059) -->
- <skip />
- <!-- no translation found for keyboard_shortcut_a11y_filter_current_app (7944592357493737911) -->
- <skip />
+ <string name="keyboard_shortcut_a11y_show_search_results" msgid="2865241062981833705">"Ibonisa imiphumela yosesho"</string>
+ <string name="keyboard_shortcut_a11y_filter_system" msgid="7744143131119370483">"Ibonisa izinqamuleli zesistimu"</string>
+ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Ibonisa izinqamuleli zokufakwayo"</string>
+ <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Ibonisa izinqamuleli ezivula ama-app"</string>
+ <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Ibonisa izinqamuleli ze-app yamanje"</string>
<string name="group_system_access_notification_shade" msgid="1619028907006553677">"Buka izaziso"</string>
<string name="group_system_full_screenshot" msgid="5742204844232667785">"Thatha isithombe-skrini"</string>
<string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Bonisa izinqamuleli"</string>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 5f6a39a91b8b..462fc95b8cd1 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -56,6 +56,8 @@
<color name="kg_user_switcher_restricted_avatar_icon_color">@color/GM2_grey_600</color>
<!-- Color of background circle of user avatars in keyguard user switcher -->
<color name="user_avatar_color_bg">?android:attr/colorBackgroundFloating</color>
+ <!-- Color of border for keyguard password input when focused -->
+ <color name="bouncer_password_focus_color">@*android:color/system_secondary_light</color>
<!-- Icon color for user avatars in user switcher quick settings -->
<color name="qs_user_switcher_avatar_icon_color">#3C4043</color>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index f49d2a19bcd4..7ca0b6ee8d9f 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -3245,6 +3245,8 @@
<!--- Title of the dialog appearing when an external display is connected, asking whether to start mirroring [CHAR LIMIT=NONE]-->
<string name="connected_display_dialog_start_mirroring">Mirror to external display?</string>
+ <!--- Body of the mirroring dialog, shown when dual display is enabled. This signals that enabling mirroring will stop concurrent displays on a foldable device. [CHAR LIMIT=NONE]-->
+ <string name="connected_display_dialog_dual_display_stop_warning">Any dual screen activity currently running will be stopped</string>
<!--- Label of the "enable display" button of the dialog appearing when an external display is connected [CHAR LIMIT=NONE]-->
<string name="mirror_display">Mirror display</string>
<!--- Label of the dismiss button of the dialog appearing when an external display is connected [CHAR LIMIT=NONE]-->
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
index 36fe75f69a45..9764de1993e5 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
@@ -168,7 +168,6 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
// Set selected property on so the view can send accessibility events.
mPasswordEntry.setSelected(true);
- mPasswordEntry.setDefaultFocusHighlightEnabled(false);
mOkButton = findViewById(R.id.key_enter);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/DisplayStateRepository.kt b/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/DisplayStateRepository.kt
index ff23837703b5..b0143f5cdc4a 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/DisplayStateRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/data/repository/DisplayStateRepository.kt
@@ -60,6 +60,8 @@ interface DisplayStateRepository {
val currentRotation: StateFlow<DisplayRotation>
}
+// TODO(b/296211844): This class could directly use DeviceStateRepository and DisplayRepository
+// instead.
@SysUISingleton
class DisplayStateRepositoryImpl
@Inject
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 bed42833a1d4..333fc194b288 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
@@ -24,13 +24,14 @@ import com.android.systemui.communal.domain.model.CommunalContentModel
import com.android.systemui.communal.shared.model.CommunalSceneKey
import com.android.systemui.media.controls.ui.MediaHost
import com.android.systemui.shade.ShadeViewController
+import javax.inject.Provider
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
/** The base view model for the communal hub. */
abstract class BaseCommunalViewModel(
private val communalInteractor: CommunalInteractor,
- private val shadeViewController: ShadeViewController,
+ private val shadeViewController: Provider<ShadeViewController>,
private val powerManager: PowerManager,
val mediaHost: MediaHost,
) {
@@ -48,7 +49,7 @@ abstract class BaseCommunalViewModel(
fun onOuterTouch(motionEvent: MotionEvent) {
// Forward the touch to the shade so that basic gestures like swipe up/down for
// shade/bouncer work.
- shadeViewController.handleExternalTouch(motionEvent)
+ shadeViewController.get().handleExternalTouch(motionEvent)
}
// TODO(b/308813166): remove once CommunalContainer is moved lower in z-order and doesn't block
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 b6843c529180..c82e00038b34 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
@@ -25,6 +25,7 @@ import com.android.systemui.media.dagger.MediaModule
import com.android.systemui.shade.ShadeViewController
import javax.inject.Inject
import javax.inject.Named
+import javax.inject.Provider
import kotlinx.coroutines.flow.Flow
/** The view model for communal hub in edit mode. */
@@ -33,7 +34,7 @@ class CommunalEditModeViewModel
@Inject
constructor(
private val communalInteractor: CommunalInteractor,
- shadeViewController: ShadeViewController,
+ shadeViewController: Provider<ShadeViewController>,
powerManager: PowerManager,
@Named(MediaModule.COMMUNAL_HUB) mediaHost: MediaHost,
) : BaseCommunalViewModel(communalInteractor, shadeViewController, powerManager, mediaHost) {
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
index d7dcdb9ea4f0..abf198637911 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
@@ -26,6 +26,7 @@ import com.android.systemui.media.dagger.MediaModule
import com.android.systemui.shade.ShadeViewController
import javax.inject.Inject
import javax.inject.Named
+import javax.inject.Provider
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
@@ -39,7 +40,7 @@ class CommunalViewModel
constructor(
private val communalInteractor: CommunalInteractor,
tutorialInteractor: CommunalTutorialInteractor,
- shadeViewController: ShadeViewController,
+ shadeViewController: Provider<ShadeViewController>,
powerManager: PowerManager,
@Named(MediaModule.COMMUNAL_HUB) mediaHost: MediaHost,
) : BaseCommunalViewModel(communalInteractor, shadeViewController, powerManager, mediaHost) {
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
index 9672facb8610..e7b87730f94b 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
@@ -36,6 +36,8 @@ import com.android.systemui.unfold.FoldStateLogger;
import com.android.systemui.unfold.FoldStateLoggingProvider;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
+import com.android.systemui.unfold.dagger.UnfoldBg;
+import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder;
import com.android.wm.shell.back.BackAnimation;
import com.android.wm.shell.bubbles.Bubbles;
import com.android.wm.shell.desktopmode.DesktopMode;
@@ -137,19 +139,26 @@ public interface SysUIComponent {
c.getUnfoldHapticsPlayer();
c.getNaturalRotationUnfoldProgressProvider().init();
c.getUnfoldLatencyTracker().init();
- c.getFoldStateLoggingProvider()
- .ifPresent(FoldStateLoggingProvider::init);
- c.getFoldStateLogger().ifPresent(FoldStateLogger::init);
- final UnfoldTransitionProgressProvider progressProvider =
- Flags.unfoldAnimationBackgroundProgress()
- ? c.getBgUnfoldTransitionProgressProvider()
- : c.getUnfoldTransitionProgressProvider();
- progressProvider.addCallback(c.getUnfoldTransitionProgressForwarder());
});
// No init method needed, just needs to be gotten so that it's created.
getMediaMuteAwaitConnectionCli();
getNearbyMediaDevicesManager();
getConnectingDisplayViewModel().init();
+ getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init);
+ getFoldStateLogger().ifPresent(FoldStateLogger::init);
+
+ Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider;
+
+ if (Flags.unfoldAnimationBackgroundProgress()) {
+ unfoldTransitionProgressProvider = getBgUnfoldTransitionProgressProvider();
+ } else {
+ unfoldTransitionProgressProvider = getUnfoldTransitionProgressProvider();
+ }
+ unfoldTransitionProgressProvider
+ .ifPresent(
+ (progressProvider) ->
+ getUnfoldTransitionProgressForwarder()
+ .ifPresent(progressProvider::addCallback));
}
/**
@@ -171,6 +180,37 @@ public interface SysUIComponent {
ContextComponentHelper getContextComponentHelper();
/**
+ * Creates a UnfoldTransitionProgressProvider that calculates progress in the background.
+ */
+ @SysUISingleton
+ @UnfoldBg
+ Optional<UnfoldTransitionProgressProvider> getBgUnfoldTransitionProgressProvider();
+
+ /**
+ * Creates a UnfoldTransitionProgressProvider that calculates progress in the main thread.
+ */
+ @SysUISingleton
+ Optional<UnfoldTransitionProgressProvider> getUnfoldTransitionProgressProvider();
+
+ /**
+ * Creates a UnfoldTransitionProgressForwarder.
+ */
+ @SysUISingleton
+ Optional<UnfoldTransitionProgressForwarder> getUnfoldTransitionProgressForwarder();
+
+ /**
+ * Creates a FoldStateLoggingProvider.
+ */
+ @SysUISingleton
+ Optional<FoldStateLoggingProvider> getFoldStateLoggingProvider();
+
+ /**
+ * Creates a FoldStateLogger.
+ */
+ @SysUISingleton
+ Optional<FoldStateLogger> getFoldStateLogger();
+
+ /**
* Main dependency providing module.
*/
@SysUISingleton
diff --git a/packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt b/packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt
index 65cd84bc4da1..373279cec5d1 100644
--- a/packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/DisplayModule.kt
@@ -16,6 +16,8 @@
package com.android.systemui.display
+import com.android.systemui.display.data.repository.DeviceStateRepository
+import com.android.systemui.display.data.repository.DeviceStateRepositoryImpl
import com.android.systemui.display.data.repository.DisplayRepository
import com.android.systemui.display.data.repository.DisplayRepositoryImpl
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor
@@ -32,4 +34,9 @@ interface DisplayModule {
): ConnectedDisplayInteractor
@Binds fun bindsDisplayRepository(displayRepository: DisplayRepositoryImpl): DisplayRepository
+
+ @Binds
+ fun bindsDeviceStateRepository(
+ deviceStateRepository: DeviceStateRepositoryImpl
+ ): DeviceStateRepository
}
diff --git a/packages/SystemUI/src/com/android/systemui/display/data/repository/DeviceStateRepository.kt b/packages/SystemUI/src/com/android/systemui/display/data/repository/DeviceStateRepository.kt
new file mode 100644
index 000000000000..83337f760c33
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/display/data/repository/DeviceStateRepository.kt
@@ -0,0 +1,88 @@
+/*
+ * 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.display.data.repository
+
+import android.content.Context
+import android.hardware.devicestate.DeviceStateManager
+import com.android.internal.R
+import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.display.data.repository.DeviceStateRepository.DeviceState
+import java.util.concurrent.Executor
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.stateIn
+
+interface DeviceStateRepository {
+ val state: StateFlow<DeviceState>
+
+ enum class DeviceState {
+ /** Device state in [R.array.config_foldedDeviceStates] */
+ FOLDED,
+ /** Device state in [R.array.config_halfFoldedDeviceStates] */
+ HALF_FOLDED,
+ /** Device state in [R.array.config_openDeviceStates] */
+ UNFOLDED,
+ /** Device state in [R.array.config_rearDisplayDeviceStates] */
+ REAR_DISPLAY,
+ /** Device state in [R.array.config_concurrentDisplayDeviceStates] */
+ CONCURRENT_DISPLAY,
+ /** Device state in none of the other arrays. */
+ UNKNOWN,
+ }
+}
+
+class DeviceStateRepositoryImpl
+@Inject
+constructor(
+ context: Context,
+ deviceStateManager: DeviceStateManager,
+ @Background bgScope: CoroutineScope,
+ @Background executor: Executor
+) : DeviceStateRepository {
+
+ override val state: StateFlow<DeviceState> =
+ conflatedCallbackFlow {
+ val callback =
+ DeviceStateManager.DeviceStateCallback { state ->
+ trySend(deviceStateToPosture(state))
+ }
+ deviceStateManager.registerCallback(executor, callback)
+ awaitClose { deviceStateManager.unregisterCallback(callback) }
+ }
+ .stateIn(bgScope, started = SharingStarted.WhileSubscribed(), DeviceState.UNKNOWN)
+
+ private fun deviceStateToPosture(deviceStateId: Int): DeviceState {
+ return deviceStateMap.firstOrNull { (ids, _) -> deviceStateId in ids }?.deviceState
+ ?: DeviceState.UNKNOWN
+ }
+
+ private val deviceStateMap =
+ listOf(
+ R.array.config_foldedDeviceStates to DeviceState.FOLDED,
+ R.array.config_halfFoldedDeviceStates to DeviceState.HALF_FOLDED,
+ R.array.config_openDeviceStates to DeviceState.UNFOLDED,
+ R.array.config_rearDisplayDeviceStates to DeviceState.REAR_DISPLAY,
+ R.array.config_concurrentDisplayDeviceStates to DeviceState.CONCURRENT_DISPLAY,
+ )
+ .map { IdsPerDeviceState(context.resources.getIntArray(it.first).toSet(), it.second) }
+
+ private data class IdsPerDeviceState(val ids: Set<Int>, val deviceState: DeviceState)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractor.kt b/packages/SystemUI/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractor.kt
index 20a9e5d572c9..73b7a8ac7bd3 100644
--- a/packages/SystemUI/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractor.kt
@@ -21,6 +21,7 @@ import android.companion.virtual.flags.Flags
import android.view.Display
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.display.data.repository.DeviceStateRepository
import com.android.systemui.display.data.repository.DisplayRepository
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.PendingDisplay
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.State
@@ -55,6 +56,9 @@ interface ConnectedDisplayInteractor {
/** Pending display that can be enabled to be used by the system. */
val pendingDisplay: Flow<PendingDisplay?>
+ /** Pending display that can be enabled to be used by the system. */
+ val concurrentDisplaysInProgress: Flow<Boolean>
+
/** Possible connected display state. */
enum class State {
DISCONNECTED,
@@ -84,6 +88,7 @@ constructor(
private val virtualDeviceManager: VirtualDeviceManager,
keyguardRepository: KeyguardRepository,
displayRepository: DisplayRepository,
+ deviceStateRepository: DeviceStateRepository,
@Background backgroundCoroutineDispatcher: CoroutineDispatcher,
) : ConnectedDisplayInteractor {
@@ -128,9 +133,16 @@ constructor(
}
}
+ override val concurrentDisplaysInProgress: Flow<Boolean> =
+ deviceStateRepository.state
+ .map { it == DeviceStateRepository.DeviceState.CONCURRENT_DISPLAY }
+ .distinctUntilChanged()
+ .flowOn(backgroundCoroutineDispatcher)
+
private fun DisplayRepository.PendingDisplay.toInteractorPendingDisplay(): PendingDisplay =
object : PendingDisplay {
override suspend fun enable() = this@toInteractorPendingDisplay.enable()
+
override suspend fun ignore() = this@toInteractorPendingDisplay.ignore()
}
diff --git a/packages/SystemUI/src/com/android/systemui/display/ui/view/MirroringConfirmationDialog.kt b/packages/SystemUI/src/com/android/systemui/display/ui/view/MirroringConfirmationDialog.kt
index d500d1c2d238..c0a873ac9a65 100644
--- a/packages/SystemUI/src/com/android/systemui/display/ui/view/MirroringConfirmationDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/ui/view/MirroringConfirmationDialog.kt
@@ -37,11 +37,13 @@ class MirroringConfirmationDialog(
private val onCancelMirroring: View.OnClickListener,
private val navbarBottomInsetsProvider: () -> Int,
configurationController: ConfigurationController? = null,
+ private val showConcurrentDisplayInfo: Boolean = false,
theme: Int = R.style.Theme_SystemUI_Dialog,
) : SystemUIBottomSheetDialog(context, configurationController, theme) {
private lateinit var mirrorButton: TextView
private lateinit var dismissButton: TextView
+ private lateinit var dualDisplayWarning: TextView
private var enabledPressed = false
override fun onCreate(savedInstanceState: Bundle?) {
@@ -56,6 +58,11 @@ class MirroringConfirmationDialog(
dismissButton =
requireViewById<TextView>(R.id.cancel).apply { setOnClickListener(onCancelMirroring) }
+ dualDisplayWarning =
+ requireViewById<TextView>(R.id.dual_display_warning).apply {
+ visibility = if (showConcurrentDisplayInfo) View.VISIBLE else View.GONE
+ }
+
setOnDismissListener {
if (!enabledPressed) {
onCancelMirroring.onClick(null)
diff --git a/packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt b/packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt
index 19b4d2220558..10aa70391f01 100644
--- a/packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt
@@ -17,6 +17,7 @@ package com.android.systemui.display.ui.viewmodel
import android.app.Dialog
import android.content.Context
+import com.android.server.policy.feature.flags.Flags
import com.android.systemui.biometrics.Utils
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
@@ -28,8 +29,9 @@ import com.android.systemui.statusbar.policy.ConfigurationController
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.launchIn
-import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
/**
@@ -44,25 +46,33 @@ constructor(
private val connectedDisplayInteractor: ConnectedDisplayInteractor,
@Application private val scope: CoroutineScope,
@Background private val bgDispatcher: CoroutineDispatcher,
- private val configurationController: ConfigurationController
+ private val configurationController: ConfigurationController,
) {
private var dialog: Dialog? = null
/** Starts listening for pending displays. */
fun init() {
- connectedDisplayInteractor.pendingDisplay
- .onEach { pendingDisplay ->
+ val pendingDisplayFlow = connectedDisplayInteractor.pendingDisplay
+ val concurrentDisplaysInProgessFlow =
+ if (Flags.enableDualDisplayBlocking()) {
+ connectedDisplayInteractor.concurrentDisplaysInProgress
+ } else {
+ flow { emit(false) }
+ }
+ pendingDisplayFlow
+ .combine(concurrentDisplaysInProgessFlow) { pendingDisplay, concurrentDisplaysInProgress
+ ->
if (pendingDisplay == null) {
hideDialog()
} else {
- showDialog(pendingDisplay)
+ showDialog(pendingDisplay, concurrentDisplaysInProgress)
}
}
.launchIn(scope)
}
- private fun showDialog(pendingDisplay: PendingDisplay) {
+ private fun showDialog(pendingDisplay: PendingDisplay, concurrentDisplaysInProgess: Boolean) {
hideDialog()
dialog =
MirroringConfirmationDialog(
@@ -77,6 +87,7 @@ constructor(
},
navbarBottomInsetsProvider = { Utils.getNavbarInsets(context).bottom },
configurationController,
+ showConcurrentDisplayInfo = concurrentDisplaysInProgess
)
.apply { show() }
}
diff --git a/packages/SystemUI/src/com/android/systemui/dump/LogBufferFreezer.kt b/packages/SystemUI/src/com/android/systemui/dump/LogBufferFreezer.kt
index 29f464285e5d..a97d5050421a 100644
--- a/packages/SystemUI/src/com/android/systemui/dump/LogBufferFreezer.kt
+++ b/packages/SystemUI/src/com/android/systemui/dump/LogBufferFreezer.kt
@@ -20,6 +20,7 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
+import android.os.Trace
import android.os.UserHandle
import android.util.Log
import com.android.systemui.broadcast.BroadcastDispatcher
@@ -53,6 +54,8 @@ class LogBufferFreezer constructor(
}
private fun onBugreportStarted() {
+ Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport",
+ "BUGREPORT_STARTED broadcast received")
pendingToken?.run()
Log.i(TAG, "Freezing log buffers")
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
index 11d6507c03d9..e8ceabf90af7 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
@@ -438,12 +438,6 @@ object Flags {
val LOCKSCREEN_ENABLE_LANDSCAPE =
unreleasedFlag("lockscreen.enable_landscape")
- // TODO(b/281648899): Tracking bug
- @Keep
- @JvmField
- val WALLPAPER_MULTI_CROP =
- sysPropBooleanFlag("persist.wm.debug.wallpaper_multi_crop", default = false)
-
// 1200 - predictive back
@Keep
@JvmField
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
index 5cc2e0aa811c..45433e62f214 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
@@ -60,6 +60,7 @@ import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.os.SystemProperties;
+import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
@@ -1052,6 +1053,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
if (ActivityManager.isUserAMonkey()) {
return;
}
+ Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport", "BugReportAction#onPress");
// Add a little delay before executing, to give the
// dialog a chance to go away before it takes a
// screenshot.
@@ -1065,6 +1067,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_PRESS);
if (!mIActivityManager.launchBugReportHandlerApp()) {
Log.w(TAG, "Bugreport handler could not be launched");
+ Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport",
+ "BugReportAction#requestingInteractiveBugReport");
mIActivityManager.requestInteractiveBugReport();
}
} catch (RemoteException e) {
@@ -1084,6 +1088,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
// Take a "full" bugreport.
mMetricsLogger.action(MetricsEvent.ACTION_BUGREPORT_FROM_POWER_MENU_FULL);
mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS);
+ Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport",
+ "BugReportAction#requestingFullBugReport");
mIActivityManager.requestFullBugReport();
} catch (RemoteException e) {
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
index 017dac200431..20da00ee3daf 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
@@ -43,6 +43,7 @@ import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardIndicationAreaViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel
+import com.android.systemui.plugins.FalsingManager
import com.android.systemui.res.R
import com.android.systemui.shade.NotificationShadeWindowView
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -81,6 +82,7 @@ constructor(
private val interactionJankMonitor: InteractionJankMonitor,
private val deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor,
private val vibratorHelper: VibratorHelper,
+ private val falsingManager: FalsingManager,
) : CoreStartable {
private var rootViewHandle: DisposableHandle? = null
@@ -155,6 +157,7 @@ constructor(
interactionJankMonitor,
deviceEntryHapticsInteractor,
vibratorHelper,
+ falsingManager,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt
index fbd62cef7dfb..48b663493e59 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt
@@ -28,7 +28,7 @@ import java.util.TreeMap
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.flow.asSharedFlow
+import kotlinx.coroutines.flow.MutableStateFlow
/**
* Manages blueprint changes for the lockscreen.
@@ -48,17 +48,14 @@ constructor(
configurationRepository: ConfigurationRepository,
blueprints: Set<@JvmSuppressWildcards KeyguardBlueprint>,
) {
- private val blueprintIdMap: TreeMap<String, KeyguardBlueprint> = TreeMap()
- private val _blueprint: MutableSharedFlow<KeyguardBlueprint> = MutableSharedFlow(replay = 1)
- val blueprint: Flow<KeyguardBlueprint> = _blueprint.asSharedFlow()
-
+ // This is TreeMap so that we can order the blueprints and assign numerical values to the
+ // blueprints in the adb tool.
+ private val blueprintIdMap: TreeMap<String, KeyguardBlueprint> =
+ TreeMap<String, KeyguardBlueprint>().apply { putAll(blueprints.associateBy { it.id }) }
+ val blueprint: MutableStateFlow<KeyguardBlueprint> = MutableStateFlow(blueprintIdMap[DEFAULT]!!)
+ val refreshBluePrint: MutableSharedFlow<Unit> = MutableSharedFlow(extraBufferCapacity = 1)
val configurationChange: Flow<Unit> = configurationRepository.onAnyConfigurationChange
- init {
- blueprintIdMap.putAll(blueprints.associateBy { it.id })
- applyBlueprint(blueprintIdMap[DEFAULT]!!)
- }
-
/**
* Emits the blueprint value to the collectors.
*
@@ -96,14 +93,17 @@ constructor(
/** Emits the blueprint value to the collectors. */
fun applyBlueprint(blueprint: KeyguardBlueprint?) {
- blueprint?.let { _blueprint.tryEmit(it) }
+ if (blueprint == this.blueprint.value) {
+ refreshBlueprint()
+ return
+ }
+
+ blueprint?.let { this.blueprint.value = it }
}
/** Re-emits the last emitted blueprint value if possible. */
fun refreshBlueprint() {
- if (_blueprint.replayCache.isNotEmpty()) {
- _blueprint.tryEmit(_blueprint.replayCache.last())
- }
+ refreshBluePrint.tryEmit(Unit)
}
/** Prints all available blueprints to the PrintWriter. */
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 2d6c0e1c13b2..b51edab6dfe8 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
@@ -157,6 +157,9 @@ interface KeyguardRepository {
val lastDozeTapToWakePosition: StateFlow<Point?>
+ /** Last point that [KeyguardRootView] was tapped */
+ val lastRootViewTapPosition: MutableStateFlow<Point?>
+
/** Observable for the [StatusBarState] */
val statusBarState: StateFlow<StatusBarState>
@@ -418,6 +421,8 @@ constructor(
_lastDozeTapToWakePosition.value = position
}
+ override val lastRootViewTapPosition: MutableStateFlow<Point?> = MutableStateFlow(null)
+
override val isDreamingWithOverlay: Flow<Boolean> =
conflatedCallbackFlow {
val callback =
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt
index 7dab84dc7da3..ba44e6832161 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt
@@ -21,11 +21,15 @@ import android.content.Context
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.data.repository.KeyguardBlueprintRepository
+import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint
import com.android.systemui.keyguard.ui.view.layout.blueprints.SplitShadeKeyguardBlueprint
import com.android.systemui.statusbar.policy.SplitShadeStateController
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch
@@ -39,7 +43,18 @@ constructor(
private val splitShadeStateController: SplitShadeStateController,
) {
- val blueprint = keyguardBlueprintRepository.blueprint
+ /**
+ * The current blueprint for the lockscreen.
+ *
+ * This flow can also emit the same blueprint value if refreshBlueprint is emitted.
+ */
+ val blueprint: Flow<KeyguardBlueprint> =
+ merge(
+ keyguardBlueprintRepository.blueprint,
+ keyguardBlueprintRepository.refreshBluePrint.map {
+ keyguardBlueprintRepository.blueprint.value
+ }
+ )
init {
applicationScope.launch {
@@ -91,4 +106,8 @@ constructor(
fun refreshBlueprint() {
keyguardBlueprintRepository.refreshBlueprint()
}
+
+ fun getCurrentBlueprint(): KeyguardBlueprint {
+ return keyguardBlueprintRepository.blueprint.value
+ }
}
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 b8c392591494..702386d3b498 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
@@ -171,6 +171,9 @@ constructor(
/** Whether the keyguard is going away. */
val isKeyguardGoingAway: Flow<Boolean> = repository.isKeyguardGoingAway
+ /** Last point that [KeyguardRootView] view was tapped */
+ val lastRootViewTapPosition: Flow<Point?> = repository.lastRootViewTapPosition.asStateFlow()
+
/** Whether the primary bouncer is showing or not. */
val primaryBouncerShowing: Flow<Boolean> = bouncerRepository.primaryBouncerShow
@@ -304,6 +307,10 @@ constructor(
repository.setClockShouldBeCentered(shouldBeCentered)
}
+ fun setLastRootViewTapPosition(point: Point?) {
+ repository.lastRootViewTapPosition.value = point
+ }
+
companion object {
private const val TAG = "KeyguardInteractor"
}
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 02c6f33ffd01..e603ead463f2 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
@@ -19,6 +19,8 @@ package com.android.systemui.keyguard.ui.binder
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.annotation.DrawableRes
+import android.annotation.SuppressLint
+import android.graphics.Point
import android.view.HapticFeedbackConstants
import android.view.View
import android.view.View.OnLayoutChangeListener
@@ -47,6 +49,7 @@ import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
+import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.clocks.ClockController
import com.android.systemui.res.R
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -73,6 +76,7 @@ import kotlinx.coroutines.launch
@OptIn(ExperimentalCoroutinesApi::class)
object KeyguardRootViewBinder {
+ @SuppressLint("ClickableViewAccessibility")
@JvmStatic
fun bind(
view: ViewGroup,
@@ -87,6 +91,7 @@ object KeyguardRootViewBinder {
interactionJankMonitor: InteractionJankMonitor?,
deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor?,
vibratorHelper: VibratorHelper?,
+ falsingManager: FalsingManager?,
): DisposableHandle {
var onLayoutChangeListener: OnLayoutChange? = null
val childViews = mutableMapOf<Int, View>()
@@ -94,6 +99,16 @@ object KeyguardRootViewBinder {
val burnInLayerId = R.id.burn_in_layer
val aodNotificationIconContainerId = R.id.aod_notification_icon_container
val largeClockId = R.id.lockscreen_clock_view_large
+
+ if (keyguardBottomAreaRefactor()) {
+ view.setOnTouchListener { _, event ->
+ if (falsingManager?.isFalseTap(FalsingManager.LOW_PENALTY) == false) {
+ viewModel.setRootViewLastTapPosition(Point(event.x.toInt(), event.y.toInt()))
+ }
+ false
+ }
+ }
+
val disposableHandle =
view.repeatWhenAttached {
repeatOnLifecycle(Lifecycle.State.CREATED) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt
index 8514225fda90..11e63e76c289 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt
@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.ui.binder
+import android.graphics.Rect
import android.view.View
import androidx.core.view.isVisible
import androidx.lifecycle.Lifecycle
@@ -25,6 +26,8 @@ import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.animation.view.LaunchableLinearLayout
import com.android.systemui.common.ui.binder.IconViewBinder
import com.android.systemui.common.ui.binder.TextViewBinder
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardLongPressViewModel
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardSettingsMenuViewModel
import com.android.systemui.keyguard.util.WallpaperPickerIntentUtils
import com.android.systemui.keyguard.util.WallpaperPickerIntentUtils.LAUNCH_SOURCE_KEYGUARD
@@ -35,12 +38,15 @@ import com.android.systemui.statusbar.VibratorHelper
import kotlinx.coroutines.DisposableHandle
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.launch
object KeyguardSettingsViewBinder {
fun bind(
parentView: View,
viewModel: KeyguardSettingsMenuViewModel,
+ longPressViewModel: KeyguardLongPressViewModel,
+ rootViewModel: KeyguardRootViewModel,
vibratorHelper: VibratorHelper,
activityStarter: ActivityStarter
): DisposableHandle {
@@ -88,6 +94,18 @@ object KeyguardSettingsViewBinder {
}
}
}
+
+ launch {
+ rootViewModel.lastRootViewTapPosition.filterNotNull().collect { point ->
+ if (view.isVisible) {
+ val hitRect = Rect()
+ view.getHitRect(hitRect)
+ if (!hitRect.contains(point.x, point.y)) {
+ longPressViewModel.onTouchedOutside()
+ }
+ }
+ }
+ }
}
}
return disposableHandle
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 4eecfdefa663..03e45fdbe75f 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
@@ -376,6 +376,7 @@ constructor(
null, // jank monitor not required for preview mode
null, // device entry haptics not required preview mode
null, // device entry haptics not required for preview mode
+ null, // falsing manager not required for preview mode
)
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/BaseBlueprintTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/BaseBlueprintTransition.kt
index 42b1c1044cda..d0626d58a4ad 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/BaseBlueprintTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/BaseBlueprintTransition.kt
@@ -24,6 +24,7 @@ import android.transition.TransitionValues
import android.transition.Visibility
import android.view.View
import android.view.ViewGroup
+import androidx.constraintlayout.helper.widget.Layer
class BaseBlueprintTransition : TransitionSet() {
init {
@@ -31,6 +32,7 @@ class BaseBlueprintTransition : TransitionSet() {
addTransition(AlphaOutVisibility())
.addTransition(ChangeBounds())
.addTransition(AlphaInVisibility())
+ excludeTarget(Layer::class.java, /* exclude= */ true)
}
class AlphaOutVisibility : Visibility() {
override fun onDisappear(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultSettingsPopupMenuSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultSettingsPopupMenuSection.kt
index 9a33f08386a3..4bc2d86e6b54 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultSettingsPopupMenuSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultSettingsPopupMenuSection.kt
@@ -29,15 +29,15 @@ import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.WRAP_CONTENT
import androidx.core.view.isVisible
import com.android.systemui.Flags.keyguardBottomAreaRefactor
-import com.android.systemui.res.R
import com.android.systemui.animation.view.LaunchableLinearLayout
import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.flags.FeatureFlags
-import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.binder.KeyguardSettingsViewBinder
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardLongPressViewModel
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardSettingsMenuViewModel
import com.android.systemui.plugins.ActivityStarter
+import com.android.systemui.res.R
import com.android.systemui.statusbar.VibratorHelper
import javax.inject.Inject
import kotlinx.coroutines.DisposableHandle
@@ -47,6 +47,8 @@ class DefaultSettingsPopupMenuSection
constructor(
@Main private val resources: Resources,
private val keyguardSettingsMenuViewModel: KeyguardSettingsMenuViewModel,
+ private val keyguardLongPressViewModel: KeyguardLongPressViewModel,
+ private val keyguardRootViewModel: KeyguardRootViewModel,
private val vibratorHelper: VibratorHelper,
private val activityStarter: ActivityStarter,
) : KeyguardSection() {
@@ -73,6 +75,8 @@ constructor(
KeyguardSettingsViewBinder.bind(
constraintLayout.requireViewById<View>(R.id.keyguard_settings_button),
keyguardSettingsMenuViewModel,
+ keyguardLongPressViewModel,
+ keyguardRootViewModel,
vibratorHelper,
activityStarter,
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt
index 921fb3b1e79f..f5963be55b2d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt
@@ -87,8 +87,13 @@ constructor(
)
setGoneMargin(R.id.nssl_placeholder, TOP, bottomMargin)
} else {
- connect(R.id.nssl_placeholder, TOP, R.id.keyguard_status_view, TOP, bottomMargin)
+ val splitShadeTopMargin =
+ context.resources.getDimensionPixelSize(
+ R.dimen.large_screen_shade_header_height
+ )
+ connect(R.id.nssl_placeholder, TOP, PARENT_ID, TOP, splitShadeTopMargin)
}
+
connect(R.id.nssl_placeholder, START, PARENT_ID, START)
connect(R.id.nssl_placeholder, END, PARENT_ID, END)
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 97ddbb033648..4588e02df10e 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
@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.ui.viewmodel
+import android.graphics.Point
import android.util.MathUtils
import android.view.View.VISIBLE
import com.android.app.animation.Interpolators
@@ -101,6 +102,9 @@ constructor(
val goneToAodTransition = keyguardTransitionInteractor.transition(from = GONE, to = AOD)
+ /** Last point that the root view was tapped */
+ val lastRootViewTapPosition: Flow<Point?> = keyguardInteractor.lastRootViewTapPosition
+
/** the shared notification container bounds *on the lockscreen* */
val notificationBounds: StateFlow<NotificationContainerBounds> =
keyguardInteractor.notificationContainerBounds
@@ -262,4 +266,8 @@ constructor(
}
.toAnimatedValueFlow()
}
+
+ fun setRootViewLastTapPosition(point: Point) {
+ keyguardInteractor.setLastRootViewTapPosition(point)
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapper.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapper.kt
new file mode 100644
index 000000000000..3f30c75a6b6a
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/UiModeNightTileMapper.kt
@@ -0,0 +1,128 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain
+
+import android.app.UiModeManager
+import android.content.res.Resources
+import android.text.TextUtils
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.model.UiModeNightTileModel
+import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
+import com.android.systemui.qs.tiles.viewmodel.QSTileState
+import com.android.systemui.res.R
+import java.time.LocalTime
+import java.time.format.DateTimeFormatter
+import javax.inject.Inject
+
+/** Maps [UiModeNightTileModel] to [QSTileState]. */
+class UiModeNightTileMapper @Inject constructor(@Main private val resources: Resources) :
+ QSTileDataToStateMapper<UiModeNightTileModel> {
+ companion object {
+ val formatter12Hour: DateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a")
+ val formatter24Hour: DateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm")
+ }
+ override fun map(config: QSTileConfig, data: UiModeNightTileModel): QSTileState =
+ with(data) {
+ QSTileState.build(resources, config.uiConfig) {
+ var shouldSetSecondaryLabel = false
+
+ if (isPowerSave) {
+ secondaryLabel =
+ resources.getString(
+ R.string.quick_settings_dark_mode_secondary_label_battery_saver
+ )
+ } else if (uiMode == UiModeManager.MODE_NIGHT_AUTO && isLocationEnabled) {
+ secondaryLabel =
+ resources.getString(
+ if (isNightMode)
+ R.string.quick_settings_dark_mode_secondary_label_until_sunrise
+ else R.string.quick_settings_dark_mode_secondary_label_on_at_sunset
+ )
+ } else if (uiMode == UiModeManager.MODE_NIGHT_CUSTOM) {
+ if (nightModeCustomType == UiModeManager.MODE_NIGHT_CUSTOM_TYPE_SCHEDULE) {
+ val time: LocalTime =
+ if (isNightMode) {
+ customNightModeEnd
+ } else {
+ customNightModeStart
+ }
+
+ val formatter: DateTimeFormatter =
+ if (is24HourFormat) formatter24Hour else formatter12Hour
+
+ secondaryLabel =
+ resources.getString(
+ if (isNightMode)
+ R.string.quick_settings_dark_mode_secondary_label_until
+ else R.string.quick_settings_dark_mode_secondary_label_on_at,
+ formatter.format(time)
+ )
+ } else if (
+ nightModeCustomType == UiModeManager.MODE_NIGHT_CUSTOM_TYPE_BEDTIME
+ ) {
+ secondaryLabel =
+ resources.getString(
+ if (isNightMode)
+ R.string
+ .quick_settings_dark_mode_secondary_label_until_bedtime_ends
+ else R.string.quick_settings_dark_mode_secondary_label_on_at_bedtime
+ )
+ } else {
+ secondaryLabel = null // undefined type of nightModeCustomType
+ shouldSetSecondaryLabel = true
+ }
+ } else {
+ secondaryLabel = null
+ shouldSetSecondaryLabel = true
+ }
+
+ contentDescription =
+ if (TextUtils.isEmpty(secondaryLabel)) label
+ else TextUtils.concat(label, ", ", secondaryLabel)
+ if (isPowerSave) {
+ activationState = QSTileState.ActivationState.UNAVAILABLE
+ if (shouldSetSecondaryLabel)
+ secondaryLabel = resources.getStringArray(R.array.tile_states_dark)[0]
+ } else {
+ activationState =
+ if (isNightMode) QSTileState.ActivationState.ACTIVE
+ else QSTileState.ActivationState.INACTIVE
+
+ if (shouldSetSecondaryLabel) {
+ secondaryLabel =
+ if (activationState == QSTileState.ActivationState.INACTIVE)
+ resources.getStringArray(R.array.tile_states_dark)[1]
+ else resources.getStringArray(R.array.tile_states_dark)[2]
+ }
+ }
+
+ val iconRes =
+ if (activationState == QSTileState.ActivationState.ACTIVE)
+ R.drawable.qs_light_dark_theme_icon_on
+ else R.drawable.qs_light_dark_theme_icon_off
+ val iconResource = Icon.Resource(iconRes, null)
+ icon = { iconResource }
+
+ supportedActions =
+ if (activationState == QSTileState.ActivationState.UNAVAILABLE)
+ setOf(QSTileState.UserAction.LONG_CLICK)
+ else setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileDataInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileDataInteractor.kt
new file mode 100644
index 000000000000..c928e8af17fc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileDataInteractor.kt
@@ -0,0 +1,113 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain.interactor
+
+import android.app.UiModeManager
+import android.content.Context
+import android.content.res.Configuration
+import android.os.UserHandle
+import com.android.systemui.common.coroutine.ConflatedCallbackFlow
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
+import com.android.systemui.qs.tiles.base.interactor.QSTileDataInteractor
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.model.UiModeNightTileModel
+import com.android.systemui.statusbar.policy.BatteryController
+import com.android.systemui.statusbar.policy.ConfigurationController
+import com.android.systemui.statusbar.policy.LocationController
+import com.android.systemui.util.time.DateFormatUtil
+import javax.inject.Inject
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flowOf
+
+/** Observes ui mode night state changes providing the [UiModeNightTileModel]. */
+class UiModeNightTileDataInteractor
+@Inject
+constructor(
+ @Application private val context: Context,
+ private val configurationController: ConfigurationController,
+ private val uiModeManager: UiModeManager,
+ private val batteryController: BatteryController,
+ private val locationController: LocationController,
+ private val dateFormatUtil: DateFormatUtil,
+) : QSTileDataInteractor<UiModeNightTileModel> {
+
+ override fun tileData(
+ user: UserHandle,
+ triggers: Flow<DataUpdateTrigger>
+ ): Flow<UiModeNightTileModel> =
+ ConflatedCallbackFlow.conflatedCallbackFlow {
+ // send initial state
+ trySend(createModel())
+
+ val configurationCallback =
+ object : ConfigurationController.ConfigurationListener {
+ override fun onUiModeChanged() {
+ trySend(createModel())
+ }
+ }
+ configurationController.addCallback(configurationCallback)
+
+ val batteryCallback =
+ object : BatteryController.BatteryStateChangeCallback {
+ override fun onPowerSaveChanged(isPowerSave: Boolean) {
+ trySend(createModel())
+ }
+ }
+ batteryController.addCallback(batteryCallback)
+
+ val locationCallback =
+ object : LocationController.LocationChangeCallback {
+ override fun onLocationSettingsChanged(locationEnabled: Boolean) {
+ trySend(createModel())
+ }
+ }
+ locationController.addCallback(locationCallback)
+
+ awaitClose {
+ configurationController.removeCallback(configurationCallback)
+ batteryController.removeCallback(batteryCallback)
+ locationController.removeCallback(locationCallback)
+ }
+ }
+
+ private fun createModel(): UiModeNightTileModel {
+ val uiMode = uiModeManager.nightMode
+ val nightMode =
+ (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) ==
+ Configuration.UI_MODE_NIGHT_YES
+ val powerSave = batteryController.isPowerSave
+ val locationEnabled = locationController.isLocationEnabled
+ val nightModeCustomType = uiModeManager.nightModeCustomType
+ val use24HourFormat = dateFormatUtil.is24HourFormat
+ val customNightModeEnd = uiModeManager.customNightModeEnd
+ val customNightModeStart = uiModeManager.customNightModeStart
+
+ return UiModeNightTileModel(
+ uiMode,
+ nightMode,
+ powerSave,
+ locationEnabled,
+ nightModeCustomType,
+ use24HourFormat,
+ customNightModeEnd,
+ customNightModeStart
+ )
+ }
+
+ override fun availability(user: UserHandle): Flow<Boolean> = flowOf(true)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileUserActionInteractor.kt
new file mode 100644
index 000000000000..00d7a629f5be
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/interactor/UiModeNightTileUserActionInteractor.kt
@@ -0,0 +1,59 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain.interactor
+
+import android.app.UiModeManager
+import android.content.Intent
+import android.provider.Settings
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
+import com.android.systemui.qs.tiles.base.interactor.QSTileInput
+import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.model.UiModeNightTileModel
+import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction
+import javax.inject.Inject
+import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.withContext
+
+/** Handles ui mode night tile clicks. */
+class UiModeNightTileUserActionInteractor
+@Inject
+constructor(
+ @Background private val backgroundContext: CoroutineContext,
+ private val uiModeManager: UiModeManager,
+ private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler,
+) : QSTileUserActionInteractor<UiModeNightTileModel> {
+
+ override suspend fun handleInput(input: QSTileInput<UiModeNightTileModel>) =
+ with(input) {
+ when (action) {
+ is QSTileUserAction.Click -> {
+ if (!input.data.isPowerSave) {
+ withContext(backgroundContext) {
+ uiModeManager.setNightModeActivated(!input.data.isNightMode)
+ }
+ }
+ }
+ is QSTileUserAction.LongClick -> {
+ qsTileIntentUserActionHandler.handle(
+ action.view,
+ Intent(Settings.ACTION_DARK_THEME_SETTINGS)
+ )
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/model/UiModeNightTileModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/model/UiModeNightTileModel.kt
new file mode 100644
index 000000000000..4fa1306d988d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/uimodenight/domain/model/UiModeNightTileModel.kt
@@ -0,0 +1,35 @@
+/*
+ * 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.qs.tiles.impl.uimodenight.domain.model
+
+import java.time.LocalTime
+
+/**
+ * UiModeNight tile model. Quick Settings tile for: Night Mode / Dark Theme / Dark Mode.
+ *
+ * @param isNightMode is true when the NightMode is enabled;
+ */
+data class UiModeNightTileModel(
+ val uiMode: Int,
+ val isNightMode: Boolean,
+ val isPowerSave: Boolean,
+ val isLocationEnabled: Boolean,
+ val nightModeCustomType: Int,
+ val is24HourFormat: Boolean,
+ val customNightModeEnd: LocalTime,
+ val customNightModeStart: LocalTime
+)
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt
index dbb58a329272..1156250666f3 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt
@@ -31,6 +31,7 @@ import com.android.systemui.flags.ReleasedFlag
import com.android.systemui.flags.ResourceBooleanFlag
import com.android.systemui.flags.UnreleasedFlag
import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
+import com.android.systemui.media.controls.util.MediaInSceneContainerFlag
import com.android.systemui.res.R
import dagger.Module
import dagger.Provides
@@ -82,6 +83,10 @@ constructor(
flagName = KeyguardShadeMigrationNssl.FLAG_NAME,
flagValue = KeyguardShadeMigrationNssl.isEnabled,
),
+ AconfigFlagMustBeEnabled(
+ flagName = MediaInSceneContainerFlag.FLAG_NAME,
+ flagValue = MediaInSceneContainerFlag.isEnabled,
+ ),
) +
classicFlagTokens.map { flagToken -> FlagMustBeEnabled(flagToken) } +
listOf(
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
index 10d51a59e44c..3eb26f498921 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegate.kt
@@ -28,6 +28,7 @@ import android.view.MotionEvent.ACTION_MOVE
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
+import android.view.ViewGroup
import android.view.accessibility.AccessibilityNodeInfo
import android.widget.AdapterView
import android.widget.ArrayAdapter
@@ -64,10 +65,13 @@ class ScreenRecordPermissionDialogDelegate(
mediaProjectionMetricsLogger,
R.drawable.ic_screenrecord,
R.color.screenrecord_icon_color
- ), SystemUIDialog.Delegate {
+ ),
+ SystemUIDialog.Delegate {
private lateinit var tapsSwitch: Switch
+ private lateinit var tapsSwitchContainer: ViewGroup
private lateinit var tapsView: View
private lateinit var audioSwitch: Switch
+ private lateinit var audioSwitchContainer: ViewGroup
private lateinit var options: Spinner
override fun createDialog(): SystemUIDialog {
@@ -114,12 +118,17 @@ class ScreenRecordPermissionDialogDelegate(
private fun initRecordOptionsView() {
audioSwitch = dialog.requireViewById(R.id.screenrecord_audio_switch)
tapsSwitch = dialog.requireViewById(R.id.screenrecord_taps_switch)
+ audioSwitchContainer = dialog.requireViewById(R.id.screenrecord_audio_switch_container)
+ tapsSwitchContainer = dialog.requireViewById(R.id.screenrecord_taps_switch_container)
// Add these listeners so that the switch only responds to movement
// within its target region, to meet accessibility requirements
audioSwitch.setOnTouchListener { _, event -> event.action == ACTION_MOVE }
tapsSwitch.setOnTouchListener { _, event -> event.action == ACTION_MOVE }
+ audioSwitchContainer.setOnClickListener { audioSwitch.toggle() }
+ tapsSwitchContainer.setOnClickListener { tapsSwitch.toggle() }
+
tapsView = dialog.requireViewById(R.id.show_taps)
updateTapsViewVisibility()
diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
index 8397caae438f..dd194eaade9b 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
@@ -794,6 +794,13 @@ public class QuickSettingsController implements Dumpable {
/** update Qs height state */
public void setExpansionHeight(float height) {
+ // TODO(b/277909752): remove below log when bug is fixed
+ if (mSplitShadeEnabled && mShadeExpandedFraction == 1.0f && height == 0
+ && mBarState == SHADE) {
+ Log.wtf(TAG,
+ "setting QS height to 0 in split shade while shade is open(ing). "
+ + "Value of isExpandImmediate() = " + isExpandImmediate());
+ }
int maxHeight = getMaxExpansionHeight();
height = Math.min(Math.max(
height, getMinExpansionHeight()), maxHeight);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractor.kt
index c2c5eed6f013..adf6cca1ac65 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractor.kt
@@ -68,6 +68,8 @@ constructor(
marginTop = getDimensionPixelSize(R.dimen.notification_panel_margin_top),
marginTopLargeScreen =
getDimensionPixelSize(R.dimen.large_screen_shade_header_height),
+ keyguardSplitShadeTopMargin =
+ getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin),
)
}
}
@@ -95,5 +97,6 @@ constructor(
val marginBottom: Int,
val marginTop: Int,
val marginTopLargeScreen: Int,
+ val keyguardSplitShadeTopMargin: Int,
)
}
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 b0f103827de2..5b854e6c8ee7 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
@@ -83,6 +83,14 @@ constructor(
marginTop =
if (it.useLargeScreenHeader) it.marginTopLargeScreen else it.marginTop,
useSplitShade = it.useSplitShade,
+ paddingTop =
+ if (it.useSplitShade) {
+ // When in split shade, the margin is applied twice as the legacy shade
+ // code uses it to calculate padding.
+ it.keyguardSplitShadeTopMargin - 2 * it.marginTopLargeScreen
+ } else {
+ 0
+ }
)
}
.distinctUntilChanged()
@@ -156,11 +164,7 @@ constructor(
),
) { onLockscreen, bounds, config, (top, isInTransitionToAnyState, qsExpansion) ->
if (onLockscreen) {
- if (config.useSplitShade) {
- bounds.copy(top = 0f)
- } else {
- bounds
- }
+ bounds.copy(top = bounds.top + config.paddingTop)
} else {
// When QS expansion > 0, it should directly set the top padding so do not
// animate it
@@ -268,5 +272,6 @@ constructor(
val marginEnd: Int,
val marginBottom: Int,
val useSplitShade: Boolean,
+ val paddingTop: Int,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
index 93bc96022292..af6da3fb6e51 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
@@ -146,7 +146,7 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
* When you just need a dialog, call this.
*/
public SystemUIDialog create() {
- return create(new DialogDelegate<>(){});
+ return create(new DialogDelegate<>(){}, mContext);
}
/**
@@ -155,13 +155,18 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
*
* When you need to customize the dialog, pass it a delegate.
*/
+ public SystemUIDialog create(Delegate delegate, Context context) {
+ return create((DialogDelegate<SystemUIDialog>) delegate, context);
+ }
+
public SystemUIDialog create(Delegate delegate) {
- return create((DialogDelegate<SystemUIDialog>) delegate);
+ return create(delegate, mContext);
}
- private SystemUIDialog create(DialogDelegate<SystemUIDialog> dialogDelegate) {
+ private SystemUIDialog create(DialogDelegate<SystemUIDialog> dialogDelegate,
+ Context context) {
return new SystemUIDialog(
- mContext,
+ context,
DEFAULT_THEME,
DEFAULT_DISMISS_ON_DEVICE_LOCK,
mFeatureFlags,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt
index 18865900eef6..ed0eb6d44508 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/model/InternetTileModel.kt
@@ -29,7 +29,7 @@ import com.android.systemui.qs.tileimpl.QSTileImpl
/** Model describing the state that the QS Internet tile should be in. */
sealed interface InternetTileModel {
- val secondaryTitle: String?
+ val secondaryTitle: CharSequence?
val secondaryLabel: Text?
val iconId: Int?
val icon: QSTile.Icon?
@@ -62,7 +62,7 @@ sealed interface InternetTileModel {
}
data class Active(
- override val secondaryTitle: String? = null,
+ override val secondaryTitle: CharSequence? = null,
override val secondaryLabel: Text? = null,
override val iconId: Int? = null,
override val icon: QSTile.Icon? = null,
@@ -71,7 +71,7 @@ sealed interface InternetTileModel {
) : InternetTileModel
data class Inactive(
- override val secondaryTitle: String? = null,
+ override val secondaryTitle: CharSequence? = null,
override val secondaryLabel: Text? = null,
override val iconId: Int? = null,
override val icon: QSTile.Icon? = null,
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 a80ea905e6e7..99b123fbd702 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
@@ -17,13 +17,14 @@
package com.android.systemui.statusbar.pipeline.shared.ui.viewmodel
import android.content.Context
-import com.android.systemui.res.R
+import android.text.Html
import com.android.systemui.common.shared.model.ContentDescription
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.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tileimpl.QSTileImpl.ResourceIcon
+import com.android.systemui.res.R
import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepository
import com.android.systemui.statusbar.pipeline.ethernet.domain.EthernetInteractor
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
@@ -120,7 +121,7 @@ constructor(
InternetTileModel.Active(
secondaryTitle = secondary,
icon = SignalIcon(signalIcon.toSignalDrawableState()),
- stateDescription = ContentDescription.Loaded(secondary),
+ stateDescription = ContentDescription.Loaded(secondary.toString()),
contentDescription = ContentDescription.Loaded(internetLabel),
)
}
@@ -130,22 +131,25 @@ constructor(
private fun mobileDataContentConcat(
networkName: String?,
dataContentDescription: CharSequence?
- ): String {
+ ): CharSequence {
if (dataContentDescription == null) {
return networkName ?: ""
}
if (networkName == null) {
- return dataContentDescription.toString()
+ return Html.fromHtml(dataContentDescription.toString(), 0)
}
- return context.getString(
- R.string.mobile_carrier_text_format,
- networkName,
- dataContentDescription
+ return Html.fromHtml(
+ context.getString(
+ R.string.mobile_carrier_text_format,
+ networkName,
+ dataContentDescription
+ ),
+ 0
)
}
- private fun loadString(resId: Int): String? =
+ private fun loadString(resId: Int): CharSequence? =
if (resId > 0) {
context.getString(resId)
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
index 3deb9e7414af..80c68023b4c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
@@ -216,7 +216,11 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
private void notifyKeyguardFaceAuthEnabledChanged() {
// Copy the list to allow removal during callback.
- new ArrayList<>(mCallbacks).forEach(Callback::onFaceEnrolledChanged);
+ new ArrayList<>(mCallbacks).forEach(callback -> {
+ if (callback != null) {
+ callback.onFaceEnrolledChanged();
+ }
+ });
}
private void notifyUnlockedChanged() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt
index 0f2da2d09633..087e100e9b33 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt
@@ -38,6 +38,10 @@ import com.android.systemui.qs.tiles.impl.location.domain.LocationTileMapper
import com.android.systemui.qs.tiles.impl.location.domain.interactor.LocationTileDataInteractor
import com.android.systemui.qs.tiles.impl.location.domain.interactor.LocationTileUserActionInteractor
import com.android.systemui.qs.tiles.impl.location.domain.model.LocationTileModel
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.UiModeNightTileMapper
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.interactor.UiModeNightTileDataInteractor
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.interactor.UiModeNightTileUserActionInteractor
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.model.UiModeNightTileModel
import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
import com.android.systemui.qs.tiles.viewmodel.QSTileUIConfig
import com.android.systemui.qs.tiles.viewmodel.QSTileViewModel
@@ -64,6 +68,7 @@ interface PolicyModule {
const val FLASHLIGHT_TILE_SPEC = "flashlight"
const val LOCATION_TILE_SPEC = "location"
const val ALARM_TILE_SPEC = "alarm"
+ const val UIMODENIGHT_TILE_SPEC = "dark"
/** Inject flashlight config */
@Provides
@@ -160,6 +165,38 @@ interface PolicyModule {
stateInteractor,
mapper,
)
+
+ /** Inject uimodenight config */
+ @Provides
+ @IntoMap
+ @StringKey(UIMODENIGHT_TILE_SPEC)
+ fun provideUiModeNightTileConfig(uiEventLogger: QsEventLogger): QSTileConfig =
+ QSTileConfig(
+ tileSpec = TileSpec.create(UIMODENIGHT_TILE_SPEC),
+ uiConfig =
+ QSTileUIConfig.Resource(
+ iconRes = R.drawable.qs_light_dark_theme_icon_off,
+ labelRes = R.string.quick_settings_ui_mode_night_label,
+ ),
+ instanceId = uiEventLogger.getNewInstanceId(),
+ )
+
+ /** Inject uimodenight into tileViewModelMap in QSModule */
+ @Provides
+ @IntoMap
+ @StringKey(UIMODENIGHT_TILE_SPEC)
+ fun provideUiModeNightTileViewModel(
+ factory: QSTileViewModelFactory.Static<UiModeNightTileModel>,
+ mapper: UiModeNightTileMapper,
+ stateInteractor: UiModeNightTileDataInteractor,
+ userActionInteractor: UiModeNightTileUserActionInteractor
+ ): QSTileViewModel =
+ factory.create(
+ TileSpec.create(UIMODENIGHT_TILE_SPEC),
+ userActionInteractor,
+ stateInteractor,
+ mapper,
+ )
}
/** Inject FlashlightTile into tileMap in QSModule */
diff --git a/packages/SystemUI/src/com/android/systemui/unfold/SysUIUnfoldModule.kt b/packages/SystemUI/src/com/android/systemui/unfold/SysUIUnfoldModule.kt
index ff73e0e2ab3f..10fc83c8b82c 100644
--- a/packages/SystemUI/src/com/android/systemui/unfold/SysUIUnfoldModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/unfold/SysUIUnfoldModule.kt
@@ -21,7 +21,6 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.shade.NotificationPanelUnfoldAnimationController
import com.android.systemui.statusbar.phone.StatusBarMoveFromCenterAnimationController
import com.android.systemui.unfold.dagger.UnfoldBg
-import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import com.android.systemui.unfold.util.UnfoldKeyguardVisibilityManager
@@ -107,20 +106,4 @@ interface SysUIUnfoldComponent {
fun getUnfoldLatencyTracker(): UnfoldLatencyTracker
fun getNaturalRotationUnfoldProgressProvider(): NaturalRotationUnfoldProgressProvider
-
- /** Creates a UnfoldTransitionProgressProvider that calculates progress in the main thread. */
- fun getUnfoldTransitionProgressProvider(): UnfoldTransitionProgressProvider
-
- /** Creates a UnfoldTransitionProgressProvider that calculates progress in the background. */
- @UnfoldBg
- fun getBgUnfoldTransitionProgressProvider(): UnfoldTransitionProgressProvider
-
- /** Creates a UnfoldTransitionProgressForwarder. */
- fun getUnfoldTransitionProgressForwarder(): UnfoldTransitionProgressForwarder
-
- /** Creates a FoldStateLoggingProvider. */
- fun getFoldStateLoggingProvider(): Optional<FoldStateLoggingProvider>
-
- /** Creates a FoldStateLogger. */
- fun getFoldStateLogger(): Optional<FoldStateLogger>
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java b/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java
index d6e6f3fc56b1..bd698ab8ad5c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/CsdWarningDialog.java
@@ -157,6 +157,7 @@ public class CsdWarningDialog extends SystemUIDialog
if (mCsdWarning == AudioManager.CSD_WARNING_DOSE_REPEATED_5X) {
// only show a notification in case we reached 500% of dose
show5XNotification();
+ dismissCsdDialog();
return;
}
super.show();
@@ -217,6 +218,10 @@ public class CsdWarningDialog extends SystemUIDialog
@Override
public void onDismiss(DialogInterface unused) {
+ dismissCsdDialog();
+ }
+
+ private void dismissCsdDialog() {
try {
mContext.unregisterReceiver(mReceiver);
} catch (IllegalArgumentException e) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
new file mode 100644
index 000000000000..21b8aca363ca
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/display/data/repository/DeviceStateRepositoryTest.kt
@@ -0,0 +1,164 @@
+/*
+ * 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.display.data.repository
+
+import android.hardware.devicestate.DeviceStateManager
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import androidx.test.filters.SmallTest
+import com.android.internal.R
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.FlowValue
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.display.data.repository.DeviceStateRepository.DeviceState
+import com.android.systemui.util.concurrency.FakeExecutor
+import com.android.systemui.util.mockito.any
+import com.android.systemui.util.mockito.kotlinArgumentCaptor
+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
+import org.junit.Before
+import org.junit.runner.RunWith
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+
+@RunWith(AndroidTestingRunner::class)
+@TestableLooper.RunWithLooper
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+class DeviceStateRepositoryTest : SysuiTestCase() {
+
+ private val deviceStateManager = mock<DeviceStateManager>()
+ private val deviceStateManagerListener =
+ kotlinArgumentCaptor<DeviceStateManager.DeviceStateCallback>()
+
+ private val testScope = TestScope(UnconfinedTestDispatcher())
+ private val fakeExecutor = FakeExecutor(FakeSystemClock())
+
+ private lateinit var deviceStateRepository: DeviceStateRepositoryImpl
+
+ @Before
+ fun setup() {
+ mContext.orCreateTestableResources.apply {
+ addOverride(R.array.config_foldedDeviceStates, listOf(TEST_FOLDED).toIntArray())
+ addOverride(R.array.config_halfFoldedDeviceStates, TEST_HALF_FOLDED.toIntArray())
+ addOverride(R.array.config_openDeviceStates, TEST_UNFOLDED.toIntArray())
+ addOverride(R.array.config_rearDisplayDeviceStates, TEST_REAR_DISPLAY.toIntArray())
+ addOverride(
+ R.array.config_concurrentDisplayDeviceStates,
+ TEST_CONCURRENT_DISPLAY.toIntArray()
+ )
+ }
+ deviceStateRepository =
+ DeviceStateRepositoryImpl(
+ mContext,
+ deviceStateManager,
+ TestScope(UnconfinedTestDispatcher()),
+ fakeExecutor
+ )
+
+ // It should register only after there are clients collecting the flow
+ verify(deviceStateManager, never()).registerCallback(any(), any())
+ }
+
+ @Test
+ fun folded_receivesFoldedState() =
+ testScope.runTest {
+ val state = displayState()
+
+ deviceStateManagerListener.value.onStateChanged(TEST_FOLDED)
+
+ assertThat(state()).isEqualTo(DeviceState.FOLDED)
+ }
+
+ @Test
+ fun halfFolded_receivesHalfFoldedState() =
+ testScope.runTest {
+ val state = displayState()
+
+ deviceStateManagerListener.value.onStateChanged(TEST_HALF_FOLDED)
+
+ assertThat(state()).isEqualTo(DeviceState.HALF_FOLDED)
+ }
+
+ @Test
+ fun unfolded_receivesUnfoldedState() =
+ testScope.runTest {
+ val state = displayState()
+
+ deviceStateManagerListener.value.onStateChanged(TEST_UNFOLDED)
+
+ assertThat(state()).isEqualTo(DeviceState.UNFOLDED)
+ }
+
+ @Test
+ fun rearDisplay_receivesRearDisplayState() =
+ testScope.runTest {
+ val state = displayState()
+
+ deviceStateManagerListener.value.onStateChanged(TEST_REAR_DISPLAY)
+
+ assertThat(state()).isEqualTo(DeviceState.REAR_DISPLAY)
+ }
+
+ @Test
+ fun concurrentDisplay_receivesConcurrentDisplayState() =
+ testScope.runTest {
+ val state = displayState()
+
+ deviceStateManagerListener.value.onStateChanged(TEST_CONCURRENT_DISPLAY)
+
+ assertThat(state()).isEqualTo(DeviceState.CONCURRENT_DISPLAY)
+ }
+
+ @Test
+ fun unknownState_receivesUnknownState() =
+ testScope.runTest {
+ val state = displayState()
+
+ deviceStateManagerListener.value.onStateChanged(123456)
+
+ assertThat(state()).isEqualTo(DeviceState.UNKNOWN)
+ }
+
+ private fun TestScope.displayState(): FlowValue<DeviceState?> {
+ val flowValue = collectLastValue(deviceStateRepository.state)
+ verify(deviceStateManager)
+ .registerCallback(
+ any(),
+ deviceStateManagerListener.capture(),
+ )
+ return flowValue
+ }
+
+ private fun Int.toIntArray() = listOf(this).toIntArray()
+
+ private companion object {
+ // Used to fake the ids in the test. Note that there is no guarantees different devices will
+ // have the same ids (that's why the ones in this test start from 41)
+ const val TEST_FOLDED = 41
+ const val TEST_HALF_FOLDED = 42
+ const val TEST_UNFOLDED = 43
+ const val TEST_REAR_DISPLAY = 44
+ const val TEST_CONCURRENT_DISPLAY = 45
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
index 1f18705edfdb..42b0f5097cad 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/display/domain/interactor/ConnectedDisplayInteractorTest.kt
@@ -28,6 +28,9 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.FlowValue
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.display.data.repository.DeviceStateRepository
+import com.android.systemui.display.data.repository.DeviceStateRepository.DeviceState.CONCURRENT_DISPLAY
+import com.android.systemui.display.data.repository.FakeDeviceStateRepository
import com.android.systemui.display.data.repository.FakeDisplayRepository
import com.android.systemui.display.data.repository.createPendingDisplay
import com.android.systemui.display.data.repository.display
@@ -59,11 +62,13 @@ class ConnectedDisplayInteractorTest : SysuiTestCase() {
private val fakeDisplayRepository = FakeDisplayRepository()
private val fakeKeyguardRepository = FakeKeyguardRepository()
+ private val fakeDeviceStateRepository = FakeDeviceStateRepository()
private val connectedDisplayStateProvider: ConnectedDisplayInteractor =
ConnectedDisplayInteractorImpl(
virtualDeviceManager,
fakeKeyguardRepository,
fakeDisplayRepository,
+ fakeDeviceStateRepository,
UnconfinedTestDispatcher(),
)
private val testScope = TestScope(UnconfinedTestDispatcher())
@@ -283,6 +288,44 @@ class ConnectedDisplayInteractorTest : SysuiTestCase() {
assertThat(pendingDisplay).isNull()
}
+ @Test
+ fun concurrentDisplaysInProgress_started_returnsTrue() =
+ testScope.runTest {
+ val concurrentDisplaysInProgress =
+ collectLastValue(connectedDisplayStateProvider.concurrentDisplaysInProgress)
+
+ fakeDeviceStateRepository.emit(CONCURRENT_DISPLAY)
+
+ assertThat(concurrentDisplaysInProgress()).isTrue()
+ }
+
+ @Test
+ fun concurrentDisplaysInProgress_stopped_returnsFalse() =
+ testScope.runTest {
+ val concurrentDisplaysInProgress =
+ collectLastValue(connectedDisplayStateProvider.concurrentDisplaysInProgress)
+
+ fakeDeviceStateRepository.emit(CONCURRENT_DISPLAY)
+ fakeDeviceStateRepository.emit(DeviceStateRepository.DeviceState.UNKNOWN)
+
+ assertThat(concurrentDisplaysInProgress()).isFalse()
+ }
+
+ @Test
+ fun concurrentDisplaysInProgress_otherStates_returnsFalse() =
+ testScope.runTest {
+ val concurrentDisplaysInProgress =
+ collectLastValue(connectedDisplayStateProvider.concurrentDisplaysInProgress)
+
+ DeviceStateRepository.DeviceState.entries
+ .filter { it != CONCURRENT_DISPLAY }
+ .forEach { deviceState ->
+ fakeDeviceStateRepository.emit(deviceState)
+
+ assertThat(concurrentDisplaysInProgress()).isFalse()
+ }
+ }
+
private fun TestScope.lastValue(): FlowValue<State?> =
collectLastValue(connectedDisplayStateProvider.connectedDisplayState)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
index 5852bdb5c351..f2bd817af44d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
@@ -15,6 +15,8 @@
*
*/
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
package com.android.systemui.keyguard.data.repository
import androidx.test.filters.SmallTest
@@ -25,8 +27,10 @@ import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBl
import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint.Companion.DEFAULT
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
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
@@ -76,8 +80,21 @@ class KeyguardBlueprintRepositoryTest : SysuiTestCase() {
fun testTransitionToLayout_validId() {
assertThat(underTest.applyBlueprint(DEFAULT)).isTrue()
}
+
@Test
fun testTransitionToLayout_invalidId() {
assertThat(underTest.applyBlueprint("abc")).isFalse()
}
+
+ @Test
+ fun testTransitionToSameBlueprint_refreshesBlueprint() =
+ testScope.runTest {
+ val refreshBlueprint by collectLastValue(underTest.refreshBluePrint)
+ runCurrent()
+
+ underTest.applyBlueprint(defaultLockscreenBlueprint)
+ runCurrent()
+
+ assertThat(refreshBlueprint).isNotNull()
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagsTest.kt
index 0173c32bbb94..b90ccc0e3d7e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagsTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagsTest.kt
@@ -27,6 +27,7 @@ import com.android.systemui.flags.ReleasedFlag
import com.android.systemui.flags.ResourceBooleanFlag
import com.android.systemui.flags.UnreleasedFlag
import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
+import com.android.systemui.media.controls.util.MediaInSceneContainerFlag
import com.android.systemui.res.R
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -71,6 +72,7 @@ internal class SceneContainerFlagsTest(
AconfigFlags.FLAG_SCENE_CONTAINER,
AconfigFlags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR,
KeyguardShadeMigrationNssl.FLAG_NAME,
+ MediaInSceneContainerFlag.FLAG_NAME,
)
.forEach { flagToken ->
setFlagsRule.enableFlags(flagToken)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt
index bbc63f2009b9..ae84df55e113 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt
@@ -21,7 +21,6 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.PendingDisplay
-import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.State.CONNECTED
import com.android.systemui.privacy.PrivacyItemController
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.util.mockito.any
@@ -107,5 +106,7 @@ class SystemEventCoordinatorTest : SysuiTestCase() {
get() = flow
override val pendingDisplay: Flow<PendingDisplay?>
get() = MutableSharedFlow<PendingDisplay>()
+ override val concurrentDisplaysInProgress: Flow<Boolean>
+ get() = TODO("Not yet implemented")
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt
index 198f278bf43a..a07b5705d171 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/SharedNotificationContainerInteractorTest.kt
@@ -19,10 +19,10 @@ package com.android.systemui.statusbar.notification.stack.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
-import com.android.systemui.res.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runCurrent
@@ -56,6 +56,7 @@ class SharedNotificationContainerInteractorTest : SysuiTestCase() {
overrideResource(R.dimen.notification_panel_margin_bottom, 10)
overrideResource(R.dimen.notification_panel_margin_top, 10)
overrideResource(R.dimen.large_screen_shade_header_height, 0)
+ overrideResource(R.dimen.keyguard_split_shade_top_margin, 55)
val dimens = collectLastValue(underTest.configurationBasedDimensions)
@@ -70,5 +71,6 @@ class SharedNotificationContainerInteractorTest : SysuiTestCase() {
assertThat(lastDimens.marginBottom).isGreaterThan(0)
assertThat(lastDimens.marginTop).isGreaterThan(0)
assertThat(lastDimens.marginTopLargeScreen).isEqualTo(0)
+ assertThat(lastDimens.keyguardSplitShadeTopMargin).isEqualTo(55)
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
index b4f7b20d12c2..2209e5e64a6d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
@@ -100,6 +100,34 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() {
}
@Test
+ fun validatePaddingTopInSplitShade() =
+ testScope.runTest {
+ overrideResource(R.bool.config_use_split_notification_shade, true)
+ overrideResource(R.dimen.large_screen_shade_header_height, 10)
+ overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
+
+ val dimens by collectLastValue(underTest.configurationBasedDimensions)
+
+ configurationRepository.onAnyConfigurationChange()
+
+ assertThat(dimens!!.paddingTop).isEqualTo(30)
+ }
+
+ @Test
+ fun validatePaddingTop() =
+ testScope.runTest {
+ overrideResource(R.bool.config_use_split_notification_shade, false)
+ overrideResource(R.dimen.large_screen_shade_header_height, 10)
+ overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
+
+ val dimens by collectLastValue(underTest.configurationBasedDimensions)
+
+ configurationRepository.onAnyConfigurationChange()
+
+ assertThat(dimens!!.paddingTop).isEqualTo(0)
+ }
+
+ @Test
fun validateMarginEnd() =
testScope.runTest {
overrideResource(R.dimen.notification_panel_margin_horizontal, 50)
@@ -226,9 +254,9 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() {
}
@Test
- fun positionOnLockscreenNotInSplitShade() =
+ fun boundsOnLockscreenNotInSplitShade() =
testScope.runTest {
- val position by collectLastValue(underTest.bounds)
+ val bounds by collectLastValue(underTest.bounds)
// When not in split shade
overrideResource(R.bool.config_use_split_notification_shade, false)
@@ -242,16 +270,19 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() {
NotificationContainerBounds(top = 1f, bottom = 2f)
)
- assertThat(position).isEqualTo(NotificationContainerBounds(top = 1f, bottom = 2f))
+ assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 1f, bottom = 2f))
}
@Test
- fun positionOnLockscreenInSplitShade() =
+ fun boundsOnLockscreenInSplitShade() =
testScope.runTest {
- val position by collectLastValue(underTest.bounds)
+ val bounds by collectLastValue(underTest.bounds)
// When in split shade
overrideResource(R.bool.config_use_split_notification_shade, true)
+ overrideResource(R.dimen.large_screen_shade_header_height, 10)
+ overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
+
configurationRepository.onAnyConfigurationChange()
runCurrent()
@@ -263,8 +294,8 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() {
)
runCurrent()
- // Top should be overridden to 0f
- assertThat(position).isEqualTo(NotificationContainerBounds(top = 0f, bottom = 2f))
+ // Top should be equal to bounds (1) + padding adjustment (30)
+ assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 31f, bottom = 2f))
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt
index da6c28ad9af4..7deee5a70809 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt
@@ -321,5 +321,7 @@ class PhoneStatusBarPolicyTest : SysuiTestCase() {
get() = TODO("Not yet implemented")
override val pendingDisplay: Flow<PendingDisplay?>
get() = TODO("Not yet implemented")
+ override val concurrentDisplaysInProgress: Flow<Boolean>
+ get() = TODO("Not yet implemented")
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModelTest.kt
index 8405fb43e16a..22dce3a2ff64 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/InternetTileViewModelTest.kt
@@ -337,12 +337,12 @@ class InternetTileViewModelTest : SysuiTestCase() {
networkName.value = NetworkNameModel.Default("test network")
}
- assertThat(latest?.secondaryTitle).contains("test network")
+ assertThat(latest?.secondaryTitle.toString()).contains("test network")
assertThat(latest?.secondaryLabel).isNull()
assertThat(latest?.icon).isInstanceOf(SignalIcon::class.java)
assertThat(latest?.iconId).isNull()
assertThat(latest?.stateDescription.loadContentDescription(context))
- .isEqualTo(latest?.secondaryTitle)
+ .isEqualTo(latest?.secondaryTitle.toString())
assertThat(latest?.contentDescription.loadContentDescription(context))
.isEqualTo(internet)
}
diff --git a/packages/SystemUI/tests/utils/src/android/view/accessibility/AccessibilityManagerKosmos.kt b/packages/SystemUI/tests/utils/src/android/view/accessibility/AccessibilityManagerKosmos.kt
new file mode 100644
index 000000000000..a11bf6a5e79c
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/android/view/accessibility/AccessibilityManagerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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 android.view.accessibility
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.accessibilityManager by Fixture { mock<AccessibilityManager>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/internal/logging/MetricsLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/internal/logging/MetricsLoggerKosmos.kt
new file mode 100644
index 000000000000..a1815c527b35
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/internal/logging/MetricsLoggerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.internal.logging
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.metricsLogger by Fixture { mock<MetricsLogger>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/internal/statusbar/StatusBarServiceKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/internal/statusbar/StatusBarServiceKosmos.kt
new file mode 100644
index 000000000000..b1d67b8fa36d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/internal/statusbar/StatusBarServiceKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.internal.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.statusBarService by Fixture { mock<IStatusBarService>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryKosmos.kt
new file mode 100644
index 000000000000..a464fa80d629
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/AccessibilityRepositoryKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.accessibility.data.repository
+
+import android.view.accessibility.accessibilityManager
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.accessibilityRepository by Fixture {
+ AccessibilityRepository.invoke(a11yManager = accessibilityManager)
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/domain/interactor/AccessibilityInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/domain/interactor/AccessibilityInteractorKosmos.kt
new file mode 100644
index 000000000000..a48fe0ae1bc6
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/domain/interactor/AccessibilityInteractorKosmos.kt
@@ -0,0 +1,27 @@
+/*
+ * 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.accessibility.domain.interactor
+
+import com.android.systemui.accessibility.data.repository.accessibilityRepository
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.accessibilityInteractor by Fixture {
+ AccessibilityInteractor(
+ a11yRepo = accessibilityRepository,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerFakeKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerFakeKosmos.kt
new file mode 100644
index 000000000000..72e1e8ee21e2
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerFakeKosmos.kt
@@ -0,0 +1,21 @@
+/*
+ * 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.classifier
+
+import com.android.systemui.kosmos.Kosmos
+
+val Kosmos.fakeFalsingManager by Kosmos.Fixture { FalsingManagerFake() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerKosmos.kt
new file mode 100644
index 000000000000..366db9cdbf03
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/classifier/FalsingManagerKosmos.kt
@@ -0,0 +1,22 @@
+/*
+ * 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.classifier
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.falsingManager by Fixture { fakeFalsingManager }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt
new file mode 100644
index 000000000000..94d9a72f0215
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.common.domain.interactor
+
+import com.android.systemui.common.ui.data.repository.configurationRepository
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.configurationInteractor by Fixture {
+ ConfigurationInteractorImpl(repository = configurationRepository)
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/concurrency/FakeExecutorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/concurrency/FakeExecutorKosmos.kt
new file mode 100644
index 000000000000..ea887ea791bd
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/concurrency/FakeExecutorKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.concurrency
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.util.concurrency.FakeExecutor
+import com.android.systemui.util.time.fakeSystemClock
+
+var Kosmos.fakeExecutor by Kosmos.Fixture { FakeExecutor(fakeSystemClock) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDeviceStateRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDeviceStateRepository.kt
new file mode 100644
index 000000000000..5f6dc6e7d429
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDeviceStateRepository.kt
@@ -0,0 +1,31 @@
+/*
+ * 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.display.data.repository
+
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+
+/** Fake [DeviceStateRepository] implementation for testing. */
+class FakeDeviceStateRepository : DeviceStateRepository {
+ private val flow = MutableStateFlow(DeviceStateRepository.DeviceState.UNKNOWN)
+
+ /** Emits [value] as [displays] flow value. */
+ suspend fun emit(value: DeviceStateRepository.DeviceState) = flow.emit(value)
+
+ override val state: StateFlow<DeviceStateRepository.DeviceState>
+ get() = flow
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/dump/DumpManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/dump/DumpManagerKosmos.kt
new file mode 100644
index 000000000000..7a6edd0bf0b8
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/dump/DumpManagerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.dump
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.dumpManager by Fixture { mock<DumpManager>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/WakefulnessLifecycleKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/WakefulnessLifecycleKosmos.kt
new file mode 100644
index 000000000000..934ea5f77245
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/WakefulnessLifecycleKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.keyguard
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.wakefulnessLifecycle by Fixture { mock<WakefulnessLifecycle>() }
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 81a7bec52bb5..0e7c6625264c 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
@@ -119,6 +119,8 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
private val _keyguardAlpha = MutableStateFlow(1f)
override val keyguardAlpha: StateFlow<Float> = _keyguardAlpha
+ override val lastRootViewTapPosition: MutableStateFlow<Point?> = MutableStateFlow(null)
+
override fun setQuickSettingsVisible(isVisible: Boolean) {
_isQuickSettingsVisible.value = isVisible
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/NaturalScrollingSettingObserverKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/NaturalScrollingSettingObserverKosmos.kt
new file mode 100644
index 000000000000..61fc6c73248b
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/NaturalScrollingSettingObserverKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.keyguard.domain.interactor
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.naturalScrollingSettingObserver by Fixture { mock<NaturalScrollingSettingObserver>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileKosmos.kt
new file mode 100644
index 000000000000..f0e5807ca515
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileKosmos.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.qs.tiles.impl.uimodenight
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.qs.qsEventLogger
+import com.android.systemui.statusbar.policy.PolicyModule
+
+val Kosmos.qsUiModeNightTileConfig by
+ Kosmos.Fixture { PolicyModule.provideUiModeNightTileConfig(qsEventLogger) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileModelHelper.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileModelHelper.kt
new file mode 100644
index 000000000000..1fe18e3f4d8e
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/uimodenight/UiModeNightTileModelHelper.kt
@@ -0,0 +1,50 @@
+/*
+ * 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.qs.tiles.impl.uimodenight
+
+import android.content.res.Configuration
+import com.android.systemui.qs.tiles.impl.uimodenight.domain.model.UiModeNightTileModel
+import java.time.LocalTime
+
+object UiModeNightTileModelHelper {
+
+ const val DEFAULT_NIGHT_MODE_CUSTOM_TYPE = 0
+ val defaultCustomNightEnd: LocalTime = LocalTime.MAX
+ val defaultCustomNightStart: LocalTime = LocalTime.MIN
+
+ fun createModel(
+ nightMode: Boolean = false,
+ powerSave: Boolean = false,
+ uiMode: Int = Configuration.UI_MODE_NIGHT_NO,
+ isLocationEnabled: Boolean = true,
+ nighModeCustomType: Int = DEFAULT_NIGHT_MODE_CUSTOM_TYPE,
+ is24HourFormat: Boolean = false,
+ customNightModeEnd: LocalTime = defaultCustomNightEnd,
+ customNightModeStart: LocalTime = defaultCustomNightStart
+ ): UiModeNightTileModel {
+ return UiModeNightTileModel(
+ uiMode,
+ nightMode,
+ powerSave,
+ isLocationEnabled,
+ nighModeCustomType,
+ is24HourFormat,
+ customNightModeEnd,
+ customNightModeStart
+ )
+ }
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/WindowRootViewVisibilityRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/WindowRootViewVisibilityRepositoryKosmos.kt
new file mode 100644
index 000000000000..11871d552277
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/WindowRootViewVisibilityRepositoryKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * 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.scene.data.repository
+
+import com.android.internal.statusbar.statusBarService
+import com.android.systemui.concurrency.fakeExecutor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.windowRootViewVisibilityRepository by Fixture {
+ WindowRootViewVisibilityRepository(
+ statusBarService = statusBarService,
+ uiBgExecutor = fakeExecutor,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/transition/LargeScreenShadeInterpolatorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/transition/LargeScreenShadeInterpolatorKosmos.kt
new file mode 100644
index 000000000000..e50d59e9857f
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/transition/LargeScreenShadeInterpolatorKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.shade.transition
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.largeScreenShadeInterpolator by Fixture { mock<LargeScreenShadeInterpolator>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionControllerKosmos.kt
new file mode 100644
index 000000000000..e5a75d59468d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeKeyguardTransitionControllerKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.lockscreenShadeKeyguardTransitionControllerFactory by Fixture {
+ mock<LockscreenShadeKeyguardTransitionController.Factory>()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerKosmos.kt
new file mode 100644
index 000000000000..27679804d11f
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.lockscreenShadeQsTransitionControllerFactory by Fixture {
+ mock<LockscreenShadeQsTransitionController.Factory>()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionControllerKosmos.kt
new file mode 100644
index 000000000000..93a7adf620d2
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeScrimTransitionControllerKosmos.kt
@@ -0,0 +1,35 @@
+/*
+ * 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.statusbar
+
+import android.content.testableContext
+import com.android.systemui.dump.dumpManager
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.phone.scrimController
+import com.android.systemui.statusbar.policy.configurationController
+import com.android.systemui.statusbar.policy.splitShadeStateController
+
+val Kosmos.lockscreenShadeScrimTransitionController by Fixture {
+ LockscreenShadeScrimTransitionController(
+ scrimController = scrimController,
+ context = testableContext,
+ configurationController = configurationController,
+ dumpManager = dumpManager,
+ splitShadeStateController = splitShadeStateController,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerKosmos.kt
new file mode 100644
index 000000000000..2752cc23f88b
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerKosmos.kt
@@ -0,0 +1,65 @@
+/*
+ * 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.statusbar
+
+import android.content.testableContext
+import com.android.systemui.classifier.falsingCollector
+import com.android.systemui.classifier.falsingManager
+import com.android.systemui.dump.dumpManager
+import com.android.systemui.keyguard.domain.interactor.naturalScrollingSettingObserver
+import com.android.systemui.keyguard.wakefulnessLifecycle
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.media.controls.ui.mediaHierarchyManager
+import com.android.systemui.plugins.activityStarter
+import com.android.systemui.power.domain.interactor.powerInteractor
+import com.android.systemui.shade.data.repository.shadeRepository
+import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.statusbar.notification.stack.ambientState
+import com.android.systemui.statusbar.phone.keyguardBypassController
+import com.android.systemui.statusbar.phone.lsShadeTransitionLogger
+import com.android.systemui.statusbar.policy.configurationController
+import com.android.systemui.statusbar.policy.splitShadeStateController
+
+val Kosmos.lockscreenShadeTransitionController by Fixture {
+ LockscreenShadeTransitionController(
+ statusBarStateController = sysuiStatusBarStateController,
+ logger = lsShadeTransitionLogger,
+ keyguardBypassController = keyguardBypassController,
+ lockScreenUserManager = notificationLockscreenUserManager,
+ falsingCollector = falsingCollector,
+ ambientState = ambientState,
+ mediaHierarchyManager = mediaHierarchyManager,
+ scrimTransitionController = lockscreenShadeScrimTransitionController,
+ keyguardTransitionControllerFactory = lockscreenShadeKeyguardTransitionControllerFactory,
+ depthController = notificationShadeDepthController,
+ context = testableContext,
+ splitShadeOverScrollerFactory = splitShadeLockScreenOverScrollerFactory,
+ singleShadeOverScrollerFactory = singleShadeLockScreenOverScrollerFactory,
+ activityStarter = activityStarter,
+ wakefulnessLifecycle = wakefulnessLifecycle,
+ configurationController = configurationController,
+ falsingManager = falsingManager,
+ dumpManager = dumpManager,
+ qsTransitionControllerFactory = lockscreenShadeQsTransitionControllerFactory,
+ shadeRepository = shadeRepository,
+ shadeInteractor = shadeInteractor,
+ powerInteractor = powerInteractor,
+ splitShadeStateController = splitShadeStateController,
+ naturalScrollingSettingObserver = naturalScrollingSettingObserver,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/MediaHierarchyManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/MediaHierarchyManagerKosmos.kt
new file mode 100644
index 000000000000..db2cdfa58f8d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/MediaHierarchyManagerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.media.controls.ui
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.mediaHierarchyManager by Fixture { mock<MediaHierarchyManager>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerKosmos.kt
new file mode 100644
index 000000000000..374381265cfb
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.notificationLockscreenUserManager by Fixture {
+ mock<NotificationLockscreenUserManager>()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationShadeDepthControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationShadeDepthControllerKosmos.kt
new file mode 100644
index 000000000000..3960cd144b2d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationShadeDepthControllerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.notificationShadeDepthController by Fixture { mock<NotificationShadeDepthController>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerKosmos.kt
new file mode 100644
index 000000000000..43e39c05f6e9
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.singleShadeLockScreenOverScrollerFactory by Fixture {
+ mock<SingleShadeLockScreenOverScroller.Factory>()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerKosmos.kt
new file mode 100644
index 000000000000..017371a6cba8
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/SplitShadeLockScreenOverScrollerKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.statusbar
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.splitShadeLockScreenOverScrollerFactory by Fixture {
+ mock<SplitShadeLockScreenOverScroller.Factory>()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractorKosmos.kt
new file mode 100644
index 000000000000..c1e0419e5609
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/domain/interactor/SeenNotificationsInteractorKosmos.kt
@@ -0,0 +1,27 @@
+/*
+ * 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.statusbar.notification.domain.interactor
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository
+
+val Kosmos.seenNotificationsInteractor by Fixture {
+ SeenNotificationsInteractor(
+ notificationListRepository = activeNotificationListRepository,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt
new file mode 100644
index 000000000000..ff22ca00a0a6
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt
@@ -0,0 +1,31 @@
+/*
+ * 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.statusbar.notification.footer.ui.viewmodel
+
+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.statusbar.notification.domain.interactor.activeNotificationsInteractor
+import com.android.systemui.statusbar.notification.domain.interactor.seenNotificationsInteractor
+
+val Kosmos.footerViewModel by Fixture {
+ FooterViewModel(
+ activeNotificationsInteractor = activeNotificationsInteractor,
+ seenNotificationsInteractor = seenNotificationsInteractor,
+ shadeInteractor = shadeInteractor,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorKosmos.kt
index e7bd5ea2b174..5c8fe0d5a81e 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorKosmos.kt
@@ -20,31 +20,29 @@ package com.android.systemui.statusbar.notification.icon.domain.interactor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.statusbar.data.repository.notificationListenerSettingsRepository
import com.android.systemui.statusbar.notification.data.repository.notificationsKeyguardViewStateRepository
import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor
import com.android.wm.shell.bubbles.bubblesOptional
import kotlinx.coroutines.ExperimentalCoroutinesApi
-val Kosmos.alwaysOnDisplayNotificationIconsInteractor by
- Kosmos.Fixture {
- AlwaysOnDisplayNotificationIconsInteractor(
- deviceEntryInteractor = deviceEntryInteractor,
- iconsInteractor = notificationIconsInteractor,
- )
- }
-val Kosmos.statusBarNotificationIconsInteractor by
- Kosmos.Fixture {
- StatusBarNotificationIconsInteractor(
- iconsInteractor = notificationIconsInteractor,
- settingsRepository = notificationListenerSettingsRepository,
- )
- }
-val Kosmos.notificationIconsInteractor by
- Kosmos.Fixture {
- NotificationIconsInteractor(
- activeNotificationsInteractor = activeNotificationsInteractor,
- bubbles = bubblesOptional,
- keyguardViewStateRepository = notificationsKeyguardViewStateRepository,
- )
- }
+val Kosmos.alwaysOnDisplayNotificationIconsInteractor by Fixture {
+ AlwaysOnDisplayNotificationIconsInteractor(
+ deviceEntryInteractor = deviceEntryInteractor,
+ iconsInteractor = notificationIconsInteractor,
+ )
+}
+val Kosmos.statusBarNotificationIconsInteractor by Fixture {
+ StatusBarNotificationIconsInteractor(
+ iconsInteractor = notificationIconsInteractor,
+ settingsRepository = notificationListenerSettingsRepository,
+ )
+}
+val Kosmos.notificationIconsInteractor by Fixture {
+ NotificationIconsInteractor(
+ activeNotificationsInteractor = activeNotificationsInteractor,
+ bubbles = bubblesOptional,
+ keyguardViewStateRepository = notificationsKeyguardViewStateRepository,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ShelfNotificationIconViewStoreKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ShelfNotificationIconViewStoreKosmos.kt
new file mode 100644
index 000000000000..f7f16a4671f9
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/ShelfNotificationIconViewStoreKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.statusbar.notification.icon.ui.viewbinder
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.notification.stack.ui.viewbinder.notifCollection
+
+val Kosmos.shelfNotificationIconViewStore by Fixture {
+ ShelfNotificationIconViewStore(notifCollection = notifCollection)
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/StatusBarIconViewBindingFailureTrackerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/StatusBarIconViewBindingFailureTrackerKosmos.kt
new file mode 100644
index 000000000000..dbd7c6b7d0c7
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/StatusBarIconViewBindingFailureTrackerKosmos.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.statusbar.notification.icon.ui.viewbinder
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.statusBarIconViewBindingFailureTracker by Fixture {
+ StatusBarIconViewBindingFailureTracker()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerShelfViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerShelfViewModelKosmos.kt
new file mode 100644
index 000000000000..d679bb696ce6
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerShelfViewModelKosmos.kt
@@ -0,0 +1,27 @@
+/*
+ * 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.statusbar.notification.icon.ui.viewmodel
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.statusbar.notification.icon.domain.interactor.notificationIconsInteractor
+
+val Kosmos.notificationIconContainerShelfViewModel by
+ Kosmos.Fixture {
+ NotificationIconContainerShelfViewModel(
+ interactor = notificationIconsInteractor,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelKosmos.kt
new file mode 100644
index 000000000000..2523975c182c
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelKosmos.kt
@@ -0,0 +1,27 @@
+/*
+ * 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.statusbar.notification.row.ui.viewmodel
+
+import com.android.systemui.accessibility.domain.interactor.accessibilityInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.activatableNotificationViewModel by Fixture {
+ ActivatableNotificationViewModel.invoke(
+ a11yInteractor = accessibilityInteractor,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorKosmos.kt
new file mode 100644
index 000000000000..2057b849c069
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorKosmos.kt
@@ -0,0 +1,33 @@
+/*
+ * 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.statusbar.notification.shelf.domain.interactor
+
+import com.android.systemui.keyguard.data.repository.deviceEntryFaceAuthRepository
+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.power.domain.interactor.powerInteractor
+import com.android.systemui.statusbar.lockscreenShadeTransitionController
+
+val Kosmos.notificationShelfInteractor by Fixture {
+ NotificationShelfInteractor(
+ keyguardRepository = keyguardRepository,
+ deviceEntryFaceAuthRepository = deviceEntryFaceAuthRepository,
+ powerInteractor = powerInteractor,
+ keyguardTransitionController = lockscreenShadeTransitionController,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelKosmos.kt
new file mode 100644
index 000000000000..988172c7bb13
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelKosmos.kt
@@ -0,0 +1,31 @@
+/*
+ * 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.statusbar.notification.shelf.ui.viewmodel
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.notification.icon.ui.viewmodel.notificationIconContainerShelfViewModel
+import com.android.systemui.statusbar.notification.row.ui.viewmodel.activatableNotificationViewModel
+import com.android.systemui.statusbar.notification.shelf.domain.interactor.notificationShelfInteractor
+
+val Kosmos.notificationShelfViewModel by Fixture {
+ NotificationShelfViewModel(
+ interactor = notificationShelfInteractor,
+ activatableViewModel = activatableNotificationViewModel,
+ icons = notificationIconContainerShelfViewModel,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt
new file mode 100644
index 000000000000..83ac330ee3b4
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt
@@ -0,0 +1,37 @@
+/*
+ * 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.statusbar.notification.stack
+
+import android.content.testableContext
+import com.android.systemui.dump.dumpManager
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.shade.transition.largeScreenShadeInterpolator
+import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+@OptIn(ExperimentalCoroutinesApi::class)
+val Kosmos.ambientState by Fixture {
+ AmbientState(
+ /*context=*/ testableContext,
+ /*dumpManager=*/ dumpManager,
+ /*sectionProvider=*/ stackScrollAlgorithmSectionProvider,
+ /*bypassController=*/ stackScrollAlgorithmBypassController,
+ /*statusBarKeyguardViewManager=*/ statusBarKeyguardViewManager,
+ /*largeScreenShadeInterpolator=*/ largeScreenShadeInterpolator,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt
new file mode 100644
index 000000000000..67343c95f6e1
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * 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.statusbar.notification.stack
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.stackScrollAlgorithmSectionProvider by Fixture {
+ mock<StackScrollAlgorithm.SectionProvider>()
+}
+
+var Kosmos.stackScrollAlgorithmBypassController by Fixture {
+ mock<StackScrollAlgorithm.BypassController>()
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt
new file mode 100644
index 000000000000..baca8b2ef476
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt
@@ -0,0 +1,33 @@
+/*
+ * 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.statusbar.notification.stack.domain.interactor
+
+import com.android.systemui.common.domain.interactor.configurationInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.power.domain.interactor.powerInteractor
+import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor
+import com.android.systemui.util.animation.data.repository.animationStatusRepository
+
+val Kosmos.hideNotificationsInteractor by Fixture {
+ HideNotificationsInteractor(
+ unfoldTransitionInteractor = unfoldTransitionInteractor,
+ configurationInteractor = configurationInteractor,
+ animationsStatus = animationStatusRepository,
+ powerInteractor = powerInteractor,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotifCollectionKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotifCollectionKosmos.kt
new file mode 100644
index 000000000000..d98f49684999
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotifCollectionKosmos.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.statusbar.notification.stack.ui.viewbinder
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.notification.collection.NotifCollection
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.notifCollection by Fixture { mock<NotifCollection>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinderKosmos.kt
new file mode 100644
index 000000000000..75e5aeafd52d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinderKosmos.kt
@@ -0,0 +1,43 @@
+/*
+ * 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.statusbar.notification.stack.ui.viewbinder
+
+import com.android.internal.logging.metricsLogger
+import com.android.systemui.classifier.falsingManager
+import com.android.systemui.common.ui.configurationState
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.kosmos.testDispatcher
+import com.android.systemui.statusbar.notification.icon.ui.viewbinder.shelfNotificationIconViewStore
+import com.android.systemui.statusbar.notification.icon.ui.viewbinder.statusBarIconViewBindingFailureTracker
+import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationListViewModel
+import com.android.systemui.statusbar.phone.notificationIconAreaController
+import com.android.systemui.statusbar.policy.configurationController
+
+val Kosmos.notificationListViewBinder by Fixture {
+ NotificationListViewBinder(
+ viewModel = notificationListViewModel,
+ backgroundDispatcher = testDispatcher,
+ configuration = configurationState,
+ configurationController = configurationController,
+ falsingManager = falsingManager,
+ iconAreaController = notificationIconAreaController,
+ iconViewBindingFailureTracker = statusBarIconViewBindingFailureTracker,
+ metricsLogger = metricsLogger,
+ shelfIconViewStore = shelfNotificationIconViewStore,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/HideListViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/HideListViewModelKosmos.kt
new file mode 100644
index 000000000000..0dc62bfdd3e1
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/HideListViewModelKosmos.kt
@@ -0,0 +1,26 @@
+/*
+ * 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.statusbar.notification.stack.ui.viewmodel
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.notification.stack.domain.interactor.hideNotificationsInteractor
+import javax.inject.Provider
+
+val Kosmos.hideListViewModel by Fixture {
+ HideListViewModel(hideNotificationsInteractor = Provider { hideNotificationsInteractor })
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt
new file mode 100644
index 000000000000..44f31343b06d
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt
@@ -0,0 +1,41 @@
+/*
+ * 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.statusbar.notification.stack.ui.viewmodel
+
+import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
+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.statusbar.notification.domain.interactor.activeNotificationsInteractor
+import com.android.systemui.statusbar.notification.domain.interactor.seenNotificationsInteractor
+import com.android.systemui.statusbar.notification.footer.ui.viewmodel.footerViewModel
+import com.android.systemui.statusbar.notification.shelf.ui.viewmodel.notificationShelfViewModel
+import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor
+import java.util.Optional
+
+val Kosmos.notificationListViewModel by Fixture {
+ NotificationListViewModel(
+ shelf = notificationShelfViewModel,
+ hideListViewModel = hideListViewModel,
+ footer = Optional.of(footerViewModel),
+ activeNotificationsInteractor = activeNotificationsInteractor,
+ keyguardTransitionInteractor = keyguardTransitionInteractor,
+ seenNotificationsInteractor = seenNotificationsInteractor,
+ shadeInteractor = shadeInteractor,
+ zenModeInteractor = zenModeInteractor,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt
new file mode 100644
index 000000000000..e4313bb168b8
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/WindowRootViewVisibilityInteractorKosmos.kt
@@ -0,0 +1,36 @@
+/*
+ * 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.statusbar.notification.stack.ui.viewmodel
+
+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.testScope
+import com.android.systemui.power.domain.interactor.powerInteractor
+import com.android.systemui.scene.data.repository.windowRootViewVisibilityRepository
+import com.android.systemui.scene.domain.interactor.WindowRootViewVisibilityInteractor
+import com.android.systemui.statusbar.policy.headsUpManager
+
+val Kosmos.windowRootViewVisibilityInteractor by Fixture {
+ WindowRootViewVisibilityInteractor(
+ scope = testScope,
+ windowRootViewVisibilityRepository = windowRootViewVisibilityRepository,
+ keyguardRepository = keyguardRepository,
+ headsUpManager = headsUpManager,
+ powerInteractor = powerInteractor,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerKosmos.kt
new file mode 100644
index 000000000000..f4a1da037b2e
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar.phone
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.keyguardBypassController by Fixture { mock<KeyguardBypassController>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/LSShadeTransitionLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/LSShadeTransitionLoggerKosmos.kt
new file mode 100644
index 000000000000..496102f9a2cf
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/LSShadeTransitionLoggerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar.phone
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.lsShadeTransitionLogger by Fixture { mock<LSShadeTransitionLogger>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerKosmos.kt
new file mode 100644
index 000000000000..d44e061a95ea
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar.phone
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.notificationIconAreaController by Fixture { mock<NotificationIconAreaController>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ScrimControllerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ScrimControllerKosmos.kt
new file mode 100644
index 000000000000..3ff57022d336
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/ScrimControllerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar.phone
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.scrimController by Fixture { mock<ScrimController>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerKosmos.kt
index 4e15ea2d9377..ddce4c896c14 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerKosmos.kt
@@ -18,5 +18,7 @@ package com.android.systemui.statusbar.phone
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.util.mockito.mock
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+@OptIn(ExperimentalCoroutinesApi::class)
var Kosmos.statusBarKeyguardViewManager by Kosmos.Fixture { mock<StatusBarKeyguardViewManager>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/HeadsUpManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/HeadsUpManagerKosmos.kt
new file mode 100644
index 000000000000..a4db00c9b6ae
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/HeadsUpManagerKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar.policy
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.headsUpManager by Fixture { mock<HeadsUpManager>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/data/repository/ZenModeRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/data/repository/ZenModeRepositoryKosmos.kt
new file mode 100644
index 000000000000..1ec751193747
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/data/repository/ZenModeRepositoryKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.statusbar.policy.data.repository
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.zenModeRepository by Fixture { fakeZenModeRepository }
+val Kosmos.fakeZenModeRepository by Fixture { FakeZenModeRepository() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorKosmos.kt
new file mode 100644
index 000000000000..78242b69854b
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorKosmos.kt
@@ -0,0 +1,27 @@
+/*
+ * 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.statusbar.policy.domain.interactor
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.statusbar.policy.data.repository.zenModeRepository
+
+val Kosmos.zenModeInteractor by Fixture {
+ ZenModeInteractor(
+ repository = zenModeRepository,
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/UnfoldTransitionProgressProviderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/UnfoldTransitionProgressProviderKosmos.kt
new file mode 100644
index 000000000000..7c54a5707bf4
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/UnfoldTransitionProgressProviderKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.unfold
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.util.mockito.mock
+
+var Kosmos.unfoldTransitionProgressProvider by Fixture { mock<UnfoldTransitionProgressProvider>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/data/repository/UnfoldTransitionRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/data/repository/UnfoldTransitionRepositoryKosmos.kt
new file mode 100644
index 000000000000..2a250c886473
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/data/repository/UnfoldTransitionRepositoryKosmos.kt
@@ -0,0 +1,28 @@
+/*
+ * 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.unfold.data.repository
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.unfold.unfoldTransitionProgressProvider
+import java.util.Optional
+
+val Kosmos.unfoldTransitionRepository by Fixture {
+ UnfoldTransitionRepositoryImpl(
+ unfoldProgressProvider = Optional.of(unfoldTransitionProgressProvider),
+ )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorKosmos.kt
new file mode 100644
index 000000000000..d03616ab98e8
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/unfold/domain/interactor/UnfoldTransitionInteractorKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * 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.unfold.domain.interactor
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.unfold.data.repository.unfoldTransitionRepository
+
+val Kosmos.unfoldTransitionInteractor by Fixture {
+ UnfoldTransitionInteractorImpl(repository = unfoldTransitionRepository)
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/animation/data/repository/AnimationStatusRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/util/animation/data/repository/AnimationStatusRepositoryKosmos.kt
new file mode 100644
index 000000000000..63ea085b572c
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/animation/data/repository/AnimationStatusRepositoryKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * 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.util.animation.data.repository
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+
+val Kosmos.animationStatusRepository by Fixture { fakeAnimationStatusRepository }
+val Kosmos.fakeAnimationStatusRepository by Fixture { FakeAnimationStatusRepository() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeBatteryController.java b/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeBatteryController.java
index 209cac6688a2..5ae033c9870d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeBatteryController.java
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeBatteryController.java
@@ -22,11 +22,16 @@ import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback>
implements BatteryController {
private boolean mIsAodPowerSave = false;
private boolean mWirelessCharging;
+ private boolean mPowerSaveMode = false;
+
+ private final List<BatteryStateChangeCallback> mCallbacks = new ArrayList<>();
public FakeBatteryController(LeakCheck test) {
super(test, "battery");
@@ -44,12 +49,18 @@ public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCal
@Override
public void setPowerSaveMode(boolean powerSave) {
-
+ mPowerSaveMode = powerSave;
+ for (BatteryStateChangeCallback callback: mCallbacks) {
+ callback.onPowerSaveChanged(powerSave);
+ }
}
+ /**
+ * Note: this method ignores the View argument
+ */
@Override
public void setPowerSaveMode(boolean powerSave, View view) {
-
+ setPowerSaveMode(powerSave);
}
@Override
@@ -59,7 +70,7 @@ public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCal
@Override
public boolean isPowerSave() {
- return false;
+ return mPowerSaveMode;
}
@Override
@@ -79,4 +90,14 @@ public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCal
public void setWirelessCharging(boolean wirelessCharging) {
mWirelessCharging = wirelessCharging;
}
+
+ @Override
+ public void addCallback(BatteryStateChangeCallback listener) {
+ mCallbacks.add(listener);
+ }
+
+ @Override
+ public void removeCallback(BatteryStateChangeCallback listener) {
+ mCallbacks.remove(listener);
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeLocationController.java b/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeLocationController.java
index 3c6327514f24..442d15b7bc95 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeLocationController.java
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeLocationController.java
@@ -26,6 +26,7 @@ public class FakeLocationController extends BaseLeakChecker<LocationChangeCallba
implements LocationController {
private final List<LocationChangeCallback> mCallbacks = new ArrayList<>();
+ private boolean mLocationEnabled = false;
public FakeLocationController(LeakCheck test) {
super(test, "location");
@@ -38,13 +39,14 @@ public class FakeLocationController extends BaseLeakChecker<LocationChangeCallba
@Override
public boolean isLocationEnabled() {
- return false;
+ return mLocationEnabled;
}
@Override
public boolean setLocationEnabled(boolean enabled) {
+ mLocationEnabled = enabled;
mCallbacks.forEach(callback -> callback.onLocationSettingsChanged(enabled));
- return false;
+ return true;
}
@Override
diff --git a/ravenwood/framework-minus-apex-ravenwood-policies.txt b/ravenwood/framework-minus-apex-ravenwood-policies.txt
index 6a6ae3876f6b..c9069e5db9cb 100644
--- a/ravenwood/framework-minus-apex-ravenwood-policies.txt
+++ b/ravenwood/framework-minus-apex-ravenwood-policies.txt
@@ -74,6 +74,7 @@ class android.util.proto.ProtoUtils stubclass
class android.util.proto.WireTypeMismatchException stubclass
# Misc
+class android.util.BackupUtils stubclass
class android.util.Dumpable stubclass
class android.util.DebugUtils stubclass
class android.util.MathUtils stubclass
@@ -81,15 +82,11 @@ class android.util.Patterns stubclass
class android.util.UtilConfig stubclass
# Internals
-class com.android.internal.util.FastMath stubclass
-class com.android.internal.util.FastPrintWriter stubclass
-class com.android.internal.util.GrowingArrayUtils stubclass
-class com.android.internal.util.LineBreakBufferedWriter stubclass
-class com.android.internal.util.Parcelling stubclass
+class com.android.internal.util.FileRotator stubclass
+class com.android.internal.util.HexDump stubclass
+class com.android.internal.util.MessageUtils stubclass
class com.android.internal.util.Preconditions stubclass
-class com.android.internal.util.StringPool stubclass
-
-class com.android.internal.os.SomeArgs stubclass
+class com.android.internal.util.TokenBucket stubclass
# Parcel
class android.os.ParcelFormatException stubclass
diff --git a/ravenwood/junit-src/android/platform/test/annotations/IgnoreUnderRavenwood.java b/ravenwood/junit-src/android/platform/test/annotations/IgnoreUnderRavenwood.java
index edb0442e7b29..916dd5943059 100644
--- a/ravenwood/junit-src/android/platform/test/annotations/IgnoreUnderRavenwood.java
+++ b/ravenwood/junit-src/android/platform/test/annotations/IgnoreUnderRavenwood.java
@@ -36,7 +36,7 @@ import java.lang.annotation.Target;
*
* @hide
*/
-@Target(ElementType.METHOD)
+@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreUnderRavenwood {
/**
diff --git a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java
index 9db5b9895749..d175713eb92f 100644
--- a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java
+++ b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java
@@ -93,7 +93,7 @@ public class RavenwoodRule implements TestRule {
/**
* Return if the current process is running under a Ravenwood test environment.
*/
- public boolean isUnderRavenwood() {
+ public static boolean isUnderRavenwood() {
return IS_UNDER_RAVENWOOD;
}
@@ -102,6 +102,9 @@ public class RavenwoodRule implements TestRule {
return new Statement() {
@Override
public void evaluate() throws Throwable {
+ if (description.getTestClass().getAnnotation(IgnoreUnderRavenwood.class) != null) {
+ Assume.assumeFalse(IS_UNDER_RAVENWOOD);
+ }
if (description.getAnnotation(IgnoreUnderRavenwood.class) != null) {
Assume.assumeFalse(IS_UNDER_RAVENWOOD);
}
diff --git a/ravenwood/ravenwood-annotation-allowed-classes.txt b/ravenwood/ravenwood-annotation-allowed-classes.txt
index 468b7c9188ab..831fce12b9c9 100644
--- a/ravenwood/ravenwood-annotation-allowed-classes.txt
+++ b/ravenwood/ravenwood-annotation-allowed-classes.txt
@@ -4,11 +4,21 @@ com.android.internal.util.ArrayUtils
android.util.AtomicFile
android.util.DataUnit
+android.util.DayOfMonthCursor
+android.util.DumpableContainer
android.util.EventLog
android.util.IntArray
+android.util.KeyValueListParser
android.util.LongArray
+android.util.LongArrayQueue
+android.util.LongSparseLongArray
android.util.LruCache
+android.util.MonthDisplayHelper
+android.util.RecurrenceRule
+android.util.RotationUtils
android.util.Slog
+android.util.SparseDoubleArray
+android.util.SparseSetArray
android.util.TimeUtils
android.util.Xml
@@ -79,3 +89,30 @@ android.graphics.Rect
android.graphics.RectF
com.android.server.LocalServices
+
+com.android.internal.os.SomeArgs
+
+com.android.internal.util.BitUtils
+com.android.internal.util.BitwiseInputStream
+com.android.internal.util.BitwiseOutputStream
+com.android.internal.util.CallbackRegistry
+com.android.internal.util.DumpableContainer
+com.android.internal.util.dump.DumpableContainerImpl
+com.android.internal.util.DumpUtils
+com.android.internal.util.FastMath
+com.android.internal.util.FastPrintWriter
+com.android.internal.util.FileRotator
+com.android.internal.util.GrowingArrayUtils
+com.android.internal.util.HeavyHitterSketch
+com.android.internal.util.LineBreakBufferedWriter
+com.android.internal.util.ObjectUtils
+com.android.internal.util.Parcelling
+com.android.internal.util.ParseUtils
+com.android.internal.util.ProcFileReader
+com.android.internal.util.QuickSelect
+com.android.internal.util.RingBuffer
+com.android.internal.util.StringPool
+
+com.google.android.collect.Lists
+com.google.android.collect.Maps
+com.google.android.collect.Sets
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 5bffe80a5c69..440e99632c86 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -4406,6 +4406,28 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
@Override
+ public boolean isAccessibilityServiceWarningRequired(AccessibilityServiceInfo info) {
+ mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
+
+ // Warning is not required if the service is already enabled.
+ synchronized (mLock) {
+ final AccessibilityUserState userState = getCurrentUserStateLocked();
+ if (userState.getEnabledServicesLocked().contains(info.getComponentName())) {
+ return false;
+ }
+ }
+ // Warning is not required if the service is already assigned to a shortcut.
+ for (int shortcutType : AccessibilityManager.SHORTCUT_TYPES) {
+ if (getAccessibilityShortcutTargets(shortcutType).contains(
+ info.getComponentName().flattenToString())) {
+ return false;
+ }
+ }
+ // Warning is required by default.
+ return true;
+ }
+
+ @Override
public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, pw)) return;
synchronized (mLock) {
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 8ed3fd696bda..b4cf34e00c53 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -201,6 +201,7 @@ java_library_static {
"biometrics_flags_lib",
"am_flags_lib",
"com_android_wm_shell_flags_lib",
+ "com.android.server.utils_aconfig-java",
"service-jobscheduler-deviceidle.flags-aconfig-java",
],
javac_shard_size: 50,
diff --git a/services/core/java/com/android/server/BinaryTransparencyService.java b/services/core/java/com/android/server/BinaryTransparencyService.java
index eb3ec2444210..05d07ae761c1 100644
--- a/services/core/java/com/android/server/BinaryTransparencyService.java
+++ b/services/core/java/com/android/server/BinaryTransparencyService.java
@@ -1464,15 +1464,17 @@ public class BinaryTransparencyService extends SystemService {
FrameworkStatsLog.write(FrameworkStatsLog.VBMETA_DIGEST_REPORTED, mVbmetaDigest);
if (android.security.Flags.binaryTransparencySepolicyHash()) {
- byte[] sepolicyHash = PackageUtils.computeSha256DigestForLargeFileAsBytes(
- "/sys/fs/selinux/policy", PackageUtils.createLargeFileBuffer());
- String sepolicyHashEncoded = null;
- if (sepolicyHash != null) {
- sepolicyHashEncoded = HexEncoding.encodeToString(sepolicyHash, false);
- Slog.d(TAG, "sepolicy hash: " + sepolicyHashEncoded);
- }
- FrameworkStatsLog.write(FrameworkStatsLog.BOOT_INTEGRITY_INFO_REPORTED,
- sepolicyHashEncoded, mVbmetaDigest);
+ IoThread.getExecutor().execute(() -> {
+ byte[] sepolicyHash = PackageUtils.computeSha256DigestForLargeFileAsBytes(
+ "/sys/fs/selinux/policy", PackageUtils.createLargeFileBuffer());
+ String sepolicyHashEncoded = null;
+ if (sepolicyHash != null) {
+ sepolicyHashEncoded = HexEncoding.encodeToString(sepolicyHash, false);
+ Slog.d(TAG, "sepolicy hash: " + sepolicyHashEncoded);
+ }
+ FrameworkStatsLog.write(FrameworkStatsLog.BOOT_INTEGRITY_INFO_REPORTED,
+ sepolicyHashEncoded, mVbmetaDigest);
+ });
}
}
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index 382ee6e0c0a6..4bb9f4f27b64 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -103,7 +103,7 @@ public class Watchdog implements Dumpable {
// will be half the full timeout).
//
// The pre-watchdog event is similar to a full watchdog except it does not crash system server.
- private static final int PRE_WATCHDOG_TIMEOUT_RATIO = 3;
+ private static final int PRE_WATCHDOG_TIMEOUT_RATIO = 4;
// These are temporally ordered: larger values as lateness increases
static final int COMPLETED = 0;
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 5f1a7e7e8123..71916843fe0b 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -241,6 +241,7 @@ import com.android.server.am.LowMemDetector.MemFactor;
import com.android.server.am.ServiceRecord.ShortFgsInfo;
import com.android.server.pm.KnownPackages;
import com.android.server.uri.NeededUriGrants;
+import com.android.server.utils.AnrTimer;
import com.android.server.wm.ActivityServiceConnectionsHolder;
import java.io.FileDescriptor;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 469f209eb9b5..3e533a6ce601 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -475,6 +475,7 @@ import com.android.server.sdksandbox.SdkSandboxManagerLocal;
import com.android.server.uri.GrantUri;
import com.android.server.uri.NeededUriGrants;
import com.android.server.uri.UriGrantsManagerInternal;
+import com.android.server.utils.AnrTimer;
import com.android.server.utils.PriorityDump;
import com.android.server.utils.Slogf;
import com.android.server.utils.TimingsTraceAndSlog;
@@ -1709,19 +1710,23 @@ public class ActivityManagerService extends IActivityManager.Stub
private static final int INDEX_NATIVE_PSS = 0;
private static final int INDEX_NATIVE_SWAP_PSS = 1;
private static final int INDEX_NATIVE_RSS = 2;
- private static final int INDEX_DALVIK_PSS = 3;
- private static final int INDEX_DALVIK_SWAP_PSS = 4;
- private static final int INDEX_DALVIK_RSS = 5;
- private static final int INDEX_OTHER_PSS = 6;
- private static final int INDEX_OTHER_SWAP_PSS = 7;
- private static final int INDEX_OTHER_RSS = 8;
- private static final int INDEX_TOTAL_PSS = 9;
- private static final int INDEX_TOTAL_SWAP_PSS = 10;
- private static final int INDEX_TOTAL_RSS = 11;
- private static final int INDEX_TOTAL_NATIVE_PSS = 12;
- private static final int INDEX_TOTAL_MEMTRACK_GRAPHICS = 13;
- private static final int INDEX_TOTAL_MEMTRACK_GL = 14;
- private static final int INDEX_LAST = 15;
+ private static final int INDEX_NATIVE_PRIVATE_DIRTY = 3;
+ private static final int INDEX_DALVIK_PSS = 4;
+ private static final int INDEX_DALVIK_SWAP_PSS = 5;
+ private static final int INDEX_DALVIK_RSS = 6;
+ private static final int INDEX_DALVIK_PRIVATE_DIRTY = 7;
+ private static final int INDEX_OTHER_PSS = 8;
+ private static final int INDEX_OTHER_SWAP_PSS = 9;
+ private static final int INDEX_OTHER_RSS = 10;
+ private static final int INDEX_OTHER_PRIVATE_DIRTY = 11;
+ private static final int INDEX_TOTAL_PSS = 12;
+ private static final int INDEX_TOTAL_SWAP_PSS = 13;
+ private static final int INDEX_TOTAL_RSS = 14;
+ private static final int INDEX_TOTAL_PRIVATE_DIRTY = 15;
+ private static final int INDEX_TOTAL_NATIVE_PSS = 16;
+ private static final int INDEX_TOTAL_MEMTRACK_GRAPHICS = 17;
+ private static final int INDEX_TOTAL_MEMTRACK_GL = 18;
+ private static final int INDEX_LAST = 19;
/**
* Used to notify activity lifecycle events.
@@ -11711,13 +11716,14 @@ public class ActivityManagerService extends IActivityManager.Stub
final long pss;
final long swapPss;
final long mRss;
+ final long mPrivateDirty;
final int id; // pid
final int userId;
final boolean hasActivities;
ArrayList<MemItem> subitems;
- MemItem(String label, String shortLabel, long pss, long swapPss, long rss, int id,
- @UserIdInt int userId,
+ MemItem(String label, String shortLabel, long pss, long swapPss, long rss,
+ long privateDirty, int id, @UserIdInt int userId,
boolean hasActivities) {
this.isProc = true;
this.label = label;
@@ -11725,18 +11731,21 @@ public class ActivityManagerService extends IActivityManager.Stub
this.pss = pss;
this.swapPss = swapPss;
this.mRss = rss;
+ this.mPrivateDirty = privateDirty;
this.id = id;
this.userId = userId;
this.hasActivities = hasActivities;
}
- MemItem(String label, String shortLabel, long pss, long swapPss, long rss, int id) {
+ MemItem(String label, String shortLabel, long pss, long swapPss, long rss,
+ long privateDirty, int id) {
this.isProc = false;
this.label = label;
this.shortLabel = shortLabel;
this.pss = pss;
this.swapPss = swapPss;
this.mRss = rss;
+ this.mPrivateDirty = privateDirty;
this.id = id;
this.userId = UserHandle.USER_SYSTEM;
this.hasActivities = false;
@@ -11761,7 +11770,7 @@ public class ActivityManagerService extends IActivityManager.Stub
static final void dumpMemItems(PrintWriter pw, String prefix, String tag,
ArrayList<MemItem> items, boolean sort, boolean isCompact, boolean dumpPss,
- boolean dumpSwapPss) {
+ boolean dumpSwapPss, boolean dumpPrivateDirty) {
if (sort && !isCompact) {
sortMemItems(items, dumpPss);
}
@@ -11769,14 +11778,18 @@ public class ActivityManagerService extends IActivityManager.Stub
for (int i=0; i<items.size(); i++) {
MemItem mi = items.get(i);
if (!isCompact) {
- if (dumpPss && dumpSwapPss) {
- pw.printf("%s%s: %-60s (%s in swap)\n", prefix, stringifyKBSize(mi.pss),
- mi.label, stringifyKBSize(mi.swapPss));
- } else {
- pw.printf("%s%s: %s%s\n", prefix, stringifyKBSize(dumpPss ? mi.pss : mi.mRss),
+ pw.printf("%s%s: %s%s\n", prefix, stringifyKBSize(dumpPss ? mi.pss : mi.mRss),
mi.label,
mi.userId != UserHandle.USER_SYSTEM ? " (user " + mi.userId + ")" : "");
+ if (dumpPss && dumpSwapPss) {
+ pw.printf("(%s in swap%s", stringifyKBSize(mi.swapPss),
+ dumpPrivateDirty ? ", " : ")");
}
+ if (dumpPrivateDirty) {
+ pw.printf("%s%s private dirty)", dumpSwapPss ? "" : "(",
+ stringifyKBSize(mi.mPrivateDirty));
+ }
+ pw.printf("\n");
} else if (mi.isProc) {
pw.print("proc,"); pw.print(tag); pw.print(","); pw.print(mi.shortLabel);
pw.print(","); pw.print(mi.id); pw.print(",");
@@ -11790,7 +11803,7 @@ public class ActivityManagerService extends IActivityManager.Stub
}
if (mi.subitems != null) {
dumpMemItems(pw, prefix + " ", mi.shortLabel, mi.subitems,
- true, isCompact, dumpPss, dumpSwapPss);
+ true, isCompact, dumpPss, dumpSwapPss, dumpPrivateDirty);
}
}
}
@@ -11958,6 +11971,7 @@ public class ActivityManagerService extends IActivityManager.Stub
boolean isCheckinRequest;
boolean dumpSwapPss;
boolean dumpProto;
+ boolean mDumpPrivateDirty;
}
@NeverCompile // Avoid size overhead of debugging code.
@@ -11976,6 +11990,7 @@ public class ActivityManagerService extends IActivityManager.Stub
opts.isCheckinRequest = false;
opts.dumpSwapPss = false;
opts.dumpProto = asProto;
+ opts.mDumpPrivateDirty = false;
int opti = 0;
while (opti < args.length) {
@@ -11998,6 +12013,8 @@ public class ActivityManagerService extends IActivityManager.Stub
opts.dumpSummaryOnly = true;
} else if ("-S".equals(opt)) {
opts.dumpSwapPss = true;
+ } else if ("-p".equals(opt)) {
+ opts.mDumpPrivateDirty = true;
} else if ("--unreachable".equals(opt)) {
opts.dumpUnreachable = true;
} else if ("--oom".equals(opt)) {
@@ -12018,6 +12035,7 @@ public class ActivityManagerService extends IActivityManager.Stub
pw.println(" -c: dump in a compact machine-parseable representation.");
pw.println(" -s: dump only summary of application memory usage.");
pw.println(" -S: dump also SwapPss.");
+ pw.println(" -p: dump also private dirty memory usage.");
pw.println(" --oom: only show processes organized by oom adj.");
pw.println(" --local: only collect details locally, don't call process.");
pw.println(" --package: interpret process arg as package, dumping all");
@@ -12136,14 +12154,18 @@ public class ActivityManagerService extends IActivityManager.Stub
EmptyArray.LONG;
long[] dalvikSubitemRss = opts.dumpDalvik ? new long[Debug.MemoryInfo.NUM_DVK_STATS] :
EmptyArray.LONG;
+ long[] dalvikSubitemPrivateDirty = opts.dumpDalvik
+ ? new long[Debug.MemoryInfo.NUM_DVK_STATS] : EmptyArray.LONG;
long[] miscPss = new long[Debug.MemoryInfo.NUM_OTHER_STATS];
long[] miscSwapPss = new long[Debug.MemoryInfo.NUM_OTHER_STATS];
long[] miscRss = new long[Debug.MemoryInfo.NUM_OTHER_STATS];
+ long[] miscPrivateDirty = new long[Debug.MemoryInfo.NUM_OTHER_STATS];
long[] memtrackTmp = new long[4];
long oomPss[] = new long[DUMP_MEM_OOM_LABEL.length];
long oomSwapPss[] = new long[DUMP_MEM_OOM_LABEL.length];
long[] oomRss = new long[DUMP_MEM_OOM_LABEL.length];
+ long[] oomPrivateDirty = new long[DUMP_MEM_OOM_LABEL.length];
ArrayList<MemItem>[] oomProcs = (ArrayList<MemItem>[])
new ArrayList[DUMP_MEM_OOM_LABEL.length];
@@ -12239,6 +12261,7 @@ public class ActivityManagerService extends IActivityManager.Stub
final long myTotalUss = mi.getTotalUss();
final long myTotalRss = mi.getTotalRss();
final long myTotalSwapPss = mi.getTotalSwappedOutPss();
+ final long myTotalPrivateDirty = mi.getTotalPrivateDirty();
synchronized (mProcLock) {
if (r.getThread() != null && oomAdj == r.mState.getSetAdjWithServices()) {
@@ -12252,29 +12275,36 @@ public class ActivityManagerService extends IActivityManager.Stub
ss[INDEX_TOTAL_PSS] += myTotalPss;
ss[INDEX_TOTAL_SWAP_PSS] += myTotalSwapPss;
ss[INDEX_TOTAL_RSS] += myTotalRss;
+ ss[INDEX_TOTAL_PRIVATE_DIRTY] += myTotalPrivateDirty;
ss[INDEX_TOTAL_MEMTRACK_GRAPHICS] += memtrackGraphics;
ss[INDEX_TOTAL_MEMTRACK_GL] += memtrackGl;
MemItem pssItem = new MemItem(r.processName + " (pid " + pid +
(hasActivities ? " / activities)" : ")"), r.processName, myTotalPss,
- myTotalSwapPss, myTotalRss, pid, r.userId, hasActivities);
+ myTotalSwapPss, myTotalRss, myTotalPrivateDirty,
+ pid, r.userId, hasActivities);
procMems.add(pssItem);
procMemsMap.put(pid, pssItem);
ss[INDEX_NATIVE_PSS] += mi.nativePss;
ss[INDEX_NATIVE_SWAP_PSS] += mi.nativeSwappedOutPss;
ss[INDEX_NATIVE_RSS] += mi.nativeRss;
+ ss[INDEX_NATIVE_PRIVATE_DIRTY] += mi.nativePrivateDirty;
ss[INDEX_DALVIK_PSS] += mi.dalvikPss;
ss[INDEX_DALVIK_SWAP_PSS] += mi.dalvikSwappedOutPss;
ss[INDEX_DALVIK_RSS] += mi.dalvikRss;
+ ss[INDEX_DALVIK_PRIVATE_DIRTY] += mi.dalvikPrivateDirty;
for (int j=0; j<dalvikSubitemPss.length; j++) {
dalvikSubitemPss[j] += mi.getOtherPss(Debug.MemoryInfo.NUM_OTHER_STATS + j);
dalvikSubitemSwapPss[j] +=
mi.getOtherSwappedOutPss(Debug.MemoryInfo.NUM_OTHER_STATS + j);
+ dalvikSubitemPrivateDirty[j] +=
+ mi.getOtherPrivateDirty(Debug.MemoryInfo.NUM_OTHER_STATS + j);
dalvikSubitemRss[j] += mi.getOtherRss(Debug.MemoryInfo.NUM_OTHER_STATS + j);
}
ss[INDEX_OTHER_PSS] += mi.otherPss;
ss[INDEX_OTHER_RSS] += mi.otherRss;
ss[INDEX_OTHER_SWAP_PSS] += mi.otherSwappedOutPss;
+ ss[INDEX_OTHER_PRIVATE_DIRTY] += mi.otherPrivateDirty;
for (int j=0; j<Debug.MemoryInfo.NUM_OTHER_STATS; j++) {
long mem = mi.getOtherPss(j);
miscPss[j] += mem;
@@ -12282,6 +12312,9 @@ public class ActivityManagerService extends IActivityManager.Stub
mem = mi.getOtherSwappedOutPss(j);
miscSwapPss[j] += mem;
ss[INDEX_OTHER_SWAP_PSS] -= mem;
+ mem = mi.getOtherPrivateDirty(j);
+ miscPrivateDirty[j] += mem;
+ ss[INDEX_OTHER_PRIVATE_DIRTY] -= mem;
mem = mi.getOtherRss(j);
miscRss[j] += mem;
ss[INDEX_OTHER_RSS] -= mem;
@@ -12298,6 +12331,7 @@ public class ActivityManagerService extends IActivityManager.Stub
&& oomAdj < DUMP_MEM_OOM_ADJ[oomIndex + 1])) {
oomPss[oomIndex] += myTotalPss;
oomSwapPss[oomIndex] += myTotalSwapPss;
+ oomPrivateDirty[oomIndex] += myTotalPrivateDirty;
if (oomProcs[oomIndex] == null) {
oomProcs[oomIndex] = new ArrayList<MemItem>();
}
@@ -12344,6 +12378,7 @@ public class ActivityManagerService extends IActivityManager.Stub
final long myTotalPss = info.getTotalPss();
final long myTotalSwapPss = info.getTotalSwappedOutPss();
final long myTotalRss = info.getTotalRss();
+ final long myTotalPrivateDirty = info.getTotalPrivateDirty();
ss[INDEX_TOTAL_PSS] += myTotalPss;
ss[INDEX_TOTAL_SWAP_PSS] += myTotalSwapPss;
ss[INDEX_TOTAL_RSS] += myTotalRss;
@@ -12353,15 +12388,17 @@ public class ActivityManagerService extends IActivityManager.Stub
MemItem pssItem = new MemItem(st.name + " (pid " + st.pid + ")",
st.name, myTotalPss, info.getSummaryTotalSwapPss(), myTotalRss,
- st.pid, UserHandle.getUserId(st.uid), false);
+ myTotalPrivateDirty, st.pid, UserHandle.getUserId(st.uid), false);
procMems.add(pssItem);
ss[INDEX_NATIVE_PSS] += info.nativePss;
ss[INDEX_NATIVE_SWAP_PSS] += info.nativeSwappedOutPss;
ss[INDEX_NATIVE_RSS] += info.nativeRss;
+ ss[INDEX_NATIVE_PRIVATE_DIRTY] += info.nativePrivateDirty;
ss[INDEX_DALVIK_PSS] += info.dalvikPss;
ss[INDEX_DALVIK_SWAP_PSS] += info.dalvikSwappedOutPss;
ss[INDEX_DALVIK_RSS] += info.dalvikRss;
+ ss[INDEX_DALVIK_PRIVATE_DIRTY] += info.dalvikPrivateDirty;
for (int j = 0; j < dalvikSubitemPss.length; j++) {
dalvikSubitemPss[j] += info.getOtherPss(
Debug.MemoryInfo.NUM_OTHER_STATS + j);
@@ -12369,10 +12406,13 @@ public class ActivityManagerService extends IActivityManager.Stub
info.getOtherSwappedOutPss(Debug.MemoryInfo.NUM_OTHER_STATS + j);
dalvikSubitemRss[j] += info.getOtherRss(Debug.MemoryInfo.NUM_OTHER_STATS
+ j);
+ dalvikSubitemPrivateDirty[j] +=
+ info.getOtherPrivateDirty(Debug.MemoryInfo.NUM_OTHER_STATS + j);
}
ss[INDEX_OTHER_PSS] += info.otherPss;
ss[INDEX_OTHER_SWAP_PSS] += info.otherSwappedOutPss;
ss[INDEX_OTHER_RSS] += info.otherRss;
+ ss[INDEX_OTHER_PRIVATE_DIRTY] += info.otherPrivateDirty;
for (int j = 0; j < Debug.MemoryInfo.NUM_OTHER_STATS; j++) {
long mem = info.getOtherPss(j);
miscPss[j] += mem;
@@ -12383,6 +12423,9 @@ public class ActivityManagerService extends IActivityManager.Stub
mem = info.getOtherRss(j);
miscRss[j] += mem;
ss[INDEX_OTHER_RSS] -= mem;
+ mem = info.getOtherPrivateDirty(j);
+ miscPrivateDirty[j] += mem;
+ ss[INDEX_OTHER_PRIVATE_DIRTY] -= mem;
}
oomPss[0] += myTotalPss;
oomSwapPss[0] += myTotalSwapPss;
@@ -12391,21 +12434,26 @@ public class ActivityManagerService extends IActivityManager.Stub
}
oomProcs[0].add(pssItem);
oomRss[0] += myTotalRss;
+ oomPrivateDirty[0] += myTotalPrivateDirty;
}
});
ArrayList<MemItem> catMems = new ArrayList<MemItem>();
catMems.add(new MemItem("Native", "Native",
- ss[INDEX_NATIVE_PSS], ss[INDEX_NATIVE_SWAP_PSS], ss[INDEX_NATIVE_RSS], -1));
+ ss[INDEX_NATIVE_PSS], ss[INDEX_NATIVE_SWAP_PSS],
+ ss[INDEX_NATIVE_RSS], ss[INDEX_NATIVE_PRIVATE_DIRTY], -1));
final int dalvikId = -2;
catMems.add(new MemItem("Dalvik", "Dalvik", ss[INDEX_DALVIK_PSS],
- ss[INDEX_DALVIK_SWAP_PSS], ss[INDEX_DALVIK_RSS], dalvikId));
+ ss[INDEX_DALVIK_SWAP_PSS], ss[INDEX_DALVIK_RSS],
+ ss[INDEX_DALVIK_PRIVATE_DIRTY], dalvikId));
catMems.add(new MemItem("Unknown", "Unknown", ss[INDEX_OTHER_PSS],
- ss[INDEX_OTHER_SWAP_PSS], ss[INDEX_OTHER_RSS], -3));
+ ss[INDEX_OTHER_SWAP_PSS], ss[INDEX_OTHER_RSS],
+ ss[INDEX_OTHER_PRIVATE_DIRTY], -3));
for (int j=0; j<Debug.MemoryInfo.NUM_OTHER_STATS; j++) {
String label = Debug.MemoryInfo.getOtherLabel(j);
- catMems.add(new MemItem(label, label, miscPss[j], miscSwapPss[j], miscRss[j], j));
+ catMems.add(new MemItem(label, label, miscPss[j], miscSwapPss[j], miscRss[j],
+ miscPrivateDirty[j], j));
}
if (dalvikSubitemPss.length > 0) {
// Add dalvik subitems.
@@ -12431,7 +12479,8 @@ public class ActivityManagerService extends IActivityManager.Stub
final String name = Debug.MemoryInfo.getOtherLabel(
Debug.MemoryInfo.NUM_OTHER_STATS + j);
memItem.subitems.add(new MemItem(name, name, dalvikSubitemPss[j],
- dalvikSubitemSwapPss[j], dalvikSubitemRss[j], j));
+ dalvikSubitemSwapPss[j], dalvikSubitemRss[j],
+ dalvikSubitemPrivateDirty[j], j));
}
}
}
@@ -12442,7 +12491,7 @@ public class ActivityManagerService extends IActivityManager.Stub
String label = opts.isCompact ? DUMP_MEM_OOM_COMPACT_LABEL[j]
: DUMP_MEM_OOM_LABEL[j];
MemItem item = new MemItem(label, label, oomPss[j], oomSwapPss[j], oomRss[j],
- DUMP_MEM_OOM_ADJ[j]);
+ oomPrivateDirty[j], DUMP_MEM_OOM_ADJ[j]);
item.subitems = oomProcs[j];
oomMems.add(item);
}
@@ -12453,33 +12502,34 @@ public class ActivityManagerService extends IActivityManager.Stub
if (!brief && !opts.oomOnly && !opts.isCompact) {
pw.println();
pw.println("Total RSS by process:");
- dumpMemItems(pw, " ", "proc", procMems, true, opts.isCompact, false, false);
+ dumpMemItems(pw, " ", "proc", procMems, true, opts.isCompact, false, false, false);
pw.println();
}
if (!opts.isCompact) {
pw.println("Total RSS by OOM adjustment:");
}
- dumpMemItems(pw, " ", "oom", oomMems, false, opts.isCompact, false, false);
+ dumpMemItems(pw, " ", "oom", oomMems, false, opts.isCompact, false, false, false);
if (!brief && !opts.oomOnly) {
PrintWriter out = categoryPw != null ? categoryPw : pw;
if (!opts.isCompact) {
out.println();
out.println("Total RSS by category:");
}
- dumpMemItems(out, " ", "cat", catMems, true, opts.isCompact, false, false);
+ dumpMemItems(out, " ", "cat", catMems, true, opts.isCompact, false, false, false);
}
opts.dumpSwapPss = opts.dumpSwapPss && hasSwapPss && ss[INDEX_TOTAL_SWAP_PSS] != 0;
if (!brief && !opts.oomOnly && !opts.isCompact) {
pw.println();
pw.println("Total PSS by process:");
dumpMemItems(pw, " ", "proc", procMems, true, opts.isCompact, true,
- opts.dumpSwapPss);
+ opts.dumpSwapPss, opts.mDumpPrivateDirty);
pw.println();
}
if (!opts.isCompact) {
pw.println("Total PSS by OOM adjustment:");
}
- dumpMemItems(pw, " ", "oom", oomMems, false, opts.isCompact, true, opts.dumpSwapPss);
+ dumpMemItems(pw, " ", "oom", oomMems, false, opts.isCompact, true, opts.dumpSwapPss,
+ opts.mDumpPrivateDirty);
if (!brief && !opts.oomOnly) {
PrintWriter out = categoryPw != null ? categoryPw : pw;
if (!opts.isCompact) {
@@ -12487,7 +12537,7 @@ public class ActivityManagerService extends IActivityManager.Stub
out.println("Total PSS by category:");
}
dumpMemItems(out, " ", "cat", catMems, true, opts.isCompact, true,
- opts.dumpSwapPss);
+ opts.dumpSwapPss, opts.mDumpPrivateDirty);
}
if (!opts.isCompact) {
pw.println();
@@ -12889,7 +12939,7 @@ public class ActivityManagerService extends IActivityManager.Stub
ss[INDEX_TOTAL_RSS] += myTotalRss;
MemItem pssItem = new MemItem(r.processName + " (pid " + pid +
(hasActivities ? " / activities)" : ")"), r.processName, myTotalPss,
- myTotalSwapPss, myTotalRss, pid, r.userId, hasActivities);
+ myTotalSwapPss, myTotalRss, 0, pid, r.userId, hasActivities);
procMems.add(pssItem);
procMemsMap.put(pid, pssItem);
@@ -12976,7 +13026,7 @@ public class ActivityManagerService extends IActivityManager.Stub
ss[INDEX_TOTAL_NATIVE_PSS] += myTotalPss;
MemItem pssItem = new MemItem(st.name + " (pid " + st.pid + ")",
- st.name, myTotalPss, info.getSummaryTotalSwapPss(), myTotalRss,
+ st.name, myTotalPss, info.getSummaryTotalSwapPss(), myTotalRss, 0,
st.pid, UserHandle.getUserId(st.uid), false);
procMems.add(pssItem);
@@ -13021,15 +13071,16 @@ public class ActivityManagerService extends IActivityManager.Stub
ArrayList<MemItem> catMems = new ArrayList<MemItem>();
catMems.add(new MemItem("Native", "Native", ss[INDEX_NATIVE_PSS],
- ss[INDEX_NATIVE_SWAP_PSS], ss[INDEX_NATIVE_RSS], -1));
+ ss[INDEX_NATIVE_SWAP_PSS], ss[INDEX_NATIVE_RSS], 0, -1));
final int dalvikId = -2;
catMems.add(new MemItem("Dalvik", "Dalvik", ss[INDEX_DALVIK_PSS],
- ss[INDEX_DALVIK_SWAP_PSS], ss[INDEX_DALVIK_RSS], dalvikId));
+ ss[INDEX_DALVIK_SWAP_PSS], ss[INDEX_DALVIK_RSS], 0, dalvikId));
catMems.add(new MemItem("Unknown", "Unknown", ss[INDEX_OTHER_PSS],
- ss[INDEX_OTHER_SWAP_PSS], ss[INDEX_OTHER_RSS], -3));
+ ss[INDEX_OTHER_SWAP_PSS], ss[INDEX_OTHER_RSS], 0, -3));
for (int j=0; j<Debug.MemoryInfo.NUM_OTHER_STATS; j++) {
String label = Debug.MemoryInfo.getOtherLabel(j);
- catMems.add(new MemItem(label, label, miscPss[j], miscSwapPss[j], miscRss[j], j));
+ catMems.add(new MemItem(label, label, miscPss[j], miscSwapPss[j],
+ miscRss[j], 0, j));
}
if (dalvikSubitemPss.length > 0) {
// Add dalvik subitems.
@@ -13055,7 +13106,7 @@ public class ActivityManagerService extends IActivityManager.Stub
final String name = Debug.MemoryInfo.getOtherLabel(
Debug.MemoryInfo.NUM_OTHER_STATS + j);
memItem.subitems.add(new MemItem(name, name, dalvikSubitemPss[j],
- dalvikSubitemSwapPss[j], dalvikSubitemRss[j], j));
+ dalvikSubitemSwapPss[j], dalvikSubitemRss[j], 0, j));
}
}
}
@@ -13065,7 +13116,7 @@ public class ActivityManagerService extends IActivityManager.Stub
if (oomPss[j] != 0) {
String label = opts.isCompact ? DUMP_MEM_OOM_COMPACT_LABEL[j]
: DUMP_MEM_OOM_LABEL[j];
- MemItem item = new MemItem(label, label, oomPss[j], oomSwapPss[j], oomRss[j],
+ MemItem item = new MemItem(label, label, oomPss[j], oomSwapPss[j], oomRss[j], 0,
DUMP_MEM_OOM_ADJ[j]);
item.subitems = oomProcs[j];
oomMems.add(item);
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index ad499911f84a..2cac7a020005 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -88,6 +88,7 @@ import com.android.internal.util.FrameworkStatsLog;
import com.android.server.am.BroadcastProcessQueue.BroadcastConsumer;
import com.android.server.am.BroadcastProcessQueue.BroadcastPredicate;
import com.android.server.am.BroadcastRecord.DeliveryState;
+import com.android.server.utils.AnrTimer;
import dalvik.annotation.optimization.NeverCompile;
diff --git a/services/core/java/com/android/server/am/flags.aconfig b/services/core/java/com/android/server/am/flags.aconfig
index 2ed079ab0c62..d9e8dddddae4 100644
--- a/services/core/java/com/android/server/am/flags.aconfig
+++ b/services/core/java/com/android/server/am/flags.aconfig
@@ -9,14 +9,6 @@ flag {
}
flag {
- name: "anr_timer_service_enabled"
- namespace: "system_performance"
- is_fixed_read_only: true
- description: "Feature flag for the ANR timer service"
- bug: "282428924"
-}
-
-flag {
name: "fgs_abuse_detection"
namespace: "backstage_power"
description: "Detect abusive FGS behavior for certain types (camera, mic, media, location)."
diff --git a/services/core/java/com/android/server/audio/AdiDeviceState.java b/services/core/java/com/android/server/audio/AdiDeviceState.java
index b91e633bd3de..ffdab7dfbfa4 100644
--- a/services/core/java/com/android/server/audio/AdiDeviceState.java
+++ b/services/core/java/com/android/server/audio/AdiDeviceState.java
@@ -21,6 +21,8 @@ import static android.media.AudioSystem.DEVICE_NONE;
import static android.media.AudioSystem.isBluetoothDevice;
import static android.media.audio.Flags.automaticBtDeviceType;
+import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.media.AudioDeviceAttributes;
@@ -31,13 +33,16 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
+import com.android.internal.annotations.VisibleForTesting;
+
import java.util.Objects;
/**
* Class representing all devices that were previously or are currently connected. Data is
* persisted in {@link android.provider.Settings.Secure}
*/
-/*package*/ final class AdiDeviceState {
+@VisibleForTesting(visibility = PACKAGE)
+public final class AdiDeviceState {
private static final String TAG = "AS.AdiDeviceState";
private static final String SETTING_FIELD_SEPARATOR = ",";
diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
index 98b210f29db4..e54bf64df09e 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
@@ -31,6 +31,8 @@ import static android.media.AudioSystem.isBluetoothScoOutDevice;
import static android.media.audio.Flags.automaticBtDeviceType;
+import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.bluetooth.BluetoothAdapter;
@@ -347,7 +349,8 @@ public class AudioDeviceInventory {
* @return the found {@link AdiDeviceState} or {@code null} otherwise.
*/
@Nullable
- AdiDeviceState findBtDeviceStateForAddress(String address, int deviceType) {
+ @VisibleForTesting(visibility = PACKAGE)
+ public AdiDeviceState findBtDeviceStateForAddress(String address, int deviceType) {
Set<Integer> deviceSet;
if (isBluetoothA2dpOutDevice(deviceType)) {
deviceSet = DEVICE_OUT_ALL_A2DP_SET;
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 8cec24d1bbb5..f7b7aaa60a35 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -39,6 +39,7 @@ import static android.provider.Settings.Secure.VOLUME_HUSH_MUTE;
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.alarmMinVolumeZero;
import static com.android.media.audio.Flags.bluetoothMacAddressAnonymization;
import static com.android.media.audio.Flags.disablePrescaleAbsoluteVolume;
@@ -6785,7 +6786,8 @@ public class AudioService extends IAudioService.Stub
return mContentResolver;
}
- /*package*/ SettingsAdapter getSettings() {
+ @VisibleForTesting(visibility = PACKAGE)
+ public SettingsAdapter getSettings() {
return mSettings;
}
@@ -11250,7 +11252,9 @@ public class AudioService extends IAudioService.Stub
return mDeviceBroker.isBluetoothAudioDeviceCategoryFixed(address);
}
- /*package*/void onUpdatedAdiDeviceState(AdiDeviceState deviceState) {
+ /** Update the sound dose and spatializer state based on the new AdiDeviceState. */
+ @VisibleForTesting(visibility = PACKAGE)
+ public void onUpdatedAdiDeviceState(AdiDeviceState deviceState) {
if (deviceState == null) {
return;
}
diff --git a/services/core/java/com/android/server/content/SyncJobService.java b/services/core/java/com/android/server/content/SyncJobService.java
index cd3f0f0ca5b2..1da7f0c059b0 100644
--- a/services/core/java/com/android/server/content/SyncJobService.java
+++ b/services/core/java/com/android/server/content/SyncJobService.java
@@ -19,7 +19,6 @@ package com.android.server.content;
import android.annotation.Nullable;
import android.app.job.JobParameters;
import android.app.job.JobService;
-import android.content.pm.PackageManagerInternal;
import android.os.Message;
import android.os.SystemClock;
import android.util.Log;
@@ -29,7 +28,6 @@ import android.util.SparseBooleanArray;
import android.util.SparseLongArray;
import com.android.internal.annotations.GuardedBy;
-import com.android.server.LocalServices;
public class SyncJobService extends JobService {
private static final String TAG = "SyncManager";
@@ -99,20 +97,6 @@ public class SyncJobService extends JobService {
return true;
}
- // TODO(b/209852664): remove this logic from here once it's added within JobScheduler.
- // JobScheduler should not call onStartJob for syncs whose source packages are stopped.
- // Until JS adds the relevant logic, this is a temporary solution to keep deferring syncs
- // for packages in the stopped state.
- if (android.content.pm.Flags.stayStopped()) {
- if (LocalServices.getService(PackageManagerInternal.class)
- .isPackageStopped(op.owningPackage, op.target.userId)) {
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Slog.d(TAG, "Skipping sync for force-stopped package: " + op.owningPackage);
- }
- return false;
- }
- }
-
boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE);
synchronized (sLock) {
final int jobId = params.getJobId();
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 575b30946fce..5a9f113e79df 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -105,6 +105,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.config.appcloning.AppCloningDeviceConfigHelper;
+import com.android.internal.content.PackageMonitor;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.internal.notification.SystemNotificationChannels;
import com.android.internal.os.BackgroundThread;
@@ -438,19 +439,23 @@ public class SyncManager {
}
};
- private final BroadcastReceiver mForceStoppedReceiver = new BroadcastReceiver() {
+ private class PackageMonitorImpl extends PackageMonitor {
@Override
- public void onReceive(Context context, Intent intent) {
+ public boolean onHandleForceStop(Intent intent, String[] packageNames, int uid,
+ boolean doit, Bundle extras) {
final boolean isLoggable = Log.isLoggable(TAG, Log.DEBUG);
- // For now, just log when packages were force-stopped and unstopped for debugging.
if (isLoggable) {
- if (Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())) {
- Log.d(TAG, "Package force-stopped: "
- + intent.getData().getSchemeSpecificPart());
- } else if (Intent.ACTION_PACKAGE_UNSTOPPED.equals(intent.getAction())) {
- Log.d(TAG, "Package unstopped: "
- + intent.getData().getSchemeSpecificPart());
- }
+ Log.d(TAG, "Package force-stopped: " + Arrays.toString(packageNames)
+ + ", uid: " + uid);
+ }
+ return false;
+ }
+
+ @Override
+ public void onPackageUnstopped(String packageName, int uid, Bundle extras) {
+ final boolean isLoggable = Log.isLoggable(TAG, Log.DEBUG);
+ if (isLoggable) {
+ Log.d(TAG, "Package unstopped: " + packageName + ", uid: " + uid);
}
}
};
@@ -718,11 +723,10 @@ public class SyncManager {
mContext.registerReceiverAsUser(
mUserIntentReceiver, UserHandle.ALL, intentFilter, null, null);
- intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
- intentFilter.addAction(Intent.ACTION_PACKAGE_UNSTOPPED);
- intentFilter.addDataScheme("package");
- context.registerReceiver(mForceStoppedReceiver, intentFilter);
+
+ final PackageMonitor packageMonitor = new PackageMonitorImpl();
+ packageMonitor.register(mContext, null /* thread */, UserHandle.ALL,
+ false /* externalStorage */);
intentFilter = new IntentFilter(Intent.ACTION_TIME_CHANGED);
context.registerReceiver(mOtherIntentsReceiver, intentFilter);
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 e3aa161f001a..a313bcf1f7af 100644
--- a/services/core/java/com/android/server/display/color/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java
@@ -1745,8 +1745,8 @@ public final class ColorDisplayService extends SystemService {
@Override
public boolean setSaturationLevel(int level) {
- final boolean hasTransformsPermission = getContext()
- .checkCallingPermission(Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
+ final boolean hasTransformsPermission = getContext().checkCallingOrSelfPermission(
+ Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS)
== PackageManager.PERMISSION_GRANTED;
final boolean hasLegacyPermission = getContext()
.checkCallingPermission(Manifest.permission.CONTROL_DISPLAY_SATURATION)
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
index 952af69f0e1a..64abb81d0e7a 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
@@ -566,7 +566,9 @@ abstract class HdmiCecLocalDevice extends HdmiLocalDevice {
HdmiDeviceInfo cecDeviceInfo = mService.getHdmiCecNetwork().getCecDeviceInfo(address);
// If no non-default display name is available for the device, request the devices OSD name.
- if (cecDeviceInfo != null && cecDeviceInfo.getDisplayName().equals(
+ // On TV devices, the OSD name is queried in NewDeviceAction instead.
+ if (!mService.isTvDevice() && cecDeviceInfo != null
+ && cecDeviceInfo.getDisplayName().equals(
HdmiUtils.getDefaultDeviceName(address))) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildGiveOsdNameCommand(
diff --git a/services/core/java/com/android/server/hdmi/RequestActiveSourceAction.java b/services/core/java/com/android/server/hdmi/RequestActiveSourceAction.java
index 017c86d4b363..d2504164a6df 100644
--- a/services/core/java/com/android/server/hdmi/RequestActiveSourceAction.java
+++ b/services/core/java/com/android/server/hdmi/RequestActiveSourceAction.java
@@ -29,6 +29,12 @@ public class RequestActiveSourceAction extends HdmiCecFeatureAction {
// State to wait for the <Active Source> message.
private static final int STATE_WAIT_FOR_ACTIVE_SOURCE = 1;
+ // Number of retries <Request Active Source> is sent if no device answers this message.
+ private static final int MAX_SEND_RETRY_COUNT = 1;
+
+ private int mSendRetryCount = 0;
+
+
RequestActiveSourceAction(HdmiCecLocalDevice source, IHdmiControlCallback callback) {
super(source, callback);
}
@@ -60,7 +66,12 @@ public class RequestActiveSourceAction extends HdmiCecFeatureAction {
return;
}
if (mState == STATE_WAIT_FOR_ACTIVE_SOURCE) {
- finishWithCallback(HdmiControlManager.RESULT_TIMEOUT);
+ if (mSendRetryCount++ < MAX_SEND_RETRY_COUNT) {
+ sendCommand(HdmiCecMessageBuilder.buildRequestActiveSource(getSourceAddress()));
+ addTimer(mState, HdmiConfig.TIMEOUT_MS);
+ } else {
+ finishWithCallback(HdmiControlManager.RESULT_TIMEOUT);
+ }
}
}
}
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
index 14daf62a9ed2..ffd714b26b08 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
@@ -159,9 +159,12 @@ public abstract class InputMethodManagerInternal {
/**
* Updates the IME visibility, back disposition and show IME picker status for SystemUI.
* TODO(b/189923292): Making SystemUI to be true IME icon controller vs. presenter that
- * controlled by IMMS.
+ * controlled by IMMS.
+ *
+ * @param disableImeIcon indicates whether IME icon should be enabled or not
+ * @param displayId the display for which to update the IME window status
*/
- public abstract void updateImeWindowStatus(boolean disableImeIcon);
+ public abstract void updateImeWindowStatus(boolean disableImeIcon, int displayId);
/**
* Finish stylus handwriting by calling {@link InputMethodService#finishStylusHandwriting()} if
@@ -269,7 +272,7 @@ public abstract class InputMethodManagerInternal {
}
@Override
- public void updateImeWindowStatus(boolean disableImeIcon) {
+ public void updateImeWindowStatus(boolean disableImeIcon, int displayId) {
}
@Override
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index b7007854dab8..b1a362d09f16 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -5674,7 +5674,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
}
@Override
- public void updateImeWindowStatus(boolean disableImeIcon) {
+ public void updateImeWindowStatus(boolean disableImeIcon, int displayId) {
mHandler.obtainMessage(MSG_UPDATE_IME_WINDOW_STATUS, disableImeIcon ? 1 : 0, 0)
.sendToTarget();
}
diff --git a/services/core/java/com/android/server/inputmethod/OWNERS b/services/core/java/com/android/server/inputmethod/OWNERS
index 6e5eb5631112..aa638aa49fb3 100644
--- a/services/core/java/com/android/server/inputmethod/OWNERS
+++ b/services/core/java/com/android/server/inputmethod/OWNERS
@@ -3,6 +3,8 @@ set noparent
roosa@google.com
yukawa@google.com
tarandeep@google.com
+fstern@google.com
+cosminbaies@google.com
ogunwale@google.com #{LAST_RESORT_SUGGESTION}
jjaggi@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 90c406357fd8..df9e7417054b 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -2908,46 +2908,69 @@ class MediaRouter2ServiceImpl {
if (service == null) {
return;
}
- List<RouterRecord> activeRouterRecords = Collections.emptyList();
+ List<RouterRecord> activeRouterRecords;
List<RouterRecord> allRouterRecords = getRouterRecords();
- List<ManagerRecord> managerRecords = getManagerRecords();
-
- boolean isManagerScanning = false;
- if (Flags.disableScreenOffBroadcastReceiver()
- || service.mPowerManager.isInteractive()) {
- isManagerScanning = managerRecords.stream().anyMatch(manager ->
- manager.mIsScanning && service.mActivityManager
- .getPackageImportance(manager.mOwnerPackageName)
- <= sPackageImportanceForScanning);
-
- if (isManagerScanning) {
- activeRouterRecords = allRouterRecords;
- } else {
- activeRouterRecords =
- allRouterRecords.stream()
- .filter(
- record ->
- service.mActivityManager.getPackageImportance(
- record.mPackageName)
- <= sPackageImportanceForScanning)
- .collect(Collectors.toList());
- }
+
+ boolean areManagersScanning = areManagersScanning(service, getManagerRecords());
+
+ if (areManagersScanning) {
+ activeRouterRecords = allRouterRecords;
+ } else {
+ activeRouterRecords = getIndividuallyActiveRouters(service, allRouterRecords);
+ }
+
+ updateManagerScanningForProviders(areManagersScanning);
+
+ Set<String> activelyScanningPackages = new HashSet<>();
+ RouteDiscoveryPreference newPreference =
+ buildCompositeDiscoveryPreference(
+ activeRouterRecords, areManagersScanning, activelyScanningPackages);
+
+ if (updateScanningOnUserRecord(service, activelyScanningPackages, newPreference)) {
+ updateDiscoveryPreferenceForProviders(activelyScanningPackages);
}
+ }
+ private void updateDiscoveryPreferenceForProviders(Set<String> activelyScanningPackages) {
for (MediaRoute2Provider provider : mRouteProviders) {
- if (provider instanceof MediaRoute2ProviderServiceProxy) {
- ((MediaRoute2ProviderServiceProxy) provider)
- .setManagerScanning(isManagerScanning);
+ provider.updateDiscoveryPreference(
+ activelyScanningPackages, mUserRecord.mCompositeDiscoveryPreference);
+ }
+ }
+
+ private boolean updateScanningOnUserRecord(
+ MediaRouter2ServiceImpl service,
+ Set<String> activelyScanningPackages,
+ RouteDiscoveryPreference newPreference) {
+ synchronized (service.mLock) {
+ if (newPreference.equals(mUserRecord.mCompositeDiscoveryPreference)
+ && activelyScanningPackages.equals(mUserRecord.mActivelyScanningPackages)) {
+ return false;
}
+ mUserRecord.mCompositeDiscoveryPreference = newPreference;
+ mUserRecord.mActivelyScanningPackages = activelyScanningPackages;
}
+ return true;
+ }
- // Build a composite RouteDiscoveryPreference that matches all of the routes
- // that match one or more of the individual discovery preferences. It may also
- // match additional routes. The composite RouteDiscoveryPreference can be used
- // to query route providers once to obtain all of the routes of interest, which
- // can be subsequently filtered for the individual discovery preferences.
+ /**
+ * Returns a composite {@link RouteDiscoveryPreference} that aggregates every router
+ * record's individual discovery preference.
+ *
+ * <p>The {@link RouteDiscoveryPreference#shouldPerformActiveScan() active scan value} of
+ * the composite discovery preference is true if one of the router records is actively
+ * scanning or if {@code shouldForceActiveScan} is true.
+ *
+ * <p>The composite RouteDiscoveryPreference is used to query route providers once to obtain
+ * all the routes of interest, which can be subsequently filtered for the individual
+ * discovery preferences.
+ */
+ @NonNull
+ private static RouteDiscoveryPreference buildCompositeDiscoveryPreference(
+ List<RouterRecord> activeRouterRecords,
+ boolean shouldForceActiveScan,
+ Set<String> activelyScanningPackages) {
Set<String> preferredFeatures = new HashSet<>();
- Set<String> activelyScanningPackages = new HashSet<>();
boolean activeScan = false;
for (RouterRecord activeRouterRecord : activeRouterRecords) {
RouteDiscoveryPreference preference = activeRouterRecord.mDiscoveryPreference;
@@ -2957,21 +2980,51 @@ class MediaRouter2ServiceImpl {
activelyScanningPackages.add(activeRouterRecord.mPackageName);
}
}
- RouteDiscoveryPreference newPreference = new RouteDiscoveryPreference.Builder(
- List.copyOf(preferredFeatures), activeScan || isManagerScanning).build();
+ return new RouteDiscoveryPreference.Builder(
+ List.copyOf(preferredFeatures), activeScan || shouldForceActiveScan)
+ .build();
+ }
- synchronized (service.mLock) {
- if (newPreference.equals(mUserRecord.mCompositeDiscoveryPreference)
- && activelyScanningPackages.equals(mUserRecord.mActivelyScanningPackages)) {
- return;
+ private void updateManagerScanningForProviders(boolean isManagerScanning) {
+ for (MediaRoute2Provider provider : mRouteProviders) {
+ if (provider instanceof MediaRoute2ProviderServiceProxy) {
+ ((MediaRoute2ProviderServiceProxy) provider)
+ .setManagerScanning(isManagerScanning);
}
- mUserRecord.mCompositeDiscoveryPreference = newPreference;
- mUserRecord.mActivelyScanningPackages = activelyScanningPackages;
}
- for (MediaRoute2Provider provider : mRouteProviders) {
- provider.updateDiscoveryPreference(
- activelyScanningPackages, mUserRecord.mCompositeDiscoveryPreference);
+ }
+
+ @NonNull
+ private static List<RouterRecord> getIndividuallyActiveRouters(
+ MediaRouter2ServiceImpl service, List<RouterRecord> allRouterRecords) {
+ if (!Flags.disableScreenOffBroadcastReceiver()
+ && !service.mPowerManager.isInteractive()) {
+ return Collections.emptyList();
}
+
+ return allRouterRecords.stream()
+ .filter(
+ record ->
+ service.mActivityManager.getPackageImportance(
+ record.mPackageName)
+ <= sPackageImportanceForScanning)
+ .collect(Collectors.toList());
+ }
+
+ private static boolean areManagersScanning(
+ MediaRouter2ServiceImpl service, List<ManagerRecord> managerRecords) {
+ if (!Flags.disableScreenOffBroadcastReceiver()
+ && !service.mPowerManager.isInteractive()) {
+ return false;
+ }
+
+ return managerRecords.stream()
+ .anyMatch(
+ manager ->
+ manager.mIsScanning
+ && service.mActivityManager.getPackageImportance(
+ manager.mOwnerPackageName)
+ <= sPackageImportanceForScanning);
}
private MediaRoute2Provider findProvider(@Nullable String providerId) {
diff --git a/services/core/java/com/android/server/notification/DefaultDeviceEffectsApplier.java b/services/core/java/com/android/server/notification/DefaultDeviceEffectsApplier.java
new file mode 100644
index 000000000000..9fdeda4b4bd0
--- /dev/null
+++ b/services/core/java/com/android/server/notification/DefaultDeviceEffectsApplier.java
@@ -0,0 +1,71 @@
+/*
+ * 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.server.notification;
+
+import android.app.UiModeManager;
+import android.app.WallpaperManager;
+import android.content.Context;
+import android.hardware.display.ColorDisplayManager;
+import android.os.Binder;
+import android.os.PowerManager;
+import android.service.notification.DeviceEffectsApplier;
+import android.service.notification.ZenDeviceEffects;
+
+/** Default implementation for {@link DeviceEffectsApplier}. */
+class DefaultDeviceEffectsApplier implements DeviceEffectsApplier {
+
+ private static final String SUPPRESS_AMBIENT_DISPLAY_TOKEN =
+ "DefaultDeviceEffectsApplier:SuppressAmbientDisplay";
+ private static final int SATURATION_LEVEL_GRAYSCALE = 0;
+ private static final int SATURATION_LEVEL_FULL_COLOR = 100;
+ private static final float WALLPAPER_DIM_AMOUNT_DIMMED = 0.6f;
+ private static final float WALLPAPER_DIM_AMOUNT_NORMAL = 0f;
+
+ private final ColorDisplayManager mColorDisplayManager;
+ private final PowerManager mPowerManager;
+ private final UiModeManager mUiModeManager;
+ private final WallpaperManager mWallpaperManager;
+
+ DefaultDeviceEffectsApplier(Context context) {
+ mColorDisplayManager = context.getSystemService(ColorDisplayManager.class);
+ mPowerManager = context.getSystemService(PowerManager.class);
+ mUiModeManager = context.getSystemService(UiModeManager.class);
+ mWallpaperManager = context.getSystemService(WallpaperManager.class);
+ }
+
+ @Override
+ public void apply(ZenDeviceEffects effects) {
+ Binder.withCleanCallingIdentity(() -> {
+ mPowerManager.suppressAmbientDisplay(SUPPRESS_AMBIENT_DISPLAY_TOKEN,
+ effects.shouldSuppressAmbientDisplay());
+
+ if (mColorDisplayManager != null) {
+ mColorDisplayManager.setSaturationLevel(
+ effects.shouldDisplayGrayscale() ? SATURATION_LEVEL_GRAYSCALE
+ : SATURATION_LEVEL_FULL_COLOR);
+ }
+
+ if (mWallpaperManager != null) {
+ mWallpaperManager.setWallpaperDimAmount(
+ effects.shouldDimWallpaper() ? WALLPAPER_DIM_AMOUNT_DIMMED
+ : WALLPAPER_DIM_AMOUNT_NORMAL);
+ }
+
+ // TODO: b/308673343 - Apply dark theme (via UiModeManager) when screen is off.
+ });
+ }
+}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 3c6887c17e97..02845fb03119 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2941,6 +2941,12 @@ public class NotificationManagerService extends SystemService {
registerDeviceConfigChange();
migrateDefaultNAS();
maybeShowInitialReviewPermissionsNotification();
+
+ if (android.app.Flags.modesApi()) {
+ // Cannot be done earlier, as some services aren't ready until this point.
+ mZenModeHelper.setDeviceEffectsApplier(
+ new DefaultDeviceEffectsApplier(getContext()));
+ }
} else if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) {
mSnoozeHelper.scheduleRepostsForPersistedNotifications(System.currentTimeMillis());
} else if (phase == SystemService.PHASE_DEVICE_SPECIFIC_SERVICES_READY) {
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 5c37eeaba180..218519fef68b 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -27,8 +27,8 @@ import static android.service.notification.NotificationServiceProto.ROOT_CONFIG;
import static com.android.internal.util.FrameworkStatsLog.DND_MODE_RULE;
-import android.annotation.IntDef;
import android.annotation.DrawableRes;
+import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
@@ -76,6 +76,7 @@ import android.provider.Settings;
import android.provider.Settings.Global;
import android.service.notification.Condition;
import android.service.notification.ConditionProviderService;
+import android.service.notification.DeviceEffectsApplier;
import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenModeConfig.ZenRule;
@@ -175,6 +176,8 @@ public class ZenModeHelper {
@VisibleForTesting protected int mZenMode;
@VisibleForTesting protected NotificationManager.Policy mConsolidatedPolicy;
+ @GuardedBy("mConfigLock")
+ private ZenDeviceEffects mConsolidatedDeviceEffects = new ZenDeviceEffects.Builder().build();
private int mUser = UserHandle.USER_SYSTEM;
private final Object mConfigLock = new Object();
@@ -182,6 +185,8 @@ public class ZenModeHelper {
@VisibleForTesting protected ZenModeConfig mConfig;
@VisibleForTesting protected AudioManagerInternal mAudioManager;
protected PackageManager mPm;
+ @GuardedBy("mConfigLock")
+ private DeviceEffectsApplier mDeviceEffectsApplier;
private long mSuppressedEffects;
public static final long SUPPRESSED_EFFECT_NOTIFICATIONS = 1;
@@ -189,7 +194,7 @@ public class ZenModeHelper {
public static final long SUPPRESSED_EFFECT_ALL = SUPPRESSED_EFFECT_CALLS
| SUPPRESSED_EFFECT_NOTIFICATIONS;
- @VisibleForTesting protected boolean mIsBootComplete;
+ @VisibleForTesting protected boolean mIsSystemServicesReady;
private String[] mPriorityOnlyDndExemptPackages;
@@ -285,10 +290,33 @@ public class ZenModeHelper {
mPm = mContext.getPackageManager();
mHandler.postMetricsTimer();
cleanUpZenRules();
- mIsBootComplete = true;
+ mIsSystemServicesReady = true;
showZenUpgradeNotification(mZenMode);
}
+ /**
+ * Set the {@link DeviceEffectsApplier} used to apply the consolidated effects.
+ *
+ * <p>If effects were calculated previously (for example, when we loaded a {@link ZenModeConfig}
+ * that includes activated rules), they will be applied immediately.
+ */
+ void setDeviceEffectsApplier(@NonNull DeviceEffectsApplier deviceEffectsApplier) {
+ if (!Flags.modesApi()) {
+ return;
+ }
+ ZenDeviceEffects consolidatedDeviceEffects;
+ synchronized (mConfigLock) {
+ if (mDeviceEffectsApplier != null) {
+ throw new IllegalStateException("Already set up a DeviceEffectsApplier!");
+ }
+ mDeviceEffectsApplier = deviceEffectsApplier;
+ consolidatedDeviceEffects = mConsolidatedDeviceEffects;
+ }
+ if (consolidatedDeviceEffects.hasEffects()) {
+ applyConsolidatedDeviceEffects();
+ }
+ }
+
public void onUserSwitched(int user) {
loadConfigForUser(user, "onUserSwitched");
}
@@ -1349,7 +1377,7 @@ public class ZenModeHelper {
mConfig = config;
dispatchOnConfigChanged();
- updateConsolidatedPolicy(reason);
+ updateAndApplyConsolidatedPolicyAndDeviceEffects(reason);
}
final String val = Integer.toString(config.hashCode());
Global.putString(mContext.getContentResolver(), Global.ZEN_MODE_CONFIG_ETAG, val);
@@ -1398,7 +1426,7 @@ public class ZenModeHelper {
ZenLog.traceSetZenMode(zen, reason);
mZenMode = zen;
setZenModeSetting(mZenMode);
- updateConsolidatedPolicy(reason);
+ updateAndApplyConsolidatedPolicyAndDeviceEffects(reason);
boolean shouldApplyToRinger = setRingerMode && (zen != zenBefore || (
zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS
&& policyHashBefore != mConsolidatedPolicy.hashCode()));
@@ -1459,25 +1487,56 @@ public class ZenModeHelper {
}
}
- private void updateConsolidatedPolicy(String reason) {
+ private void updateAndApplyConsolidatedPolicyAndDeviceEffects(String reason) {
synchronized (mConfigLock) {
if (mConfig == null) return;
ZenPolicy policy = new ZenPolicy();
+ ZenDeviceEffects.Builder deviceEffectsBuilder = new ZenDeviceEffects.Builder();
if (mConfig.manualRule != null) {
applyCustomPolicy(policy, mConfig.manualRule);
+ if (Flags.modesApi()) {
+ deviceEffectsBuilder.add(mConfig.manualRule.zenDeviceEffects);
+ }
}
for (ZenRule automaticRule : mConfig.automaticRules.values()) {
if (automaticRule.isAutomaticActive()) {
applyCustomPolicy(policy, automaticRule);
+ if (Flags.modesApi()) {
+ deviceEffectsBuilder.add(automaticRule.zenDeviceEffects);
+ }
}
}
+
Policy newPolicy = mConfig.toNotificationPolicy(policy);
if (!Objects.equals(mConsolidatedPolicy, newPolicy)) {
mConsolidatedPolicy = newPolicy;
dispatchOnConsolidatedPolicyChanged();
ZenLog.traceSetConsolidatedZenPolicy(mConsolidatedPolicy, reason);
}
+
+ if (Flags.modesApi()) {
+ ZenDeviceEffects deviceEffects = deviceEffectsBuilder.build();
+ if (!deviceEffects.equals(mConsolidatedDeviceEffects)) {
+ mConsolidatedDeviceEffects = deviceEffects;
+ mHandler.postApplyDeviceEffects();
+ }
+ }
+ }
+ }
+
+ private void applyConsolidatedDeviceEffects() {
+ if (!Flags.modesApi()) {
+ return;
+ }
+ DeviceEffectsApplier applier;
+ ZenDeviceEffects effects;
+ synchronized (mConfigLock) {
+ applier = mDeviceEffectsApplier;
+ effects = mConsolidatedDeviceEffects;
+ }
+ if (applier != null) {
+ applier.apply(effects);
}
}
@@ -1893,7 +1952,7 @@ public class ZenModeHelper {
private void showZenUpgradeNotification(int zen) {
final boolean isWatch = mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_WATCH);
- final boolean showNotification = mIsBootComplete
+ final boolean showNotification = mIsSystemServicesReady
&& zen != Global.ZEN_MODE_OFF
&& !isWatch
&& Settings.Secure.getInt(mContext.getContentResolver(),
@@ -2067,6 +2126,7 @@ public class ZenModeHelper {
private static final int MSG_DISPATCH = 1;
private static final int MSG_METRICS = 2;
private static final int MSG_RINGER_AUDIO = 5;
+ private static final int MSG_APPLY_EFFECTS = 6;
private static final long METRICS_PERIOD_MS = 6 * 60 * 60 * 1000;
@@ -2089,6 +2149,11 @@ public class ZenModeHelper {
sendMessage(obtainMessage(MSG_RINGER_AUDIO, shouldApplyToRinger));
}
+ private void postApplyDeviceEffects() {
+ removeMessages(MSG_APPLY_EFFECTS);
+ sendEmptyMessage(MSG_APPLY_EFFECTS);
+ }
+
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
@@ -2101,6 +2166,10 @@ public class ZenModeHelper {
case MSG_RINGER_AUDIO:
boolean shouldApplyToRinger = (boolean) msg.obj;
updateRingerAndAudio(shouldApplyToRinger);
+ break;
+ case MSG_APPLY_EFFECTS:
+ applyConsolidatedDeviceEffects();
+ break;
}
}
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index c0c98dedfae3..cce9eeebb816 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -1379,9 +1379,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService
final InstallSourceInfo installSourceInfo = snapshot.getInstallSourceInfo(packageName,
userId);
- final String initiatingPackageName = installSourceInfo.getInitiatingPackageName();
final String installerPackageName;
if (installSourceInfo != null) {
+ final String initiatingPackageName = installSourceInfo.getInitiatingPackageName();
if (!isInstalledByAdb(initiatingPackageName)) {
installerPackageName = initiatingPackageName;
} else {
@@ -4604,6 +4604,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService
userIds, null, broadcastAllowList, null,
null);
});
+ mPackageMonitorCallbackHelper.notifyPackageMonitor(Intent.ACTION_PACKAGE_UNSTOPPED,
+ packageName, extras, userIds, null /* instantUserIds */,
+ broadcastAllowList, mHandler);
}
}
}
diff --git a/services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java b/services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java
index fa9409f88a13..1bb0730cccb2 100644
--- a/services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java
+++ b/services/core/java/com/android/server/pm/PackageMonitorCallbackHelper.java
@@ -188,7 +188,9 @@ class PackageMonitorCallbackHelper {
|| TextUtils.equals(action, Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE)
|| TextUtils.equals(action, Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE)
|| TextUtils.equals(action, Intent.ACTION_PACKAGE_DATA_CLEARED)
- || TextUtils.equals(action, Intent.ACTION_PACKAGE_RESTARTED);
+ || TextUtils.equals(action, Intent.ACTION_PACKAGE_RESTARTED)
+ || TextUtils.equals(action, Intent.ACTION_PACKAGE_UNSTOPPED);
+
}
private void doNotifyCallbacksByIntent(Intent intent, int userId,
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 30bce2f41cf7..4e5dc1dd76fa 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -17,11 +17,13 @@
package com.android.server.policy;
import static android.Manifest.permission.INTERNAL_SYSTEM_WINDOW;
+import static android.Manifest.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW;
import static android.Manifest.permission.SYSTEM_ALERT_WINDOW;
import static android.Manifest.permission.SYSTEM_APPLICATION_OVERLAY;
import static android.app.AppOpsManager.OP_CREATE_ACCESSIBILITY_OVERLAY;
import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW;
import static android.app.AppOpsManager.OP_TOAST_WINDOW;
+import static android.content.PermissionChecker.PID_UNKNOWN;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
@@ -117,6 +119,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.PermissionChecker;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
@@ -690,6 +693,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private final com.android.internal.policy.LogDecelerateInterpolator mLogDecelerateInterpolator
= new LogDecelerateInterpolator(100, 0);
+ private final DeferredKeyActionExecutor mDeferredKeyActionExecutor =
+ new DeferredKeyActionExecutor();
private volatile int mTopFocusedDisplayId = INVALID_DISPLAY;
@@ -698,6 +703,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private KeyCombinationManager mKeyCombinationManager;
private SingleKeyGestureDetector mSingleKeyGestureDetector;
private GestureLauncherService mGestureLauncherService;
+ private ButtonOverridePermissionChecker mButtonOverridePermissionChecker;
private boolean mLockNowPending = false;
@@ -725,6 +731,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private static final int MSG_RINGER_TOGGLE_CHORD = 24;
private static final int MSG_SWITCH_KEYBOARD_LAYOUT = 25;
private static final int MSG_LOG_KEYBOARD_SYSTEM_EVENT = 26;
+ private static final int MSG_SET_DEFERRED_KEY_ACTIONS_EXECUTABLE = 27;
private class PolicyHandler extends Handler {
@@ -792,7 +799,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mAutofillManagerInternal.onBackKeyPressed();
break;
case MSG_SYSTEM_KEY_PRESS:
- sendSystemKeyToStatusBar((KeyEvent) msg.obj);
+ KeyEvent event = (KeyEvent) msg.obj;
+ sendSystemKeyToStatusBar(event);
+ event.recycle();
break;
case MSG_HANDLE_ALL_APPS:
launchAllAppsAction();
@@ -809,6 +818,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case MSG_LOG_KEYBOARD_SYSTEM_EVENT:
handleKeyboardSystemEvent(KeyboardLogEvent.from(msg.arg1), (KeyEvent) msg.obj);
break;
+ case MSG_SET_DEFERRED_KEY_ACTIONS_EXECUTABLE:
+ final int keyCode = msg.arg1;
+ final long downTime = (Long) msg.obj;
+ mDeferredKeyActionExecutor.setActionsExecutable(keyCode, downTime);
+ break;
}
}
}
@@ -2234,6 +2248,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
IActivityManager getActivityManagerService() {
return ActivityManager.getService();
}
+
+ ButtonOverridePermissionChecker getButtonOverridePermissionChecker() {
+ return new ButtonOverridePermissionChecker();
+ }
}
/** {@inheritDoc} */
@@ -2499,6 +2517,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mKeyguardDelegate = injector.getKeyguardServiceDelegate();
initKeyCombinationRules();
initSingleKeyGestureRules(injector.getLooper());
+ mButtonOverridePermissionChecker = injector.getButtonOverridePermissionChecker();
mSideFpsEventHandler = new SideFpsEventHandler(mContext, mHandler, mPowerManager);
}
@@ -2768,17 +2787,33 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (mShouldEarlyShortPressOnStemPrimary) {
return;
}
- stemPrimaryPress(1 /*count*/);
+ // Short-press should be triggered only if app doesn't handle it.
+ mDeferredKeyActionExecutor.queueKeyAction(
+ KeyEvent.KEYCODE_STEM_PRIMARY, downTime, () -> stemPrimaryPress(1 /*count*/));
}
@Override
void onLongPress(long eventTime) {
- stemPrimaryLongPress(eventTime);
+ // Long-press should be triggered only if app doesn't handle it.
+ mDeferredKeyActionExecutor.queueKeyAction(
+ KeyEvent.KEYCODE_STEM_PRIMARY,
+ eventTime,
+ () -> stemPrimaryLongPress(eventTime));
}
@Override
void onMultiPress(long downTime, int count, int unusedDisplayId) {
- stemPrimaryPress(count);
+ // Triple-press stem to toggle accessibility gesture should always be triggered
+ // regardless of if app handles it.
+ if (count == 3
+ && mTriplePressOnStemPrimaryBehavior
+ == TRIPLE_PRESS_PRIMARY_TOGGLE_ACCESSIBILITY) {
+ stemPrimaryPress(count);
+ } else {
+ // Other multi-press gestures should be triggered only if app doesn't handle it.
+ mDeferredKeyActionExecutor.queueKeyAction(
+ KeyEvent.KEYCODE_STEM_PRIMARY, downTime, () -> stemPrimaryPress(count));
+ }
}
@Override
@@ -2792,7 +2827,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mBackgroundRecentTaskInfoOnStemPrimarySingleKeyUp =
mActivityTaskManagerInternal.getMostRecentTaskFromBackground();
if (mShouldEarlyShortPressOnStemPrimary) {
- stemPrimaryPress(1 /*pressCount*/);
+ // Key-up gesture should be triggered only if app doesn't handle it.
+ mDeferredKeyActionExecutor.queueKeyAction(
+ KeyEvent.KEYCODE_STEM_PRIMARY, eventTime, () -> stemPrimaryPress(1));
}
}
}
@@ -3750,6 +3787,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return true;
}
break;
+ case KeyEvent.KEYCODE_STEM_PRIMARY:
+ if (prepareToSendSystemKeyToApplication(focusedToken, event)) {
+ // Send to app.
+ return false;
+ } else {
+ // Intercepted.
+ sendSystemKeyToStatusBarAsync(event);
+ return true;
+ }
}
if (isValidGlobalKey(keyCode)
&& mGlobalKeyManager.handleGlobalKey(mContext, keyCode, event)) {
@@ -3760,6 +3806,60 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return (metaState & KeyEvent.META_META_ON) != 0;
}
+ /**
+ * In this function, we check whether a system key should be sent to the application. We also
+ * detect the key gesture on this key, even if the key will be sent to the app. The gesture
+ * action, if any, will not be executed immediately. It will be queued and execute only after
+ * the application tells us that it didn't handle this key.
+ *
+ * @return true if this key should be sent to the application. This also means that the target
+ * application has the necessary permissions to receive this key. Return false otherwise.
+ */
+ private boolean prepareToSendSystemKeyToApplication(IBinder focusedToken, KeyEvent event) {
+ final int keyCode = event.getKeyCode();
+ if (!event.isSystem()) {
+ Log.wtf(
+ TAG,
+ "Illegal keycode provided to prepareToSendSystemKeyToApplication: "
+ + KeyEvent.keyCodeToString(keyCode));
+ return false;
+ }
+ final boolean isDown = event.getAction() == KeyEvent.ACTION_DOWN;
+ if (isDown && event.getRepeatCount() == 0) {
+ // This happens at the initial DOWN event. Check focused window permission now.
+ final KeyInterceptionInfo info =
+ mWindowManagerInternal.getKeyInterceptionInfoFromToken(focusedToken);
+ if (info != null
+ && mButtonOverridePermissionChecker.canAppOverrideSystemKey(
+ mContext, info.windowOwnerUid)) {
+ // Focused window has the permission. Pass the event to it.
+ return true;
+ } else {
+ // Focused window doesn't have the permission. Intercept the event.
+ // If the initial DOWN event is intercepted, follow-up events will be intercepted
+ // too. So we know the gesture won't be handled by app, and can handle the gesture
+ // in system.
+ setDeferredKeyActionsExecutableAsync(keyCode, event.getDownTime());
+ return false;
+ }
+ } else {
+ // This happens after the initial DOWN event. We will just reuse the initial decision.
+ // I.e., if the initial DOWN event was dispatched, follow-up events should be
+ // dispatched. Otherwise, follow-up events should be consumed.
+ final Set<Integer> consumedKeys = mConsumedKeysForDevice.get(event.getDeviceId());
+ final boolean wasConsumed = consumedKeys != null && consumedKeys.contains(keyCode);
+ return !wasConsumed;
+ }
+ }
+
+ private void setDeferredKeyActionsExecutableAsync(int keyCode, long downTime) {
+ Message msg = Message.obtain(mHandler, MSG_SET_DEFERRED_KEY_ACTIONS_EXECUTABLE);
+ msg.arg1 = keyCode;
+ msg.obj = downTime;
+ msg.setAsynchronous(true);
+ msg.sendToTarget();
+ }
+
@SuppressLint("MissingPermission")
private void injectBackGesture(long downtime) {
// Create and inject down event
@@ -3977,11 +4077,34 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mContext.closeSystemDialogs();
}
return true;
+ case KeyEvent.KEYCODE_STEM_PRIMARY:
+ handleUnhandledSystemKey(event);
+ sendSystemKeyToStatusBarAsync(event);
+ return true;
}
return false;
}
+ /**
+ * Called when a system key was sent to application and was unhandled. We will execute any
+ * queued actions associated with this key code at this point.
+ */
+ private void handleUnhandledSystemKey(KeyEvent event) {
+ if (!event.isSystem()) {
+ Log.wtf(
+ TAG,
+ "Illegal keycode provided to handleUnhandledSystemKey: "
+ + KeyEvent.keyCodeToString(event.getKeyCode()));
+ return;
+ }
+ if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
+ // If the initial DOWN event is unhandled by app, follow-up events will also be
+ // unhandled by app. So we can handle the key event in system.
+ setDeferredKeyActionsExecutableAsync(event.getKeyCode(), event.getDownTime());
+ }
+ }
+
private void sendSwitchKeyboardLayout(@NonNull KeyEvent event, int direction) {
mHandler.obtainMessage(MSG_SWITCH_KEYBOARD_LAYOUT, event.getDeviceId(),
direction).sendToTarget();
@@ -4904,9 +5027,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case KeyEvent.KEYCODE_MACRO_4:
result &= ~ACTION_PASS_TO_USER;
break;
- case KeyEvent.KEYCODE_STEM_PRIMARY:
- sendSystemKeyToStatusBarAsync(event);
- break;
}
if (useHapticFeedback) {
@@ -5016,7 +5136,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
* Notify the StatusBar that a system key was pressed without blocking the current thread.
*/
private void sendSystemKeyToStatusBarAsync(KeyEvent keyEvent) {
- Message message = mHandler.obtainMessage(MSG_SYSTEM_KEY_PRESS, keyEvent);
+ // Make a copy because the event may be recycled.
+ Message message = mHandler.obtainMessage(MSG_SYSTEM_KEY_PRESS, KeyEvent.obtain(keyEvent));
message.setAsynchronous(true);
mHandler.sendMessage(message);
}
@@ -6468,6 +6589,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mGlobalKeyManager.dump(prefix, pw);
mKeyCombinationManager.dump(prefix, pw);
mSingleKeyGestureDetector.dump(prefix, pw);
+ mDeferredKeyActionExecutor.dump(prefix, pw);
if (mWakeGestureListener != null) {
mWakeGestureListener.dump(pw, prefix);
@@ -6793,4 +6915,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
+ " name.");
}
}
+
+ /** A helper class to check button override permission. */
+ static class ButtonOverridePermissionChecker {
+ boolean canAppOverrideSystemKey(Context context, int uid) {
+ return PermissionChecker.checkPermissionForDataDelivery(
+ context,
+ OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW,
+ PID_UNKNOWN,
+ uid,
+ null,
+ null,
+ null)
+ == PERMISSION_GRANTED;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/utils/Android.bp b/services/core/java/com/android/server/utils/Android.bp
new file mode 100644
index 000000000000..3a334bee93ff
--- /dev/null
+++ b/services/core/java/com/android/server/utils/Android.bp
@@ -0,0 +1,10 @@
+aconfig_declarations {
+ name: "com.android.server.utils-aconfig",
+ package: "com.android.server.utils",
+ srcs: ["*.aconfig"],
+}
+
+java_aconfig_library {
+ name: "com.android.server.utils_aconfig-java",
+ aconfig_declarations: "com.android.server.utils-aconfig",
+}
diff --git a/services/core/java/com/android/server/am/AnrTimer.java b/services/core/java/com/android/server/utils/AnrTimer.java
index 3e17930e3cb9..2b6dffb2b271 100644
--- a/services/core/java/com/android/server/am/AnrTimer.java
+++ b/services/core/java/com/android/server/utils/AnrTimer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.server.am;
+package com.android.server.utils;
import static android.text.TextUtils.formatSimple;
@@ -77,7 +77,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*
* @hide
*/
-class AnrTimer<V> {
+public class AnrTimer<V> {
/**
* The log tag.
@@ -568,7 +568,7 @@ class AnrTimer<V> {
* @param label A name for this instance.
* @param extend A flag to indicate if expired timers can be granted extensions.
*/
- AnrTimer(@NonNull Handler handler, int what, @NonNull String label, boolean extend) {
+ public AnrTimer(@NonNull Handler handler, int what, @NonNull String label, boolean extend) {
this(handler, what, label, extend, new Injector(handler));
}
@@ -580,7 +580,7 @@ class AnrTimer<V> {
* @param what The "what" parameter for the expiration message.
* @param label A name for this instance.
*/
- AnrTimer(@NonNull Handler handler, int what, @NonNull String label) {
+ public AnrTimer(@NonNull Handler handler, int what, @NonNull String label) {
this(handler, what, label, false);
}
@@ -591,7 +591,7 @@ class AnrTimer<V> {
*
* @return true if the service is flag-enabled.
*/
- boolean serviceEnabled() {
+ public boolean serviceEnabled() {
return mFeature.enabled();
}
@@ -856,7 +856,7 @@ class AnrTimer<V> {
* @param timeoutMs The timer timeout, in milliseconds.
* @return true if the timer was successfully created.
*/
- boolean start(@NonNull V arg, int pid, int uid, long timeoutMs) {
+ public boolean start(@NonNull V arg, int pid, int uid, long timeoutMs) {
return mFeature.start(arg, pid, uid, timeoutMs);
}
@@ -867,7 +867,7 @@ class AnrTimer<V> {
*
* @return true if the timer was found and was running.
*/
- boolean cancel(@NonNull V arg) {
+ public boolean cancel(@NonNull V arg) {
return mFeature.cancel(arg);
}
@@ -878,7 +878,7 @@ class AnrTimer<V> {
*
* @return true if the timer was found and was expired.
*/
- boolean accept(@NonNull V arg) {
+ public boolean accept(@NonNull V arg) {
return mFeature.accept(arg);
}
@@ -892,7 +892,7 @@ class AnrTimer<V> {
*
* @return true if the timer was found and was expired.
*/
- boolean discard(@NonNull V arg) {
+ public boolean discard(@NonNull V arg) {
return mFeature.discard(arg);
}
@@ -1010,7 +1010,7 @@ class AnrTimer<V> {
/**
* Dumpsys output.
*/
- static void dump(@NonNull PrintWriter pw, boolean verbose) {
+ public static void dump(@NonNull PrintWriter pw, boolean verbose) {
final IndentingPrintWriter ipw = new IndentingPrintWriter(pw);
ipw.println("AnrTimer statistics");
ipw.increaseIndent();
diff --git a/services/core/java/com/android/server/utils/flags.aconfig b/services/core/java/com/android/server/utils/flags.aconfig
new file mode 100644
index 000000000000..489e21ab06ca
--- /dev/null
+++ b/services/core/java/com/android/server/utils/flags.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.server.utils"
+
+flag {
+ name: "anr_timer_service_enabled"
+ namespace: "system_performance"
+ is_fixed_read_only: true
+ description: "Feature flag for the ANR timer service"
+ bug: "282428924"
+}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index e088d9afd67d..1485b961789c 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -40,6 +40,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.window.flags.Flags.multiCrop;
import android.annotation.NonNull;
import android.app.ActivityManager;
@@ -93,7 +94,6 @@ import android.os.ResultReceiver;
import android.os.SELinux;
import android.os.ShellCallback;
import android.os.SystemClock;
-import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.StorageManager;
@@ -1516,8 +1516,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
mColorsChangedListeners = new SparseArray<>();
mWallpaperDataParser = new WallpaperDataParser(mContext, mWallpaperDisplayHelper,
mWallpaperCropper);
- mIsMultiCropEnabled =
- SystemProperties.getBoolean("persist.wm.debug.wallpaper_multi_crop", false);
+ mIsMultiCropEnabled = multiCrop();
LocalServices.addService(WallpaperManagerInternal.class, new LocalService());
}
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index b1abe2a567e8..1577cef9de00 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -107,6 +107,7 @@ import com.android.server.wm.AccessibilityWindowsPopulator.AccessibilityWindow;
import com.android.server.wm.WindowManagerInternal.AccessibilityControllerInternal;
import com.android.server.wm.WindowManagerInternal.MagnificationCallbacks;
import com.android.server.wm.WindowManagerInternal.WindowsForAccessibilityCallback;
+import com.android.window.flags.Flags;
import java.io.File;
import java.io.IOException;
@@ -758,6 +759,11 @@ final class AccessibilityController {
if (!isMagnifierActivated) {
break;
}
+ if (Flags.doNotCheckIntersectionWhenNonMagnifiableWindowTransitions()) {
+ if (!windowState.shouldMagnify()) {
+ break;
+ }
+ }
switch (type) {
case WindowManager.LayoutParams.TYPE_APPLICATION:
case WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION:
diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
index 4625b4fe07ef..f8b22c97e218 100644
--- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
+++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
@@ -614,6 +614,15 @@ public class BackgroundActivityStartController {
== ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_SYSTEM_DEFINED;
if (callerCanAllow && realCallerCanAllow) {
// Both caller and real caller allow with system defined behavior
+ if (state.mBalAllowedByPiCreatorWithHardening.allowsBackgroundActivityStarts()) {
+ // Will be allowed even with BAL hardening.
+ if (DEBUG_ACTIVITY_STARTS) {
+ Slog.d(TAG, "Activity start allowed by caller. "
+ + state.dump(resultForCaller, resultForRealCaller));
+ }
+ // return the realCaller result for backwards compatibility
+ return statsLog(resultForRealCaller, state);
+ }
if (state.mBalAllowedByPiCreator.allowsBackgroundActivityStarts()) {
Slog.wtf(TAG,
"With Android 15 BAL hardening this activity start may be blocked"
@@ -632,6 +641,14 @@ public class BackgroundActivityStartController {
}
if (callerCanAllow) {
// Allowed before V by creator
+ if (state.mBalAllowedByPiCreatorWithHardening.allowsBackgroundActivityStarts()) {
+ // Will be allowed even with BAL hardening.
+ if (DEBUG_ACTIVITY_STARTS) {
+ Slog.d(TAG, "Activity start allowed by caller. "
+ + state.dump(resultForCaller, resultForRealCaller));
+ }
+ return statsLog(resultForCaller, state);
+ }
if (state.mBalAllowedByPiCreator.allowsBackgroundActivityStarts()) {
Slog.wtf(TAG,
"With Android 15 BAL hardening this activity start may be blocked"
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index 14912d041127..bf30af3e8596 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -461,7 +461,7 @@ final class InputMonitor {
// in animating before the next app window focused, or IME icon
// persists on the bottom when swiping the task to recents.
InputMethodManagerInternal.get().updateImeWindowStatus(
- true /* disableImeIcon */);
+ true /* disableImeIcon */, mDisplayContent.getDisplayId());
}
}
return;
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index ccaa3b07aaaa..cbc7b836d250 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -240,7 +240,8 @@ class KeyguardController {
// state when evaluating visibilities.
updateKeyguardSleepToken();
mRootWindowContainer.ensureActivitiesVisible(null, 0, !PRESERVE_WINDOWS);
- InputMethodManagerInternal.get().updateImeWindowStatus(false /* disableImeIcon */);
+ InputMethodManagerInternal.get().updateImeWindowStatus(false /* disableImeIcon */,
+ displayId);
setWakeTransitionReady();
if (aodChanged) {
// Ensure the new state takes effect.
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index ef2572665281..dd538deee5cd 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -967,7 +967,8 @@ public class RecentsAnimationController implements DeathRecipient {
// Restore IME icon only when moving the original app task to front from recents, in case
// IME icon may missing if the moving task has already been the current focused task.
if (reorderMode == REORDER_MOVE_TO_ORIGINAL_POSITION && !mIsAddingTaskToTargets) {
- InputMethodManagerInternal.get().updateImeWindowStatus(false /* disableImeIcon */);
+ InputMethodManagerInternal.get().updateImeWindowStatus(
+ false /* disableImeIcon */, mDisplayId);
}
// Update the input windows after the animation is complete
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 424394872821..76c4a0ee438b 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -1390,7 +1390,7 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
// recents, in case IME icon may missing if the moving task has already been
// the current focused task.
InputMethodManagerInternal.get().updateImeWindowStatus(
- false /* disableImeIcon */);
+ false /* disableImeIcon */, dc.getDisplayId());
}
// An uncommitted transient launch can leave incomplete lifecycles if visibilities
// didn't change (eg. re-ordering with translucent tasks will leave launcher
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index e1f1f662c5aa..b890a9e9bd04 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -5622,9 +5622,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
if (mKeyInterceptionInfo == null
|| mKeyInterceptionInfo.layoutParamsPrivateFlags != getAttrs().privateFlags
|| mKeyInterceptionInfo.layoutParamsType != getAttrs().type
- || mKeyInterceptionInfo.windowTitle != getWindowTag()) {
+ || mKeyInterceptionInfo.windowTitle != getWindowTag()
+ || mKeyInterceptionInfo.windowOwnerUid != getOwningUid()) {
mKeyInterceptionInfo = new KeyInterceptionInfo(getAttrs().type, getAttrs().privateFlags,
- getWindowTag().toString());
+ getWindowTag().toString(), getOwningUid());
}
return mKeyInterceptionInfo;
}
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 81a547290d5e..a8e6f689b424 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -910,7 +910,7 @@ void IncrementalService::disallowReadLogs(StorageId storageId) {
constants().readLogsDisabledMarkerName),
0777, idFromMetadata(metadata), {})) {
//{.metadata = {metadata.data(), (IncFsSize)metadata.size()}})) {
- LOG(ERROR) << "Failed to make marker file for storageId: " << storageId;
+ LOG(ERROR) << "Failed to make marker file for storageId: " << storageId << " err: " << -err;
return;
}
diff --git a/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt
index bb68bc5c791d..44609acf7894 100644
--- a/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/DevicePermissionPolicy.kt
@@ -61,6 +61,38 @@ class DevicePermissionPolicy : SchemePolicy() {
}
}
+ fun MutateStateScope.removeInactiveDevicesPermission(activePersistentDeviceIds: Set<String>) {
+ newState.userStates.forEachIndexed { _, userId, userState ->
+ userState.appIdDevicePermissionFlags.forEachReversedIndexed { _, appId, _ ->
+ val appIdDevicePermissionFlags =
+ newState.mutateUserState(userId)!!.mutateAppIdDevicePermissionFlags()
+ val devicePermissionFlags =
+ appIdDevicePermissionFlags.mutate(appId) ?: return@forEachReversedIndexed
+
+ val removePersistentDeviceIds = mutableSetOf<String>()
+ devicePermissionFlags.forEachIndexed { _, deviceId, _ ->
+ if (!activePersistentDeviceIds.contains(deviceId)) {
+ removePersistentDeviceIds.add(deviceId)
+ }
+ }
+
+ removePersistentDeviceIds.forEach { deviceId -> devicePermissionFlags -= deviceId }
+ }
+ }
+ }
+
+ fun MutateStateScope.onDeviceIdRemoved(deviceId: String) {
+ newState.userStates.forEachIndexed { _, userId, userState ->
+ userState.appIdDevicePermissionFlags.forEachReversedIndexed { _, appId, _ ->
+ val appIdDevicePermissionFlags =
+ newState.mutateUserState(userId)!!.mutateAppIdDevicePermissionFlags()
+ val devicePermissionFlags =
+ appIdDevicePermissionFlags.mutate(appId) ?: return@forEachReversedIndexed
+ devicePermissionFlags -= deviceId
+ }
+ }
+ }
+
override fun MutateStateScope.onStorageVolumeMounted(
volumeUuid: String?,
packageNames: List<String>,
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 7c539502461b..a7d32492d6e2 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
@@ -2314,6 +2314,18 @@ class PermissionService(private val service: AccessCheckingService) :
service.onSystemReady()
virtualDeviceManagerInternal =
LocalServices.getService(VirtualDeviceManagerInternal::class.java)
+
+ virtualDeviceManagerInternal?.allPersistentDeviceIds?.let { persistentDeviceIds ->
+ service.mutateState {
+ with(devicePolicy) { removeInactiveDevicesPermission(persistentDeviceIds) }
+ }
+ }
+
+ // trim permission states for the external devices, when they are removed.
+ virtualDeviceManagerInternal?.registerPersistentDeviceIdRemovedListener { persistentDeviceId
+ ->
+ service.mutateState { with(devicePolicy) { onDeviceIdRemoved(persistentDeviceId) } }
+ }
permissionControllerManager =
PermissionControllerManager(context, PermissionThread.getHandler())
}
@@ -2681,8 +2693,8 @@ class PermissionService(private val service: AccessCheckingService) :
permissionName in NOTIFICATIONS_PERMISSIONS &&
runtimePermissionRevokedUids.get(uid, true)
}
- runtimePermissionChangedUidDevices
- .getOrPut(uid) { mutableSetOf() } += persistentDeviceId
+ runtimePermissionChangedUidDevices.getOrPut(uid) { mutableSetOf() } +=
+ persistentDeviceId
}
if (permission.hasGids && !wasPermissionGranted && isPermissionGranted) {
@@ -2799,8 +2811,7 @@ class PermissionService(private val service: AccessCheckingService) :
fun onPermissionsChanged(uid: Int, persistentDeviceId: String) {
if (listeners.registeredCallbackCount > 0) {
- obtainMessage(MSG_ON_PERMISSIONS_CHANGED, uid, 0, persistentDeviceId)
- .sendToTarget()
+ obtainMessage(MSG_ON_PERMISSIONS_CHANGED, uid, 0, persistentDeviceId).sendToTarget()
}
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/BackgroundJobsControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/BackgroundJobsControllerTest.java
new file mode 100644
index 000000000000..25d331fcc5ca
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/BackgroundJobsControllerTest.java
@@ -0,0 +1,291 @@
+/*
+ * 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.server.job.controllers;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
+import static com.android.server.job.JobSchedulerService.FREQUENT_INDEX;
+import static com.android.server.job.controllers.JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.app.ActivityManagerInternal;
+import android.app.AppGlobals;
+import android.app.job.JobInfo;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
+import android.net.Uri;
+import android.os.UserHandle;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.util.ArraySet;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.server.AppStateTracker;
+import com.android.server.AppStateTrackerImpl;
+import com.android.server.LocalServices;
+import com.android.server.job.JobSchedulerService;
+import com.android.server.job.JobStore;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Mock;
+import org.mockito.MockitoSession;
+import org.mockito.quality.Strictness;
+
+@RunWith(AndroidJUnit4.class)
+public class BackgroundJobsControllerTest {
+ private static final int CALLING_UID = 1000;
+ private static final String CALLING_PACKAGE = "com.test.calling.package";
+ private static final String SOURCE_PACKAGE = "com.android.frameworks.mockingservicestests";
+ private static final int SOURCE_UID = 10001;
+ private static final int ALTERNATE_UID = 12345;
+ private static final String ALTERNATE_SOURCE_PACKAGE = "com.test.alternate.package";
+ private static final int SOURCE_USER_ID = 0;
+
+ private BackgroundJobsController mBackgroundJobsController;
+ private BroadcastReceiver mStoppedReceiver;
+ private JobStore mJobStore;
+
+ private MockitoSession mMockingSession;
+ @Mock
+ private Context mContext;
+ @Mock
+ private AppStateTrackerImpl mAppStateTrackerImpl;
+ @Mock
+ private IPackageManager mIPackageManager;
+ @Mock
+ private JobSchedulerService mJobSchedulerService;
+ @Mock
+ private PackageManagerInternal mPackageManagerInternal;
+ @Mock
+ private PackageManager mPackageManager;
+
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ @Before
+ public void setUp() throws Exception {
+ mMockingSession = mockitoSession()
+ .initMocks(this)
+ .mockStatic(AppGlobals.class)
+ .mockStatic(LocalServices.class)
+ .strictness(Strictness.LENIENT)
+ .startMocking();
+
+ // Called in StateController constructor.
+ when(mJobSchedulerService.getTestableContext()).thenReturn(mContext);
+ when(mJobSchedulerService.getLock()).thenReturn(mJobSchedulerService);
+ // Called in BackgroundJobsController constructor.
+ doReturn(mock(ActivityManagerInternal.class))
+ .when(() -> LocalServices.getService(ActivityManagerInternal.class));
+ doReturn(mAppStateTrackerImpl)
+ .when(() -> LocalServices.getService(AppStateTracker.class));
+ doReturn(mPackageManagerInternal)
+ .when(() -> LocalServices.getService(PackageManagerInternal.class));
+ mJobStore = JobStore.initAndGetForTesting(mContext, mContext.getFilesDir());
+ when(mJobSchedulerService.getJobStore()).thenReturn(mJobStore);
+ // Called in JobStatus constructor.
+ doReturn(mIPackageManager).when(AppGlobals::getPackageManager);
+
+ doReturn(false).when(mAppStateTrackerImpl)
+ .areJobsRestricted(anyInt(), anyString(), anyBoolean());
+ doReturn(true).when(mAppStateTrackerImpl)
+ .isRunAnyInBackgroundAppOpsAllowed(anyInt(), anyString());
+
+ // Initialize real objects.
+ // Capture the listeners.
+ ArgumentCaptor<BroadcastReceiver> receiverCaptor =
+ ArgumentCaptor.forClass(BroadcastReceiver.class);
+
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ mBackgroundJobsController = new BackgroundJobsController(mJobSchedulerService);
+ mBackgroundJobsController.startTrackingLocked();
+
+ verify(mContext).registerReceiverAsUser(receiverCaptor.capture(), any(),
+ ArgumentMatchers.argThat(filter ->
+ filter.hasAction(Intent.ACTION_PACKAGE_RESTARTED)
+ && filter.hasAction(Intent.ACTION_PACKAGE_UNSTOPPED)),
+ any(), any());
+ mStoppedReceiver = receiverCaptor.getValue();
+
+ // Need to do this since we're using a mock JS and not a real object.
+ doReturn(new ArraySet<>(new String[]{SOURCE_PACKAGE}))
+ .when(mJobSchedulerService).getPackagesForUidLocked(SOURCE_UID);
+ doReturn(new ArraySet<>(new String[]{ALTERNATE_SOURCE_PACKAGE}))
+ .when(mJobSchedulerService).getPackagesForUidLocked(ALTERNATE_UID);
+ setPackageUid(ALTERNATE_UID, ALTERNATE_SOURCE_PACKAGE);
+ setPackageUid(SOURCE_UID, SOURCE_PACKAGE);
+ }
+
+ @After
+ public void tearDown() {
+ if (mMockingSession != null) {
+ mMockingSession.finishMocking();
+ }
+ }
+
+ private void setPackageUid(final int uid, final String pkgName) throws Exception {
+ doReturn(uid).when(mIPackageManager)
+ .getPackageUid(eq(pkgName), anyLong(), eq(UserHandle.getUserId(uid)));
+ }
+
+ private void setStoppedState(int uid, String pkgName, boolean stopped) {
+ Intent intent = new Intent(
+ stopped ? Intent.ACTION_PACKAGE_RESTARTED : Intent.ACTION_PACKAGE_UNSTOPPED);
+ intent.putExtra(Intent.EXTRA_UID, uid);
+ intent.setData(Uri.fromParts(IntentFilter.SCHEME_PACKAGE, pkgName, null));
+ mStoppedReceiver.onReceive(mContext, intent);
+ }
+
+ private void setUidBias(int uid, int bias) {
+ int prevBias = mJobSchedulerService.getUidBias(uid);
+ doReturn(bias).when(mJobSchedulerService).getUidBias(uid);
+ synchronized (mBackgroundJobsController.mLock) {
+ mBackgroundJobsController.onUidBiasChangedLocked(uid, prevBias, bias);
+ }
+ }
+
+ private void trackJobs(JobStatus... jobs) {
+ for (JobStatus job : jobs) {
+ mJobStore.add(job);
+ synchronized (mBackgroundJobsController.mLock) {
+ mBackgroundJobsController.maybeStartTrackingJobLocked(job, null);
+ }
+ }
+ }
+
+ private JobInfo.Builder createBaseJobInfoBuilder(String pkgName, int jobId) {
+ final ComponentName cn = spy(new ComponentName(pkgName, "TestBJCJobService"));
+ doReturn("TestBJCJobService").when(cn).flattenToShortString();
+ return new JobInfo.Builder(jobId, cn);
+ }
+
+ private JobStatus createJobStatus(String testTag, String packageName, int callingUid,
+ JobInfo jobInfo) {
+ JobStatus js = JobStatus.createFromJobInfo(
+ jobInfo, callingUid, packageName, SOURCE_USER_ID, "BJCTest", testTag);
+ js.serviceProcessName = "testProcess";
+ // Make sure tests aren't passing just because the default bucket is likely ACTIVE.
+ js.setStandbyBucket(FREQUENT_INDEX);
+ return js;
+ }
+
+ @Test
+ public void testStopped_disabled() {
+ mSetFlagsRule.disableFlags(android.content.pm.Flags.FLAG_STAY_STOPPED);
+ // Scheduled by SOURCE_UID:SOURCE_PACKAGE for itself.
+ JobStatus directJob1 = createJobStatus("testStopped", SOURCE_PACKAGE, SOURCE_UID,
+ createBaseJobInfoBuilder(SOURCE_PACKAGE, 1).build());
+ // Scheduled by ALTERNATE_UID:ALTERNATE_SOURCE_PACKAGE for itself.
+ JobStatus directJob2 = createJobStatus("testStopped",
+ ALTERNATE_SOURCE_PACKAGE, ALTERNATE_UID,
+ createBaseJobInfoBuilder(ALTERNATE_SOURCE_PACKAGE, 2).build());
+ // Scheduled by CALLING_PACKAGE for SOURCE_PACKAGE.
+ JobStatus proxyJob1 = createJobStatus("testStopped", SOURCE_PACKAGE, CALLING_UID,
+ createBaseJobInfoBuilder(CALLING_PACKAGE, 3).build());
+ // Scheduled by CALLING_PACKAGE for ALTERNATE_SOURCE_PACKAGE.
+ JobStatus proxyJob2 = createJobStatus("testStopped",
+ ALTERNATE_SOURCE_PACKAGE, CALLING_UID,
+ createBaseJobInfoBuilder(CALLING_PACKAGE, 4).build());
+
+ trackJobs(directJob1, directJob2, proxyJob1, proxyJob2);
+
+ setStoppedState(ALTERNATE_UID, ALTERNATE_SOURCE_PACKAGE, true);
+ assertTrue(directJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob1.isUserBgRestricted());
+ assertTrue(directJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob2.isUserBgRestricted());
+ assertTrue(proxyJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob1.isUserBgRestricted());
+ assertTrue(proxyJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob2.isUserBgRestricted());
+
+ setStoppedState(ALTERNATE_UID, ALTERNATE_SOURCE_PACKAGE, false);
+ assertTrue(directJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob1.isUserBgRestricted());
+ assertTrue(directJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob2.isUserBgRestricted());
+ assertTrue(proxyJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob1.isUserBgRestricted());
+ assertTrue(proxyJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob2.isUserBgRestricted());
+ }
+
+ @Test
+ public void testStopped_enabled() {
+ mSetFlagsRule.enableFlags(android.content.pm.Flags.FLAG_STAY_STOPPED);
+ // Scheduled by SOURCE_UID:SOURCE_PACKAGE for itself.
+ JobStatus directJob1 = createJobStatus("testStopped", SOURCE_PACKAGE, SOURCE_UID,
+ createBaseJobInfoBuilder(SOURCE_PACKAGE, 1).build());
+ // Scheduled by ALTERNATE_UID:ALTERNATE_SOURCE_PACKAGE for itself.
+ JobStatus directJob2 = createJobStatus("testStopped",
+ ALTERNATE_SOURCE_PACKAGE, ALTERNATE_UID,
+ createBaseJobInfoBuilder(ALTERNATE_SOURCE_PACKAGE, 2).build());
+ // Scheduled by CALLING_PACKAGE for SOURCE_PACKAGE.
+ JobStatus proxyJob1 = createJobStatus("testStopped", SOURCE_PACKAGE, CALLING_UID,
+ createBaseJobInfoBuilder(CALLING_PACKAGE, 3).build());
+ // Scheduled by CALLING_PACKAGE for ALTERNATE_SOURCE_PACKAGE.
+ JobStatus proxyJob2 = createJobStatus("testStopped",
+ ALTERNATE_SOURCE_PACKAGE, CALLING_UID,
+ createBaseJobInfoBuilder(CALLING_PACKAGE, 4).build());
+
+ trackJobs(directJob1, directJob2, proxyJob1, proxyJob2);
+
+ setStoppedState(ALTERNATE_UID, ALTERNATE_SOURCE_PACKAGE, true);
+ assertTrue(directJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob1.isUserBgRestricted());
+ assertFalse(directJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertTrue(directJob2.isUserBgRestricted());
+ assertTrue(proxyJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob1.isUserBgRestricted());
+ assertFalse(proxyJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertTrue(proxyJob2.isUserBgRestricted());
+
+ setStoppedState(ALTERNATE_UID, ALTERNATE_SOURCE_PACKAGE, false);
+ assertTrue(directJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob1.isUserBgRestricted());
+ assertTrue(directJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(directJob2.isUserBgRestricted());
+ assertTrue(proxyJob1.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob1.isUserBgRestricted());
+ assertTrue(proxyJob2.isConstraintSatisfied(CONSTRAINT_BACKGROUND_NOT_RESTRICTED));
+ assertFalse(proxyJob2.isUserBgRestricted());
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
index 800350a7d326..57c3a1d5f364 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
@@ -21,6 +21,7 @@ import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
+import static android.view.accessibility.Flags.FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG;
import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
@@ -852,6 +853,53 @@ public class AccessibilityManagerServiceTest {
assertThat(lockState.get()).containsExactly(false);
}
+ @Test
+ @RequiresFlagsEnabled(FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
+ public void testIsAccessibilityServiceWarningRequired_requiredByDefault() {
+ mockManageAccessibilityGranted(mTestableContext);
+ final AccessibilityServiceInfo info = new AccessibilityServiceInfo();
+ info.setComponentName(COMPONENT_NAME);
+
+ assertThat(mA11yms.isAccessibilityServiceWarningRequired(info)).isTrue();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
+ public void testIsAccessibilityServiceWarningRequired_notRequiredIfAlreadyEnabled() {
+ mockManageAccessibilityGranted(mTestableContext);
+ final AccessibilityServiceInfo info_a = new AccessibilityServiceInfo();
+ info_a.setComponentName(COMPONENT_NAME);
+ final AccessibilityServiceInfo info_b = new AccessibilityServiceInfo();
+ info_b.setComponentName(new ComponentName("package_b", "class_b"));
+ final AccessibilityUserState userState = mA11yms.getCurrentUserState();
+ userState.mEnabledServices.clear();
+ userState.mEnabledServices.add(info_b.getComponentName());
+
+ assertThat(mA11yms.isAccessibilityServiceWarningRequired(info_a)).isTrue();
+ assertThat(mA11yms.isAccessibilityServiceWarningRequired(info_b)).isFalse();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(FLAG_CLEANUP_ACCESSIBILITY_WARNING_DIALOG)
+ public void testIsAccessibilityServiceWarningRequired_notRequiredIfExistingShortcut() {
+ mockManageAccessibilityGranted(mTestableContext);
+ final AccessibilityServiceInfo info_a = new AccessibilityServiceInfo();
+ info_a.setComponentName(new ComponentName("package_a", "class_a"));
+ final AccessibilityServiceInfo info_b = new AccessibilityServiceInfo();
+ info_b.setComponentName(new ComponentName("package_b", "class_b"));
+ final AccessibilityServiceInfo info_c = new AccessibilityServiceInfo();
+ info_c.setComponentName(new ComponentName("package_c", "class_c"));
+ final AccessibilityUserState userState = mA11yms.getCurrentUserState();
+ userState.mAccessibilityButtonTargets.clear();
+ userState.mAccessibilityButtonTargets.add(info_b.getComponentName().flattenToString());
+ userState.mAccessibilityShortcutKeyTargets.clear();
+ userState.mAccessibilityShortcutKeyTargets.add(info_c.getComponentName().flattenToString());
+
+ assertThat(mA11yms.isAccessibilityServiceWarningRequired(info_a)).isTrue();
+ assertThat(mA11yms.isAccessibilityServiceWarningRequired(info_b)).isFalse();
+ assertThat(mA11yms.isAccessibilityServiceWarningRequired(info_c)).isFalse();
+ }
+
// Single package intents can trigger multiple PackageMonitor callbacks.
// Collect the state of the lock in a set, since tests only care if calls
// were all locked or all unlocked.
diff --git a/services/tests/servicestests/src/com/android/server/am/AnrTimerTest.java b/services/tests/servicestests/src/com/android/server/am/AnrTimerTest.java
deleted file mode 100644
index 44d676052352..000000000000
--- a/services/tests/servicestests/src/com/android/server/am/AnrTimerTest.java
+++ /dev/null
@@ -1,389 +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.server.am;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.platform.test.annotations.Presubmit;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.SystemClock;
-
-import android.util.Log;
-
-import androidx.test.filters.SmallTest;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Build/Install/Run:
- * atest FrameworksServicesTests:AnrTimerTest
- */
-@SmallTest
-@Presubmit
-public class AnrTimerTest {
-
- /**
- * A handler that allows control over when to dispatch messages and callbacks. Because most
- * Handler methods are final, the only thing this handler can intercept is sending messages.
- * This handler allows unit tests to be written without a need to sleep (which leads to flaky
- * tests).
- *
- * This code was cloned from {@link com.android.systemui.utils.os.FakeHandler}.
- */
- static class TestHandler extends Handler {
-
- private boolean mImmediate = true;
- private ArrayList<Message> mQueuedMessages = new ArrayList<>();
-
- ArrayList<Long> mDelays = new ArrayList<>();
-
- TestHandler(Looper looper, Callback callback, boolean immediate) {
- super(looper, callback);
- mImmediate = immediate;
- }
-
- TestHandler(Looper looper, Callback callback) {
- this(looper, callback, true);
- }
-
- /**
- * Override sendMessageAtTime. In immediate mode, the message is immediately dispatched.
- * In non-immediate mode, the message is enqueued to the real handler. In both cases, the
- * original delay is computed by comparing the target dispatch time with 'now'. This
- * computation is prone to errors if the code experiences delays. The computed time is
- * captured in the mDelays list.
- */
- @Override
- public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
- long delay = uptimeMillis - SystemClock.uptimeMillis();
- mDelays.add(delay);
- if (mImmediate) {
- mQueuedMessages.add(msg);
- dispatchQueuedMessages();
- } else {
- super.sendMessageAtTime(msg, uptimeMillis);
- }
- return true;
- }
-
- void setImmediate(boolean immediate) {
- mImmediate = immediate;
- }
-
- /** Dispatch any messages that have been queued on the calling thread. */
- void dispatchQueuedMessages() {
- ArrayList<Message> messages = new ArrayList<>(mQueuedMessages);
- mQueuedMessages.clear();
- for (Message msg : messages) {
- dispatchMessage(msg);
- }
- }
-
- /**
- * Compare the captured delays with the input array. The comparison is fuzzy because the
- * captured delay (see sendMessageAtTime) is affected by process delays.
- */
- void verifyDelays(long[] r) {
- final long FUZZ = 10;
- assertEquals(r.length, mDelays.size());
- for (int i = 0; i < mDelays.size(); i++) {
- long t = r[i];
- long v = mDelays.get(i);
- assertTrue(v >= t - FUZZ && v <= t + FUZZ);
- }
- }
- }
-
- private Handler mHandler;
- private CountDownLatch mLatch = null;
- private ArrayList<Message> mMessages;
-
- // The commonly used message timeout key.
- private static final int MSG_TIMEOUT = 1;
-
- @Before
- public void setUp() {
- mHandler = new Handler(Looper.getMainLooper(), this::expirationHandler);
- mMessages = new ArrayList<>();
- mLatch = new CountDownLatch(1);
- AnrTimer.resetTimerListForHermeticTest();
- }
-
- @After
- public void tearDown() {
- mHandler = null;
- mMessages = null;
- }
-
- // When a timer expires, set the expiration time in the message and add it to the queue.
- private boolean expirationHandler(Message msg) {
- mMessages.add(Message.obtain(msg));
- mLatch.countDown();
- return false;
- }
-
- // The test argument includes a pid and uid, and a tag. The tag is used to distinguish
- // different message instances.
- private static class TestArg {
- final int pid;
- final int uid;
- final int tag;
-
- TestArg(int pid, int uid, int tag) {
- this.pid = pid;
- this.uid = uid;
- this.tag = tag;
- }
- @Override
- public String toString() {
- return String.format("pid=%d uid=%d tag=%d", pid, uid, tag);
- }
- }
-
- /**
- * An instrumented AnrTimer.
- */
- private class TestAnrTimer extends AnrTimer {
- // A local copy of 'what'. The field in AnrTimer is private.
- final int mWhat;
-
- TestAnrTimer(Handler h, int key, String tag) {
- super(h, key, tag);
- mWhat = key;
- }
-
- TestAnrTimer() {
- this(mHandler, MSG_TIMEOUT, caller());
- }
-
- TestAnrTimer(Handler h, int key, String tag, boolean extend, TestInjector injector) {
- super(h, key, tag, extend, injector);
- mWhat = key;
- }
-
- TestAnrTimer(boolean extend, TestInjector injector) {
- this(mHandler, MSG_TIMEOUT, caller(), extend, injector);
- }
-
- // Return the name of method that called the constructor, assuming that this function is
- // called from inside the constructor. The calling method is used to name the AnrTimer
- // instance so that logs are easier to understand.
- private static String caller() {
- final int n = 4;
- StackTraceElement[] stack = Thread.currentThread().getStackTrace();
- if (stack.length < n+1) return "test";
- return stack[n].getMethodName();
- }
-
- boolean start(TestArg arg, long millis) {
- return start(arg, arg.pid, arg.uid, millis);
- }
-
- int what() {
- return mWhat;
- }
- }
-
- private static class TestTracker extends AnrTimer.CpuTracker {
- long index = 0;
- final int skip;
- TestTracker(int skip) {
- this.skip = skip;
- }
- long delay(int pid) {
- return index++ * skip;
- }
- }
-
- private class TestInjector extends AnrTimer.Injector {
- final boolean mImmediate;
- final AnrTimer.CpuTracker mTracker;
- TestHandler mTestHandler;
-
- TestInjector(int skip, boolean immediate) {
- super(mHandler);
- mTracker = new TestTracker(skip);
- mImmediate = immediate;
- }
-
- TestInjector(int skip) {
- this(skip, true);
- }
-
- @Override
- Handler newHandler(Handler.Callback callback) {
- if (mTestHandler == null) {
- mTestHandler = new TestHandler(mHandler.getLooper(), callback, mImmediate);
- }
- return mTestHandler;
- }
-
- /** Fetch the allocated handle. This does not check for nulls. */
- TestHandler getHandler() {
- return mTestHandler;
- }
-
- /**
- * This override returns the tracker supplied in the constructor. It does not create a
- * new one.
- */
- @Override
- AnrTimer.CpuTracker newTracker() {
- return mTracker;
- }
-
- /** For test purposes, always enable the feature. */
- @Override
- boolean isFeatureEnabled() {
- return true;
- }
- }
-
- // Tests
- // 1. Start a timer and wait for expiration.
- // 2. Start a timer and cancel it. Verify no expiration.
- // 3. Start a timer. Shortly thereafter, restart it. Verify only one expiration.
- // 4. Start a couple of timers. Verify max active timers. Discard one and verify the active
- // count drops by 1. Accept one and verify the active count drops by 1.
-
- @Test
- public void testSimpleTimeout() throws Exception {
- // Create an immediate TestHandler.
- TestInjector injector = new TestInjector(0);
- TestAnrTimer timer = new TestAnrTimer(false, injector);
- TestArg t = new TestArg(1, 1, 3);
- assertTrue(timer.start(t, 10));
- // Delivery is immediate but occurs on a different thread.
- assertTrue(mLatch.await(100, TimeUnit.MILLISECONDS));
- assertEquals(1, mMessages.size());
- Message m = mMessages.get(0);
- assertEquals(timer.what(), m.what);
- assertEquals(t, m.obj);
-
- // Verify that the timer is still present.
- assertEquals(1, AnrTimer.sizeOfTimerList());
- assertTrue(timer.accept(t));
- assertEquals(0, AnrTimer.sizeOfTimerList());
-
- // Verify that the timer no longer exists.
- assertFalse(timer.accept(t));
- }
-
- @Test
- public void testCancel() throws Exception {
- // Create an non-immediate TestHandler.
- TestInjector injector = new TestInjector(0, false);
- TestAnrTimer timer = new TestAnrTimer(false, injector);
-
- Handler handler = injector.getHandler();
- assertNotNull(handler);
- assertTrue(handler instanceof TestHandler);
-
- // The tests that follow check for a 'what' of 0 (zero), which is the message key used
- // by AnrTimer internally.
- TestArg t = new TestArg(1, 1, 3);
- assertFalse(handler.hasMessages(0));
- assertTrue(timer.start(t, 100));
- assertTrue(handler.hasMessages(0));
- assertTrue(timer.cancel(t));
- assertFalse(handler.hasMessages(0));
-
- // Verify that no expiration messages were delivered.
- assertEquals(0, mMessages.size());
- assertEquals(0, AnrTimer.sizeOfTimerList());
- }
-
- @Test
- public void testRestart() throws Exception {
- // Create an non-immediate TestHandler.
- TestInjector injector = new TestInjector(0, false);
- TestAnrTimer timer = new TestAnrTimer(false, injector);
-
- TestArg t = new TestArg(1, 1, 3);
- assertTrue(timer.start(t, 2500));
- assertTrue(timer.start(t, 1000));
-
- // Verify that the test handler saw two timeouts.
- injector.getHandler().verifyDelays(new long[] { 2500, 1000 });
-
- // Verify that there is a single timer. Then cancel it.
- assertEquals(1, AnrTimer.sizeOfTimerList());
- assertTrue(timer.cancel(t));
- assertEquals(0, AnrTimer.sizeOfTimerList());
- }
-
- @Test
- public void testExtendNormal() throws Exception {
- // Create an immediate TestHandler.
- TestInjector injector = new TestInjector(5);
- TestAnrTimer timer = new TestAnrTimer(true, injector);
- TestArg t = new TestArg(1, 1, 3);
- assertTrue(timer.start(t, 10));
-
- assertTrue(mLatch.await(100, TimeUnit.MILLISECONDS));
- assertEquals(1, mMessages.size());
- Message m = mMessages.get(0);
- assertEquals(timer.what(), m.what);
- assertEquals(t, m.obj);
-
- // Verify that the test handler saw two timeouts: one of 10ms and one of 5ms.
- injector.getHandler().verifyDelays(new long[] { 10, 5 });
-
- // Verify that the timer is still present. Then remove it and verify that the list is
- // empty.
- assertEquals(1, AnrTimer.sizeOfTimerList());
- assertTrue(timer.accept(t));
- assertEquals(0, AnrTimer.sizeOfTimerList());
- }
-
- @Test
- public void testExtendOversize() throws Exception {
- // Create an immediate TestHandler.
- TestInjector injector = new TestInjector(25);
- TestAnrTimer timer = new TestAnrTimer(true, injector);
- TestArg t = new TestArg(1, 1, 3);
- assertTrue(timer.start(t, 10));
-
- assertTrue(mLatch.await(100, TimeUnit.MILLISECONDS));
- assertEquals(1, mMessages.size());
- Message m = mMessages.get(0);
- assertEquals(timer.what(), m.what);
- assertEquals(t, m.obj);
-
- // Verify that the test handler saw two timeouts: one of 10ms and one of 10ms.
- injector.getHandler().verifyDelays(new long[] { 10, 10 });
-
- // Verify that the timer is still present. Then remove it and verify that the list is
- // empty.
- assertEquals(1, AnrTimer.sizeOfTimerList());
- assertTrue(timer.accept(t));
- assertEquals(0, AnrTimer.sizeOfTimerList());
- }
-}
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioDeviceBrokerTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioDeviceBrokerTest.java
index 0d58542ab040..cc3c880b8927 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioDeviceBrokerTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioDeviceBrokerTest.java
@@ -15,14 +15,28 @@
*/
package com.android.server.audio;
+import static android.bluetooth.BluetoothDevice.DEVICE_TYPE_DEFAULT;
+import static android.bluetooth.BluetoothDevice.DEVICE_TYPE_HEADSET;
+import static android.media.audio.Flags.automaticBtDeviceType;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
@@ -40,10 +54,10 @@ import androidx.test.filters.MediumTest;
import androidx.test.platform.app.InstrumentationRegistry;
import org.junit.After;
-import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatchers;
import org.mockito.Mock;
import org.mockito.Spy;
@@ -70,6 +84,9 @@ public class AudioDeviceBrokerTest {
Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
mMockAudioService = mock(AudioService.class);
+ SettingsAdapter mockAdapter = mock(SettingsAdapter.class);
+ when(mMockAudioService.getSettings()).thenReturn(mockAdapter);
+ when(mockAdapter.getSecureStringForUser(any(), any(), anyInt())).thenReturn("");
when(mMockAudioService.getBluetoothContextualVolumeStream())
.thenReturn(AudioSystem.STREAM_MUSIC);
@@ -82,7 +99,6 @@ public class AudioDeviceBrokerTest {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
mFakeBtDevice = adapter.getRemoteDevice("00:01:02:03:04:05");
- Assert.assertNotNull("invalid null BT device", mFakeBtDevice);
}
@After
@@ -100,15 +116,14 @@ public class AudioDeviceBrokerTest {
@Test
public void testPostA2dpDeviceConnectionChange() throws Exception {
Log.i(TAG, "starting testPostA2dpDeviceConnectionChange");
- Assert.assertNotNull("invalid null BT device", mFakeBtDevice);
+ assertNotNull("invalid null BT device", mFakeBtDevice);
mAudioDeviceBroker.queueOnBluetoothActiveDeviceChanged(
new AudioDeviceBroker.BtDeviceChangedData(mFakeBtDevice, null,
BluetoothProfileConnectionInfo.createA2dpInfo(true, 1), "testSource"));
Thread.sleep(2 * MAX_MESSAGE_HANDLING_DELAY_MS);
verify(mSpyDevInventory, times(1)).setBluetoothActiveDevice(
- any(AudioDeviceBroker.BtDeviceInfo.class)
- );
+ any(AudioDeviceBroker.BtDeviceInfo.class));
// verify the connection was reported to AudioSystem
checkSingleSystemConnection(mFakeBtDevice);
@@ -212,7 +227,7 @@ public class AudioDeviceBrokerTest {
AudioManager.DEVICE_OUT_SPEAKER, null);
new AdiDeviceState(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
AudioManager.DEVICE_OUT_BLUETOOTH_A2DP, null);
- Assert.fail();
+ fail();
} catch (NullPointerException e) { }
}
@@ -228,11 +243,114 @@ public class AudioDeviceBrokerTest {
final AdiDeviceState result = AdiDeviceState.fromPersistedString(persistString);
Log.i(TAG, "original:" + devState);
Log.i(TAG, "result :" + result);
- Assert.assertEquals(devState, result);
+ assertEquals(devState, result);
+ }
+
+ @Test
+ public void testIsBluetoothAudioDeviceCategoryFixed() throws Exception {
+ Log.i(TAG, "starting testIsBluetoothAudioDeviceCategoryFixed");
+
+ if (!automaticBtDeviceType()) {
+ Log.i(TAG, "Enable automaticBtDeviceType flag to run the test "
+ + "testIsBluetoothAudioDeviceCategoryFixed");
+ return;
+ }
+ assertNotNull("invalid null BT device", mFakeBtDevice);
+
+ final AdiDeviceState devState = new AdiDeviceState(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
+ AudioManager.DEVICE_OUT_BLUETOOTH_A2DP, mFakeBtDevice.getAddress());
+ doReturn(devState).when(mSpyDevInventory).findBtDeviceStateForAddress(
+ mFakeBtDevice.getAddress(), AudioManager.DEVICE_OUT_BLUETOOTH_A2DP);
+ try {
+ InstrumentationRegistry.getInstrumentation().getUiAutomation()
+ .adoptShellPermissionIdentity(Manifest.permission.BLUETOOTH_PRIVILEGED);
+
+ // no metadata set
+ assertTrue(mFakeBtDevice.setMetadata(BluetoothDevice.METADATA_DEVICE_TYPE,
+ DEVICE_TYPE_DEFAULT.getBytes()));
+ assertFalse(
+ mAudioDeviceBroker.isBluetoothAudioDeviceCategoryFixed(
+ mFakeBtDevice.getAddress()));
+
+ // metadata set
+ assertTrue(mFakeBtDevice.setMetadata(BluetoothDevice.METADATA_DEVICE_TYPE,
+ DEVICE_TYPE_HEADSET.getBytes()));
+ assertTrue(mAudioDeviceBroker.isBluetoothAudioDeviceCategoryFixed(
+ mFakeBtDevice.getAddress()));
+ } finally {
+ InstrumentationRegistry.getInstrumentation().getUiAutomation()
+ .dropShellPermissionIdentity();
+ }
+ }
+
+ @Test
+ public void testGetAndUpdateBtAdiDeviceStateCategoryForAddress() throws Exception {
+ Log.i(TAG, "starting testGetAndUpdateBtAdiDeviceStateCategoryForAddress");
+
+ if (!automaticBtDeviceType()) {
+ Log.i(TAG, "Enable automaticBtDeviceType flag to run the test "
+ + "testGetAndUpdateBtAdiDeviceStateCategoryForAddress");
+ return;
+ }
+ assertNotNull("invalid null BT device", mFakeBtDevice);
+
+ final AdiDeviceState devState = new AdiDeviceState(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
+ AudioManager.DEVICE_OUT_BLUETOOTH_A2DP, mFakeBtDevice.getAddress());
+ devState.setAudioDeviceCategory(AudioManager.AUDIO_DEVICE_CATEGORY_SPEAKER);
+ doReturn(devState).when(mSpyDevInventory).findBtDeviceStateForAddress(
+ eq(mFakeBtDevice.getAddress()), anyInt());
+ try {
+ InstrumentationRegistry.getInstrumentation().getUiAutomation()
+ .adoptShellPermissionIdentity(Manifest.permission.BLUETOOTH_PRIVILEGED);
+
+ // no metadata set
+ assertTrue(mFakeBtDevice.setMetadata(BluetoothDevice.METADATA_DEVICE_TYPE,
+ DEVICE_TYPE_DEFAULT.getBytes()));
+ assertEquals(AudioManager.AUDIO_DEVICE_CATEGORY_SPEAKER,
+ mAudioDeviceBroker.getAndUpdateBtAdiDeviceStateCategoryForAddress(
+ mFakeBtDevice.getAddress()));
+ verify(mMockAudioService,
+ timeout(MAX_MESSAGE_HANDLING_DELAY_MS).times(0)).onUpdatedAdiDeviceState(
+ eq(devState));
+
+ // metadata set
+ assertTrue(mFakeBtDevice.setMetadata(BluetoothDevice.METADATA_DEVICE_TYPE,
+ DEVICE_TYPE_HEADSET.getBytes()));
+ assertEquals(AudioManager.AUDIO_DEVICE_CATEGORY_HEADPHONES,
+ mAudioDeviceBroker.getAndUpdateBtAdiDeviceStateCategoryForAddress(
+ mFakeBtDevice.getAddress()));
+ verify(mMockAudioService,
+ timeout(MAX_MESSAGE_HANDLING_DELAY_MS)).onUpdatedAdiDeviceState(
+ any());
+ } finally {
+ InstrumentationRegistry.getInstrumentation().getUiAutomation()
+ .dropShellPermissionIdentity();
+ }
+ }
+
+ @Test
+ public void testAddAudioDeviceWithCategoryInInventoryIfNeeded() throws Exception {
+ Log.i(TAG, "starting testAddAudioDeviceWithCategoryInInventoryIfNeeded");
+
+ if (!automaticBtDeviceType()) {
+ Log.i(TAG, "Enable automaticBtDeviceType flag to run the test "
+ + "testAddAudioDeviceWithCategoryInInventoryIfNeeded");
+ return;
+ }
+ assertNotNull("invalid null BT device", mFakeBtDevice);
+
+ mAudioDeviceBroker.addAudioDeviceWithCategoryInInventoryIfNeeded(
+ mFakeBtDevice.getAddress(), AudioManager.AUDIO_DEVICE_CATEGORY_OTHER);
+
+ verify(mMockAudioService,
+ timeout(MAX_MESSAGE_HANDLING_DELAY_MS).atLeast(1)).onUpdatedAdiDeviceState(
+ ArgumentMatchers.argThat(devState -> devState.getAudioDeviceCategory()
+ == AudioManager.AUDIO_DEVICE_CATEGORY_OTHER));
}
private void doTestConnectionDisconnectionReconnection(int delayAfterDisconnection,
boolean mockMediaPlayback, boolean guaranteeSingleConnection) throws Exception {
+ assertNotNull("invalid null BT device", mFakeBtDevice);
when(mMockAudioService.getDeviceForStream(AudioManager.STREAM_MUSIC))
.thenReturn(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP);
when(mMockAudioService.isInCommunication()).thenReturn(false);
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 9e5bea7d135b..a2a8424881d4 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
@@ -27,6 +27,8 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC
import static com.google.common.truth.Truth.assertThat;
+import static junit.framework.Assert.assertEquals;
+
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
@@ -1720,7 +1722,31 @@ public class HdmiCecLocalDeviceTvTest {
mNativeWrapper.clearResultMessages();
mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS);
mTestLooper.dispatchAll();
+ assertThat(mNativeWrapper.getResultMessages()).doesNotContain(activeSourceFromTv);
+ // Skip the retry.
+ mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS);
+ mTestLooper.dispatchAll();
assertThat(mNativeWrapper.getResultMessages()).contains(activeSourceFromTv);
}
+
+ @Test
+ public void newDeviceConnectedIfOnlyOneGiveOsdNameSent() {
+ mHdmiControlService.getHdmiCecNetwork().clearDeviceList();
+ assertThat(mHdmiControlService.getHdmiCecNetwork().getDeviceInfoList(false))
+ .isEmpty();
+ HdmiCecMessage reportPhysicalAddress =
+ HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
+ ADDR_PLAYBACK_2, 0x1000, HdmiDeviceInfo.DEVICE_PLAYBACK);
+ HdmiCecMessage giveOsdName = HdmiCecMessageBuilder.buildGiveOsdNameCommand(
+ ADDR_TV, ADDR_PLAYBACK_2);
+ mNativeWrapper.onCecMessage(reportPhysicalAddress);
+ mTestLooper.dispatchAll();
+
+ // Wait until HdmiCecNetwork or NewDeviceAction is in progress
+ mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS);
+
+ // TV should only send <Give Osd Name> once
+ assertEquals(1, Collections.frequency(mNativeWrapper.getResultMessages(), giveOsdName));
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/utils/AnrTimerTest.java b/services/tests/servicestests/src/com/android/server/utils/AnrTimerTest.java
new file mode 100644
index 000000000000..330dbb83e949
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/utils/AnrTimerTest.java
@@ -0,0 +1,203 @@
+/*
+ * 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.server.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+
+import android.platform.test.annotations.Presubmit;
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.annotations.GuardedBy;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@SmallTest
+@Presubmit
+public class AnrTimerTest {
+
+ // The commonly used message timeout key.
+ private static final int MSG_TIMEOUT = 1;
+
+ // The test argument includes a pid and uid, and a tag. The tag is used to distinguish
+ // different message instances. Additional fields (like what) capture delivery information
+ // that is checked by the test.
+ private static class TestArg {
+ final int pid;
+ final int uid;
+ int what;
+
+ TestArg(int pid, int uid) {
+ this.pid = pid;
+ this.uid = uid;
+ this.what = 0;
+ }
+ }
+
+ /**
+ * The test handler is a self-contained object for a single test.
+ */
+ private static class Helper {
+ final Object mLock = new Object();
+
+ final Handler mHandler;
+ final CountDownLatch mLatch;
+ @GuardedBy("mLock")
+ final ArrayList<TestArg> mMessages;
+
+ Helper(int expect) {
+ mHandler = new Handler(Looper.getMainLooper(), this::expirationHandler);
+ mMessages = new ArrayList<>();
+ mLatch = new CountDownLatch(expect);
+ }
+
+ /**
+ * When a timer expires, the object must be a TestArg. Update the TestArg with
+ * expiration metadata and save it.
+ */
+ private boolean expirationHandler(Message msg) {
+ synchronized (mLock) {
+ TestArg arg = (TestArg) msg.obj;
+ arg.what = msg.what;
+ mMessages.add(arg);
+ mLatch.countDown();
+ return false;
+ }
+ }
+
+ boolean await(long timeout) throws InterruptedException {
+ // No need to synchronize, as the CountDownLatch is already thread-safe.
+ return mLatch.await(timeout, TimeUnit.MILLISECONDS);
+ }
+
+ /**
+ * Fetch the received messages. Fail if the count of received messages is other than the
+ * expected count.
+ */
+ TestArg[] messages(int expected) {
+ synchronized (mLock) {
+ assertEquals(expected, mMessages.size());
+ return mMessages.toArray(new TestArg[expected]);
+ }
+ }
+ }
+
+ /**
+ * An instrumented AnrTimer.
+ */
+ private static class TestAnrTimer extends AnrTimer<TestArg> {
+ private TestAnrTimer(Handler h, int key, String tag) {
+ super(h, key, tag);
+ }
+
+ TestAnrTimer(Helper helper) {
+ this(helper.mHandler, MSG_TIMEOUT, caller());
+ }
+
+ void start(TestArg arg, long millis) {
+ start(arg, arg.pid, arg.uid, millis);
+ }
+
+ // Return the name of method that called the constructor, assuming that this function is
+ // called from inside the constructor. The calling method is used to name the AnrTimer
+ // instance so that logs are easier to understand.
+ private static String caller() {
+ final int n = 4;
+ StackTraceElement[] stack = Thread.currentThread().getStackTrace();
+ if (stack.length < n+1) return "test";
+ return stack[n].getMethodName();
+ }
+ }
+
+ void validate(TestArg expected, TestArg actual) {
+ assertEquals(expected, actual);
+ assertEquals(actual.what, MSG_TIMEOUT);
+ }
+
+
+ /**
+ * Verify that a simple expiration succeeds. The timer is started for 10ms. The test
+ * procedure waits 5s for the expiration message, but under correct operation, the test will
+ * only take 10ms
+ */
+ @Test
+ public void testSimpleTimeout() throws Exception {
+ Helper helper = new Helper(1);
+ TestAnrTimer timer = new TestAnrTimer(helper);
+ TestArg t = new TestArg(1, 1);
+ timer.start(t, 10);
+ // Delivery is immediate but occurs on a different thread.
+ assertTrue(helper.await(5000));
+ TestArg[] result = helper.messages(1);
+ validate(t, result[0]);
+ }
+
+ /**
+ * Verify that if three timers are scheduled, they are delivered in time order.
+ */
+ @Test
+ public void testMultipleTimers() throws Exception {
+ // Expect three messages.
+ Helper helper = new Helper(3);
+ TestAnrTimer timer = new TestAnrTimer(helper);
+ TestArg t1 = new TestArg(1, 1);
+ TestArg t2 = new TestArg(1, 2);
+ TestArg t3 = new TestArg(1, 3);
+ timer.start(t1, 50);
+ timer.start(t2, 60);
+ timer.start(t3, 40);
+ // Delivery is immediate but occurs on a different thread.
+ assertTrue(helper.await(5000));
+ TestArg[] result = helper.messages(3);
+ validate(t3, result[0]);
+ validate(t1, result[1]);
+ validate(t2, result[2]);
+ }
+
+ /**
+ * Verify that a canceled timer is not delivered.
+ */
+ @Test
+ public void testCancelTimer() throws Exception {
+ // Expect two messages.
+ Helper helper = new Helper(2);
+ TestAnrTimer timer = new TestAnrTimer(helper);
+ TestArg t1 = new TestArg(1, 1);
+ TestArg t2 = new TestArg(1, 2);
+ TestArg t3 = new TestArg(1, 3);
+ timer.start(t1, 50);
+ timer.start(t2, 60);
+ timer.start(t3, 40);
+ // Briefly pause.
+ assertFalse(helper.await(10));
+ timer.cancel(t1);
+ // Delivery is immediate but occurs on a different thread.
+ assertTrue(helper.await(5000));
+ TestArg[] result = helper.messages(2);
+ validate(t3, result[0]);
+ validate(t2, result[1]);
+ }
+}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/DefaultDeviceEffectsApplierTest.java b/services/tests/uiservicestests/src/com/android/server/notification/DefaultDeviceEffectsApplierTest.java
new file mode 100644
index 000000000000..5febd02a75a8
--- /dev/null
+++ b/services/tests/uiservicestests/src/com/android/server/notification/DefaultDeviceEffectsApplierTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.server.notification;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+
+import android.app.UiModeManager;
+import android.app.WallpaperManager;
+import android.hardware.display.ColorDisplayManager;
+import android.os.PowerManager;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.service.notification.ZenDeviceEffects;
+import android.testing.TestableContext;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+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;
+
+@RunWith(AndroidJUnit4.class)
+public class DefaultDeviceEffectsApplierTest {
+
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private TestableContext mContext;
+ private DefaultDeviceEffectsApplier mApplier;
+ @Mock PowerManager mPowerManager;
+ @Mock ColorDisplayManager mColorDisplayManager;
+ @Mock UiModeManager mUiModeManager;
+ @Mock WallpaperManager mWallpaperManager;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = new TestableContext(InstrumentationRegistry.getContext(), null);
+ mContext.addMockSystemService(PowerManager.class, mPowerManager);
+ mContext.addMockSystemService(ColorDisplayManager.class, mColorDisplayManager);
+ mContext.addMockSystemService(UiModeManager.class, mUiModeManager);
+ mContext.addMockSystemService(WallpaperManager.class, mWallpaperManager);
+
+ mApplier = new DefaultDeviceEffectsApplier(mContext);
+ }
+
+ @Test
+ public void apply_appliesEffects() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+
+ ZenDeviceEffects effects = new ZenDeviceEffects.Builder()
+ .setShouldSuppressAmbientDisplay(true)
+ .setShouldDimWallpaper(true)
+ .setShouldDisplayGrayscale(true)
+ .setShouldUseNightMode(true)
+ .build();
+ mApplier.apply(effects);
+
+ verify(mPowerManager).suppressAmbientDisplay(anyString(), eq(true));
+ verify(mColorDisplayManager).setSaturationLevel(eq(0));
+ verify(mWallpaperManager).setWallpaperDimAmount(eq(0.6f));
+ verifyZeroInteractions(mUiModeManager); // Coming later; adding now so test fails then. :)
+ }
+
+ @Test
+ public void apply_removesEffects() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+
+ ZenDeviceEffects noEffects = new ZenDeviceEffects.Builder().build();
+ mApplier.apply(noEffects);
+
+ verify(mPowerManager).suppressAmbientDisplay(anyString(), eq(false));
+ verify(mColorDisplayManager).setSaturationLevel(eq(100));
+ verify(mWallpaperManager).setWallpaperDimAmount(eq(0.0f));
+ verifyZeroInteractions(mUiModeManager);
+ }
+
+ @Test
+ public void apply_missingSomeServices_okay() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+ mContext.addMockSystemService(ColorDisplayManager.class, null);
+ mContext.addMockSystemService(WallpaperManager.class, null);
+
+ ZenDeviceEffects effects = new ZenDeviceEffects.Builder()
+ .setShouldSuppressAmbientDisplay(true)
+ .setShouldDimWallpaper(true)
+ .setShouldDisplayGrayscale(true)
+ .setShouldUseNightMode(true)
+ .build();
+ mApplier.apply(effects);
+
+ verify(mPowerManager).suppressAmbientDisplay(anyString(), eq(true));
+ // (And no crash from missing services).
+ }
+}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
index b1fdec911d86..ef6fcedf7339 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
@@ -77,9 +77,9 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.notNull;
import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.withSettings;
@@ -112,6 +112,7 @@ import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.service.notification.Condition;
+import android.service.notification.DeviceEffectsApplier;
import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenModeConfig.ScheduleInfo;
@@ -188,8 +189,10 @@ public class ZenModeHelperTest extends UiServiceTestCase {
.appendPath("test")
.build();
- private static final Condition CONDITION = new Condition(CONDITION_ID, "",
+ private static final Condition CONDITION_TRUE = new Condition(CONDITION_ID, "",
Condition.STATE_TRUE);
+ private static final Condition CONDITION_FALSE = new Condition(CONDITION_ID, "",
+ Condition.STATE_FALSE);
private static final String TRIGGER_DESC = "Every Night, 10pm to 6am";
private static final int TYPE = TYPE_BEDTIME;
private static final boolean ALLOW_MANUAL = true;
@@ -201,6 +204,7 @@ public class ZenModeHelperTest extends UiServiceTestCase {
= NotificationManager.INTERRUPTION_FILTER_ALARMS;
private static final boolean ENABLED = true;
private static final int CREATION_TIME = 123;
+ private static final ZenDeviceEffects NO_EFFECTS = new ZenDeviceEffects.Builder().build();
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@@ -212,6 +216,7 @@ public class ZenModeHelperTest extends UiServiceTestCase {
private TestableLooper mTestableLooper;
private ZenModeHelper mZenModeHelper;
private ContentResolver mContentResolver;
+ @Mock DeviceEffectsApplier mDeviceEffectsApplier;
@Mock AppOpsManager mAppOps;
TestableFlagResolver mTestFlagResolver = new TestableFlagResolver();
ZenModeEventLoggerFake mZenModeEventLogger;
@@ -238,8 +243,9 @@ public class ZenModeHelperTest extends UiServiceTestCase {
when(mPackageManager.getResourcesForApplication(anyString())).thenReturn(
mResources);
- when(mContext.getSystemService(AppOpsManager.class)).thenReturn(mAppOps);
- when(mContext.getSystemService(NotificationManager.class)).thenReturn(mNotificationManager);
+ mContext.addMockSystemService(AppOpsManager.class, mAppOps);
+ mContext.addMockSystemService(NotificationManager.class, mNotificationManager);
+
mConditionProviders = new ConditionProviders(mContext, new UserProfiles(),
AppGlobals.getPackageManager());
mConditionProviders.addSystemProvider(new CountdownConditionProvider());
@@ -609,7 +615,7 @@ public class ZenModeHelperTest extends UiServiceTestCase {
// and we're setting zen mode on
Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 1);
Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 0);
- mZenModeHelper.mIsBootComplete = true;
+ mZenModeHelper.mIsSystemServicesReady = true;
mZenModeHelper.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
mZenModeHelper.setZenModeSetting(ZEN_MODE_IMPORTANT_INTERRUPTIONS);
@@ -624,7 +630,7 @@ public class ZenModeHelperTest extends UiServiceTestCase {
// doesn't show upgrade notification if stored settings says don't show
Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0);
Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 0);
- mZenModeHelper.mIsBootComplete = true;
+ mZenModeHelper.mIsSystemServicesReady = true;
mZenModeHelper.setZenModeSetting(ZEN_MODE_IMPORTANT_INTERRUPTIONS);
verify(mNotificationManager, never()).notify(eq(ZenModeHelper.TAG),
@@ -636,7 +642,7 @@ public class ZenModeHelperTest extends UiServiceTestCase {
// doesn't show upgrade notification since zen was already updated
Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 0);
Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 1);
- mZenModeHelper.mIsBootComplete = true;
+ mZenModeHelper.mIsSystemServicesReady = true;
mZenModeHelper.setZenModeSetting(ZEN_MODE_IMPORTANT_INTERRUPTIONS);
verify(mNotificationManager, never()).notify(eq(ZenModeHelper.TAG),
@@ -3060,7 +3066,7 @@ public class ZenModeHelperTest extends UiServiceTestCase {
rule.configurationActivity = CONFIG_ACTIVITY;
rule.component = OWNER;
rule.conditionId = CONDITION_ID;
- rule.condition = CONDITION;
+ rule.condition = CONDITION_TRUE;
rule.enabled = ENABLED;
rule.creationTime = 123;
rule.id = "id";
@@ -3350,6 +3356,84 @@ public class ZenModeHelperTest extends UiServiceTestCase {
}
@Test
+ public void testDeviceEffects_applied() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+ mZenModeHelper.setDeviceEffectsApplier(mDeviceEffectsApplier);
+
+ ZenDeviceEffects effects = new ZenDeviceEffects.Builder()
+ .setShouldSuppressAmbientDisplay(true)
+ .setShouldDimWallpaper(true)
+ .build();
+ String ruleId = addRuleWithEffects(effects);
+ verify(mDeviceEffectsApplier, never()).apply(any());
+
+ mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_TRUE, CUSTOM_PKG_UID, false);
+ mTestableLooper.processAllMessages();
+
+ verify(mDeviceEffectsApplier).apply(eq(effects));
+ }
+
+ @Test
+ public void testDeviceEffects_onDeactivateRule_applied() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+ mZenModeHelper.setDeviceEffectsApplier(mDeviceEffectsApplier);
+
+ ZenDeviceEffects zde = new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build();
+ String ruleId = addRuleWithEffects(zde);
+ mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_TRUE, CUSTOM_PKG_UID, false);
+ mTestableLooper.processAllMessages();
+ verify(mDeviceEffectsApplier).apply(eq(zde));
+
+ mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_FALSE, CUSTOM_PKG_UID, false);
+ mTestableLooper.processAllMessages();
+
+ verify(mDeviceEffectsApplier).apply(eq(NO_EFFECTS));
+ }
+
+ @Test
+ public void testDeviceEffects_noChangeToConsolidatedEffects_notApplied() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+ mZenModeHelper.setDeviceEffectsApplier(mDeviceEffectsApplier);
+
+ ZenDeviceEffects zde = new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build();
+ String ruleId = addRuleWithEffects(zde);
+ mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_TRUE, CUSTOM_PKG_UID, false);
+ mTestableLooper.processAllMessages();
+ verify(mDeviceEffectsApplier).apply(eq(zde));
+
+ // Now create and activate a second rule that doesn't add any more effects.
+ String secondRuleId = addRuleWithEffects(zde);
+ mZenModeHelper.setAutomaticZenRuleState(secondRuleId, CONDITION_TRUE, CUSTOM_PKG_UID,
+ false);
+ mTestableLooper.processAllMessages();
+
+ verifyNoMoreInteractions(mDeviceEffectsApplier);
+ }
+
+ @Test
+ public void testDeviceEffects_activeBeforeApplierProvided_appliedWhenProvided() {
+ mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
+
+ ZenDeviceEffects zde = new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build();
+ String ruleId = addRuleWithEffects(zde);
+ verify(mDeviceEffectsApplier, never()).apply(any());
+
+ mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_TRUE, CUSTOM_PKG_UID, false);
+ mTestableLooper.processAllMessages();
+ verify(mDeviceEffectsApplier, never()).apply(any());
+
+ mZenModeHelper.setDeviceEffectsApplier(mDeviceEffectsApplier);
+ verify(mDeviceEffectsApplier).apply(eq(zde));
+ }
+
+ private String addRuleWithEffects(ZenDeviceEffects effects) {
+ AutomaticZenRule rule = new AutomaticZenRule.Builder("Test", CONDITION_ID)
+ .setDeviceEffects(effects)
+ .build();
+ return mZenModeHelper.addAutomaticZenRule("pkg", rule, "", CUSTOM_PKG_UID, FROM_APP);
+ }
+
+ @Test
public void applyGlobalZenModeAsImplicitZenRule_createsImplicitRuleAndActivatesIt() {
mSetFlagsRule.enableFlags(android.app.Flags.FLAG_MODES_API);
mZenModeHelper.mConfig.automaticRules.clear();
diff --git a/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java b/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java
index ab35da69da7c..9cdec2588501 100644
--- a/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java
+++ b/services/tests/wmtests/src/com/android/server/policy/ShortcutKeyTestBase.java
@@ -64,6 +64,7 @@ class ShortcutKeyTestBase {
@Rule public FakeSettingsProviderRule mSettingsProviderRule = FakeSettingsProvider.rule();
TestPhoneWindowManager mPhoneWindowManager;
+ DispatchedKeyHandler mDispatchedKeyHandler = event -> false;
final Context mContext = spy(getInstrumentation().getTargetContext());
/** Modifier key to meta state */
@@ -102,6 +103,10 @@ class ShortcutKeyTestBase {
mPhoneWindowManager = new TestPhoneWindowManager(mContext, supportSettingsUpdate);
}
+ protected final void setDispatchedKeyHandler(DispatchedKeyHandler keyHandler) {
+ mDispatchedKeyHandler = keyHandler;
+ }
+
@After
public void tearDown() {
if (mPhoneWindowManager != null) {
@@ -174,9 +179,20 @@ class ShortcutKeyTestBase {
int actions = mPhoneWindowManager.interceptKeyBeforeQueueing(keyEvent);
if ((actions & ACTION_PASS_TO_USER) != 0) {
if (0 == mPhoneWindowManager.interceptKeyBeforeDispatching(keyEvent)) {
- mPhoneWindowManager.dispatchUnhandledKey(keyEvent);
+ if (!mDispatchedKeyHandler.onKeyDispatched(keyEvent)) {
+ mPhoneWindowManager.dispatchUnhandledKey(keyEvent);
+ }
}
}
mPhoneWindowManager.dispatchAllPendingEvents();
}
+
+ interface DispatchedKeyHandler {
+ /**
+ * Called when a key event is dispatched to app.
+ *
+ * @return true if the event is consumed by app.
+ */
+ boolean onKeyDispatched(KeyEvent event);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java b/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java
index 912e1d3df945..f7ad2a8f5243 100644
--- a/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java
+++ b/services/tests/wmtests/src/com/android/server/policy/StemKeyGestureTests.java
@@ -97,6 +97,35 @@ public class StemKeyGestureTests extends ShortcutKeyTestBase {
}
@Test
+ public void stemSingleKey_appHasOverridePermission_consumedByApp_notOpenAllApp() {
+ overrideBehavior(STEM_PRIMARY_BUTTON_SHORT_PRESS, SHORT_PRESS_PRIMARY_LAUNCH_ALL_APPS);
+ setUpPhoneWindowManager(/* supportSettingsUpdate= */ true);
+ mPhoneWindowManager.overrideStartActivity();
+ mPhoneWindowManager.setKeyguardServiceDelegateIsShowing(false);
+ mPhoneWindowManager.overrideIsUserSetupComplete(true);
+ mPhoneWindowManager.overrideFocusedWindowButtonOverridePermission(true);
+ setDispatchedKeyHandler(keyEvent -> true);
+
+ sendKey(KEYCODE_STEM_PRIMARY);
+
+ mPhoneWindowManager.assertNotOpenAllAppView();
+ }
+
+ @Test
+ public void stemSingleKey_appHasOverridePermission_notConsumedByApp_openAllApp() {
+ overrideBehavior(STEM_PRIMARY_BUTTON_SHORT_PRESS, SHORT_PRESS_PRIMARY_LAUNCH_ALL_APPS);
+ setUpPhoneWindowManager(/* supportSettingsUpdate= */ true);
+ mPhoneWindowManager.overrideStartActivity();
+ mPhoneWindowManager.setKeyguardServiceDelegateIsShowing(false);
+ mPhoneWindowManager.overrideIsUserSetupComplete(true);
+ mPhoneWindowManager.overrideFocusedWindowButtonOverridePermission(true);
+
+ sendKey(KEYCODE_STEM_PRIMARY);
+
+ mPhoneWindowManager.assertOpenAllAppView();
+ }
+
+ @Test
public void stemLongKey_triggerSearchServiceToLaunchAssist() {
overrideBehavior(
STEM_PRIMARY_BUTTON_LONG_PRESS,
@@ -165,6 +194,30 @@ public class StemKeyGestureTests extends ShortcutKeyTestBase {
mPhoneWindowManager.assertSwitchToRecent(referenceId);
}
+ @Test
+ public void stemDoubleKey_earlyShortPress_firstPressConsumedByApp_switchToMostRecent()
+ throws RemoteException {
+ overrideBehavior(STEM_PRIMARY_BUTTON_DOUBLE_PRESS, SHORT_PRESS_PRIMARY_LAUNCH_ALL_APPS);
+ setUpPhoneWindowManager(/* supportSettingsUpdate= */ true);
+ mPhoneWindowManager.overrideShouldEarlyShortPressOnStemPrimary(true);
+ mPhoneWindowManager.setKeyguardServiceDelegateIsShowing(false);
+ mPhoneWindowManager.overrideIsUserSetupComplete(true);
+ mPhoneWindowManager.overrideFocusedWindowButtonOverridePermission(true);
+ RecentTaskInfo recentTaskInfo = new RecentTaskInfo();
+ int referenceId = 666;
+ recentTaskInfo.persistentId = referenceId;
+ doReturn(recentTaskInfo).when(
+ mPhoneWindowManager.mActivityTaskManagerInternal).getMostRecentTaskFromBackground();
+
+ setDispatchedKeyHandler(keyEvent -> true);
+ sendKey(KEYCODE_STEM_PRIMARY);
+ setDispatchedKeyHandler(keyEvent -> false);
+ sendKey(KEYCODE_STEM_PRIMARY);
+
+ mPhoneWindowManager.assertNotOpenAllAppView();
+ mPhoneWindowManager.assertSwitchToRecent(referenceId);
+ }
+
private void overrideBehavior(String key, int expectedBehavior) {
Settings.Global.putLong(mContext.getContentResolver(), key, expectedBehavior);
}
diff --git a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java
index 43c47458d19f..d057226836a3 100644
--- a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java
+++ b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java
@@ -90,6 +90,7 @@ import android.view.autofill.AutofillManagerInternal;
import com.android.dx.mockito.inline.extended.StaticMockitoSession;
import com.android.internal.accessibility.AccessibilityShortcutController;
+import com.android.internal.policy.KeyInterceptionInfo;
import com.android.internal.util.FrameworkStatsLog;
import com.android.server.GestureLauncherService;
import com.android.server.LocalServices;
@@ -162,6 +163,9 @@ class TestPhoneWindowManager {
@Mock private KeyguardServiceDelegate mKeyguardServiceDelegate;
+ @Mock
+ private PhoneWindowManager.ButtonOverridePermissionChecker mButtonOverridePermissionChecker;
+
private StaticMockitoSession mMockitoSession;
private OffsettableClock mClock = new OffsettableClock();
private TestLooper mTestLooper = new TestLooper(() -> mClock.now());
@@ -189,6 +193,10 @@ class TestPhoneWindowManager {
IActivityManager getActivityManagerService() {
return mActivityManagerService;
}
+
+ PhoneWindowManager.ButtonOverridePermissionChecker getButtonOverridePermissionChecker() {
+ return mButtonOverridePermissionChecker;
+ }
}
TestPhoneWindowManager(Context context, boolean supportSettingsUpdate) {
@@ -304,6 +312,11 @@ class TestPhoneWindowManager {
doReturn(false).when(mPhoneWindowManager).keyguardOn();
doNothing().when(mContext).startActivityAsUser(any(), any());
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
+
+ KeyInterceptionInfo interceptionInfo = new KeyInterceptionInfo(0, 0, null, 0);
+ doReturn(interceptionInfo)
+ .when(mWindowManagerInternal).getKeyInterceptionInfoFromToken(any());
+
Mockito.reset(mContext);
}
@@ -525,6 +538,11 @@ class TestPhoneWindowManager {
mPhoneWindowManager.mPrimaryShortPressTargetActivity = component;
}
+ void overrideFocusedWindowButtonOverridePermission(boolean granted) {
+ doReturn(granted)
+ .when(mButtonOverridePermissionChecker).canAppOverrideSystemKey(any(), anyInt());
+ }
+
/**
* Below functions will check the policy behavior could be invoked.
*/
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 7239ba9cd07e..b214591610de 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -18,6 +18,7 @@ package com.android.server.voiceinteraction;
import android.Manifest;
import android.annotation.CallbackExecutor;
+import android.annotation.EnforcePermission;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
@@ -1567,16 +1568,19 @@ public class VoiceInteractionManagerService extends SystemService {
}
@Override
- public boolean setSandboxedDetectionTrainingDataOp(int opMode) {
- synchronized (this) {
- enforceIsCallerPreinstalledAssistant();
+ @EnforcePermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION)
+ public void setIsReceiveSandboxedTrainingDataAllowed(boolean allowed) {
+ super.setIsReceiveSandboxedTrainingDataAllowed_enforcePermission();
+ synchronized (this) {
if (mImpl == null) {
- Slog.w(TAG, "setSandboxedDetectionTrainingDataop without running"
- + " voice interaction service");
- return false;
+ throw new IllegalStateException(
+ "setIsReceiveSandboxedTrainingDataAllowed without running voice "
+ + "interaction service");
}
+ enforceIsCallerPreinstalledAssistant();
+
int callingUid = Binder.getCallingUid();
final long caller = Binder.clearCallingIdentity();
try {
@@ -1584,12 +1588,11 @@ public class VoiceInteractionManagerService extends SystemService {
mContext.getSystemService(Context.APP_OPS_SERVICE);
appOpsManager.setUidMode(
AppOpsManager.OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA,
- callingUid, opMode);
+ callingUid, allowed ? AppOpsManager.MODE_ALLOWED :
+ AppOpsManager.MODE_ERRORED);
} finally {
Binder.restoreCallingIdentity(caller);
}
-
- return true;
}
}
diff --git a/tests/FlickerTests/ActivityEmbedding/Android.bp b/tests/FlickerTests/ActivityEmbedding/Android.bp
index 9eeec7c8ddda..2cdf54248ebc 100644
--- a/tests/FlickerTests/ActivityEmbedding/Android.bp
+++ b/tests/FlickerTests/ActivityEmbedding/Android.bp
@@ -29,6 +29,8 @@ android_test {
manifest: "AndroidManifest.xml",
package_name: "com.android.server.wm.flicker",
instrumentation_target_package: "com.android.server.wm.flicker",
+ test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/ActivityEmbedding/AndroidManifest.xml b/tests/FlickerTests/ActivityEmbedding/AndroidManifest.xml
index f867ffb679c5..6f8f008cf85b 100644
--- a/tests/FlickerTests/ActivityEmbedding/AndroidManifest.xml
+++ b/tests/FlickerTests/ActivityEmbedding/AndroidManifest.xml
@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
- package="com.android.server.wm.flick">
+ package="com.android.server.wm.flicker">
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29"/>
<!-- Read and write traces from external storage -->
diff --git a/tests/FlickerTests/ActivityEmbedding/trace_config/trace_config.textproto b/tests/FlickerTests/ActivityEmbedding/trace_config/trace_config.textproto
index c9a35aca9085..c4edc1a5c0f7 100644
--- a/tests/FlickerTests/ActivityEmbedding/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/ActivityEmbedding/trace_config/trace_config.textproto
@@ -62,12 +62,6 @@ data_sources: {
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/Android.bp b/tests/FlickerTests/Android.bp
index 514f89511fb1..1d71f95ef64f 100644
--- a/tests/FlickerTests/Android.bp
+++ b/tests/FlickerTests/Android.bp
@@ -23,13 +23,6 @@ package {
default_applicable_licenses: ["frameworks_base_license"],
}
-filegroup {
- name: "FlickerServiceTests-src",
- srcs: [
- "src/**/*",
- ],
-}
-
java_defaults {
name: "FlickerTestsDefault",
platform_apis: true,
@@ -49,10 +42,7 @@ java_defaults {
"wm-flicker-common-app-helpers",
"wm-shell-flicker-utils",
],
- data: [
- ":FlickerTestApp",
- "trace_config/*",
- ],
+ data: [":FlickerTestApp"],
}
java_library {
diff --git a/tests/FlickerTests/AppClose/Android.bp b/tests/FlickerTests/AppClose/Android.bp
index 151d12f2a8ca..93fdd652510d 100644
--- a/tests/FlickerTests/AppClose/Android.bp
+++ b/tests/FlickerTests/AppClose/Android.bp
@@ -30,4 +30,5 @@ android_test {
test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/AppClose/trace_config/trace_config.textproto b/tests/FlickerTests/AppClose/trace_config/trace_config.textproto
index c9a35aca9085..6a0afc60bc95 100644
--- a/tests/FlickerTests/AppClose/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/AppClose/trace_config/trace_config.textproto
@@ -61,13 +61,7 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/AppLaunch/Android.bp b/tests/FlickerTests/AppLaunch/Android.bp
index f33384df6e7f..f5e962124b37 100644
--- a/tests/FlickerTests/AppLaunch/Android.bp
+++ b/tests/FlickerTests/AppLaunch/Android.bp
@@ -50,6 +50,7 @@ android_test {
"FlickerTestsBase",
"FlickerTestsAppLaunchCommon",
],
+ data: ["trace_config/*"],
}
android_test {
@@ -66,4 +67,5 @@ android_test {
"FlickerTestsBase",
"FlickerTestsAppLaunchCommon",
],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/AppLaunch/trace_config/trace_config.textproto b/tests/FlickerTests/AppLaunch/trace_config/trace_config.textproto
index c9a35aca9085..f27177ffee3e 100644
--- a/tests/FlickerTests/AppLaunch/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/AppLaunch/trace_config/trace_config.textproto
@@ -61,13 +61,7 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/FlickerService/Android.bp b/tests/FlickerTests/FlickerService/Android.bp
index 1a381150dfb0..ef74e942bdba 100644
--- a/tests/FlickerTests/FlickerService/Android.bp
+++ b/tests/FlickerTests/FlickerService/Android.bp
@@ -30,4 +30,5 @@ android_test {
test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/FlickerService/trace_config/trace_config.textproto b/tests/FlickerTests/FlickerService/trace_config/trace_config.textproto
index c9a35aca9085..a4f3ecfa8976 100644
--- a/tests/FlickerTests/FlickerService/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/FlickerService/trace_config/trace_config.textproto
@@ -61,13 +61,7 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
+ atrace_apps: "com.android.server.wm.flicker.service"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/IME/Android.bp b/tests/FlickerTests/IME/Android.bp
index 057d9fcdb796..1141e5f3ae2f 100644
--- a/tests/FlickerTests/IME/Android.bp
+++ b/tests/FlickerTests/IME/Android.bp
@@ -40,6 +40,7 @@ android_test {
test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
java_library {
@@ -59,6 +60,7 @@ android_test {
"FlickerTestsBase",
"FlickerTestsImeCommon",
],
+ data: ["trace_config/*"],
}
android_test {
@@ -75,4 +77,5 @@ android_test {
"FlickerTestsBase",
"FlickerTestsImeCommon",
],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/IME/trace_config/trace_config.textproto b/tests/FlickerTests/IME/trace_config/trace_config.textproto
index c9a35aca9085..b722fe5bc00a 100644
--- a/tests/FlickerTests/IME/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/IME/trace_config/trace_config.textproto
@@ -61,13 +61,7 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/Notification/Android.bp b/tests/FlickerTests/Notification/Android.bp
index 5bed568aacd1..4648383b2771 100644
--- a/tests/FlickerTests/Notification/Android.bp
+++ b/tests/FlickerTests/Notification/Android.bp
@@ -30,4 +30,5 @@ android_test {
test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/Notification/trace_config/trace_config.textproto b/tests/FlickerTests/Notification/trace_config/trace_config.textproto
index c9a35aca9085..dc8c88c5b41c 100644
--- a/tests/FlickerTests/Notification/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/Notification/trace_config/trace_config.textproto
@@ -61,13 +61,7 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
+ atrace_apps: "com.android.server.wm.flicker.notification"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/QuickSwitch/Android.bp b/tests/FlickerTests/QuickSwitch/Android.bp
index 64f718333a59..8755d0e3b304 100644
--- a/tests/FlickerTests/QuickSwitch/Android.bp
+++ b/tests/FlickerTests/QuickSwitch/Android.bp
@@ -30,4 +30,5 @@ android_test {
test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/QuickSwitch/trace_config/trace_config.textproto b/tests/FlickerTests/QuickSwitch/trace_config/trace_config.textproto
index c9a35aca9085..cd70ad59f1ed 100644
--- a/tests/FlickerTests/QuickSwitch/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/QuickSwitch/trace_config/trace_config.textproto
@@ -61,13 +61,7 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
atrace_apps: "com.android.server.wm.flicker.quickswitch"
- atrace_apps: "com.android.server.wm.flicker.rotation"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
atrace_apps: "com.google.android.apps.nexuslauncher"
diff --git a/tests/FlickerTests/Rotation/Android.bp b/tests/FlickerTests/Rotation/Android.bp
index 8e93b5b340c4..233a27691e21 100644
--- a/tests/FlickerTests/Rotation/Android.bp
+++ b/tests/FlickerTests/Rotation/Android.bp
@@ -30,4 +30,5 @@ android_test {
test_config_template: "AndroidTestTemplate.xml",
srcs: ["src/**/*"],
static_libs: ["FlickerTestsBase"],
+ data: ["trace_config/*"],
}
diff --git a/tests/FlickerTests/Rotation/trace_config/trace_config.textproto b/tests/FlickerTests/Rotation/trace_config/trace_config.textproto
index c9a35aca9085..eeb542f2a349 100644
--- a/tests/FlickerTests/Rotation/trace_config/trace_config.textproto
+++ b/tests/FlickerTests/Rotation/trace_config/trace_config.textproto
@@ -61,12 +61,6 @@ data_sources: {
atrace_categories: "input"
atrace_categories: "binder_driver"
atrace_categories: "sched_process_exit"
- atrace_apps: "com.android.server.wm.flicker"
- atrace_apps: "com.android.server.wm.flicker.other"
- atrace_apps: "com.android.server.wm.flicker.close"
- atrace_apps: "com.android.server.wm.flicker.ime"
- atrace_apps: "com.android.server.wm.flicker.launch"
- atrace_apps: "com.android.server.wm.flicker.quickswitch"
atrace_apps: "com.android.server.wm.flicker.rotation"
atrace_apps: "com.android.server.wm.flicker.testapp"
atrace_apps: "com.android.systemui"
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 ad272a052220..ce92eac3fc59 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
@@ -40,10 +40,9 @@ abstract class BaseTest
constructor(
protected val flicker: LegacyFlickerTest,
protected val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation(),
- protected val tapl: LauncherInstrumentation = LauncherInstrumentation()
) {
- init {
- tapl.setExpectedRotationCheckEnabled(true)
+ protected val tapl: LauncherInstrumentation by lazy {
+ LauncherInstrumentation().also { it.expectedRotationCheckEnabled = true }
}
private val logTag = this::class.java.simpleName
diff --git a/tests/InputScreenshotTest/robotests/assets/phone/light_landscape_layout-preview.png b/tests/InputScreenshotTest/robotests/assets/phone/light_landscape_layout-preview.png
index baf204a6cfb3..a117599dc57b 100644
--- a/tests/InputScreenshotTest/robotests/assets/phone/light_landscape_layout-preview.png
+++ b/tests/InputScreenshotTest/robotests/assets/phone/light_landscape_layout-preview.png
Binary files differ
diff --git a/tests/InputScreenshotTest/robotests/assets/phone/light_portrait_layout-preview.png b/tests/InputScreenshotTest/robotests/assets/phone/light_portrait_layout-preview.png
index deb3ceeca7fb..538abe80665e 100644
--- a/tests/InputScreenshotTest/robotests/assets/phone/light_portrait_layout-preview.png
+++ b/tests/InputScreenshotTest/robotests/assets/phone/light_portrait_layout-preview.png
Binary files differ
diff --git a/tests/InputScreenshotTest/robotests/assets/tablet/dark_portrait_layout-preview.png b/tests/InputScreenshotTest/robotests/assets/tablet/dark_portrait_layout-preview.png
index 34e25f73d953..79a1d6bf6fc1 100644
--- a/tests/InputScreenshotTest/robotests/assets/tablet/dark_portrait_layout-preview.png
+++ b/tests/InputScreenshotTest/robotests/assets/tablet/dark_portrait_layout-preview.png
Binary files differ
diff --git a/tests/SilkFX/OWNERS b/tests/SilkFX/OWNERS
deleted file mode 100644
index c88a9f82c347..000000000000
--- a/tests/SilkFX/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-include /libs/hwui/OWNERS
diff --git a/tests/HwAccelerationTest/.classpath b/tests/graphics/HwAccelerationTest/.classpath
index 609aa00ebc43..609aa00ebc43 100644
--- a/tests/HwAccelerationTest/.classpath
+++ b/tests/graphics/HwAccelerationTest/.classpath
diff --git a/tests/HwAccelerationTest/.gitignore b/tests/graphics/HwAccelerationTest/.gitignore
index f178f174effb..f178f174effb 100644
--- a/tests/HwAccelerationTest/.gitignore
+++ b/tests/graphics/HwAccelerationTest/.gitignore
diff --git a/tests/HwAccelerationTest/Android.bp b/tests/graphics/HwAccelerationTest/Android.bp
index 51848f2857c9..51848f2857c9 100644
--- a/tests/HwAccelerationTest/Android.bp
+++ b/tests/graphics/HwAccelerationTest/Android.bp
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/graphics/HwAccelerationTest/AndroidManifest.xml
index db3a992b9c7b..db3a992b9c7b 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/graphics/HwAccelerationTest/AndroidManifest.xml
diff --git a/tests/HwAccelerationTest/default.properties b/tests/graphics/HwAccelerationTest/default.properties
index da2dcdd13172..da2dcdd13172 100644
--- a/tests/HwAccelerationTest/default.properties
+++ b/tests/graphics/HwAccelerationTest/default.properties
diff --git a/tests/HwAccelerationTest/jni/Android.bp b/tests/graphics/HwAccelerationTest/jni/Android.bp
index 8edddab0ad1f..8edddab0ad1f 100644
--- a/tests/HwAccelerationTest/jni/Android.bp
+++ b/tests/graphics/HwAccelerationTest/jni/Android.bp
diff --git a/tests/HwAccelerationTest/jni/native-lib.cpp b/tests/graphics/HwAccelerationTest/jni/native-lib.cpp
index 407d4bf76336..407d4bf76336 100644
--- a/tests/HwAccelerationTest/jni/native-lib.cpp
+++ b/tests/graphics/HwAccelerationTest/jni/native-lib.cpp
diff --git a/tests/HwAccelerationTest/res/anim/accelerate_interpolator_2.xml b/tests/graphics/HwAccelerationTest/res/anim/accelerate_interpolator_2.xml
index e4a8d480a28b..e4a8d480a28b 100644
--- a/tests/HwAccelerationTest/res/anim/accelerate_interpolator_2.xml
+++ b/tests/graphics/HwAccelerationTest/res/anim/accelerate_interpolator_2.xml
diff --git a/tests/HwAccelerationTest/res/anim/fade_in.xml b/tests/graphics/HwAccelerationTest/res/anim/fade_in.xml
index 34310f53fc54..34310f53fc54 100644
--- a/tests/HwAccelerationTest/res/anim/fade_in.xml
+++ b/tests/graphics/HwAccelerationTest/res/anim/fade_in.xml
diff --git a/tests/HwAccelerationTest/res/anim/fade_out.xml b/tests/graphics/HwAccelerationTest/res/anim/fade_out.xml
index 9832c322ff65..9832c322ff65 100644
--- a/tests/HwAccelerationTest/res/anim/fade_out.xml
+++ b/tests/graphics/HwAccelerationTest/res/anim/fade_out.xml
diff --git a/tests/HwAccelerationTest/res/anim/slide_off_left.xml b/tests/graphics/HwAccelerationTest/res/anim/slide_off_left.xml
index f05de3937586..f05de3937586 100644
--- a/tests/HwAccelerationTest/res/anim/slide_off_left.xml
+++ b/tests/graphics/HwAccelerationTest/res/anim/slide_off_left.xml
diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml
index abbb9e69af94..abbb9e69af94 100644
--- a/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml
diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/icon.png b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/icon.png
index 60fbdf5d0403..60fbdf5d0403 100644
--- a/tests/HwAccelerationTest/res/drawable-hdpi/icon.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/sunset1.jpg b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset1.jpg
index 086c05542836..086c05542836 100644
--- a/tests/HwAccelerationTest/res/drawable-hdpi/sunset1.jpg
+++ b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset1.jpg
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/sunset2.png b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset2.png
index 3258ee745389..3258ee745389 100644
--- a/tests/HwAccelerationTest/res/drawable-hdpi/sunset2.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset2.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset3.png
index 6508b27a1452..6508b27a1452 100644
--- a/tests/HwAccelerationTest/res/drawable-hdpi/sunset3.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/sunset3.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/widget_header.png b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/widget_header.png
index cd9ec4488486..cd9ec4488486 100644
--- a/tests/HwAccelerationTest/res/drawable-hdpi/widget_header.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-hdpi/widget_header.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-mdpi/expander_ic_maximized.9.png b/tests/graphics/HwAccelerationTest/res/drawable-mdpi/expander_ic_maximized.9.png
index d5c32766cece..d5c32766cece 100644
--- a/tests/HwAccelerationTest/res/drawable-mdpi/expander_ic_maximized.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-mdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-mdpi/expander_ic_minimized.9.png b/tests/graphics/HwAccelerationTest/res/drawable-mdpi/expander_ic_minimized.9.png
index 4515b42177bb..4515b42177bb 100644
--- a/tests/HwAccelerationTest/res/drawable-mdpi/expander_ic_minimized.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-mdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg.9.png
index 80491912d80b..80491912d80b 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_focus.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_focus.9.png
index c81f67582110..c81f67582110 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_focus.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_focus.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_press.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_press.9.png
index d060b77556bb..d060b77556bb 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_press.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/appwidget_bg_press.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/green_gradient.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/green_gradient.9.png
index a535678ab531..a535678ab531 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/green_gradient.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/green_gradient.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/large_photo.jpg b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/large_photo.jpg
index e23dbb093f39..e23dbb093f39 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/large_photo.jpg
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/large_photo.jpg
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/patch.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/patch.9.png
index e3b3639e86f2..e3b3639e86f2 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/patch.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/patch.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/patch2.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/patch2.9.png
index f65a35592cd4..f65a35592cd4 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/patch2.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/patch2.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_bg_holo_dark.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_bg_holo_dark.9.png
index 089704e90869..089704e90869 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_bg_holo_dark.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_bg_holo_dark.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_primary_holo_dark.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_primary_holo_dark.9.png
index 385dbc4a62f6..385dbc4a62f6 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_primary_holo_dark.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_primary_holo_dark.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_secondary_holo_dark.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_secondary_holo_dark.9.png
index f1510b247065..f1510b247065 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/progress_vertical_secondary_holo_dark.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/progress_vertical_secondary_holo_dark.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/scratches.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scratches.png
index cc8adf15f4f0..cc8adf15f4f0 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/scratches.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scratches.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_primary_holo.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_primary_holo.9.png
index 4208c6f78fde..4208c6f78fde 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_primary_holo.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_primary_holo.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_secondary_holo.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_secondary_holo.9.png
index b25fb2f18231..b25fb2f18231 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_secondary_holo.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_secondary_holo.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_dark.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_dark.9.png
index 25129c69600b..25129c69600b 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_dark.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_dark.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_light.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_light.9.png
index 1505e0eeefa4..1505e0eeefa4 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_light.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/scrubber_vertical_track_holo_light.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/spot_mask.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/spot_mask.png
index 89537594e1a6..89537594e1a6 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/spot_mask.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/spot_mask.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg
index 6e1a866dfb00..6e1a866dfb00 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/weather_2.jpg b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/weather_2.jpg
index b5aff104207a..b5aff104207a 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/weather_2.jpg
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/weather_2.jpg
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/widget_title_bg.9.png b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/widget_title_bg.9.png
index 79615c237ffe..79615c237ffe 100644
--- a/tests/HwAccelerationTest/res/drawable-nodpi/widget_title_bg.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable-nodpi/widget_title_bg.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_background.xml b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_background.xml
index abbb9e69af94..abbb9e69af94 100644
--- a/tests/HwAccelerationTest/res/drawable/appwidget_background.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_background.xml
diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_bg.9.png b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg.9.png
index 80491912d80b..80491912d80b 100644
--- a/tests/HwAccelerationTest/res/drawable/appwidget_bg.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png
index c81f67582110..c81f67582110 100644
--- a/tests/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png
index d060b77556bb..d060b77556bb 100644
--- a/tests/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/btn_toggle_off.9.png b/tests/graphics/HwAccelerationTest/res/drawable/btn_toggle_off.9.png
index 26ee1c2e9259..26ee1c2e9259 100644
--- a/tests/HwAccelerationTest/res/drawable/btn_toggle_off.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/btn_toggle_off.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/btn_toggle_on.9.png b/tests/graphics/HwAccelerationTest/res/drawable/btn_toggle_on.9.png
index 53e95af9697d..53e95af9697d 100644
--- a/tests/HwAccelerationTest/res/drawable/btn_toggle_on.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/btn_toggle_on.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/default_wallpaper.png b/tests/graphics/HwAccelerationTest/res/drawable/default_wallpaper.png
index 91ad252507e5..91ad252507e5 100644
--- a/tests/HwAccelerationTest/res/drawable/default_wallpaper.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/default_wallpaper.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/gradient.xml b/tests/graphics/HwAccelerationTest/res/drawable/gradient.xml
index 756db0b23dbf..756db0b23dbf 100644
--- a/tests/HwAccelerationTest/res/drawable/gradient.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable/gradient.xml
diff --git a/tests/HwAccelerationTest/res/drawable/green_gradient.9.png b/tests/graphics/HwAccelerationTest/res/drawable/green_gradient.9.png
index a535678ab531..a535678ab531 100644
--- a/tests/HwAccelerationTest/res/drawable/green_gradient.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/green_gradient.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/icon.png b/tests/graphics/HwAccelerationTest/res/drawable/icon.png
index cb40a1988b52..cb40a1988b52 100644
--- a/tests/HwAccelerationTest/res/drawable/icon.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/icon.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/progress_vertical_holo_dark.xml b/tests/graphics/HwAccelerationTest/res/drawable/progress_vertical_holo_dark.xml
index 9eb54b729b1d..9eb54b729b1d 100644
--- a/tests/HwAccelerationTest/res/drawable/progress_vertical_holo_dark.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable/progress_vertical_holo_dark.xml
diff --git a/tests/HwAccelerationTest/res/drawable/robot.png b/tests/graphics/HwAccelerationTest/res/drawable/robot.png
index 8a9e6984be96..8a9e6984be96 100644
--- a/tests/HwAccelerationTest/res/drawable/robot.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/robot.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/robot_repeated.xml b/tests/graphics/HwAccelerationTest/res/drawable/robot_repeated.xml
index bbb15b71c3a5..bbb15b71c3a5 100644
--- a/tests/HwAccelerationTest/res/drawable/robot_repeated.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable/robot_repeated.xml
diff --git a/tests/HwAccelerationTest/res/drawable/round_rect_background.xml b/tests/graphics/HwAccelerationTest/res/drawable/round_rect_background.xml
index 14d40736b3b9..14d40736b3b9 100644
--- a/tests/HwAccelerationTest/res/drawable/round_rect_background.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable/round_rect_background.xml
diff --git a/tests/HwAccelerationTest/res/drawable/scrubber_progress_vertical_holo_dark.xml b/tests/graphics/HwAccelerationTest/res/drawable/scrubber_progress_vertical_holo_dark.xml
index 0cc56bfa4260..0cc56bfa4260 100644
--- a/tests/HwAccelerationTest/res/drawable/scrubber_progress_vertical_holo_dark.xml
+++ b/tests/graphics/HwAccelerationTest/res/drawable/scrubber_progress_vertical_holo_dark.xml
diff --git a/tests/HwAccelerationTest/res/drawable/sunset1.jpg b/tests/graphics/HwAccelerationTest/res/drawable/sunset1.jpg
index 3b4e056b70d0..3b4e056b70d0 100644
--- a/tests/HwAccelerationTest/res/drawable/sunset1.jpg
+++ b/tests/graphics/HwAccelerationTest/res/drawable/sunset1.jpg
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/sunset2.png b/tests/graphics/HwAccelerationTest/res/drawable/sunset2.png
index 3258ee745389..3258ee745389 100644
--- a/tests/HwAccelerationTest/res/drawable/sunset2.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/sunset2.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/sunset3.png b/tests/graphics/HwAccelerationTest/res/drawable/sunset3.png
index 6508b27a1452..6508b27a1452 100644
--- a/tests/HwAccelerationTest/res/drawable/sunset3.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/sunset3.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/widget_header.png b/tests/graphics/HwAccelerationTest/res/drawable/widget_header.png
index 0297dd109bdf..0297dd109bdf 100644
--- a/tests/HwAccelerationTest/res/drawable/widget_header.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/widget_header.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/drawable/widget_title_bg.9.png b/tests/graphics/HwAccelerationTest/res/drawable/widget_title_bg.9.png
index 79615c237ffe..79615c237ffe 100644
--- a/tests/HwAccelerationTest/res/drawable/widget_title_bg.9.png
+++ b/tests/graphics/HwAccelerationTest/res/drawable/widget_title_bg.9.png
Binary files differ
diff --git a/tests/HwAccelerationTest/res/layout/_advanced_blend.xml b/tests/graphics/HwAccelerationTest/res/layout/_advanced_blend.xml
index 5b6fd3c2624a..5b6fd3c2624a 100644
--- a/tests/HwAccelerationTest/res/layout/_advanced_blend.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_advanced_blend.xml
diff --git a/tests/HwAccelerationTest/res/layout/_advanced_gradient.xml b/tests/graphics/HwAccelerationTest/res/layout/_advanced_gradient.xml
index 5e32ed2ec7cb..5e32ed2ec7cb 100644
--- a/tests/HwAccelerationTest/res/layout/_advanced_gradient.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_advanced_gradient.xml
diff --git a/tests/HwAccelerationTest/res/layout/_layers.xml b/tests/graphics/HwAccelerationTest/res/layout/_layers.xml
index 25c76ac710cf..25c76ac710cf 100644
--- a/tests/HwAccelerationTest/res/layout/_layers.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_layers.xml
diff --git a/tests/HwAccelerationTest/res/layout/_lines.xml b/tests/graphics/HwAccelerationTest/res/layout/_lines.xml
index c24dc25af9ac..c24dc25af9ac 100644
--- a/tests/HwAccelerationTest/res/layout/_lines.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_lines.xml
diff --git a/tests/HwAccelerationTest/res/layout/_newlayers.xml b/tests/graphics/HwAccelerationTest/res/layout/_newlayers.xml
index 5c37e371aeff..5c37e371aeff 100644
--- a/tests/HwAccelerationTest/res/layout/_newlayers.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_newlayers.xml
diff --git a/tests/HwAccelerationTest/res/layout/_paths.xml b/tests/graphics/HwAccelerationTest/res/layout/_paths.xml
index 34baf8474b6c..34baf8474b6c 100644
--- a/tests/HwAccelerationTest/res/layout/_paths.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_paths.xml
diff --git a/tests/HwAccelerationTest/res/layout/_shaders.xml b/tests/graphics/HwAccelerationTest/res/layout/_shaders.xml
index 070ac1291f2c..070ac1291f2c 100644
--- a/tests/HwAccelerationTest/res/layout/_shaders.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/_shaders.xml
diff --git a/tests/HwAccelerationTest/res/layout/colored_shadows_activity.xml b/tests/graphics/HwAccelerationTest/res/layout/colored_shadows_activity.xml
index 18633250cfcb..18633250cfcb 100644
--- a/tests/HwAccelerationTest/res/layout/colored_shadows_activity.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/colored_shadows_activity.xml
diff --git a/tests/HwAccelerationTest/res/layout/colored_shadows_row.xml b/tests/graphics/HwAccelerationTest/res/layout/colored_shadows_row.xml
index 61b075974926..61b075974926 100644
--- a/tests/HwAccelerationTest/res/layout/colored_shadows_row.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/colored_shadows_row.xml
diff --git a/tests/HwAccelerationTest/res/layout/date_picker.xml b/tests/graphics/HwAccelerationTest/res/layout/date_picker.xml
index 742a03bfd1c5..742a03bfd1c5 100644
--- a/tests/HwAccelerationTest/res/layout/date_picker.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/date_picker.xml
diff --git a/tests/HwAccelerationTest/res/layout/flipper_item.xml b/tests/graphics/HwAccelerationTest/res/layout/flipper_item.xml
index 43a7bbfc2deb..43a7bbfc2deb 100644
--- a/tests/HwAccelerationTest/res/layout/flipper_item.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/flipper_item.xml
diff --git a/tests/HwAccelerationTest/res/layout/form.xml b/tests/graphics/HwAccelerationTest/res/layout/form.xml
index 0b17db186cd0..0b17db186cd0 100644
--- a/tests/HwAccelerationTest/res/layout/form.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/form.xml
diff --git a/tests/HwAccelerationTest/res/layout/image_filter_activity.xml b/tests/graphics/HwAccelerationTest/res/layout/image_filter_activity.xml
index a0ee67ae0bef..a0ee67ae0bef 100644
--- a/tests/HwAccelerationTest/res/layout/image_filter_activity.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/image_filter_activity.xml
diff --git a/tests/HwAccelerationTest/res/layout/labels.xml b/tests/graphics/HwAccelerationTest/res/layout/labels.xml
index 695a2cc09db5..695a2cc09db5 100644
--- a/tests/HwAccelerationTest/res/layout/labels.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/labels.xml
diff --git a/tests/HwAccelerationTest/res/layout/list_activity.xml b/tests/graphics/HwAccelerationTest/res/layout/list_activity.xml
index 1a5d3d9202e2..1a5d3d9202e2 100644
--- a/tests/HwAccelerationTest/res/layout/list_activity.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/list_activity.xml
diff --git a/tests/HwAccelerationTest/res/layout/pen_stylus.xml b/tests/graphics/HwAccelerationTest/res/layout/pen_stylus.xml
index 37aafed208fb..37aafed208fb 100644
--- a/tests/HwAccelerationTest/res/layout/pen_stylus.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/pen_stylus.xml
diff --git a/tests/HwAccelerationTest/res/layout/projection.xml b/tests/graphics/HwAccelerationTest/res/layout/projection.xml
index b6e4c5ef6ad2..b6e4c5ef6ad2 100644
--- a/tests/HwAccelerationTest/res/layout/projection.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/projection.xml
diff --git a/tests/HwAccelerationTest/res/layout/projection_clipping.xml b/tests/graphics/HwAccelerationTest/res/layout/projection_clipping.xml
index 1ea9f9cd49f6..1ea9f9cd49f6 100644
--- a/tests/HwAccelerationTest/res/layout/projection_clipping.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/projection_clipping.xml
diff --git a/tests/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml b/tests/graphics/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml
index 77f5e60dc091..77f5e60dc091 100644
--- a/tests/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml
diff --git a/tests/HwAccelerationTest/res/layout/stack.xml b/tests/graphics/HwAccelerationTest/res/layout/stack.xml
index b4d2d73a1c90..b4d2d73a1c90 100644
--- a/tests/HwAccelerationTest/res/layout/stack.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/stack.xml
diff --git a/tests/HwAccelerationTest/res/layout/stack_item.xml b/tests/graphics/HwAccelerationTest/res/layout/stack_item.xml
index 35040186b0e6..35040186b0e6 100644
--- a/tests/HwAccelerationTest/res/layout/stack_item.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/stack_item.xml
diff --git a/tests/HwAccelerationTest/res/layout/stretch_layout.xml b/tests/graphics/HwAccelerationTest/res/layout/stretch_layout.xml
index 81e0c019490f..81e0c019490f 100644
--- a/tests/HwAccelerationTest/res/layout/stretch_layout.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/stretch_layout.xml
diff --git a/tests/HwAccelerationTest/res/layout/text_fade.xml b/tests/graphics/HwAccelerationTest/res/layout/text_fade.xml
index 08a70b3a3e71..08a70b3a3e71 100644
--- a/tests/HwAccelerationTest/res/layout/text_fade.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/text_fade.xml
diff --git a/tests/HwAccelerationTest/res/layout/text_large.xml b/tests/graphics/HwAccelerationTest/res/layout/text_large.xml
index 85b374ce0c0f..85b374ce0c0f 100644
--- a/tests/HwAccelerationTest/res/layout/text_large.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/text_large.xml
diff --git a/tests/HwAccelerationTest/res/layout/text_medium.xml b/tests/graphics/HwAccelerationTest/res/layout/text_medium.xml
index 8e195e661169..8e195e661169 100644
--- a/tests/HwAccelerationTest/res/layout/text_medium.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/text_medium.xml
diff --git a/tests/HwAccelerationTest/res/layout/text_small.xml b/tests/graphics/HwAccelerationTest/res/layout/text_small.xml
index 45eee609db6b..45eee609db6b 100644
--- a/tests/HwAccelerationTest/res/layout/text_small.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/text_small.xml
diff --git a/tests/HwAccelerationTest/res/layout/transforms_and_animations.xml b/tests/graphics/HwAccelerationTest/res/layout/transforms_and_animations.xml
index 1595502f6db9..1595502f6db9 100644
--- a/tests/HwAccelerationTest/res/layout/transforms_and_animations.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/transforms_and_animations.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml b/tests/graphics/HwAccelerationTest/res/layout/view_layer_invalidation.xml
index 7df8bb6046b6..7df8bb6046b6 100644
--- a/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_layer_invalidation.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_layers.xml b/tests/graphics/HwAccelerationTest/res/layout/view_layers.xml
index e0cdc78d2ae9..e0cdc78d2ae9 100644
--- a/tests/HwAccelerationTest/res/layout/view_layers.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_layers.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_layers_3.xml b/tests/graphics/HwAccelerationTest/res/layout/view_layers_3.xml
index a820f5f2c43f..a820f5f2c43f 100644
--- a/tests/HwAccelerationTest/res/layout/view_layers_3.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_layers_3.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_layers_4.xml b/tests/graphics/HwAccelerationTest/res/layout/view_layers_4.xml
index 54367379855a..54367379855a 100644
--- a/tests/HwAccelerationTest/res/layout/view_layers_4.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_layers_4.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_layers_5.xml b/tests/graphics/HwAccelerationTest/res/layout/view_layers_5.xml
index 5baf5835dd8b..5baf5835dd8b 100644
--- a/tests/HwAccelerationTest/res/layout/view_layers_5.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_layers_5.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_properties.xml b/tests/graphics/HwAccelerationTest/res/layout/view_properties.xml
index d7ed8192b3c4..d7ed8192b3c4 100644
--- a/tests/HwAccelerationTest/res/layout/view_properties.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_properties.xml
diff --git a/tests/HwAccelerationTest/res/layout/view_runtime_shader.xml b/tests/graphics/HwAccelerationTest/res/layout/view_runtime_shader.xml
index b91377d1ab49..b91377d1ab49 100644
--- a/tests/HwAccelerationTest/res/layout/view_runtime_shader.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/view_runtime_shader.xml
diff --git a/tests/HwAccelerationTest/res/layout/widget.xml b/tests/graphics/HwAccelerationTest/res/layout/widget.xml
index 503facedbf28..503facedbf28 100644
--- a/tests/HwAccelerationTest/res/layout/widget.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/widget.xml
diff --git a/tests/HwAccelerationTest/res/layout/z_ordering.xml b/tests/graphics/HwAccelerationTest/res/layout/z_ordering.xml
index 970c5fd6e275..970c5fd6e275 100644
--- a/tests/HwAccelerationTest/res/layout/z_ordering.xml
+++ b/tests/graphics/HwAccelerationTest/res/layout/z_ordering.xml
diff --git a/tests/HwAccelerationTest/res/raw/colorgrid_video.mp4 b/tests/graphics/HwAccelerationTest/res/raw/colorgrid_video.mp4
index 1be8bee39fd4..1be8bee39fd4 100644
--- a/tests/HwAccelerationTest/res/raw/colorgrid_video.mp4
+++ b/tests/graphics/HwAccelerationTest/res/raw/colorgrid_video.mp4
Binary files differ
diff --git a/tests/HwAccelerationTest/res/values/strings.xml b/tests/graphics/HwAccelerationTest/res/values/strings.xml
index 69e58aab18bf..69e58aab18bf 100644
--- a/tests/HwAccelerationTest/res/values/strings.xml
+++ b/tests/graphics/HwAccelerationTest/res/values/strings.xml
diff --git a/tests/HwAccelerationTest/res/values/styles.xml b/tests/graphics/HwAccelerationTest/res/values/styles.xml
index 55f4dd697907..55f4dd697907 100644
--- a/tests/HwAccelerationTest/res/values/styles.xml
+++ b/tests/graphics/HwAccelerationTest/res/values/styles.xml
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/AdvancedBlendActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AdvancedBlendActivity.java
index a83005b4440b..a83005b4440b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/AdvancedBlendActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AdvancedBlendActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/AdvancedGradientsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AdvancedGradientsActivity.java
index b0b54eb83149..b0b54eb83149 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/AdvancedGradientsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AdvancedGradientsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Alpha8BitmapActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Alpha8BitmapActivity.java
index 5fe512e55072..5fe512e55072 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/Alpha8BitmapActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Alpha8BitmapActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/AlphaLayersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AlphaLayersActivity.java
index 37661828da22..37661828da22 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/AlphaLayersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AlphaLayersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Animated3dActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Animated3dActivity.java
index f632c8372c35..f632c8372c35 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/Animated3dActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Animated3dActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/AssetsAtlasActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AssetsAtlasActivity.java
index cbf99dc46a45..cbf99dc46a45 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/AssetsAtlasActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/AssetsAtlasActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BackdropBlurActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BackdropBlurActivity.java
index 8086b29df7cd..8086b29df7cd 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BackdropBlurActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BackdropBlurActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BigGradientActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BigGradientActivity.java
index 4d28f5125ff2..4d28f5125ff2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BigGradientActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BigGradientActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java
index 69d34a590a46..69d34a590a46 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshLayerActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshLayerActivity.java
index ac59a4bcca19..ac59a4bcca19 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshLayerActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMeshLayerActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMutateActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMutateActivity.java
index 0d825d7c60ed..0d825d7c60ed 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapMutateActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapMutateActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt
index 3af54503d469..3af54503d469 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapTransitionView.kt
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java
index baa1cb916864..baa1cb916864 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsActivity.java
index 607a1738c13a..607a1738c13a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsAlphaActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsAlphaActivity.java
index cb16191423ce..cb16191423ce 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsAlphaActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsAlphaActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsRectActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsRectActivity.java
index b192209e7823..b192209e7823 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsRectActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsRectActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsSkewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsSkewActivity.java
index 099c0dde4eac..099c0dde4eac 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BitmapsSkewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BitmapsSkewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/BlurActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BlurActivity.java
index e4ca7881f796..e4ca7881f796 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/BlurActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/BlurActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/CanvasTextureViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CanvasTextureViewActivity.java
index bd2f68f77f28..bd2f68f77f28 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/CanvasTextureViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CanvasTextureViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/CirclePropActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CirclePropActivity.java
index 571f623aea99..571f623aea99 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/CirclePropActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CirclePropActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ClearActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClearActivity.java
index dbfb4ca7c8fe..dbfb4ca7c8fe 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ClearActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClearActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipOutlineActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipOutlineActivity.java
index 23bb6b4a4a0c..23bb6b4a4a0c 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipOutlineActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipOutlineActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion2Activity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegion2Activity.java
index fe4d602a62d1..fe4d602a62d1 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion2Activity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegion2Activity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java
index 6fd03fb992e5..6fd03fb992e5 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegion3Activity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegionActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegionActivity.java
index 774811e5bf10..774811e5bf10 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ClipRegionActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ClipRegionActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorBitmapActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorBitmapActivity.java
index 1f4c6c53b260..1f4c6c53b260 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorBitmapActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorBitmapActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersActivity.java
index 09d63d6eda17..09d63d6eda17 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
index fafe60b46676..fafe60b46676 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColorFiltersMutateActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColoredRectsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColoredRectsActivity.java
index d4bc2a6d3317..d4bc2a6d3317 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColoredRectsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColoredRectsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ColoredShadowsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColoredShadowsActivity.java
index 901d90eed70a..901d90eed70a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ColoredShadowsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ColoredShadowsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/CustomRenderer.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CustomRenderer.java
index 5ad7fb9027a2..5ad7fb9027a2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/CustomRenderer.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/CustomRenderer.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/DatePicker.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DatePicker.java
index 492d158ec5ef..492d158ec5ef 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/DatePicker.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DatePicker.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/DatePickerActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DatePickerActivity.java
index 5482ee2b656f..5482ee2b656f 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/DatePickerActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DatePickerActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/DisplayListLayersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DisplayListLayersActivity.java
index ec91c35dce0f..ec91c35dce0f 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/DisplayListLayersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DisplayListLayersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java
index 220016aa8ab7..220016aa8ab7 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/EdgeEffectStretchActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/EdgeEffectStretchActivity.java
index c4b0072eaff8..c4b0072eaff8 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/EdgeEffectStretchActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/EdgeEffectStretchActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/FramebufferBlendActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/FramebufferBlendActivity.java
index 1556baec0c9c..1556baec0c9c 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/FramebufferBlendActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/FramebufferBlendActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/FrontBufferedLayer.kt b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/FrontBufferedLayer.kt
index ebec22e29d69..ebec22e29d69 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/FrontBufferedLayer.kt
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/FrontBufferedLayer.kt
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GLDepthTestActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GLDepthTestActivity.java
index 1bb6d0ca8591..1bb6d0ca8591 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GLDepthTestActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GLDepthTestActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java
index 733e44f28130..733e44f28130 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GLTextureViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GetBitmapActivity.java
index 038434a72de2..038434a72de2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GetBitmapActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java
index 6fe2cb472a97..6fe2cb472a97 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GetBitmapSurfaceViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GlyphCacheActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GlyphCacheActivity.java
index e89b2948062b..e89b2948062b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GlyphCacheActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GlyphCacheActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java
index a73eab579d12..a73eab579d12 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GradientStopsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java
index fbe7856f32ec..fbe7856f32ec 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/GradientsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java
index e4de434f1ed2..e4de434f1ed2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
index 2bfe994aa1b7..2bfe994aa1b7 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasTextureViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasTextureViewActivity.java
index 63a6efa712fb..63a6efa712fb 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasTextureViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasTextureViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/HwTests.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HwTests.java
index b1c32a88c353..b1c32a88c353 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/HwTests.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/HwTests.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/LabelsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LabelsActivity.java
index bae0500f39e9..bae0500f39e9 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/LabelsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LabelsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/LayersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LayersActivity.java
index 9d5cd284301a..9d5cd284301a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/LayersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LayersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Lines2Activity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Lines2Activity.java
index 584ab596836c..584ab596836c 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/Lines2Activity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Lines2Activity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/LinesActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LinesActivity.java
index eed0ec890b8f..eed0ec890b8f 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/LinesActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LinesActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ListActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ListActivity.java
index 134c2e045449..134c2e045449 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ListActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ListActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/LooperAcceleration.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LooperAcceleration.java
index 20d8e11cbe45..20d8e11cbe45 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/LooperAcceleration.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/LooperAcceleration.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MarqueeActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MarqueeActivity.java
index 715cdbb226cb..715cdbb226cb 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MarqueeActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MarqueeActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java
index 1906b9d5dd91..1906b9d5dd91 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MatrixActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MaxBitmapSizeActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MaxBitmapSizeActivity.java
index b3b42dcdf157..b3b42dcdf157 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MaxBitmapSizeActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MaxBitmapSizeActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MeshActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MeshActivity.java
index ae3dcb834687..ae3dcb834687 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MeshActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MeshActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MeshLargeActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MeshLargeActivity.java
index 01ca2fcdbb86..01ca2fcdbb86 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MeshLargeActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MeshLargeActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java
index 1034649b6cb2..1034649b6cb2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MoreNinePatchesActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MoreNinePatchesActivity.java
index 0c42387ee693..0c42387ee693 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MoreNinePatchesActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MoreNinePatchesActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MoreShadersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MoreShadersActivity.java
index 1847f43b7ea0..1847f43b7ea0 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MoreShadersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MoreShadersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java
index fa25b45c2b06..fa25b45c2b06 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MovingSurfaceViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java
index eb8a0a926af8..eb8a0a926af8 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MultiLayersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MultiProducerActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MultiProducerActivity.java
index e7d7f2b11801..e7d7f2b11801 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MultiProducerActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MultiProducerActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MyLittleTextureView.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MyLittleTextureView.java
index 08d5d4fff50a..08d5d4fff50a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/MyLittleTextureView.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/MyLittleTextureView.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java
index 2509d367fe30..2509d367fe30 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/NinePatchesActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NinePatchesActivity.java
index 7410f79363b3..7410f79363b3 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/NinePatchesActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NinePatchesActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java
index 5bd2f583c4c8..5bd2f583c4c8 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/NoAATextActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/OpaqueActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/OpaqueActivity.java
index af45f299bec3..af45f299bec3 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/OpaqueActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/OpaqueActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PaintDrawFilterActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PaintDrawFilterActivity.java
index 85232720f436..85232720f436 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PaintDrawFilterActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PaintDrawFilterActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java
index 5cede6540410..5cede6540410 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathOffsetActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathOffsetActivity.java
index fa73de157cf7..fa73de157cf7 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PathOffsetActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathOffsetActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathOpsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathOpsActivity.java
index b9927ac08523..b9927ac08523 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PathOpsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathOpsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathsActivity.java
index c241a6243011..c241a6243011 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PathsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java
index c1e7f4ad156c..c1e7f4ad156c 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PenStylusActivity.kt b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PenStylusActivity.kt
index 1445b1db801e..1445b1db801e 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PenStylusActivity.kt
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PenStylusActivity.kt
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PictureCaptureDemo.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PictureCaptureDemo.java
index 15568ac72227..15568ac72227 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PictureCaptureDemo.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PictureCaptureDemo.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PixelCopyWindow.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PixelCopyWindow.java
index a039fba14f65..a039fba14f65 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PixelCopyWindow.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PixelCopyWindow.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PointsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PointsActivity.java
index b3fb7a1b47d2..b3fb7a1b47d2 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PointsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PointsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java
index 1c868d233339..1c868d233339 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PosTextActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java
index 2ad034cd143e..2ad034cd143e 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ProjectionActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ProjectionActivity.java
index 4eb40722f6dd..4eb40722f6dd 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ProjectionActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ProjectionActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ProjectionClippingActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ProjectionClippingActivity.java
index 9abd7ea5f361..9abd7ea5f361 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ProjectionClippingActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ProjectionClippingActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/QuickRejectActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/QuickRejectActivity.java
index 11a2a4161a8b..11a2a4161a8b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/QuickRejectActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/QuickRejectActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectShaderActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RenderEffectShaderActivity.java
index 661d48a84768..661d48a84768 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectShaderActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RenderEffectShaderActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt
index 3c71b96c6c31..3c71b96c6c31 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RenderEffectViewActivity.kt
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ResizeActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ResizeActivity.java
index 04f9de184038..04f9de184038 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ResizeActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ResizeActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java
index 1216fc43640e..1216fc43640e 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RevealActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
index b78907c46744..b78907c46744 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Rotate3dTextActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Rotate3dTextActivity.java
index 0368b2fffc06..0368b2fffc06 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/Rotate3dTextActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Rotate3dTextActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RotationActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RotationActivity.java
index 5c309b4431bf..5c309b4431bf 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/RotationActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/RotationActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ScaledPathsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScaledPathsActivity.java
index deb4b6b87fe4..deb4b6b87fe4 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ScaledPathsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScaledPathsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ScaledTextActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScaledTextActivity.java
index a4e9b52f4290..a4e9b52f4290 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ScaledTextActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScaledTextActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java
index 040bff5d74d8..040bff5d74d8 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java
index 1d18f61986ba..1d18f61986ba 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ShadersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java
index 61dca784ce5e..61dca784ce5e 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ShapesActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/SimplePatchActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SimplePatchActivity.java
index a9b4d1c3cefb..a9b4d1c3cefb 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/SimplePatchActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SimplePatchActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/SimplePathsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SimplePathsActivity.java
index c3e18a3c08ff..c3e18a3c08ff 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/SimplePathsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SimplePathsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/SingleFrameTextureViewTestActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SingleFrameTextureViewTestActivity.java
index 4d3826b68247..4d3826b68247 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/SingleFrameTextureViewTestActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SingleFrameTextureViewTestActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/SmallCircleActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SmallCircleActivity.java
index a3f4ddc382d4..a3f4ddc382d4 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/SmallCircleActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SmallCircleActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/StackActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StackActivity.java
index 262b0e93671b..262b0e93671b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/StackActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StackActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java
index 2990c9e59fec..2990c9e59fec 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java
index acb872cd23b8..acb872cd23b8 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/SurfaceViewAlphaActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SurfaceViewAlphaActivity.java
index 01fe6ae0518b..01fe6ae0518b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/SurfaceViewAlphaActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/SurfaceViewAlphaActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TJunctionActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TJunctionActivity.java
index d2bcae9645b9..d2bcae9645b9 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TJunctionActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TJunctionActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java
index 4a1f5a24ba2b..4a1f5a24ba2b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextFadeActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextFadeActivity.java
index d307ef871b97..d307ef871b97 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextFadeActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextFadeActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextGammaActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextGammaActivity.java
index f40b89dc0d36..f40b89dc0d36 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextGammaActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextGammaActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextOnPathActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextOnPathActivity.java
index ceccfaa9cd0f..ceccfaa9cd0f 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextOnPathActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextOnPathActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java
index 35a1fc92b468..35a1fc92b468 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextPathActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
index 6d8c43c00acf..6d8c43c00acf 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ThinPatchesActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ThinPatchesActivity.java
index 656f2b143654..656f2b143654 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ThinPatchesActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ThinPatchesActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TimeDialogActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TimeDialogActivity.java
index 9e3e950f0850..9e3e950f0850 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TimeDialogActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TimeDialogActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Transform3dActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Transform3dActivity.java
index 6df66e6bbd9a..6df66e6bbd9a 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/Transform3dActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/Transform3dActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TransformsAndAnimationsActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TransformsAndAnimationsActivity.java
index b5a5e025e757..b5a5e025e757 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TransformsAndAnimationsActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TransformsAndAnimationsActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java
index deb8585a95f5..deb8585a95f5 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/TransparentListActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java
index b87be8058d81..b87be8058d81 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/VideoViewCaptureActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java
index 0e244fc0a31b..0e244fc0a31b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java
index a261fb729a65..a261fb729a65 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity.java
index 07dc0a1b5df0..07dc0a1b5df0 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java
index a037d70ef845..a037d70ef845 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity2.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity3.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity3.java
index 96cf43e48778..96cf43e48778 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity3.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity3.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java
index 1f3f874744db..1f3f874744db 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity4.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java
index 715da201458b..715da201458b 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewPropertyAlphaActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewPropertyAlphaActivity.java
index 9ae38119cac6..9ae38119cac6 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewPropertyAlphaActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ViewPropertyAlphaActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/XfermodeActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/XfermodeActivity.java
index 411077f04f93..411077f04f93 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/XfermodeActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/XfermodeActivity.java
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ZOrderingActivity.java b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ZOrderingActivity.java
index 08979bce8f73..08979bce8f73 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/ZOrderingActivity.java
+++ b/tests/graphics/HwAccelerationTest/src/com/android/test/hwui/ZOrderingActivity.java
diff --git a/tests/HwAccelerationTest/OWNERS b/tests/graphics/OWNERS
index c88a9f82c347..fb7fc14640b1 100644
--- a/tests/HwAccelerationTest/OWNERS
+++ b/tests/graphics/OWNERS
@@ -1 +1,3 @@
+# Bug component: 1075130
+
include /libs/hwui/OWNERS
diff --git a/tests/RenderThreadTest/Android.bp b/tests/graphics/RenderThreadTest/Android.bp
index b18b04edb4c4..b18b04edb4c4 100644
--- a/tests/RenderThreadTest/Android.bp
+++ b/tests/graphics/RenderThreadTest/Android.bp
diff --git a/tests/RenderThreadTest/AndroidManifest.xml b/tests/graphics/RenderThreadTest/AndroidManifest.xml
index 22a4e43c988c..22a4e43c988c 100644
--- a/tests/RenderThreadTest/AndroidManifest.xml
+++ b/tests/graphics/RenderThreadTest/AndroidManifest.xml
diff --git a/tests/RenderThreadTest/res/drawable-hdpi/ic_launcher.png b/tests/graphics/RenderThreadTest/res/drawable-hdpi/ic_launcher.png
index 96a442e5b8e9..96a442e5b8e9 100644
--- a/tests/RenderThreadTest/res/drawable-hdpi/ic_launcher.png
+++ b/tests/graphics/RenderThreadTest/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/tests/RenderThreadTest/res/drawable-mdpi/ic_launcher.png b/tests/graphics/RenderThreadTest/res/drawable-mdpi/ic_launcher.png
index 359047dfa4ed..359047dfa4ed 100644
--- a/tests/RenderThreadTest/res/drawable-mdpi/ic_launcher.png
+++ b/tests/graphics/RenderThreadTest/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/tests/RenderThreadTest/res/drawable-xhdpi/ic_launcher.png b/tests/graphics/RenderThreadTest/res/drawable-xhdpi/ic_launcher.png
index 71c6d760f051..71c6d760f051 100644
--- a/tests/RenderThreadTest/res/drawable-xhdpi/ic_launcher.png
+++ b/tests/graphics/RenderThreadTest/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/tests/RenderThreadTest/res/drawable-xhdpi/starry_night_bg.jpg b/tests/graphics/RenderThreadTest/res/drawable-xhdpi/starry_night_bg.jpg
index 14d6027bf006..14d6027bf006 100644
--- a/tests/RenderThreadTest/res/drawable-xhdpi/starry_night_bg.jpg
+++ b/tests/graphics/RenderThreadTest/res/drawable-xhdpi/starry_night_bg.jpg
Binary files differ
diff --git a/tests/RenderThreadTest/res/layout/activity_main.xml b/tests/graphics/RenderThreadTest/res/layout/activity_main.xml
index 1fd545946f3c..1fd545946f3c 100644
--- a/tests/RenderThreadTest/res/layout/activity_main.xml
+++ b/tests/graphics/RenderThreadTest/res/layout/activity_main.xml
diff --git a/tests/RenderThreadTest/res/layout/activity_sub.xml b/tests/graphics/RenderThreadTest/res/layout/activity_sub.xml
index 713cee49de53..713cee49de53 100644
--- a/tests/RenderThreadTest/res/layout/activity_sub.xml
+++ b/tests/graphics/RenderThreadTest/res/layout/activity_sub.xml
diff --git a/tests/RenderThreadTest/res/layout/item_layout.xml b/tests/graphics/RenderThreadTest/res/layout/item_layout.xml
index 5bdb1ac422f5..5bdb1ac422f5 100644
--- a/tests/RenderThreadTest/res/layout/item_layout.xml
+++ b/tests/graphics/RenderThreadTest/res/layout/item_layout.xml
diff --git a/tests/RenderThreadTest/res/values/strings.xml b/tests/graphics/RenderThreadTest/res/values/strings.xml
index f782e98f43f8..f782e98f43f8 100644
--- a/tests/RenderThreadTest/res/values/strings.xml
+++ b/tests/graphics/RenderThreadTest/res/values/strings.xml
diff --git a/tests/RenderThreadTest/res/values/styles.xml b/tests/graphics/RenderThreadTest/res/values/styles.xml
index f6b5d6aa6dbc..f6b5d6aa6dbc 100644
--- a/tests/RenderThreadTest/res/values/styles.xml
+++ b/tests/graphics/RenderThreadTest/res/values/styles.xml
diff --git a/tests/RenderThreadTest/src/com/example/renderthread/MainActivity.java b/tests/graphics/RenderThreadTest/src/com/example/renderthread/MainActivity.java
index 65b7549f22d1..65b7549f22d1 100644
--- a/tests/RenderThreadTest/src/com/example/renderthread/MainActivity.java
+++ b/tests/graphics/RenderThreadTest/src/com/example/renderthread/MainActivity.java
diff --git a/tests/RenderThreadTest/src/com/example/renderthread/SubActivity.java b/tests/graphics/RenderThreadTest/src/com/example/renderthread/SubActivity.java
index 22fc6911f7df..22fc6911f7df 100644
--- a/tests/RenderThreadTest/src/com/example/renderthread/SubActivity.java
+++ b/tests/graphics/RenderThreadTest/src/com/example/renderthread/SubActivity.java
diff --git a/tests/SilkFX/Android.bp b/tests/graphics/SilkFX/Android.bp
index 1e467db44545..1e467db44545 100644
--- a/tests/SilkFX/Android.bp
+++ b/tests/graphics/SilkFX/Android.bp
diff --git a/tests/SilkFX/AndroidManifest.xml b/tests/graphics/SilkFX/AndroidManifest.xml
index c293589bdbaf..c293589bdbaf 100644
--- a/tests/SilkFX/AndroidManifest.xml
+++ b/tests/graphics/SilkFX/AndroidManifest.xml
diff --git a/tests/SilkFX/assets/gainmaps/city_night.jpg b/tests/graphics/SilkFX/assets/gainmaps/city_night.jpg
index ba26ed6a5780..ba26ed6a5780 100644
--- a/tests/SilkFX/assets/gainmaps/city_night.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/city_night.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/desert_palms.jpg b/tests/graphics/SilkFX/assets/gainmaps/desert_palms.jpg
index 048178670a96..048178670a96 100644
--- a/tests/SilkFX/assets/gainmaps/desert_palms.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/desert_palms.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/desert_sunset.jpg b/tests/graphics/SilkFX/assets/gainmaps/desert_sunset.jpg
index 919a1574a4b9..919a1574a4b9 100644
--- a/tests/SilkFX/assets/gainmaps/desert_sunset.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/desert_sunset.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/desert_wanda.jpg b/tests/graphics/SilkFX/assets/gainmaps/desert_wanda.jpg
index f5a2ef9c53ea..f5a2ef9c53ea 100644
--- a/tests/SilkFX/assets/gainmaps/desert_wanda.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/desert_wanda.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/fountain_night.jpg b/tests/graphics/SilkFX/assets/gainmaps/fountain_night.jpg
index d8b2d759e4c0..d8b2d759e4c0 100644
--- a/tests/SilkFX/assets/gainmaps/fountain_night.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/fountain_night.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/grand_canyon.jpg b/tests/graphics/SilkFX/assets/gainmaps/grand_canyon.jpg
index 2f605bbb0a7e..2f605bbb0a7e 100644
--- a/tests/SilkFX/assets/gainmaps/grand_canyon.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/grand_canyon.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/lamps.jpg b/tests/graphics/SilkFX/assets/gainmaps/lamps.jpg
index 768665f643cb..768665f643cb 100644
--- a/tests/SilkFX/assets/gainmaps/lamps.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/lamps.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/mountain_lake.jpg b/tests/graphics/SilkFX/assets/gainmaps/mountain_lake.jpg
index b7981fdca6da..b7981fdca6da 100644
--- a/tests/SilkFX/assets/gainmaps/mountain_lake.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/mountain_lake.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/mountains.jpg b/tests/graphics/SilkFX/assets/gainmaps/mountains.jpg
index fe69993e0706..fe69993e0706 100644
--- a/tests/SilkFX/assets/gainmaps/mountains.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/mountains.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/sunflower.jpg b/tests/graphics/SilkFX/assets/gainmaps/sunflower.jpg
index 4b17614d66bf..4b17614d66bf 100644
--- a/tests/SilkFX/assets/gainmaps/sunflower.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/sunflower.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/train_station_night.jpg b/tests/graphics/SilkFX/assets/gainmaps/train_station_night.jpg
index ecd45ee1e629..ecd45ee1e629 100644
--- a/tests/SilkFX/assets/gainmaps/train_station_night.jpg
+++ b/tests/graphics/SilkFX/assets/gainmaps/train_station_night.jpg
Binary files differ
diff --git a/tests/SilkFX/res/drawable-hdpi/background1.jpeg b/tests/graphics/SilkFX/res/drawable-hdpi/background1.jpeg
index dcdfa7b850bc..dcdfa7b850bc 100644
--- a/tests/SilkFX/res/drawable-hdpi/background1.jpeg
+++ b/tests/graphics/SilkFX/res/drawable-hdpi/background1.jpeg
Binary files differ
diff --git a/tests/SilkFX/res/drawable-hdpi/background2.jpeg b/tests/graphics/SilkFX/res/drawable-hdpi/background2.jpeg
index dc7ce84e6784..dc7ce84e6784 100644
--- a/tests/SilkFX/res/drawable-hdpi/background2.jpeg
+++ b/tests/graphics/SilkFX/res/drawable-hdpi/background2.jpeg
Binary files differ
diff --git a/tests/SilkFX/res/drawable-hdpi/background3.jpeg b/tests/graphics/SilkFX/res/drawable-hdpi/background3.jpeg
index 12b3429e3920..12b3429e3920 100644
--- a/tests/SilkFX/res/drawable-hdpi/background3.jpeg
+++ b/tests/graphics/SilkFX/res/drawable-hdpi/background3.jpeg
Binary files differ
diff --git a/tests/SilkFX/res/drawable-hdpi/noise.png b/tests/graphics/SilkFX/res/drawable-hdpi/noise.png
index 053995dad760..053995dad760 100644
--- a/tests/SilkFX/res/drawable-hdpi/noise.png
+++ b/tests/graphics/SilkFX/res/drawable-hdpi/noise.png
Binary files differ
diff --git a/tests/SilkFX/res/drawable-nodpi/blue_sweep_gradient.xml b/tests/graphics/SilkFX/res/drawable-nodpi/blue_sweep_gradient.xml
index c183c5deab4f..c183c5deab4f 100644
--- a/tests/SilkFX/res/drawable-nodpi/blue_sweep_gradient.xml
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/blue_sweep_gradient.xml
diff --git a/tests/SilkFX/res/drawable-nodpi/dark_gradient.xml b/tests/graphics/SilkFX/res/drawable-nodpi/dark_gradient.xml
index f20dd424c617..f20dd424c617 100644
--- a/tests/SilkFX/res/drawable-nodpi/dark_gradient.xml
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/dark_gradient.xml
diff --git a/tests/SilkFX/res/drawable-nodpi/dark_notification.png b/tests/graphics/SilkFX/res/drawable-nodpi/dark_notification.png
index 6de6c2ae785c..6de6c2ae785c 100644
--- a/tests/SilkFX/res/drawable-nodpi/dark_notification.png
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/dark_notification.png
Binary files differ
diff --git a/tests/SilkFX/res/drawable-nodpi/green_sweep_gradient.xml b/tests/graphics/SilkFX/res/drawable-nodpi/green_sweep_gradient.xml
index c600d0f66325..c600d0f66325 100644
--- a/tests/SilkFX/res/drawable-nodpi/green_sweep_gradient.xml
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/green_sweep_gradient.xml
diff --git a/tests/SilkFX/res/drawable-nodpi/grey_sweep_gradient.xml b/tests/graphics/SilkFX/res/drawable-nodpi/grey_sweep_gradient.xml
index d0c17fa2e1b9..d0c17fa2e1b9 100644
--- a/tests/SilkFX/res/drawable-nodpi/grey_sweep_gradient.xml
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/grey_sweep_gradient.xml
diff --git a/tests/SilkFX/res/drawable-nodpi/light_gradient.xml b/tests/graphics/SilkFX/res/drawable-nodpi/light_gradient.xml
index c75f925647e7..c75f925647e7 100644
--- a/tests/SilkFX/res/drawable-nodpi/light_gradient.xml
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/light_gradient.xml
diff --git a/tests/SilkFX/res/drawable-nodpi/light_notification.png b/tests/graphics/SilkFX/res/drawable-nodpi/light_notification.png
index 81a67cd3d388..81a67cd3d388 100644
--- a/tests/SilkFX/res/drawable-nodpi/light_notification.png
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/light_notification.png
Binary files differ
diff --git a/tests/SilkFX/res/drawable-nodpi/red_sweep_gradient.xml b/tests/graphics/SilkFX/res/drawable-nodpi/red_sweep_gradient.xml
index e3b834a46406..e3b834a46406 100644
--- a/tests/SilkFX/res/drawable-nodpi/red_sweep_gradient.xml
+++ b/tests/graphics/SilkFX/res/drawable-nodpi/red_sweep_gradient.xml
diff --git a/tests/SilkFX/res/drawable/background_blur_drawable.xml b/tests/graphics/SilkFX/res/drawable/background_blur_drawable.xml
index 173ca99bdfdf..173ca99bdfdf 100644
--- a/tests/SilkFX/res/drawable/background_blur_drawable.xml
+++ b/tests/graphics/SilkFX/res/drawable/background_blur_drawable.xml
diff --git a/tests/SilkFX/res/drawable/blur_activity_background_drawable_white.xml b/tests/graphics/SilkFX/res/drawable/blur_activity_background_drawable_white.xml
index bd8942d46383..bd8942d46383 100644
--- a/tests/SilkFX/res/drawable/blur_activity_background_drawable_white.xml
+++ b/tests/graphics/SilkFX/res/drawable/blur_activity_background_drawable_white.xml
diff --git a/tests/SilkFX/res/layout-television/activity_glass.xml b/tests/graphics/SilkFX/res/layout-television/activity_glass.xml
index 1f566860da3d..1f566860da3d 100644
--- a/tests/SilkFX/res/layout-television/activity_glass.xml
+++ b/tests/graphics/SilkFX/res/layout-television/activity_glass.xml
diff --git a/tests/SilkFX/res/layout/activity_background_blur.xml b/tests/graphics/SilkFX/res/layout/activity_background_blur.xml
index f13c0883cb01..f13c0883cb01 100644
--- a/tests/SilkFX/res/layout/activity_background_blur.xml
+++ b/tests/graphics/SilkFX/res/layout/activity_background_blur.xml
diff --git a/tests/SilkFX/res/layout/activity_glass.xml b/tests/graphics/SilkFX/res/layout/activity_glass.xml
index aa09f276d5c8..aa09f276d5c8 100644
--- a/tests/SilkFX/res/layout/activity_glass.xml
+++ b/tests/graphics/SilkFX/res/layout/activity_glass.xml
diff --git a/tests/SilkFX/res/layout/bling_notifications.xml b/tests/graphics/SilkFX/res/layout/bling_notifications.xml
index 6d266b701a68..6d266b701a68 100644
--- a/tests/SilkFX/res/layout/bling_notifications.xml
+++ b/tests/graphics/SilkFX/res/layout/bling_notifications.xml
diff --git a/tests/SilkFX/res/layout/color_grid.xml b/tests/graphics/SilkFX/res/layout/color_grid.xml
index 37242eee7195..37242eee7195 100644
--- a/tests/SilkFX/res/layout/color_grid.xml
+++ b/tests/graphics/SilkFX/res/layout/color_grid.xml
diff --git a/tests/SilkFX/res/layout/color_mode_controls.xml b/tests/graphics/SilkFX/res/layout/color_mode_controls.xml
index c0c0bab8a605..c0c0bab8a605 100644
--- a/tests/SilkFX/res/layout/color_mode_controls.xml
+++ b/tests/graphics/SilkFX/res/layout/color_mode_controls.xml
diff --git a/tests/SilkFX/res/layout/common_base.xml b/tests/graphics/SilkFX/res/layout/common_base.xml
index c0eaf9bc1476..c0eaf9bc1476 100644
--- a/tests/SilkFX/res/layout/common_base.xml
+++ b/tests/graphics/SilkFX/res/layout/common_base.xml
diff --git a/tests/SilkFX/res/layout/gainmap_decode_test.xml b/tests/graphics/SilkFX/res/layout/gainmap_decode_test.xml
index e7ef61f8dac1..e7ef61f8dac1 100644
--- a/tests/SilkFX/res/layout/gainmap_decode_test.xml
+++ b/tests/graphics/SilkFX/res/layout/gainmap_decode_test.xml
diff --git a/tests/SilkFX/res/layout/gainmap_image.xml b/tests/graphics/SilkFX/res/layout/gainmap_image.xml
index b0ed9147585e..b0ed9147585e 100644
--- a/tests/SilkFX/res/layout/gainmap_image.xml
+++ b/tests/graphics/SilkFX/res/layout/gainmap_image.xml
diff --git a/tests/SilkFX/res/layout/gainmap_metadata.xml b/tests/graphics/SilkFX/res/layout/gainmap_metadata.xml
index 4cc3e0cbdb83..4cc3e0cbdb83 100644
--- a/tests/SilkFX/res/layout/gainmap_metadata.xml
+++ b/tests/graphics/SilkFX/res/layout/gainmap_metadata.xml
diff --git a/tests/SilkFX/res/layout/gainmap_transform_test.xml b/tests/graphics/SilkFX/res/layout/gainmap_transform_test.xml
index 5aeb53661cbc..5aeb53661cbc 100644
--- a/tests/SilkFX/res/layout/gainmap_transform_test.xml
+++ b/tests/graphics/SilkFX/res/layout/gainmap_transform_test.xml
diff --git a/tests/SilkFX/res/layout/gradient_sweep.xml b/tests/graphics/SilkFX/res/layout/gradient_sweep.xml
index 261022a40380..261022a40380 100644
--- a/tests/SilkFX/res/layout/gradient_sweep.xml
+++ b/tests/graphics/SilkFX/res/layout/gradient_sweep.xml
diff --git a/tests/SilkFX/res/layout/hdr_glows.xml b/tests/graphics/SilkFX/res/layout/hdr_glows.xml
index b6050645866a..b6050645866a 100644
--- a/tests/SilkFX/res/layout/hdr_glows.xml
+++ b/tests/graphics/SilkFX/res/layout/hdr_glows.xml
diff --git a/tests/SilkFX/res/layout/hdr_image_viewer.xml b/tests/graphics/SilkFX/res/layout/hdr_image_viewer.xml
index 9816430cd915..9816430cd915 100644
--- a/tests/SilkFX/res/layout/hdr_image_viewer.xml
+++ b/tests/graphics/SilkFX/res/layout/hdr_image_viewer.xml
diff --git a/tests/SilkFX/res/values/style.xml b/tests/graphics/SilkFX/res/values/style.xml
index 66edbb5c9382..66edbb5c9382 100644
--- a/tests/SilkFX/res/values/style.xml
+++ b/tests/graphics/SilkFX/res/values/style.xml
diff --git a/tests/SilkFX/src/com/android/test/silkfx/Main.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/Main.kt
index 59a6078376cf..59a6078376cf 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/Main.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/Main.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/app/BaseDemoActivity.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/BaseDemoActivity.kt
index 89011b51b8d6..89011b51b8d6 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/app/BaseDemoActivity.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/BaseDemoActivity.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/app/CommonDemoActivity.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/CommonDemoActivity.kt
index e56ce40463f4..e56ce40463f4 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/app/CommonDemoActivity.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/CommonDemoActivity.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/app/HdrImageViewer.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/HdrImageViewer.kt
index 7302169f4d1b..7302169f4d1b 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/app/HdrImageViewer.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/HdrImageViewer.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/app/WindowObserver.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/WindowObserver.kt
index 3d989a54cf27..3d989a54cf27 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/app/WindowObserver.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/app/WindowObserver.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/common/BaseDrawingView.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/common/BaseDrawingView.kt
index f88e6b01483b..f88e6b01483b 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/common/BaseDrawingView.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/common/BaseDrawingView.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt
index 7e43566d56f8..7e43566d56f8 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/common/HDRIndicator.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/common/HDRIndicator.kt
index f42161f63811..f42161f63811 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/common/HDRIndicator.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/common/HDRIndicator.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/BlingyNotification.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/BlingyNotification.kt
index 4ad21faec9d4..4ad21faec9d4 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/BlingyNotification.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/BlingyNotification.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/ColorGrid.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/ColorGrid.kt
index 6920f832333f..6920f832333f 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/ColorGrid.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/ColorGrid.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapDecodeTest.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapDecodeTest.kt
index 585320aee615..585320aee615 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapDecodeTest.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapDecodeTest.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapImage.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapImage.kt
index c92d768439fd..c92d768439fd 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapImage.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapImage.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapMetadataEditor.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapMetadataEditor.kt
index 43debb11013a..43debb11013a 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapMetadataEditor.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapMetadataEditor.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapTransformsTest.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapTransformsTest.kt
index 20984fae2133..20984fae2133 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/GainmapTransformsTest.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GainmapTransformsTest.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/GlowActivity.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GlowActivity.kt
index 64dbb22ace43..64dbb22ace43 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/GlowActivity.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GlowActivity.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/GlowingCard.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GlowingCard.kt
index b388bb659685..b388bb659685 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/GlowingCard.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/GlowingCard.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/hdr/RadialGlow.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/RadialGlow.kt
index 20acb4919c78..20acb4919c78 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/hdr/RadialGlow.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/hdr/RadialGlow.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/materials/BackgroundBlurActivity.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/materials/BackgroundBlurActivity.kt
index 4d38660e6029..4d38660e6029 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/materials/BackgroundBlurActivity.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/materials/BackgroundBlurActivity.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/materials/GlassActivity.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/materials/GlassActivity.kt
index dde245ff9baf..dde245ff9baf 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/materials/GlassActivity.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/materials/GlassActivity.kt
diff --git a/tests/SilkFX/src/com/android/test/silkfx/materials/GlassView.kt b/tests/graphics/SilkFX/src/com/android/test/silkfx/materials/GlassView.kt
index 41baeadf7a8c..41baeadf7a8c 100644
--- a/tests/SilkFX/src/com/android/test/silkfx/materials/GlassView.kt
+++ b/tests/graphics/SilkFX/src/com/android/test/silkfx/materials/GlassView.kt
diff --git a/tests/VectorDrawableTest/Android.bp b/tests/graphics/VectorDrawableTest/Android.bp
index 9da7c5fdbb17..9da7c5fdbb17 100644
--- a/tests/VectorDrawableTest/Android.bp
+++ b/tests/graphics/VectorDrawableTest/Android.bp
diff --git a/tests/VectorDrawableTest/AndroidManifest.xml b/tests/graphics/VectorDrawableTest/AndroidManifest.xml
index 5334dac57ca2..5334dac57ca2 100644
--- a/tests/VectorDrawableTest/AndroidManifest.xml
+++ b/tests/graphics/VectorDrawableTest/AndroidManifest.xml
diff --git a/tests/VectorDrawableTest/OWNERS b/tests/graphics/VectorDrawableTest/OWNERS
index 27e16681899e..27e16681899e 100644
--- a/tests/VectorDrawableTest/OWNERS
+++ b/tests/graphics/VectorDrawableTest/OWNERS
diff --git a/tests/VectorDrawableTest/res/anim/alpha_animation_progress_bar.xml b/tests/graphics/VectorDrawableTest/res/anim/alpha_animation_progress_bar.xml
index 867abc7744a1..867abc7744a1 100644
--- a/tests/VectorDrawableTest/res/anim/alpha_animation_progress_bar.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/alpha_animation_progress_bar.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_favorite.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_favorite.xml
index 13bd6f5e00fe..13bd6f5e00fe 100644
--- a/tests/VectorDrawableTest/res/anim/animation_favorite.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_favorite.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_favorite02.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_favorite02.xml
index 15d3b8eb530e..15d3b8eb530e 100644
--- a/tests/VectorDrawableTest/res/anim/animation_favorite02.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_favorite02.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_grouping_1_01.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_grouping_1_01.xml
index 8ab79a5c6256..8ab79a5c6256 100644
--- a/tests/VectorDrawableTest/res/anim/animation_grouping_1_01.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_grouping_1_01.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_grouping_1_02.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_grouping_1_02.xml
index ae63203184c2..ae63203184c2 100644
--- a/tests/VectorDrawableTest/res/anim/animation_grouping_1_02.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_grouping_1_02.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_scale.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_scale.xml
index 73472205db38..73472205db38 100644
--- a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_scale.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_scale.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_translate.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_translate.xml
index 4781ba83ca36..4781ba83ca36 100644
--- a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_translate.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect1_translate.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_scale.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_scale.xml
index a61af8f7a78c..a61af8f7a78c 100644
--- a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_scale.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_scale.xml
diff --git a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_translate.xml b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_translate.xml
index 31fa7950922c..31fa7950922c 100644
--- a/tests/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_translate.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/animation_linear_progress_bar_rect2_translate.xml
diff --git a/tests/VectorDrawableTest/res/anim/blink.xml b/tests/graphics/VectorDrawableTest/res/anim/blink.xml
index 714f4911939a..714f4911939a 100644
--- a/tests/VectorDrawableTest/res/anim/blink.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/blink.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_hourglass_animation_fill_outlines.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_fill_outlines.xml
index 17499d5a7f74..17499d5a7f74 100644
--- a/tests/VectorDrawableTest/res/anim/ic_hourglass_animation_fill_outlines.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_fill_outlines.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_hourglass_animation_hourglass_frame.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_hourglass_frame.xml
index 17499d5a7f74..17499d5a7f74 100644
--- a/tests/VectorDrawableTest/res/anim/ic_hourglass_animation_hourglass_frame.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_hourglass_frame.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_hourglass_animation_mask_1.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_mask_1.xml
index 541792e3b41d..541792e3b41d 100644
--- a/tests/VectorDrawableTest/res/anim/ic_hourglass_animation_mask_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_hourglass_animation_mask_1.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_arrows_1.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_arrows_1.xml
index 89b0f7bd5425..89b0f7bd5425 100644
--- a/tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_arrows_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_arrows_1.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_1.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_1.xml
index 47e1e7145b7d..47e1e7145b7d 100644
--- a/tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_1.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_2.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_2.xml
index f1126cfd618c..f1126cfd618c 100644
--- a/tests/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_2.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_rotate_2_portrait_v2_animation_device_2.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_cross_1.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_cross_1.xml
index 993493b007fe..993493b007fe 100644
--- a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_cross_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_cross_1.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_ic_signal_airplane.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_ic_signal_airplane.xml
index 1bdfde6b3bb7..1bdfde6b3bb7 100644
--- a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_ic_signal_airplane.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_ic_signal_airplane.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_mask_2.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_mask_2.xml
index 94b0a3241d4f..94b0a3241d4f 100644
--- a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_mask_2.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_mask_2.xml
diff --git a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_path_1_1.xml b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_path_1_1.xml
index 0a4a7c476c09..0a4a7c476c09 100644
--- a/tests/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_path_1_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/ic_signal_airplane_v2_animation_path_1_1.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation01.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation01.xml
index d47e019bf4ad..d47e019bf4ad 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation01.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation01.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation02.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation02.xml
index 5d688cf8261f..5d688cf8261f 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation02.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation02.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation03.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation03.xml
index 0c1073e5b2cd..0c1073e5b2cd 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation03.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation03.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation04.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation04.xml
index 4d0aae1c9314..4d0aae1c9314 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation04.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation04.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation05.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation05.xml
index 92b1ab51ade8..92b1ab51ade8 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation05.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation05.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation06.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation06.xml
index 1a81866669bc..1a81866669bc 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation06.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation06.xml
diff --git a/tests/VectorDrawableTest/res/anim/trim_path_animation_progress_bar.xml b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation_progress_bar.xml
index c9fd6767baff..c9fd6767baff 100644
--- a/tests/VectorDrawableTest/res/anim/trim_path_animation_progress_bar.xml
+++ b/tests/graphics/VectorDrawableTest/res/anim/trim_path_animation_progress_bar.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear.xml
index e0e3f03d64f5..e0e3f03d64f5 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_linear.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml
index 6a24453c0198..6a24453c0198 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item.xml
index cfb123603735..cfb123603735 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap.xml
index 18274b9ec55a..18274b9ec55a 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml
index d342bca32208..d342bca32208 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml
index afb45aa2eebe..afb45aa2eebe 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial.xml
index ef6fd70c67f7..ef6fd70c67f7 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_radial.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml
index 64b32f6fba3f..64b32f6fba3f 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item.xml
index c6cea7c5c698..c6cea7c5c698 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml
index fb4346ad4abd..fb4346ad4abd 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml
index fefbe9f05eff..fefbe9f05eff 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml
index 8b5ad7c826ac..8b5ad7c826ac 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep.xml
index e1fbd10b7e91..e1fbd10b7e91 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_sweep.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml
index 80f39f3ee980..80f39f3ee980 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item.xml
index 332b93894960..332b93894960 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_long.xml
index 3931288c5c25..3931288c5c25 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_long.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml
index 0890bd6fc733..0890bd6fc733 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml
diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml
index 2ec50148b44d..2ec50148b44d 100644
--- a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml
diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient.xml b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient.xml
index cb324c9a7f4e..cb324c9a7f4e 100644
--- a/tests/VectorDrawableTest/res/color/stroke_gradient.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient.xml
diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_clamp.xml
index 3d746e720cf8..3d746e720cf8 100644
--- a/tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_clamp.xml
diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_item.xml b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item.xml
index 15d948c25899..15d948c25899 100644
--- a/tests/VectorDrawableTest/res/color/stroke_gradient_item.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item.xml
diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha.xml b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_alpha.xml
index fda2b88bc3e1..fda2b88bc3e1 100644
--- a/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_alpha.xml
diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml
index 352a2fd463a8..352a2fd463a8 100644
--- a/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml
diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml
index 42281d15dc0b..42281d15dc0b 100644
--- a/tests/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml
diff --git a/tests/VectorDrawableTest/res/color/vector_icon_fill_state_list.xml b/tests/graphics/VectorDrawableTest/res/color/vector_icon_fill_state_list.xml
index 45d88b567ba2..45d88b567ba2 100644
--- a/tests/VectorDrawableTest/res/color/vector_icon_fill_state_list.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/vector_icon_fill_state_list.xml
diff --git a/tests/VectorDrawableTest/res/color/vector_icon_fill_state_list_simple.xml b/tests/graphics/VectorDrawableTest/res/color/vector_icon_fill_state_list_simple.xml
index 0e2467fa9d95..0e2467fa9d95 100644
--- a/tests/VectorDrawableTest/res/color/vector_icon_fill_state_list_simple.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/vector_icon_fill_state_list_simple.xml
diff --git a/tests/VectorDrawableTest/res/color/vector_icon_stroke_state_list.xml b/tests/graphics/VectorDrawableTest/res/color/vector_icon_stroke_state_list.xml
index 16251c8d50bd..16251c8d50bd 100644
--- a/tests/VectorDrawableTest/res/color/vector_icon_stroke_state_list.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/vector_icon_stroke_state_list.xml
diff --git a/tests/VectorDrawableTest/res/color/vector_icon_stroke_state_list_simple.xml b/tests/graphics/VectorDrawableTest/res/color/vector_icon_stroke_state_list_simple.xml
index 7e6c8cea409a..7e6c8cea409a 100644
--- a/tests/VectorDrawableTest/res/color/vector_icon_stroke_state_list_simple.xml
+++ b/tests/graphics/VectorDrawableTest/res/color/vector_icon_stroke_state_list_simple.xml
diff --git a/tests/VectorDrawableTest/res/drawable-hdpi/icon.png b/tests/graphics/VectorDrawableTest/res/drawable-hdpi/icon.png
index 60fbdf5d0403..60fbdf5d0403 100644
--- a/tests/VectorDrawableTest/res/drawable-hdpi/icon.png
+++ b/tests/graphics/VectorDrawableTest/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/tests/VectorDrawableTest/res/drawable-nodpi/bitmap_drawable01.jpg b/tests/graphics/VectorDrawableTest/res/drawable-nodpi/bitmap_drawable01.jpg
index dc8c19716be5..dc8c19716be5 100644
--- a/tests/VectorDrawableTest/res/drawable-nodpi/bitmap_drawable01.jpg
+++ b/tests/graphics/VectorDrawableTest/res/drawable-nodpi/bitmap_drawable01.jpg
Binary files differ
diff --git a/tests/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon.xml b/tests/graphics/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon.xml
index 10a0970df29f..10a0970df29f 100644
--- a/tests/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon_animated.xml b/tests/graphics/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon_animated.xml
index 7e652296ee28..7e652296ee28 100644
--- a/tests/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon_animated.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animated_vector_drawable_attr_icon_animated.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animation_drawable_vector.xml b/tests/graphics/VectorDrawableTest/res/drawable/animation_drawable_vector.xml
index a588960821ab..a588960821ab 100644
--- a/tests/VectorDrawableTest/res/drawable/animation_drawable_vector.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animation_drawable_vector.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animation_vector_drawable01.xml b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable01.xml
index 8b0ceda4939f..8b0ceda4939f 100644
--- a/tests/VectorDrawableTest/res/drawable/animation_vector_drawable01.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable01.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animation_vector_drawable_favorite.xml b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable_favorite.xml
index 9d8381fd5e62..9d8381fd5e62 100644
--- a/tests/VectorDrawableTest/res/drawable/animation_vector_drawable_favorite.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable_favorite.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animation_vector_drawable_grouping_1.xml b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable_grouping_1.xml
index 4a7e4f6d870f..4a7e4f6d870f 100644
--- a/tests/VectorDrawableTest/res/drawable/animation_vector_drawable_grouping_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_drawable_grouping_1.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animation_vector_linear_progress_bar.xml b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_linear_progress_bar.xml
index 05bf8335c2a7..05bf8335c2a7 100644
--- a/tests/VectorDrawableTest/res/drawable/animation_vector_linear_progress_bar.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_linear_progress_bar.xml
diff --git a/tests/VectorDrawableTest/res/drawable/animation_vector_progress_bar.xml b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_progress_bar.xml
index 4d46ee8f27d8..4d46ee8f27d8 100644
--- a/tests/VectorDrawableTest/res/drawable/animation_vector_progress_bar.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/animation_vector_progress_bar.xml
diff --git a/tests/VectorDrawableTest/res/drawable/btn_radio_on_to_off_bundle.xml b/tests/graphics/VectorDrawableTest/res/drawable/btn_radio_on_to_off_bundle.xml
index 4f05090f8b01..4f05090f8b01 100644
--- a/tests/VectorDrawableTest/res/drawable/btn_radio_on_to_off_bundle.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/btn_radio_on_to_off_bundle.xml
diff --git a/tests/VectorDrawableTest/res/drawable/ic_hourglass.xml b/tests/graphics/VectorDrawableTest/res/drawable/ic_hourglass.xml
index 5b409227456c..5b409227456c 100644
--- a/tests/VectorDrawableTest/res/drawable/ic_hourglass.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/ic_hourglass.xml
diff --git a/tests/VectorDrawableTest/res/drawable/ic_hourglass_animation.xml b/tests/graphics/VectorDrawableTest/res/drawable/ic_hourglass_animation.xml
index 3d87376c314d..3d87376c314d 100644
--- a/tests/VectorDrawableTest/res/drawable/ic_hourglass_animation.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/ic_hourglass_animation.xml
diff --git a/tests/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2.xml b/tests/graphics/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2.xml
index b549423f2db1..b549423f2db1 100644
--- a/tests/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2.xml
diff --git a/tests/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2_animation.xml b/tests/graphics/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2_animation.xml
index 199fbf8b884e..199fbf8b884e 100644
--- a/tests/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2_animation.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/ic_rotate_2_portrait_v2_animation.xml
diff --git a/tests/VectorDrawableTest/res/drawable/ic_signal_airplane_v2.xml b/tests/graphics/VectorDrawableTest/res/drawable/ic_signal_airplane_v2.xml
index 8b2a1a8e4346..8b2a1a8e4346 100644
--- a/tests/VectorDrawableTest/res/drawable/ic_signal_airplane_v2.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/ic_signal_airplane_v2.xml
diff --git a/tests/VectorDrawableTest/res/drawable/ic_signal_airplane_v2_animation.xml b/tests/graphics/VectorDrawableTest/res/drawable/ic_signal_airplane_v2_animation.xml
index bde2b38f871a..bde2b38f871a 100644
--- a/tests/VectorDrawableTest/res/drawable/ic_signal_airplane_v2_animation.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/ic_signal_airplane_v2_animation.xml
diff --git a/tests/VectorDrawableTest/res/drawable/icon.png b/tests/graphics/VectorDrawableTest/res/drawable/icon.png
index cb40a1988b52..cb40a1988b52 100644
--- a/tests/VectorDrawableTest/res/drawable/icon.png
+++ b/tests/graphics/VectorDrawableTest/res/drawable/icon.png
Binary files differ
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_drawable04.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_drawable04.xml
index a0a801ca45d5..a0a801ca45d5 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_drawable04.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_drawable04.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_drawable04_false.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_drawable04_false.xml
index 3cf8e483eb51..3cf8e483eb51 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_drawable04_false.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_drawable04_false.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable01.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable01.xml
index 768fe39f26af..768fe39f26af 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable01.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable01.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable01_false.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable01_false.xml
index 96d378c26b47..96d378c26b47 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable01_false.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable01_false.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable02.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable02.xml
index 6a67b0232a4d..6a67b0232a4d 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable02.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable02.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable02_false.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable02_false.xml
index b722da15d9d1..b722da15d9d1 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable02_false.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable02_false.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable03.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable03.xml
index e24dd1fc5b49..e24dd1fc5b49 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable03.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable03.xml
diff --git a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable03_false.xml b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable03_false.xml
index e788bc261789..e788bc261789 100644
--- a/tests/VectorDrawableTest/res/drawable/state_animation_vector_drawable03_false.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/state_animation_vector_drawable03_false.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable01.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable01.xml
index 89afde22f635..89afde22f635 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable01.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable01.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable02.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable02.xml
index f5d647ceaa8f..f5d647ceaa8f 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable02.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable02.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable03.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable03.xml
index 7cddda177b39..7cddda177b39 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable03.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable03.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable04.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable04.xml
index 0f3fb95f5d46..0f3fb95f5d46 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable04.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable04.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable05.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable05.xml
index f94ecba1ffb8..f94ecba1ffb8 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable05.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable05.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable06.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable06.xml
index 98b623572eb7..98b623572eb7 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable06.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable06.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable07.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable07.xml
index 88c4a1eaea48..88c4a1eaea48 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable07.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable07.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable08.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable08.xml
index 75529e2fd4ed..75529e2fd4ed 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable08.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable08.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable09.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable09.xml
index 853a77000d4c..853a77000d4c 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable09.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable09.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable10.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable10.xml
index 83ed194a14e4..83ed194a14e4 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable10.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable10.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable11.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable11.xml
index b3d7d8eed349..b3d7d8eed349 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable11.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable11.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable12.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable12.xml
index 69ae62c19aba..69ae62c19aba 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable12.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable12.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable13.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable13.xml
index 2468a1b303cb..2468a1b303cb 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable13.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable13.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable14.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable14.xml
index 01e24d302288..01e24d302288 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable14.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable14.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable15.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable15.xml
index 4bab2e37898a..4bab2e37898a 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable15.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable15.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable16.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable16.xml
index 107cda2ca233..107cda2ca233 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable16.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable16.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable17.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable17.xml
index 801954986ab7..801954986ab7 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable17.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable17.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable18.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable18.xml
index c93bdb94f646..c93bdb94f646 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable18.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable18.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable19.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable19.xml
index 996b6beff8bf..996b6beff8bf 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable19.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable19.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable20.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable20.xml
index 58021446bdc5..58021446bdc5 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable20.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable20.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable21.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable21.xml
index 5626b44e4b50..5626b44e4b50 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable21.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable21.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable22.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable22.xml
index 5b40d0d07013..5b40d0d07013 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable22.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable22.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable23.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable23.xml
index 6ab6ffd2b1fb..6ab6ffd2b1fb 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable23.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable23.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable24.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable24.xml
index f0b46994dc23..f0b46994dc23 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable24.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable24.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable25.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable25.xml
index f46d14eb89f1..f46d14eb89f1 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable25.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable25.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable26.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable26.xml
index 29cff525543b..29cff525543b 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable26.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable26.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable27.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable27.xml
index b0f0cee86a73..b0f0cee86a73 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable27.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable27.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable28.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable28.xml
index 2d2783b8f41e..2d2783b8f41e 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable28.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable28.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable29.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable29.xml
index c0e9b2abba90..c0e9b2abba90 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable29.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable29.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable30.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable30.xml
index 3dff196e96ec..3dff196e96ec 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable30.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable30.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_favorite.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_favorite.xml
index f93486e70c56..f93486e70c56 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_favorite.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_favorite.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_group_clip.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_group_clip.xml
index 9574d7e524c3..9574d7e524c3 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_group_clip.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_group_clip.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_grouping_1.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_grouping_1.xml
index 7839ad19d0f1..7839ad19d0f1 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_grouping_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_grouping_1.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_linear_progress_bar.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_linear_progress_bar.xml
index a6da114b511b..a6da114b511b 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_linear_progress_bar.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_linear_progress_bar.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_progress_bar.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_progress_bar.xml
index 22cd9959ade8..22cd9959ade8 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_progress_bar.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_progress_bar.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale0.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale0.xml
index 88bf777bdaea..88bf777bdaea 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale0.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale0.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale1.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale1.xml
index 530c73b20e44..530c73b20e44 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale1.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale1.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale2.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale2.xml
index 200eb617a9e8..200eb617a9e8 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale2.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale2.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale3.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale3.xml
index a40fc9c21595..a40fc9c21595 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_drawable_scale3.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_drawable_scale3.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_create.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_create.xml
index 0a6cedc5ced1..0a6cedc5ced1 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_create.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_create.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_delete.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_delete.xml
index 94c10dfd6656..94c10dfd6656 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_delete.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_delete.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_filltype_evenodd.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_filltype_evenodd.xml
index d5d86d80269b..d5d86d80269b 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_filltype_evenodd.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_filltype_evenodd.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_filltype_nonzero.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_filltype_nonzero.xml
index 9754e4bed48b..9754e4bed48b 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_filltype_nonzero.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_filltype_nonzero.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_1.xml
index d67aca7cdaec..d67aca7cdaec 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_1.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml
index 2fa440a84cff..2fa440a84cff 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_2.xml
index abf3c7a86b80..abf3c7a86b80 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_2.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml
index 5a43f804a6e0..5a43f804a6e0 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_3.xml
index 5f9726f72c03..5f9726f72c03 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_3.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml
index e8de7c2b1f5d..e8de7c2b1f5d 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_heart.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_heart.xml
index 870e508319e2..870e508319e2 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_heart.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_heart.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_schedule.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_schedule.xml
index 3f79968d88a9..3f79968d88a9 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_schedule.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_schedule.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_settings.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_settings.xml
index 7bd6304f78e4..7bd6304f78e4 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_settings.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_settings.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_state_list_simple.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_state_list_simple.xml
index 9f08fe83015e..9f08fe83015e 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_state_list_simple.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_state_list_simple.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_state_list_theme.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_state_list_theme.xml
index b1ed85025040..b1ed85025040 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_icon_state_list_theme.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_icon_state_list_theme.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_test01.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_test01.xml
index dd71ef0e88f5..dd71ef0e88f5 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_test01.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_test01.xml
diff --git a/tests/VectorDrawableTest/res/drawable/vector_test02.xml b/tests/graphics/VectorDrawableTest/res/drawable/vector_test02.xml
index e4f48de862fa..e4f48de862fa 100644
--- a/tests/VectorDrawableTest/res/drawable/vector_test02.xml
+++ b/tests/graphics/VectorDrawableTest/res/drawable/vector_test02.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml b/tests/graphics/VectorDrawableTest/res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml
index d3728c475d9b..d3728c475d9b 100644
--- a/tests/VectorDrawableTest/res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/btn_radio_to_off_mtrl_animation_interpolator_0.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/custom_path_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator.xml
index 489596c4fe5b..489596c4fe5b 100644
--- a/tests/VectorDrawableTest/res/interpolator/custom_path_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/custom_path_interpolator_favorite.xml b/tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator_favorite.xml
index 3d125e490573..3d125e490573 100644
--- a/tests/VectorDrawableTest/res/interpolator/custom_path_interpolator_favorite.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator_favorite.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/custom_path_interpolator_grouping_1_01.xml b/tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator_grouping_1_01.xml
index 6877bd96285d..6877bd96285d 100644
--- a/tests/VectorDrawableTest/res/interpolator/custom_path_interpolator_grouping_1_01.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/custom_path_interpolator_grouping_1_01.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_rotation_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_rotation_interpolator.xml
index f798a84087c6..f798a84087c6 100644
--- a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_rotation_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_rotation_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_scalex_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_scalex_interpolator.xml
index 314cf448b9eb..314cf448b9eb 100644
--- a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_scalex_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_arrows_1_scalex_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_1_rotation_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_1_rotation_interpolator.xml
index f798a84087c6..f798a84087c6 100644
--- a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_1_rotation_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_1_rotation_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_2_pathdata_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_2_pathdata_interpolator.xml
index f798a84087c6..f798a84087c6 100644
--- a/tests/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_2_pathdata_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/ic_rotate_2_portrait_v2_device_2_pathdata_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/ic_signal_airplane_v2_path_1_1_pathdata_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/ic_signal_airplane_v2_path_1_1_pathdata_interpolator.xml
index 4917f770cae1..4917f770cae1 100644
--- a/tests/VectorDrawableTest/res/interpolator/ic_signal_airplane_v2_path_1_1_pathdata_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/ic_signal_airplane_v2_path_1_1_pathdata_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/trim_end_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/trim_end_interpolator.xml
index 54b5ebd7aa86..54b5ebd7aa86 100644
--- a/tests/VectorDrawableTest/res/interpolator/trim_end_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/trim_end_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/interpolator/trim_start_interpolator.xml b/tests/graphics/VectorDrawableTest/res/interpolator/trim_start_interpolator.xml
index c06c196088dd..c06c196088dd 100644
--- a/tests/VectorDrawableTest/res/interpolator/trim_start_interpolator.xml
+++ b/tests/graphics/VectorDrawableTest/res/interpolator/trim_start_interpolator.xml
diff --git a/tests/VectorDrawableTest/res/layout/activity_animated_vector_drawable_attr.xml b/tests/graphics/VectorDrawableTest/res/layout/activity_animated_vector_drawable_attr.xml
index 92680d5da557..92680d5da557 100644
--- a/tests/VectorDrawableTest/res/layout/activity_animated_vector_drawable_attr.xml
+++ b/tests/graphics/VectorDrawableTest/res/layout/activity_animated_vector_drawable_attr.xml
diff --git a/tests/VectorDrawableTest/res/values/attrs.xml b/tests/graphics/VectorDrawableTest/res/values/attrs.xml
index 98bf99217b11..98bf99217b11 100644
--- a/tests/VectorDrawableTest/res/values/attrs.xml
+++ b/tests/graphics/VectorDrawableTest/res/values/attrs.xml
diff --git a/tests/VectorDrawableTest/res/values/colors.xml b/tests/graphics/VectorDrawableTest/res/values/colors.xml
index 6eb303649c39..6eb303649c39 100644
--- a/tests/VectorDrawableTest/res/values/colors.xml
+++ b/tests/graphics/VectorDrawableTest/res/values/colors.xml
diff --git a/tests/VectorDrawableTest/res/values/strings.xml b/tests/graphics/VectorDrawableTest/res/values/strings.xml
index a550549faa37..a550549faa37 100644
--- a/tests/VectorDrawableTest/res/values/strings.xml
+++ b/tests/graphics/VectorDrawableTest/res/values/strings.xml
diff --git a/tests/VectorDrawableTest/res/values/styles.xml b/tests/graphics/VectorDrawableTest/res/values/styles.xml
index 8adc03460d90..8adc03460d90 100644
--- a/tests/VectorDrawableTest/res/values/styles.xml
+++ b/tests/graphics/VectorDrawableTest/res/values/styles.xml
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedStateVectorDrawableTest.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedStateVectorDrawableTest.java
index 538655552d28..538655552d28 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedStateVectorDrawableTest.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedStateVectorDrawableTest.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableAttr.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableAttr.java
index 47ca482b7771..47ca482b7771 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableAttr.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableAttr.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java
index 047e494a9551..047e494a9551 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableTest.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableTest.java
index 8f538aee78aa..8f538aee78aa 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableTest.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableTest.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/BitmapDrawableDupe.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/BitmapDrawableDupe.java
index 36c8f2b4adf2..36c8f2b4adf2 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/BitmapDrawableDupe.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/BitmapDrawableDupe.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/BoundsCheckTest.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/BoundsCheckTest.java
index e2d77ca7e40b..e2d77ca7e40b 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/BoundsCheckTest.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/BoundsCheckTest.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/ScaleDrawableTests.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/ScaleDrawableTests.java
index c5be6c417f69..c5be6c417f69 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/ScaleDrawableTests.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/ScaleDrawableTests.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorCheckbox.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorCheckbox.java
index 0b3ea4d293d2..0b3ea4d293d2 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorCheckbox.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorCheckbox.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawable01.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawable01.java
index 85fc452add3e..85fc452add3e 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawable01.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawable01.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableAnimation.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableAnimation.java
index 93b06b6f047b..93b06b6f047b 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableAnimation.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableAnimation.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableDupPerf.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableDupPerf.java
index a00bc5e35c15..a00bc5e35c15 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableDupPerf.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableDupPerf.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java
index 0d2d2e48e4c9..0d2d2e48e4c9 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableStaticPerf.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableStaticPerf.java
index 9d3eded60721..9d3eded60721 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableStaticPerf.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableStaticPerf.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableTest.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableTest.java
index 704d3d76bbec..704d3d76bbec 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableTest.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawableTest.java
diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorPathChecking.java b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorPathChecking.java
index 34301923b0b6..34301923b0b6 100644
--- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorPathChecking.java
+++ b/tests/graphics/VectorDrawableTest/src/com/android/test/dynamic/VectorPathChecking.java
diff --git a/tools/aapt2/cmd/Link.cpp b/tools/aapt2/cmd/Link.cpp
index 9ca546fc8d89..45dd02c9b7be 100644
--- a/tools/aapt2/cmd/Link.cpp
+++ b/tools/aapt2/cmd/Link.cpp
@@ -389,7 +389,7 @@ ResourceFileFlattener::ResourceFileFlattener(const ResourceFileFlattenerOptions&
// Build up the rules for degrading newer attributes to older ones.
// NOTE(adamlesinski): These rules are hardcoded right now, but they should be
// generated from the attribute definitions themselves (b/62028956).
- if (const SymbolTable::Symbol* s = symm->FindById(R::attr::paddingHorizontal)) {
+ if (symm->FindById(R::attr::paddingHorizontal)) {
std::vector<ReplacementAttr> replacements{
{"paddingLeft", R::attr::paddingLeft, Attribute(android::ResTable_map::TYPE_DIMENSION)},
{"paddingRight", R::attr::paddingRight, Attribute(android::ResTable_map::TYPE_DIMENSION)},
@@ -398,7 +398,7 @@ ResourceFileFlattener::ResourceFileFlattener(const ResourceFileFlattenerOptions&
util::make_unique<DegradeToManyRule>(std::move(replacements));
}
- if (const SymbolTable::Symbol* s = symm->FindById(R::attr::paddingVertical)) {
+ if (symm->FindById(R::attr::paddingVertical)) {
std::vector<ReplacementAttr> replacements{
{"paddingTop", R::attr::paddingTop, Attribute(android::ResTable_map::TYPE_DIMENSION)},
{"paddingBottom", R::attr::paddingBottom, Attribute(android::ResTable_map::TYPE_DIMENSION)},
@@ -407,7 +407,7 @@ ResourceFileFlattener::ResourceFileFlattener(const ResourceFileFlattenerOptions&
util::make_unique<DegradeToManyRule>(std::move(replacements));
}
- if (const SymbolTable::Symbol* s = symm->FindById(R::attr::layout_marginHorizontal)) {
+ if (symm->FindById(R::attr::layout_marginHorizontal)) {
std::vector<ReplacementAttr> replacements{
{"layout_marginLeft", R::attr::layout_marginLeft,
Attribute(android::ResTable_map::TYPE_DIMENSION)},
@@ -418,7 +418,7 @@ ResourceFileFlattener::ResourceFileFlattener(const ResourceFileFlattenerOptions&
util::make_unique<DegradeToManyRule>(std::move(replacements));
}
- if (const SymbolTable::Symbol* s = symm->FindById(R::attr::layout_marginVertical)) {
+ if (symm->FindById(R::attr::layout_marginVertical)) {
std::vector<ReplacementAttr> replacements{
{"layout_marginTop", R::attr::layout_marginTop,
Attribute(android::ResTable_map::TYPE_DIMENSION)},
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index c4f6e70c0cc9..0b16e2c7efe4 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -338,7 +338,7 @@ static bool VerifyUsesFeature(xml::Element* el, android::SourcePathDiagnostics*
}
bool has_gl_es_version = false;
- if (xml::Attribute* attr = el->FindAttribute(xml::kSchemaAndroid, "glEsVersion")) {
+ if (el->FindAttribute(xml::kSchemaAndroid, "glEsVersion")) {
if (has_name) {
diag->Error(android::DiagMessage(el->line_number)
<< "cannot define both android:name and android:glEsVersion in <uses-feature>");
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/HexEncoding.java b/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/HexEncoding.java
new file mode 100644
index 000000000000..cc2fb7bbf236
--- /dev/null
+++ b/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/HexEncoding.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2014 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 libcore.util;
+
+/**
+ * Hexadecimal encoding where each byte is represented by two hexadecimal digits.
+ * @hide
+ */
+public class HexEncoding {
+
+ private static final char[] LOWER_CASE_DIGITS = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
+ };
+
+ private static final char[] UPPER_CASE_DIGITS = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+ };
+
+ /** Hidden constructor to prevent instantiation. */
+ private HexEncoding() {}
+
+ /**
+ * Encodes the provided byte as a two-digit hexadecimal String value.
+ *
+ * @param b byte to encode
+ * @param upperCase {@code true} to use uppercase letters, {@code false}
+ * for lowercase
+ * @return the encoded string
+ *
+ * @hide
+ */
+ public static String encodeToString(byte b, boolean upperCase) {
+ char[] digits = upperCase ? UPPER_CASE_DIGITS : LOWER_CASE_DIGITS;
+ char[] buf = new char[2]; // We always want two digits.
+ buf[0] = digits[(b >> 4) & 0xf];
+ buf[1] = digits[b & 0xf];
+ return new String(buf, 0, 2);
+ }
+
+ /**
+ * Encodes the provided data as a sequence of hexadecimal characters.
+ *
+ * @param data byte array to encode
+ * @return the encoded data, using uppercase letters
+ *
+ * @hide
+ */
+ public static char[] encode(byte[] data) {
+ return encode(data, 0, data.length, true /* upperCase */);
+ }
+
+ /**
+ * Encodes the provided data as a sequence of hexadecimal characters.
+ *
+ * @param data byte array to encode
+ * @param upperCase {@code true} to use uppercase letters, {@code false}
+ * for lowercase
+ * @return the encoded data
+ *
+ * @hide
+ */
+ public static char[] encode(byte[] data, boolean upperCase) {
+ return encode(data, 0, data.length, upperCase);
+ }
+
+ /**
+ * Encodes the provided data as a sequence of hexadecimal characters.
+ *
+ * @param data byte array containing the data to encode
+ * @param offset offset of the data to encode in the {@code data} array
+ * @param len length of the data to encode in the {@code data} array
+ * @return the encoded data, using uppercase letters
+ *
+ * @hide
+ */
+ public static char[] encode(byte[] data, int offset, int len) {
+ return encode(data, offset, len, true /* upperCase */);
+ }
+
+ /**
+ * Encodes the provided data as a sequence of hexadecimal characters.
+ */
+ private static char[] encode(byte[] data, int offset, int len, boolean upperCase) {
+ char[] digits = upperCase ? UPPER_CASE_DIGITS : LOWER_CASE_DIGITS;
+ char[] result = new char[len * 2];
+ for (int i = 0; i < len; i++) {
+ byte b = data[offset + i];
+ int resultIndex = 2 * i;
+ result[resultIndex] = (digits[(b >> 4) & 0x0f]);
+ result[resultIndex + 1] = (digits[b & 0x0f]);
+ }
+
+ return result;
+ }
+
+ /**
+ * Encodes the provided data as a sequence of hexadecimal characters.
+ *
+ * @param data byte array to encode
+ * @return the encoded data, using uppercase letters
+ *
+ * @hide
+ */
+ public static String encodeToString(byte[] data) {
+ return encodeToString(data, true /* upperCase */);
+ }
+
+ /**
+ * Encodes the provided data as a sequence of hexadecimal characters.
+ *
+ * @param data byte array to encode.
+ * @param upperCase {@code true} to use uppercase letters, {@code false}
+ * for lowercase
+ * @return the encoded data
+ *
+ * @hide
+ */
+ public static String encodeToString(byte[] data, boolean upperCase) {
+ return new String(encode(data, upperCase));
+ }
+
+ /**
+ * Decodes the provided hexadecimal sequence. Odd-length inputs are not
+ * allowed.
+ *
+ * @param encoded string of hexadecimal characters to decode. Letters
+ * can be either uppercase or lowercase.
+ * @return the decoded data
+ * @throws IllegalArgumentException if the input is malformed
+ *
+ * @hide
+ */
+ public static byte[] decode(String encoded) throws IllegalArgumentException {
+ return decode(encoded.toCharArray());
+ }
+
+ /**
+ * Decodes the provided hexadecimal sequence.
+ *
+ * @param encoded string of hexadecimal characters to decode. Letters
+ * can be either uppercase or lowercase.
+ * @param allowSingleChar If {@code true} odd-length inputs are allowed and
+ * the first character is interpreted as the lower bits of the first
+ * result byte. If {@code false} odd-length inputs are not allowed.
+ * @return the decoded data
+ * @throws IllegalArgumentException if the input is malformed
+ *
+ * @hide
+ */
+ public static byte[] decode(String encoded, boolean allowSingleChar)
+ throws IllegalArgumentException {
+ return decode(encoded.toCharArray(), allowSingleChar);
+ }
+
+ /**
+ * Decodes the provided hexadecimal sequence. Odd-length inputs are not
+ * allowed.
+ *
+ * @param encoded char array of hexadecimal characters to decode. Letters
+ * can be either uppercase or lowercase.
+ * @return the decoded data
+ * @throws IllegalArgumentException if the input is malformed
+ *
+ * @hide
+ */
+ public static byte[] decode(char[] encoded) throws IllegalArgumentException {
+ return decode(encoded, false);
+ }
+
+ /**
+ * Decodes the provided hexadecimal sequence.
+ *
+ * @param encoded char array of hexadecimal characters to decode. Letters
+ * can be either uppercase or lowercase.
+ * @param allowSingleChar If {@code true} odd-length inputs are allowed and
+ * the first character is interpreted as the lower bits of the first
+ * result byte. If {@code false} odd-length inputs are not allowed.
+ * @return the decoded data
+ * @throws IllegalArgumentException if the input is malformed
+ *
+ * @hide
+ */
+ public static byte[] decode(char[] encoded, boolean allowSingleChar)
+ throws IllegalArgumentException {
+ int encodedLength = encoded.length;
+ int resultLengthBytes = (encodedLength + 1) / 2;
+ byte[] result = new byte[resultLengthBytes];
+
+ int resultOffset = 0;
+ int i = 0;
+ if (allowSingleChar) {
+ if ((encodedLength % 2) != 0) {
+ // Odd number of digits -- the first digit is the lower 4 bits of the first result
+ // byte.
+ result[resultOffset++] = (byte) toDigit(encoded, i);
+ i++;
+ }
+ } else {
+ if ((encodedLength % 2) != 0) {
+ throw new IllegalArgumentException("Invalid input length: " + encodedLength);
+ }
+ }
+
+ for (; i < encodedLength; i += 2) {
+ result[resultOffset++] = (byte) ((toDigit(encoded, i) << 4) | toDigit(encoded, i + 1));
+ }
+
+ return result;
+ }
+
+ private static int toDigit(char[] str, int offset) throws IllegalArgumentException {
+ // NOTE: that this isn't really a code point in the traditional sense, since we're
+ // just rejecting surrogate pairs outright.
+ int pseudoCodePoint = str[offset];
+
+ if ('0' <= pseudoCodePoint && pseudoCodePoint <= '9') {
+ return pseudoCodePoint - '0';
+ } else if ('a' <= pseudoCodePoint && pseudoCodePoint <= 'f') {
+ return 10 + (pseudoCodePoint - 'a');
+ } else if ('A' <= pseudoCodePoint && pseudoCodePoint <= 'F') {
+ return 10 + (pseudoCodePoint - 'A');
+ }
+
+ throw new IllegalArgumentException("Illegal char: " + str[offset] + " at offset " + offset);
+ }
+}