diff options
Diffstat (limited to 'libs')
183 files changed, 3696 insertions, 1476 deletions
diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt index 3aefcd5ec6c0..9087da34d259 100644 --- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt +++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/BubbleTaskViewListenerTest.kt @@ -552,7 +552,9 @@ class BubbleTaskViewListenerTest { private fun createAppBubble(usePendingIntent: Boolean = false): Bubble { val target = Intent(context, TestActivity::class.java) + val component = ComponentName(context, TestActivity::class.java) target.setPackage(context.packageName) + target.setComponent(component) if (usePendingIntent) { // Robolectric doesn't seem to play nice with PendingIntents, have to mock it. val pendingIntent = mock<PendingIntent>() diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt index 7b5831376dc0..14c15210252a 100644 --- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt +++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt @@ -19,7 +19,9 @@ package com.android.wm.shell.bubbles.bar import android.animation.AnimatorTestRule import android.content.Context import android.content.pm.LauncherApps +import android.graphics.Insets import android.graphics.PointF +import android.graphics.Rect import android.os.Handler import android.os.UserManager import android.view.IWindowManager @@ -61,6 +63,7 @@ import com.android.wm.shell.common.TestShellExecutor import com.android.wm.shell.shared.TransactionPool import com.android.wm.shell.shared.animation.PhysicsAnimatorTestUtils import com.android.wm.shell.shared.bubbles.BubbleBarLocation +import com.android.wm.shell.shared.bubbles.DeviceConfig import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit @@ -80,6 +83,10 @@ import org.mockito.kotlin.whenever @SmallTest @RunWith(AndroidJUnit4::class) class BubbleBarLayerViewTest { + companion object { + const val SCREEN_WIDTH = 2000 + const val SCREEN_HEIGHT = 1000 + } @get:Rule val animatorTestRule: AnimatorTestRule = AnimatorTestRule(this) @@ -111,6 +118,16 @@ class BubbleBarLayerViewTest { bubblePositioner = BubblePositioner(context, windowManager) bubblePositioner.setShowingInBubbleBar(true) + val deviceConfig = + DeviceConfig( + windowBounds = Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), + isLargeScreen = true, + isSmallTablet = false, + isLandscape = true, + isRtl = false, + insets = Insets.of(10, 20, 30, 40) + ) + bubblePositioner.update(deviceConfig) testBubblesList = mutableListOf() val bubbleData = mock<BubbleData>() @@ -313,6 +330,48 @@ class BubbleBarLayerViewTest { assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) } + @Test + fun testUpdateExpandedView_updateLocation() { + bubblePositioner.bubbleBarLocation = BubbleBarLocation.RIGHT + val bubble = createBubble("first") + + getInstrumentation().runOnMainSync { + bubbleBarLayerView.showExpandedView(bubble) + } + waitForExpandedViewAnimation() + + val previousX = bubble.bubbleBarExpandedView!!.x + + bubblePositioner.bubbleBarLocation = BubbleBarLocation.LEFT + getInstrumentation().runOnMainSync { + bubbleBarLayerView.updateExpandedView() + } + + assertThat(bubble.bubbleBarExpandedView!!.x).isNotEqualTo(previousX) + } + + @Test + fun testUpdatedExpandedView_updateLocation_skipWhileAnimating() { + bubblePositioner.bubbleBarLocation = BubbleBarLocation.RIGHT + val bubble = createBubble("first") + + getInstrumentation().runOnMainSync { + bubbleBarLayerView.showExpandedView(bubble) + } + waitForExpandedViewAnimation() + + val previousX = bubble.bubbleBarExpandedView!!.x + bubble.bubbleBarExpandedView!!.isAnimating = true + + bubblePositioner.bubbleBarLocation = BubbleBarLocation.LEFT + getInstrumentation().runOnMainSync { + bubbleBarLayerView.updateExpandedView() + } + + // Expanded view is not updated while animating + assertThat(bubble.bubbleBarExpandedView!!.x).isEqualTo(previousX) + } + private fun createBubble(key: String): Bubble { val bubbleTaskView = FakeBubbleTaskViewFactory(context, mainExecutor).create() val bubbleBarExpandedView = diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml index d50a14cf5dae..c2aa146d6437 100644 --- a/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml +++ b/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml @@ -79,7 +79,7 @@ android:layout_marginEnd="4dp"> <Button - android:layout_width="94dp" + android:layout_width="108dp" android:layout_height="60dp" android:id="@+id/maximize_menu_size_toggle_button" style="?android:attr/buttonBarButtonStyle" @@ -126,7 +126,7 @@ <Button android:id="@+id/maximize_menu_snap_left_button" style="?android:attr/buttonBarButtonStyle" - android:layout_width="41dp" + android:layout_width="48dp" android:layout_height="@dimen/desktop_mode_maximize_menu_button_height" android:layout_marginEnd="4dp" android:background="@drawable/desktop_mode_maximize_menu_button_background" @@ -137,7 +137,7 @@ <Button android:id="@+id/maximize_menu_snap_right_button" style="?android:attr/buttonBarButtonStyle" - android:layout_width="41dp" + android:layout_width="48dp" android:layout_height="@dimen/desktop_mode_maximize_menu_button_height" android:background="@drawable/desktop_mode_maximize_menu_button_background" android:importantForAccessibility="yes" diff --git a/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml b/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml index f6256e6bc5e7..ed5b339a81d4 100644 --- a/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml +++ b/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml @@ -72,7 +72,7 @@ android:layout_height="wrap_content" android:textSize="12sp" android:textFontWeight="400" - android:lineHeight="16dp" + android:lineHeight="28dp" android:layout_gravity="center_horizontal" android:layout_marginBottom="16dp" android:textColor="@androidprv:color/materialColorOnSurfaceVariant" @@ -113,12 +113,13 @@ <Button android:id="@+id/open_by_default_settings_dialog_confirm_button" android:layout_width="wrap_content" - android:layout_height="36dp" + android:layout_height="wrap_content" + android:minHeight="48dp" android:text="@string/open_by_default_dialog_dismiss_button_text" android:layout_gravity="end" android:layout_marginHorizontal="24dp" - android:layout_marginTop="32dp" - android:layout_marginBottom="24dp" + android:layout_marginTop="26dp" + android:layout_marginBottom="18dp" android:textSize="14sp" android:textFontWeight="500" android:textColor="@androidprv:color/materialColorOnPrimary" diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml index 0f4264567193..4dffce59aec6 100644 --- a/libs/WindowManager/Shell/res/values-af/strings.xml +++ b/libs/WindowManager/Shell/res/values-af/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Links 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Links 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Volskerm regs"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ruil apps om"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Volskerm bo"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Bo 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bo 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Herbegin"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Moenie weer wys nie"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dubbeltik om\nhierdie app te skuif"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimeer"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Maak klein"</string> - <string name="close_button_text" msgid="2913281996024033299">"Maak toe"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Terug"</string> <string name="handle_text" msgid="4419667835599523257">"Apphandvatsel"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikoon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Verander grootte van linkerkantse venster"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Verander grootte van regterkantse venster"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimeer of stel venstergrootte terug"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimeer of stel venstergrootte terug"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimeer appvenster"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Maak By Verstek Oop-instellings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Kies hoe om webskakels vir hierdie app oop te maak"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In die app"</string> diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml index be02f4375e3b..0881e778fa52 100644 --- a/libs/WindowManager/Shell/res/values-am/strings.xml +++ b/libs/WindowManager/Shell/res/values-am/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ግራ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ግራ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"የቀኝ ሙሉ ማያ ገፅ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"መተግበሪያዎችን ይቀያይሩ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"የላይ ሙሉ ማያ ገፅ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ከላይ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ከላይ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"እንደገና ያስጀምሩ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ዳግም አታሳይ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ይህን መተግበሪያ\nለማንቀሳቀስ ሁለቴ መታ ያድርጉ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"አስፋ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"አሳንስ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ዝጋ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ተመለስ"</string> <string name="handle_text" msgid="4419667835599523257">"የመተግበሪያ መያዣ"</string> <string name="app_icon_text" msgid="2823268023931811747">"የመተግበሪያ አዶ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"መስኮትን ወደ ግራ መጠን ቀይር"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"መስኮትን ወደ ቀኝ መጠን ቀይር"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"የመተግበሪያ መስኮትን አሳንስ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"በነባሪ ቅንብሮች ክፈት"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ለዚህ የድር መተግበሪያ አገናኙን እንዴት እንደሚከፍቱ ይምረጡ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"በመተግበሪያው ውስጥ"</string> diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml index 16809221ca77..9cc49aa144b5 100644 --- a/libs/WindowManager/Shell/res/values-ar/strings.xml +++ b/libs/WindowManager/Shell/res/values-ar/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ضبط حجم النافذة اليسرى ليكون ٥٠%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ضبط حجم النافذة اليسرى ليكون ٣٠%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"عرض النافذة اليمنى بملء الشاشة"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"تبديل التطبيقات"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"عرض النافذة العلوية بملء الشاشة"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ضبط حجم النافذة العلوية ليكون ٧٠%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ضبط حجم النافذة العلوية ليكون ٥٠%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"إعادة التشغيل"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"عدم عرض مربّع حوار التأكيد مجددًا"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"انقر مرّتَين لنقل\nهذا التطبيق."</string> - <string name="maximize_button_text" msgid="1650859196290301963">"تكبير"</string> - <string name="minimize_button_text" msgid="271592547935841753">"تصغير"</string> - <string name="close_button_text" msgid="2913281996024033299">"إغلاق"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"رجوع"</string> <string name="handle_text" msgid="4419667835599523257">"مقبض التطبيق"</string> <string name="app_icon_text" msgid="2823268023931811747">"رمز التطبيق"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغيير حجم النافذة بمحاذاتها إلى اليمين"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغيير حجم النافذة بمحاذاتها إلى اليسار"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"تكبير حجم النافذة أو استعادته"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"تكبير حجم النافذة أو استعادته"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"تصغير نافذة التطبيق"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"إعدادات الفتح تلقائيًا"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"اختيار طريقة فتح روابط الويب لهذا التطبيق"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"في التطبيق"</string> diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml index 0bc4a0a59239..c59753c7803f 100644 --- a/libs/WindowManager/Shell/res/values-as/strings.xml +++ b/libs/WindowManager/Shell/res/values-as/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"বাওঁফালৰ স্ক্ৰীনখন ৫০% কৰক"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"বাওঁফালৰ স্ক্ৰীনখন ৩০% কৰক"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"সোঁফালৰ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"এপ্সমূহ সলনাসলনি কৰক"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"শীৰ্ষ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"শীর্ষ স্ক্ৰীনখন ৭০% কৰক"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ স্ক্ৰীনখন ৫০% কৰক"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ৰিষ্টাৰ্ট কৰক"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"পুনৰাই নেদেখুৱাব"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"এই এপ্টো\nস্থানান্তৰ কৰিবলৈ দুবাৰ টিপক"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"সৰ্বাধিক মাত্ৰালৈ বঢ়াওক"</string> - <string name="minimize_button_text" msgid="271592547935841753">"মিনিমাইজ কৰক"</string> - <string name="close_button_text" msgid="2913281996024033299">"বন্ধ কৰক"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"উভতি যাওক"</string> <string name="handle_text" msgid="4419667835599523257">"এপৰ হেণ্ডেল"</string> <string name="app_icon_text" msgid="2823268023931811747">"এপৰ চিহ্ন"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"সোঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"বাওঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"এপ্ ৱিণ্ড’ মিনিমাইজ কৰক"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ডিফ’ল্ট ছেটিং খোলক"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"এই এপ্টোৰ বাবে কিদৰে ৱেব লিংক খুলিব পাৰি সেয়া বাছনি কৰক"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"এপ্টোত"</string> diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml index 2ccae4b20237..63e610b53420 100644 --- a/libs/WindowManager/Shell/res/values-az/strings.xml +++ b/libs/WindowManager/Shell/res/values-az/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Sol 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Sol 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Sağ tam ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Tətbiqləri dəyişin"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Yuxarı tam ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Yuxarı 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yuxarı 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Yenidən başladın"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Yenidən göstərməyin"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tətbiqi köçürmək üçün\niki dəfə toxunun"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Böyüdün"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Kiçildin"</string> - <string name="close_button_text" msgid="2913281996024033299">"Bağlayın"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Geriyə"</string> <string name="handle_text" msgid="4419667835599523257">"Tətbiq ləqəbi"</string> <string name="app_icon_text" msgid="2823268023931811747">"Tətbiq ikonası"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pəncərə ölçüsünü sola dəyişin"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pəncərə ölçüsünü sağa dəyişin"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Tətbiq pəncərəsini kiçildin"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Defolt ayarlarla açın"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu tətbiq üçün veb-linklərin necə açılacağını seçin"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Tətbiqdə"</string> diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml index b79b8605140d..7cb6f87dc97f 100644 --- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml +++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi ekran 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi ekran 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Režim celog ekrana za donji ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamenite mesta aplikacijama"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Režim celog ekrana za gornji ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji ekran 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji ekran 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restartuj"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikazuj ponovo"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvaput dodirnite da biste\npremestili ovu aplikaciju"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Uvećajte"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Umanjite"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zatvorite"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string> <string name="handle_text" msgid="4419667835599523257">"Identifikator aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promenite veličinu prozora nalevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promenite veličinu prozora nadesno"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Uvećajte ili vratite veličinu prozora"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Uvećajte ili vratite veličinu prozora"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Umanjite prozor aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Podešavanje Podrazumevano otvaraj"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja veb-linkova za ovu aplikaciju"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml index d26c37ba5e15..4f3da2b2f5d8 100644 --- a/libs/WindowManager/Shell/res/values-be/strings.xml +++ b/libs/WindowManager/Shell/res/values-be/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левы экран – 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левы экран – 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Правы экран – поўнаэкранны рэжым"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Пераключыць праграмы"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхні экран – поўнаэкранны рэжым"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхні экран – 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхні экран – 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Перазапусціць"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Больш не паказваць"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Каб перамясціць праграму,\nнацісніце двойчы"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Разгарнуць"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Згарнуць"</string> - <string name="close_button_text" msgid="2913281996024033299">"Закрыць"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Маркер праграмы"</string> <string name="app_icon_text" msgid="2823268023931811747">"Значок праграмы"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змяніць памер акна і перамясціць да левага краю"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змяніць памер акна і перамясціць да правага краю"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Разгарнуць акно ці аднавіць яго памер"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Разгарнуць акно ці аднавіць яго памер"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Згарнуць акно праграмы"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Налады параметра \"Адкрываць стандартна\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Выберыце, як гэта праграма будзе адкрываць вэб-спасылкі"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У праграме"</string> diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml index 9cc9db805728..3f867a22e13b 100644 --- a/libs/WindowManager/Shell/res/values-bg/strings.xml +++ b/libs/WindowManager/Shell/res/values-bg/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ляв екран: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ляв екран: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Десен екран: Показване на цял екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Размяна на приложенията"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Горен екран: Показване на цял екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горен екран: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горен екран: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Рестартиране"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Да не се показва отново"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Докоснете двукратно, за да\nпреместите това приложение"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Увеличаване"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Намаляване"</string> - <string name="close_button_text" msgid="2913281996024033299">"Затваряне"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Манипулатор за приложението"</string> <string name="app_icon_text" msgid="2823268023931811747">"Икона на приложението"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Преоразмеряване на прозореца наляво"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Преоразмеряване на прозореца надясно"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увеличаване или възстановяване на размера на прозореца"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Увеличаване или възстановяване на размера на прозореца"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Намаляване на прозореца на приложението"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Отваряне на настройките по подразбиране"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Изберете как да се отварят уеб връзките за това приложение"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"В приложението"</string> diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml index c1264d41105b..3967d4bfa591 100644 --- a/libs/WindowManager/Shell/res/values-bn/strings.xml +++ b/libs/WindowManager/Shell/res/values-bn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"৫০% বাকি আছে"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"৩০% বাকি আছে"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ডান দিকের অংশ নিয়ে পূর্ণ স্ক্রিন"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"অ্যাপ পাল্টান"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"উপর দিকের অংশ নিয়ে পূর্ণ স্ক্রিন"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"শীর্ষ ৭০%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ ৫০%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"রিস্টার্ট করুন"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"আর দেখতে চাই না"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"এই অ্যাপ সরাতে\nডবল ট্যাপ করুন"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"বড় করুন"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ছোট করুন"</string> - <string name="close_button_text" msgid="2913281996024033299">"বন্ধ করুন"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ফিরে যান"</string> <string name="handle_text" msgid="4419667835599523257">"অ্যাপের হ্যান্ডেল"</string> <string name="app_icon_text" msgid="2823268023931811747">"অ্যাপ আইকন"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"বাঁদিকে উইন্ডো রিসাইজ করুন"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ডানদিকে উইন্ডো রিসাইজ করুন"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"অ্যাপ উইন্ডো ছোট করুন"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ডিফল্ট হিসেবে থাকা সেটিংস খুলুন"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"এই অ্যাপের জন্য কীভাবে ওয়েব লিঙ্ক খুলবেন তা বেছে নিন"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"অ্যাপের মধ্যে"</string> diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml index 7c912b6759db..6b59d91e741f 100644 --- a/libs/WindowManager/Shell/res/values-bs/strings.xml +++ b/libs/WindowManager/Shell/res/values-bs/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Lijevo 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Lijevo 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desno cijeli ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamjena aplikacija"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Gore cijeli ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gore 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gore 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Ponovo pokreni"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikazuj ponovo"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dodirnite dvaput da\npomjerite aplikaciju"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimiziranje"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimiziranje"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zatvaranje"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string> <string name="handle_text" msgid="4419667835599523257">"Ručica aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promjena veličine prozora i poravnanje lijevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promjena veličine prozora i poravnanje desno"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziranje ili vraćanje veličine prozora"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimiziranje ili vraćanje veličine prozora"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimiziranje prozora aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvaranje prema zadanim postavkama"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja web linkova za ovu aplikaciju"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml index 2c2a1776018c..955e5cc6ecbc 100644 --- a/libs/WindowManager/Shell/res/values-ca/strings.xml +++ b/libs/WindowManager/Shell/res/values-ca/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Pantalla esquerra al 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Pantalla esquerra al 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla dreta completa"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Canvia les aplicacions"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Pantalla superior al 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Pantalla superior al 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reinicia"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"No ho tornis a mostrar"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Fes doble toc per\nmoure aquesta aplicació"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximitza"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimitza"</string> - <string name="close_button_text" msgid="2913281996024033299">"Tanca"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Enrere"</string> <string name="handle_text" msgid="4419667835599523257">"Identificador de l\'aplicació"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icona de l\'aplicació"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Canvia la mida de la finestra a l\'esquerra"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Canvia la mida de la finestra a la dreta"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximitza o restaura la mida de la finestra"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximitza o restaura la mida de la finestra"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimitza la finestra de l\'aplicació"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Configuració d\'obertura predeterminada"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Tria com vols obrir els enllaços web per a aquesta aplicació"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"A l\'aplicació"</string> diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml index e47d1f60137e..673f7fc2f8c1 100644 --- a/libs/WindowManager/Shell/res/values-cs/strings.xml +++ b/libs/WindowManager/Shell/res/values-cs/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % vlevo"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % vlevo"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pravá část na celou obrazovku"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zaměnit aplikace"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Horní část na celou obrazovku"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % nahoře"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % nahoře"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restartovat"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Tuto zprávu příště nezobrazovat"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvojitým klepnutím\npřesunete aplikaci"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximalizovat"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalizovat"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zavřít"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Zpět"</string> <string name="handle_text" msgid="4419667835599523257">"Popisovač aplikace"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikace"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Přichytit okno vlevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Přichytit okno vpravo"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovat nebo obnovit velikost okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximalizovat nebo obnovit velikost okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalizovat okno aplikace"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otevírat podle výchozího nastavení"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Určete, jak se v této aplikaci mají otevírat webové odkazy"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikaci"</string> diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml index f5656d58094f..635df334f9ff 100644 --- a/libs/WindowManager/Shell/res/values-da/strings.xml +++ b/libs/WindowManager/Shell/res/values-da/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Venstre 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Venstre 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Vis højre del i fuld skærm"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Byt apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Vis øverste del i fuld skærm"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Øverste 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Øverste 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Genstart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Vis ikke igen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tryk to gange\nfor at flytte appen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimér"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimer"</string> - <string name="close_button_text" msgid="2913281996024033299">"Luk"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tilbage"</string> <string name="handle_text" msgid="4419667835599523257">"Apphåndtag"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Juster størrelsen på vinduet til venstre"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Juster størrelsen på vinduet til højre"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gendan vinduesstørrelse"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimer eller gendan vinduesstørrelse"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimer appvindue"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Indstillinger for automatisk åbning"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Vælg, hvordan denne app skal åben weblinks"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string> diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml index 3762b4b28631..5be8b0b34993 100644 --- a/libs/WindowManager/Shell/res/values-de/strings.xml +++ b/libs/WindowManager/Shell/res/values-de/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % links"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % links"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Vollbild rechts"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apps austauschen"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Vollbild oben"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % oben"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % oben"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Neu starten"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Nicht mehr anzeigen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Zum Verschieben\ndoppeltippen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximieren"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimieren"</string> - <string name="close_button_text" msgid="2913281996024033299">"Schließen"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Zurück"</string> <string name="handle_text" msgid="4419667835599523257">"App-Ziehpunkt"</string> <string name="app_icon_text" msgid="2823268023931811747">"App-Symbol"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Fenstergröße nach links anpassen"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Fenstergröße nach rechts anpassen"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Fenstergröße maximieren oder wiederherstellen"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Fenstergröße maximieren oder wiederherstellen"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"App-Fenster minimieren"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Einstellungen für die Option „Standardmäßig öffnen“"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Festlegen, wie Weblinks für diese App geöffnet werden"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In der App"</string> diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml index 8e715d5c232e..bd3cf053836a 100644 --- a/libs/WindowManager/Shell/res/values-el/strings.xml +++ b/libs/WindowManager/Shell/res/values-el/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Αριστερή 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Αριστερή 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Δεξιά πλήρης οθόνη"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Εναλλαγή εφαρμογών"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Πάνω πλήρης οθόνη"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Πάνω 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Πάνω 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Επανεκκίνηση"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Να μην εμφανιστεί ξανά"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Πατήστε δύο φορές για\nμετακίνηση αυτής της εφαρμογής"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Μεγιστοποίηση"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Ελαχιστοποίηση"</string> - <string name="close_button_text" msgid="2913281996024033299">"Κλείσιμο"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Πίσω"</string> <string name="handle_text" msgid="4419667835599523257">"Λαβή εφαρμογής"</string> <string name="app_icon_text" msgid="2823268023931811747">"Εικονίδιο εφαρμογής"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Αλλαγή μεγέθους παραθύρου προς τα αριστερά"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Αλλαγή μεγέθους παραθύρου προς τα δεξιά"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ελαχιστοποίηση παραθύρου εφαρμογής"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Άνοιγμα ρυθμίσεων από προεπιλογή"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Επιλογή τρόπου ανοίγματος συνδέσμων ιστού για την εφαρμογή"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Στην εφαρμογή"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml index 75d2bf1ae5e3..b137d80dcd2b 100644 --- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don\'t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximise"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimise"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximise or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimise app window"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml index e552f95c20c6..9b9294dbeba8 100644 --- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml @@ -43,7 +43,8 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap Apps"</string> + <string name="accessibility_action_divider_swap_vertical" msgid="3644891227133372072">"Swap top app with bottom"</string> + <string name="accessibility_action_divider_swap_horizontal" msgid="2722197605446631628">"Swap left app with right"</string> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +113,10 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don’t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximize"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimize"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <string name="maximize_button_text" msgid="8106849394538234709">"Maximize <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="restore_button_text" msgid="5377571986086775288">"Restore <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="minimize_button_text" msgid="5213953162664451152">"Minimize <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="close_button_text" msgid="4544839489310949894">"Close <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App Icon"</string> @@ -150,8 +152,10 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximize or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximize or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimize app window"</string> + <string name="app_header_talkback_action_maximize_button_text" msgid="8776156791095878638">"Maximize app window size"</string> + <string name="app_header_talkback_action_restore_button_text" msgid="2153022340772980863">"Restore window size"</string> + <string name="app_header_talkback_action_minimize_button_text" msgid="7491054416186901764">"Minimize app window"</string> + <string name="app_header_talkback_action_close_button_text" msgid="5159612596378268926">"Close app window"</string> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml index 75d2bf1ae5e3..b137d80dcd2b 100644 --- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don\'t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximise"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimise"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximise or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimise app window"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml index 75d2bf1ae5e3..b137d80dcd2b 100644 --- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don\'t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximise"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimise"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximise or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimise app window"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml index c358ae447361..ebfdc6d0a780 100644 --- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml +++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Izquierda: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Izquierda: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla derecha completa"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Intercambiar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Superior: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"No volver a mostrar"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Presiona dos veces\npara mover esta app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Cerrar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="4419667835599523257">"Controlador de la app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícono de la app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ajustar el tamaño de la ventana hacia la izquierda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ajustar el tamaño de la ventana hacia la derecha"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restablecer el tamaño de la ventana"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar o restablecer el tamaño de la ventana"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar ventana de la app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir con la configuración predeterminada"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Elige cómo abrir vínculos web para esta app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"En la app"</string> diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml index 275d88d1ea8a..dfa7869434bc 100644 --- a/libs/WindowManager/Shell/res/values-es/strings.xml +++ b/libs/WindowManager/Shell/res/values-es/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Izquierda 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Izquierda 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla derecha completa"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Cambiar aplicaciones"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Superior 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"No volver a mostrar"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toca dos veces para\nmover esta aplicación"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Cerrar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="4419667835599523257">"Controlador de la aplicación"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icono de la aplicación"</string> @@ -134,7 +142,7 @@ <string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string> <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (vista para ordenadores)"</string> <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string> - <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar tamaño"</string> + <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Dividir pantalla"</string> <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"La aplicación no se puede mover aquí"</string> <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Inmersivo"</string> <string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Restaurar"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Cambiar tamaño de la ventana a la izquierda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Cambiar tamaño de la ventana a la derecha"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restaurar tamaño de la ventana"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar o restaurar tamaño de la ventana"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar ventana de la aplicación"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir con los ajustes predeterminados"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Elige cómo quieres abrir los enlaces web de esta aplicación"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"En la aplicación"</string> diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml index 3a330b3121ec..294b7fee9954 100644 --- a/libs/WindowManager/Shell/res/values-et/strings.xml +++ b/libs/WindowManager/Shell/res/values-et/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vasak: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vasak: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Parem täisekraan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Rakenduste vahetamine"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ülemine täisekraan"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Ülemine: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ülemine: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Taaskäivita"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ära kuva uuesti"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Rakenduse teisaldamiseks\ntopeltpuudutage"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimeeri"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimeeri"</string> - <string name="close_button_text" msgid="2913281996024033299">"Sule"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tagasi"</string> <string name="handle_text" msgid="4419667835599523257">"Rakenduse element"</string> <string name="app_icon_text" msgid="2823268023931811747">"Rakenduse ikoon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Akna suuruse muutmine, vasakule"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Akna suuruse muutmine, paremale"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Akna suuruse maksimeerimine või taastamine"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Akna suuruse maksimeerimine või taastamine"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Rakenduse akna minimeerimine"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Avamisviisi vaikeseaded"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Valige, kuidas avada selle rakenduse puhul veebilinke"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Rakenduses"</string> diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml index c0766a294510..a8f92128a603 100644 --- a/libs/WindowManager/Shell/res/values-eu/strings.xml +++ b/libs/WindowManager/Shell/res/values-eu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ezarri ezkerraldea % 50en"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ezarri ezkerraldea % 30en"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ezarri eskuinaldea pantaila osoan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Aldatu aplikazioz"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ezarri goialdea pantaila osoan"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Ezarri goialdea % 70en"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ezarri goialdea % 50en"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Berrabiarazi"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ez erakutsi berriro"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Sakatu birritan\naplikazioa mugitzeko"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizatu"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizatu"</string> - <string name="close_button_text" msgid="2913281996024033299">"Itxi"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atzera"</string> <string name="handle_text" msgid="4419667835599523257">"Aplikazioaren kontrol-puntua"</string> <string name="app_icon_text" msgid="2823268023931811747">"Aplikazioaren ikonoa"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Aldatu leihoaren tamaina eta eraman ezkerrera"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Aldatu leihoaren tamaina eta eraman eskuinera"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizatu edo leheneratu leihoaren tamaina"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizatu edo leheneratu leihoaren tamaina"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizatu aplikazioaren leihoa"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Modu lehenetsian irekitzearen ezarpenak"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Aukeratu nola ireki sareko estekak aplikazio honetan"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Aplikazioan"</string> diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml index ace8b333f47c..59affd7887be 100644 --- a/libs/WindowManager/Shell/res/values-fa/strings.xml +++ b/libs/WindowManager/Shell/res/values-fa/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"٪۵۰ چپ"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"٪۳۰ چپ"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"تمامصفحه راست"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"جابهجا کردن برنامهها"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"تمامصفحه بالا"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"٪۷۰ بالا"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"٪۵۰ بالا"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"بازراهاندازی"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"دوباره نشان داده نشود"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"برای جابهجا کردن این برنامه\nدو تکضرب بزنید"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"بزرگ کردن"</string> - <string name="minimize_button_text" msgid="271592547935841753">"کوچک کردن"</string> - <string name="close_button_text" msgid="2913281996024033299">"بستن"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"برگشتن"</string> <string name="handle_text" msgid="4419667835599523257">"دستگیره برنامه"</string> <string name="app_icon_text" msgid="2823268023931811747">"نماد برنامه"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغییر اندازه پنجره به چپ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغییر اندازه پنجره به راست"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"بیشینهسازی یا بازیابی اندازه پنجره"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"بیشینهسازی یا بازیابی اندازه پنجره"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"کمینهسازی پنجره برنامه"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"تنظیمات باز کردن بهطور پیشفرض"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"انتخاب روش باز کردن پیوندهای وب مربوط به این برنامه"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"در برنامه"</string> diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml index aed3fdc55bb4..b1d8431b57d9 100644 --- a/libs/WindowManager/Shell/res/values-fi/strings.xml +++ b/libs/WindowManager/Shell/res/values-fi/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vasen 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vasen 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Oikea koko näytölle"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Vaihda sovellusta"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Yläosa koko näytölle"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Yläosa 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yläosa 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Käynnistä uudelleen"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Älä näytä uudelleen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Kaksoisnapauta, jos\nhaluat siirtää sovellusta"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Suurenna"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Pienennä"</string> - <string name="close_button_text" msgid="2913281996024033299">"Sulje"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Takaisin"</string> <string name="handle_text" msgid="4419667835599523257">"Sovelluksen tunnus"</string> <string name="app_icon_text" msgid="2823268023931811747">"Sovelluskuvake"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Muuta vasemmanpuoleisen ikkunan kokoa"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Muuta vasemmanpuoleisen ikkunan kokoa"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Suurenna ikkuna tai palauta ikkunan koko"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Suurenna ikkuna tai palauta ikkunan koko"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Pienennä sovellusikkuna"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Avaa oletusasetusten mukaan"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Valitse, miten verkkolinkit avataan tässä sovelluksessa"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Sovelluksessa"</string> diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml index dc2025ffeb68..c58f4b0610f1 100644 --- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % à la gauche"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % à la gauche"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Plein écran à la droite"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Permuter des applis"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Plein écran dans le haut"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % dans le haut"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % dans le haut"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Redémarrer"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne plus afficher"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toucher deux fois pour\ndéplacer cette appli"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Agrandir"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Réduire"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fermer"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Retour"</string> <string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icône de l\'appli"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Réduire la fenêtre de l\'appli"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Ouvrir les paramètres par défaut"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choisissez comment ouvrir les liens Web pour cette appli"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Dans l\'appli"</string> diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml index 377413e27e87..e8db4c929561 100644 --- a/libs/WindowManager/Shell/res/values-fr/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Écran de gauche à 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Écran de gauche à 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Écran de droite en plein écran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Échanger les applis"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Écran du haut en plein écran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Écran du haut à 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Écran du haut à 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Redémarrer"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne plus afficher"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Appuyez deux fois\npour déplacer cette appli"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Agrandir"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Réduire"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fermer"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Retour"</string> <string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icône d\'application"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Réduire la fenêtre de l\'application"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Ouvrir les paramètres par défaut"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choisir comment ouvrir les liens Web pour cette appli"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Dans l\'application"</string> diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml index 3022f6238567..ba1c4a4b73c6 100644 --- a/libs/WindowManager/Shell/res/values-gl/strings.xml +++ b/libs/WindowManager/Shell/res/values-gl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % á esquerda"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % á esquerda"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla completa á dereita"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Cambiar as aplicacións"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla completa arriba"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % arriba"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % arriba"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Non mostrar outra vez"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toca dúas veces para\nmover esta aplicación"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Pechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="4419667835599523257">"Controlador da aplicación"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icona de aplicación"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Axustar o tamaño da ventá á esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Axustar o tamaño da ventá á dereita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamaño da ventá"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamaño da ventá"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar a ventá da aplicación"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir coa configuración predeterminada"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escoller como abrir as ligazóns web para esta aplicación"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Na aplicación"</string> diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml index 196784b29884..cd7550893dca 100644 --- a/libs/WindowManager/Shell/res/values-gu/strings.xml +++ b/libs/WindowManager/Shell/res/values-gu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ડાબે 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ડાબે 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"જમણી સ્ક્રીન સ્ક્રીન"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ઍપને સ્વૉપ કરો"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"શીર્ષ પૂર્ણ સ્ક્રીન"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"શીર્ષ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"શીર્ષ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ફરી શરૂ કરો"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ફરીથી બતાવશો નહીં"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"આ ઍપને ખસેડવા માટે\nબે વાર ટૅપ કરો"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"મોટું કરો"</string> - <string name="minimize_button_text" msgid="271592547935841753">"નાનું કરો"</string> - <string name="close_button_text" msgid="2913281996024033299">"બંધ કરો"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"પાછળ"</string> <string name="handle_text" msgid="4419667835599523257">"ઍપનું હૅન્ડલ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ઍપનું આઇકન"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ડાબી બાજુ વિન્ડોનું કદ બદલો"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"જમણી બાજુ વિન્ડોનું કદ બદલો"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"વિન્ડોનું કદ મહત્તમ કરો અથવા રિસ્ટોર કરો"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"વિન્ડોનું કદ મહત્તમ કરો અથવા રિસ્ટોર કરો"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ઍપની વિન્ડોને નાની કરો"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"\'ડિફૉલ્ટ તરીકે ખોલો\' સેટિંગ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"આ ઍપ માટે વેબ લિંક ખોલવાની રીત પસંદ કરો"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ઍપમાં"</string> diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml index 945bc93a667e..d0be7d560961 100644 --- a/libs/WindowManager/Shell/res/values-hi/strings.xml +++ b/libs/WindowManager/Shell/res/values-hi/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"बाईं स्क्रीन को 50% बनाएं"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"बाईं स्क्रीन को 30% बनाएं"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"दाईं स्क्रीन को फ़ुल स्क्रीन बनाएं"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ऐप्लिकेशन स्वैप करें"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ऊपर की स्क्रीन को फ़ुल स्क्रीन बनाएं"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ऊपर की स्क्रीन को 70% बनाएं"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ऊपर की स्क्रीन को 50% बनाएं"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"रीस्टार्ट करें"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"फिर से न दिखाएं"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ऐप्लिकेशन की जगह बदलने के लिए\nदो बार टैप करें"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"बड़ा करें"</string> - <string name="minimize_button_text" msgid="271592547935841753">"विंडो छोटी करें"</string> - <string name="close_button_text" msgid="2913281996024033299">"बंद करें"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"वापस जाएं"</string> <string name="handle_text" msgid="4419667835599523257">"ऐप्लिकेशन का हैंडल"</string> <string name="app_icon_text" msgid="2823268023931811747">"ऐप्लिकेशन आइकॉन"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विंडो का साइज़ बाईं ओर से बदलें"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विंडो का साइज़ दाईं ओर से बढ़ाएं"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ऐप्लिकेशन की विंडो को छोटा करें"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"डिफ़ॉल्ट सेटिंग के हिसाब से खोलें"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"इस ऐप्लिकेशन के लिए वेब लिंक खोलने का तरीका चुनें"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ऐप्लिकेशन में"</string> diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml index b1187dc089b7..d3e7599e1dc9 100644 --- a/libs/WindowManager/Shell/res/values-hr/strings.xml +++ b/libs/WindowManager/Shell/res/values-hr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Lijevi zaslon na 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Lijevi zaslon na 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desni zaslon u cijeli zaslon"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamijeni aplikacije"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Gornji zaslon u cijeli zaslon"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji zaslon na 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji zaslon na 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Pokreni ponovno"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikazuj ponovno"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvaput dodirnite da biste\npremjestili ovu aplikaciju"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimiziraj"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimiziraj"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zatvori"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Natrag"</string> <string name="handle_text" msgid="4419667835599523257">"Pokazivač aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promijeni veličinu prozora ulijevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promijeni veličinu prozora udesno"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziraj ili vrati veličinu prozora"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimiziraj ili vrati veličinu prozora"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimiziraj prozor aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvori prema zadanim postavkama"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja web-veza za ovu aplikaciju"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml index a7aedc465a92..2f7a21834eb8 100644 --- a/libs/WindowManager/Shell/res/values-hu/strings.xml +++ b/libs/WindowManager/Shell/res/values-hu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Bal oldali 50%-ra"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Bal oldali 30%-ra"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Jobb oldali teljes képernyőre"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Váltás az alkalmazások között"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Felső teljes képernyőre"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Felső 70%-ra"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Felső 50%-ra"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Újraindítás"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne jelenjen meg többé"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Koppintson duplán\naz alkalmazás áthelyezéséhez"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Teljes méret"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Kis méret"</string> - <string name="close_button_text" msgid="2913281996024033299">"Bezárás"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Vissza"</string> <string name="handle_text" msgid="4419667835599523257">"App fogópontja"</string> <string name="app_icon_text" msgid="2823268023931811747">"Alkalmazásikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ablak átméretezése balra"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ablak átméretezése jobbra"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ablak teljes méretre állítása vagy visszaállítása"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ablak teljes méretre állítása vagy visszaállítása"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Alkalmazásablak kis méretre állítása"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Alapértelmezett beállítások megnyitása"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Az app webes linkjeinek megnyitásához használt módszer"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Az alkalmazásban"</string> diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml index 00b2f91c9eb9..2898dcc33b35 100644 --- a/libs/WindowManager/Shell/res/values-hy/strings.xml +++ b/libs/WindowManager/Shell/res/values-hy/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ձախ էկրանը՝ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ձախ էկրանը՝ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Աջ էկրանը՝ լիաէկրան"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Հավելվածները տեղերով փոխել"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Վերևի էկրանը՝ լիաէկրան"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Վերևի էկրանը՝ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Վերևի էկրանը՝ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Վերագործարկել"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Այլևս ցույց չտալ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Կրկնակի հպեք՝\nհավելվածը տեղափոխելու համար"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Ծավալել"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Ծալել"</string> - <string name="close_button_text" msgid="2913281996024033299">"Փակել"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Հետ"</string> <string name="handle_text" msgid="4419667835599523257">"Հավելվածի կեղծանուն"</string> <string name="app_icon_text" msgid="2823268023931811747">"Հավելվածի պատկերակ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ձգել պատուհանը դեպի ձախ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ձգել պատուհանը դեպի աջ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ծալել հավելվածի պատուհանը"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Բացել կարգավորումներն ըստ կանխադրման"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Ընտրեք՝ ինչպես բացել այս հավելվածի վեբ հղումները"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Հավելվածում"</string> diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml index 54ccf84d398b..617f9c99de01 100644 --- a/libs/WindowManager/Shell/res/values-in/strings.xml +++ b/libs/WindowManager/Shell/res/values-in/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kiri 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kiri 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Layar penuh di kanan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ganti Aplikasi"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Layar penuh di atas"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Atas 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Mulai ulang"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Jangan tampilkan lagi"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Ketuk dua kali untuk\nmemindahkan aplikasi ini"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimalkan"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalkan"</string> - <string name="close_button_text" msgid="2913281996024033299">"Tutup"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Kembali"</string> <string name="handle_text" msgid="4419667835599523257">"Penanganan aplikasi"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikon Aplikasi"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah ukuran jendela ke kiri"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah ukuran jendela ke kanan"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimalkan atau pulihkan ukuran jendela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimalkan atau pulihkan ukuran jendela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalkan jendela aplikasi"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Buka dengan setelan default"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pilih cara membuka link web untuk aplikasi ini"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Di aplikasi"</string> diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml index 56b179033ddb..797a4cc8d035 100644 --- a/libs/WindowManager/Shell/res/values-is/strings.xml +++ b/libs/WindowManager/Shell/res/values-is/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vinstri 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vinstri 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Hægri á öllum skjánum"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Skipta á milli forrita"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Efri á öllum skjánum"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Efri 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Efri 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Endurræsa"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ekki sýna þetta aftur"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Ýttu tvisvar til\nað færa þetta forrit"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Stækka"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minnka"</string> - <string name="close_button_text" msgid="2913281996024033299">"Loka"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Til baka"</string> <string name="handle_text" msgid="4419667835599523257">"Handfang forrits"</string> <string name="app_icon_text" msgid="2823268023931811747">"Tákn forrits"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Breyta stærð glugga til vinstri"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Breyta stærð glugga til hægri"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Hámarka eða endurheimta stærð glugga"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Hámarka eða endurheimta stærð glugga"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Lágmarka stærð forritsglugga"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Stillingar sjálfvirkrar opnunar"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Veldu hvernig veftenglar opnast í forritinu"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Í forritinu"</string> diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml index 30159c7663f0..85f0f8c2c4d2 100644 --- a/libs/WindowManager/Shell/res/values-it/strings.xml +++ b/libs/WindowManager/Shell/res/values-it/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Schermata sinistra al 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Schermata sinistra al 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Schermata destra a schermo intero"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Scambia app"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Schermata superiore a schermo intero"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Schermata superiore al 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Schermata superiore al 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Riavvia"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Non mostrare più"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tocca due volte per\nspostare questa app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Ingrandisci"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Riduci a icona"</string> - <string name="close_button_text" msgid="2913281996024033299">"Chiudi"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Indietro"</string> <string name="handle_text" msgid="4419667835599523257">"Punto di manipolazione app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icona dell\'app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ridimensiona la finestra a sinistra"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ridimensiona la finestra a destra"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ingrandisci o ripristina le dimensioni della finestra"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ingrandisci o ripristina le dimensioni della finestra"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Riduci a icona la finestra dell\'app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Apri in base alle impostazioni predefinite"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Scegli come aprire i link web per questa app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"All\'interno dell\'app"</string> diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml index 5a19f146566e..36ac62091e43 100644 --- a/libs/WindowManager/Shell/res/values-iw/strings.xml +++ b/libs/WindowManager/Shell/res/values-iw/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"שמאלה 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"שמאלה 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"מסך ימני מלא"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"מעבר בין אפליקציות"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"מסך עליון מלא"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"עליון 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"עליון 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"הפעלה מחדש"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"לא להציג שוב"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"אפשר ללחוץ לחיצה כפולה כדי\nלהעביר את האפליקציה למקום אחר"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"הגדלה"</string> - <string name="minimize_button_text" msgid="271592547935841753">"מזעור"</string> - <string name="close_button_text" msgid="2913281996024033299">"סגירה"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"חזרה"</string> <string name="handle_text" msgid="4419667835599523257">"נקודת אחיזה לאפליקציה"</string> <string name="app_icon_text" msgid="2823268023931811747">"סמל האפליקציה"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"שינוי גודל החלון שמשמאל"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"שינוי גודל החלון שמימין"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"שחזור של גודל החלון או הגדלת החלון"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"שחזור של גודל החלון או הגדלת החלון"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"מזעור החלון של האפליקציה"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"הגדרות לפתיחה כברירת מחדל"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"כאן בוחרים איך לפתוח באפליקציה הזו קישורים לדפי אינטרנט"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"באפליקציה"</string> diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml index ac0df9c0b1cb..3a12680395c6 100644 --- a/libs/WindowManager/Shell/res/values-ja/strings.xml +++ b/libs/WindowManager/Shell/res/values-ja/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右全画面"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"アプリを切り替える"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"上部全画面"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"上 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"上 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"再起動"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"次回から表示しない"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ダブルタップすると\nこのアプリを移動できます"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"閉じる"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"戻る"</string> <string name="handle_text" msgid="4419667835599523257">"アプリハンドル"</string> <string name="app_icon_text" msgid="2823268023931811747">"アプリのアイコン"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ウィンドウを左側にサイズ変更する"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ウィンドウを右側にサイズ変更する"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"アプリ ウィンドウを最小化する"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"デフォルトの設定で開く"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"このアプリのウェブリンクを開く方法を選択"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"アプリ内"</string> diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml index 84fab6fe22e6..2fbe1a786687 100644 --- a/libs/WindowManager/Shell/res/values-ka/strings.xml +++ b/libs/WindowManager/Shell/res/values-ka/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"მარცხენა ეკრანი — 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"მარცხენა ეკრანი — 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"მარჯვენა ნაწილის სრულ ეკრანზე გაშლა"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"აპების გადართვა"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ზედა ნაწილის სრულ ეკრანზე გაშლა"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ზედა ეკრანი — 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ზედა ეკრანი — 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"გადატვირთვა"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"აღარ გამოჩნდეს"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ამ აპის გადასატანად\nორმაგად შეეხეთ მას"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"მაქსიმალურად გაშლა"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ჩაკეცვა"</string> - <string name="close_button_text" msgid="2913281996024033299">"დახურვა"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"უკან"</string> <string name="handle_text" msgid="4419667835599523257">"აპის იდენტიფიკატორი"</string> <string name="app_icon_text" msgid="2823268023931811747">"აპის ხატულა"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ფანჯრის ზომის შეცვლა მარცხნივ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ფანჯრის ზომის შეცვლა მარჯვნივ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ფანჯრის მაქსიმალურ ზომამდე გაზრდა ან აღდგენა"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ფანჯრის მაქსიმალურ ზომამდე გაზრდა ან აღდგენა"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"აპის ფანჯრის ზომის შემცირება"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"პარამეტრების ნაგულისხმევად გახსნა"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ამ აპისთვის ვებ ბმულების გახსნის წესის არჩევა"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"აპში"</string> diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml index be9e9c12a417..c494b16687ef 100644 --- a/libs/WindowManager/Shell/res/values-kk/strings.xml +++ b/libs/WindowManager/Shell/res/values-kk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% сол жақта"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% сол жақта"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Оң жағын толық экранға шығару"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Қолданбаларды ауыстыру"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Жоғарғы жағын толық экранға шығару"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% жоғарғы жақта"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% жоғарғы жақта"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Өшіріп қосу"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Қайта көрсетілмесін"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Бұл қолданбаны басқа орынға\nжылжыту үшін екі рет түртіңіз."</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Жаю"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Кішірейту"</string> - <string name="close_button_text" msgid="2913281996024033299">"Жабу"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Артқа"</string> <string name="handle_text" msgid="4419667835599523257">"Қолданба идентификаторы"</string> <string name="app_icon_text" msgid="2823268023931811747">"Қолданба белгішесі"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезе өлшемін сол жаққа өзгерту"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезе өлшемін оң жаққа өзгерту"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезе өлшемін ұлғайту не қалпына келтіру"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Терезе өлшемін ұлғайту не қалпына келтіру"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Қолданба терезесін кішірейту"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Әдепкісінше ашу параметрлері"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Осы қолданбадағы веб-сілтемелерді ашу жолын таңдаңыз"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Қолданбада"</string> diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml index c835650f705f..234c3552b7de 100644 --- a/libs/WindowManager/Shell/res/values-km/strings.xml +++ b/libs/WindowManager/Shell/res/values-km/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ឆ្វេង 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ឆ្វេង 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"អេក្រង់ពេញខាងស្តាំ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ប្ដូរកម្មវិធី"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"អេក្រង់ពេញខាងលើ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ខាងលើ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ខាងលើ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ចាប់ផ្ដើមឡើងវិញ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"កុំបង្ហាញម្ដងទៀត"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ចុចពីរដងដើម្បី\nផ្លាស់ទីកម្មវិធីនេះ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ពង្រីក"</string> - <string name="minimize_button_text" msgid="271592547935841753">"បង្រួម"</string> - <string name="close_button_text" msgid="2913281996024033299">"បិទ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ថយក្រោយ"</string> <string name="handle_text" msgid="4419667835599523257">"ឈ្មោះអ្នកប្រើប្រាស់កម្មវិធី"</string> <string name="app_icon_text" msgid="2823268023931811747">"រូបកម្មវិធី"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ប្ដូរទំហំវិនដូទៅឆ្វេង"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ប្ដូរទំហំវិនដូទៅស្ដាំ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"បង្រួមវិនដូកម្មវិធី"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ការកំណត់បើកតាមលំនាំដើម"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ជ្រើសរើសរបៀបបើកតំណបណ្ដាញសម្រាប់កម្មវិធីនេះ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"នៅក្នុងកម្មវិធី"</string> diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml index 143208a2e16d..61ee3c3915db 100644 --- a/libs/WindowManager/Shell/res/values-kn/strings.xml +++ b/libs/WindowManager/Shell/res/values-kn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% ಎಡಕ್ಕೆ"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% ಎಡಕ್ಕೆ"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ಬಲ ಫುಲ್ ಸ್ಕ್ರೀನ್"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ಆ್ಯಪ್ಗಳನ್ನು ಸ್ವ್ಯಾಪ್ ಮಾಡಿ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ಮೇಲಿನ ಫುಲ್ ಸ್ಕ್ರೀನ್"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% ಮೇಲಕ್ಕೆ"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% ಮೇಲಕ್ಕೆ"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡಿ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಸರಿಸಲು\nಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ಹಿಗ್ಗಿಸಿ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ಕುಗ್ಗಿಸಿ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ಮುಚ್ಚಿರಿ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ಹಿಂದಕ್ಕೆ"</string> <string name="handle_text" msgid="4419667835599523257">"ಆ್ಯಪ್ ಹ್ಯಾಂಡಲ್"</string> <string name="app_icon_text" msgid="2823268023931811747">"ಆ್ಯಪ್ ಐಕಾನ್"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ಆ್ಯಪ್ ವಿಂಡೋವನ್ನು ಮಿನಿಮೈಜ್ ಮಾಡಿ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳಿಂದ ತೆರೆಯಿರಿ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ಈ ಆ್ಯಪ್ಗೆ ವೆಬ್ ಲಿಂಕ್ಗಳನ್ನು ಹೇಗೆ ತೆರೆಯಬೇಕು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ಆ್ಯಪ್ನಲ್ಲಿ"</string> diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml index dcdbaba97166..2b36ba1eb3d7 100644 --- a/libs/WindowManager/Shell/res/values-ko/strings.xml +++ b/libs/WindowManager/Shell/res/values-ko/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"왼쪽 화면 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"왼쪽 화면 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"오른쪽 화면 전체화면"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"앱 전환"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"위쪽 화면 전체화면"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"위쪽 화면 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"위쪽 화면 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"다시 시작"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"다시 표시 안함"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"두 번 탭하여\n이 앱 이동"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"최대화"</string> - <string name="minimize_button_text" msgid="271592547935841753">"최소화"</string> - <string name="close_button_text" msgid="2913281996024033299">"닫기"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"뒤로"</string> <string name="handle_text" msgid="4419667835599523257">"앱 핸들"</string> <string name="app_icon_text" msgid="2823268023931811747">"앱 아이콘"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"창 크기 왼쪽으로 조절"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"창 크기 오른쪽으로 조절"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"창 최대화 또는 크기 복원"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"창 최대화 또는 크기 복원"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"앱 창 최소화"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"기본값으로 열기 설정"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"이 앱에서 웹 링크를 여는 방법을 선택하세요"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"앱에서"</string> diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml index fe1bcd481f0b..bb3c2fdae471 100644 --- a/libs/WindowManager/Shell/res/values-ky/strings.xml +++ b/libs/WindowManager/Shell/res/values-ky/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Сол жактагы экранды 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Сол жактагы экранды 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Оң жактагы экранды толук экран режимине өткөрүү"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Колдонмолорду алмаштыруу"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Үстүнкү экранды толук экран режимине өткөрүү"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Үстүнкү экранды 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Үстүнкү экранды 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Өчүрүп күйгүзүү"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Экинчи көрүнбөсүн"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Бул колдонмону жылдыруу үчүн\nэки жолу таптаңыз"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Чоңойтуу"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Кичирейтүү"</string> - <string name="close_button_text" msgid="2913281996024033299">"Жабуу"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Артка"</string> <string name="handle_text" msgid="4419667835599523257">"Колдонмонун маркери"</string> <string name="app_icon_text" msgid="2823268023931811747">"Колдонмонун сүрөтчөсү"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезенин өлчөмүн солго өзгөртүү"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезенин өлчөмүн оңго өзгөртүү"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Колдонмонун терезесин кичирейтүү"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Демейки шартта ачылуучу шилтемелердин параметрлери"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Колдонмодо шилтемелер кантип ачыларын тандаңыз"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Колдонмодо"</string> diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml index dd9df35cad00..8850923d8cca 100644 --- a/libs/WindowManager/Shell/res/values-lo/strings.xml +++ b/libs/WindowManager/Shell/res/values-lo/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ຊ້າຍ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ຊ້າຍ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ເຕັມໜ້າຈໍຂວາ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ສະຫຼັບແອັບ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ເຕັມໜ້າຈໍເທິງສຸດ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ເທິງສຸດ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ເທິງສຸດ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ຣີສະຕາດ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ບໍ່ຕ້ອງສະແດງອີກ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ແຕະສອງເທື່ອເພື່ອ\nຍ້າຍແອັບນີ້"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ຂະຫຍາຍໃຫຍ່ສຸດ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ຫຍໍ້ລົງ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ປິດ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ກັບຄືນ"</string> <string name="handle_text" msgid="4419667835599523257">"ຊື່ຜູ້ໃຊ້ແອັບ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ໄອຄອນແອັບ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ປັບຂະໜາດໜ້າຈໍໄປທາງຊ້າຍ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ປັບຂະໜາດໜ້າຈໍໄປທາງຂວາ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ຫຍໍ້ໜ້າຈໍແອັບ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ເປີດຕາມການຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ເລືອກວິທີເປີດລິ້ງເວັບສຳລັບແອັບນີ້"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ໃນແອັບ"</string> diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml index 7ebd43d19833..8ed826aa11fc 100644 --- a/libs/WindowManager/Shell/res/values-lt/strings.xml +++ b/libs/WindowManager/Shell/res/values-lt/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kairysis ekranas 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kairysis ekranas 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Dešinysis ekranas viso ekrano režimu"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Programų keitimas"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Viršutinis ekranas viso ekrano režimu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Viršutinis ekranas 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Viršutinis ekranas 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Paleisti iš naujo"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Daugiau neberodyti"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dukart palieskite, kad\nperkeltumėte šią programą"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Padidinti"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Sumažinti"</string> - <string name="close_button_text" msgid="2913281996024033299">"Uždaryti"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atgal"</string> <string name="handle_text" msgid="4419667835599523257">"Programos kreipinys"</string> <string name="app_icon_text" msgid="2823268023931811747">"Programos piktograma"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pakeisti lango dydį kairėje"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pakeisti lango dydį dešinėje"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Padidinti arba atkurti lango dydį"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Padidinti arba atkurti lango dydį"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Sumažinti programos langą"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Atidaryti pagal numatytuosius nustatymus"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pasirinkite, kaip atidaryti šios programos žiniatinklio nuorodas"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Programoje"</string> diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml index 8c4360b80548..1227055b3222 100644 --- a/libs/WindowManager/Shell/res/values-lv/strings.xml +++ b/libs/WindowManager/Shell/res/values-lv/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Pa kreisi 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Pa kreisi 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Labā daļa pa visu ekrānu"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apmainīt lietotnes"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Augšdaļa pa visu ekrānu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Augšdaļa 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Augšdaļa 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restartēt"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Vairs nerādīt"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Veiciet dubultskārienu,\nlai pārvietotu šo lietotni"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimizēt"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizēt"</string> - <string name="close_button_text" msgid="2913281996024033299">"Aizvērt"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atpakaļ"</string> <string name="handle_text" msgid="4419667835599523257">"Lietotnes turis"</string> <string name="app_icon_text" msgid="2823268023931811747">"Lietotnes ikona"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Mainīt loga lielumu uz kreiso pusi"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Mainīt loga lielumu uz labo pusi"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizēt vai atjaunot loga lielumu"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimizēt vai atjaunot loga lielumu"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizēt lietotnes logu"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Atvērt pēc noklusējuma iestatījumiem"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Izvēlieties, kā atvērt šajā lietotnē norādītās saites"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Lietotnē"</string> diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml index 653e66a2c586..eb513748cdba 100644 --- a/libs/WindowManager/Shell/res/values-mk/strings.xml +++ b/libs/WindowManager/Shell/res/values-mk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левиот 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левиот 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Десниот на цел екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Менувајте апликации"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Горниот на цел екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горниот 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горниот 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Рестартирај"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Не прикажувај повторно"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Допрете двапати за да ја\nпоместите апликацијава"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Зголеми"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Минимизирај"</string> - <string name="close_button_text" msgid="2913281996024033299">"Затвори"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Прекар на апликацијата"</string> <string name="app_icon_text" msgid="2823268023931811747">"Икона на апликацијата"</string> @@ -128,7 +136,7 @@ <string name="open_in_browser_text" msgid="9181692926376072904">"Отвори во прелистувач"</string> <string name="open_in_app_text" msgid="2874590745116268525">"Отвори во апликацијата"</string> <string name="new_window_text" msgid="6318648868380652280">"Нов прозорец"</string> - <string name="manage_windows_text" msgid="5567366688493093920">"Управувајте со прозорци"</string> + <string name="manage_windows_text" msgid="5567366688493093920">"Управувајте со прозорците"</string> <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промени го соодносот"</string> <string name="close_text" msgid="4986518933445178928">"Затворете"</string> <string name="collapse_menu_text" msgid="7515008122450342029">"Затворете го менито"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Променете ја големината на прозорецот налево"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Променете ја големината на прозорецот надесно"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Максимизирајте или вратете ја големината на прозорецот"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Максимизирајте или вратете ја големината на прозорецот"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Минимизирајте го прозорецот на апликацијата"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Отвори според стандардните поставки"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Изберете како да се отвораат линковите за апликацијава"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Во апликацијата"</string> diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml index 88876657642d..c48cbce331c4 100644 --- a/libs/WindowManager/Shell/res/values-ml/strings.xml +++ b/libs/WindowManager/Shell/res/values-ml/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ഇടത് 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ഇടത് 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"വലത് പൂർണ്ണ സ്ക്രീൻ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ആപ്പുകൾ സ്വാപ്പ് ചെയ്യുക"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"മുകളിൽ പൂർണ്ണ സ്ക്രീൻ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"മുകളിൽ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"മുകളിൽ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"റീസ്റ്റാർട്ട് ചെയ്യൂ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"വീണ്ടും കാണിക്കരുത്"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ഈ ആപ്പ് നീക്കാൻ\nഡബിൾ ടാപ്പ് ചെയ്യുക"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"വലുതാക്കുക"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ചെറുതാക്കുക"</string> - <string name="close_button_text" msgid="2913281996024033299">"അടയ്ക്കുക"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"മടങ്ങുക"</string> <string name="handle_text" msgid="4419667835599523257">"ആപ്പ് ഹാൻഡിൽ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ആപ്പ് ഐക്കൺ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ഇടത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"വലത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"വിന്ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"വിന്ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ആപ്പ് വിന്ഡോ ചെറുതാക്കുക"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ഡിഫോൾട്ട് ക്രമീകരണം ഉപയോഗിച്ച് തുറക്കുക"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ഈ ആപ്പിനായി വെബ് ലിങ്കുകൾ എങ്ങനെ തുറക്കണമെന്ന് തിരഞ്ഞെടുക്കൂ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ആപ്പിൽ"</string> diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml index df922e09fb46..fca2f7ce9177 100644 --- a/libs/WindowManager/Shell/res/values-mn/strings.xml +++ b/libs/WindowManager/Shell/res/values-mn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Зүүн 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Зүүн 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Баруун талын бүтэн дэлгэц"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Аппуудыг солих"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Дээд талын бүтэн дэлгэц"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Дээд 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Дээд 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Дахин эхлүүлэх"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Дахиж бүү харуул"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Энэ аппыг зөөхийн тулд\nхоёр товшино уу"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Томруулах"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Багасгах"</string> - <string name="close_button_text" msgid="2913281996024033299">"Хаах"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Буцах"</string> <string name="handle_text" msgid="4419667835599523257">"Аппын бариул"</string> <string name="app_icon_text" msgid="2823268023931811747">"Aппын дүрс тэмдэг"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Цонхны хэмжээг зүүн тал руу өөрчлөх"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Цонхны хэмжээг баруун тал руу өөрчлөх"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Аппын цонхыг жижгэрүүлэх"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Өгөгдмөл тохиргоогоор нээх"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Энэ аппад веб холбоосыг хэрхэн нээхийг сонгоно уу"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Аппад"</string> diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml index f31631175039..888118732b1a 100644 --- a/libs/WindowManager/Shell/res/values-mr/strings.xml +++ b/libs/WindowManager/Shell/res/values-mr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"डावी 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"डावी 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"उजवी फुल स्क्रीन"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"अॅप्स स्वॅप करा"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"शीर्ष फुल स्क्रीन"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"शीर्ष 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"शीर्ष 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"रीस्टार्ट करा"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"पुन्हा दाखवू नका"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"हे ॲप हलवण्यासाठी\nदोनदा टॅप करा"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"मोठे करा"</string> - <string name="minimize_button_text" msgid="271592547935841753">"लहान करा"</string> - <string name="close_button_text" msgid="2913281996024033299">"बंद करा"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"मागे जा"</string> <string name="handle_text" msgid="4419667835599523257">"अॅपचे हँडल"</string> <string name="app_icon_text" msgid="2823268023931811747">"अॅप आयकन"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"अॅप विंडोचा डावीकडे आकार बदला"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"अॅप विंडोचा उजवीकडे आकार बदला"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"अॅप विंडो लहान करा"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"बाय डीफॉल्ट सेटिंग्ज उघडा"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"या अॅपसाठीच्या वेब लिंक कशा उघडाव्यात हे निवडा"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ॲपमध्ये"</string> diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml index 81e00c50db46..f0cd560b1f48 100644 --- a/libs/WindowManager/Shell/res/values-ms/strings.xml +++ b/libs/WindowManager/Shell/res/values-ms/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kiri 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kiri 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Skrin penuh kanan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Tukar Apl"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Skrin penuh atas"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Atas 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Mulakan semula"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Jangan tunjukkan lagi"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Ketik dua kali untuk\nalih apl ini"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimumkan"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimumkan"</string> - <string name="close_button_text" msgid="2913281996024033299">"Tutup"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Kembali"</string> <string name="handle_text" msgid="4419667835599523257">"Pengendalian apl"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikon Apl"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah saiz tetingkap ke sebelah kiri"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah saiz tetingkap ke sebelah kanan"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimumkan atau pulihkan saiz tetingkap"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimumkan atau pulihkan saiz tetingkap"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimumkan tetingkap apl"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Buka tetapan secara lalai"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pilih cara membuka pautan web untuk apl ini"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Pada apl"</string> diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml index 8697af849ad5..3451701a0456 100644 --- a/libs/WindowManager/Shell/res/values-my/strings.xml +++ b/libs/WindowManager/Shell/res/values-my/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ဘယ်ဘက် မျက်နှာပြင် ၅၀%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ဘယ်ဘက် မျက်နှာပြင် ၃၀%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ညာဘက် မျက်နှာပြင်အပြည့်"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"အက်ပ်ပြောင်းရန်"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"အပေါ်ဘက် မျက်နှာပြင်အပြည့်"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"အပေါ်ဘက် မျက်နှာပြင် ၇၀%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"အပေါ်ဘက် မျက်နှာပြင် ၅၀%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ပြန်စရန်"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"နောက်ထပ်မပြပါနှင့်"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ဤအက်ပ်ကို ရွှေ့ရန်\nနှစ်ချက်တို့ပါ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ချဲ့ရန်"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ချုံ့ရန်"</string> - <string name="close_button_text" msgid="2913281996024033299">"ပိတ်ရန်"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"နောက်သို့"</string> <string name="handle_text" msgid="4419667835599523257">"အက်ပ်သုံးသူအမည်"</string> <string name="app_icon_text" msgid="2823268023931811747">"အက်ပ်သင်္ကေတ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ဝင်းဒိုးကို ဘယ်ဘက်သို့ အရွယ်ပြင်ရန်"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ဝင်းဒိုးကို ညာဘက်သို့ အရွယ်ပြင်ရန်"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"အက်ပ်ဝင်းဒိုးကို ချုံ့ရန်"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"မူရင်းဆက်တင်ဖြင့် ဖွင့်ရန်"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ဤအက်ပ်အတွက် ဝဘ်လင့်ခ်များ မည်သို့ဖွင့်မည်ကို ရွေးပါ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"အက်ပ်တွင်"</string> diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml index 43de6363e6bd..3a4100c5f154 100644 --- a/libs/WindowManager/Shell/res/values-nb/strings.xml +++ b/libs/WindowManager/Shell/res/values-nb/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Sett størrelsen på den venstre delen av skjermen til 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Sett størrelsen på den venstre delen av skjermen til 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Utvid den høyre delen av skjermen til hele skjermen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Bytt apper"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Utvid den øverste delen av skjermen til hele skjermen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Sett størrelsen på den øverste delen av skjermen til 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Sett størrelsen på den øverste delen av skjermen til 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Start på nytt"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ikke vis dette igjen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dobbelttrykk for\nå flytte denne appen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimer"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimer"</string> - <string name="close_button_text" msgid="2913281996024033299">"Lukk"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tilbake"</string> <string name="handle_text" msgid="4419667835599523257">"Apphåndtak"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Endre størrelsen på vinduet til venstre"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Endre størrelsen på vinduet til høyre"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gjenopprett størrelsen på vinduet"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimer eller gjenopprett størrelsen på vinduet"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimer appvinduet"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Innstillinger for åpning som standard"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Velg hvordan nettlinker skal åpnes for denne appen"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string> diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml index 23b49b7dfe42..cc31e384260c 100644 --- a/libs/WindowManager/Shell/res/values-ne/strings.xml +++ b/libs/WindowManager/Shell/res/values-ne/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"बायाँ भाग ५०%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"बायाँ भाग ३०%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"दायाँ भाग फुल स्क्रिन"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"एपहरू अदलबदल गर्नुहोस्"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"माथिल्लो भाग फुल स्क्रिन"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"माथिल्लो भाग ७०%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"माथिल्लो भाग ५०%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"रिस्टार्ट गर्नुहोस्"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"फेरि नदेखाउनुहोस्"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"यो एप सार्न डबल\nट्याप गर्नुहोस्"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ठुलो बनाउनुहोस्"</string> - <string name="minimize_button_text" msgid="271592547935841753">"मिनिमाइज गर्नुहोस्"</string> - <string name="close_button_text" msgid="2913281996024033299">"बन्द गर्नुहोस्"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"पछाडि"</string> <string name="handle_text" msgid="4419667835599523257">"एपको ह्यान्डल"</string> <string name="app_icon_text" msgid="2823268023931811747">"एपको आइकन"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विन्डोको आकार बदलेर बायाँतिर लैजानुहोस्"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विन्डोको आकार बदलेर दायाँतिर लैजानुहोस्"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"एपको विन्डो मिनिमाइज गर्नुहोस्"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"डिफल्ट सेटिङअनुसार खोल्नुहोस्"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"यो एपका वेब लिंकहरू खोल्ने तरिका छनौट गर्नुहोस्"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"एपमा"</string> diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml index 8396b3e9deeb..4234ddf0e456 100644 --- a/libs/WindowManager/Shell/res/values-nl/strings.xml +++ b/libs/WindowManager/Shell/res/values-nl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Linkerscherm 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Linkerscherm 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Rechterscherm op volledig scherm"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apps wisselen"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Bovenste scherm op volledig scherm"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Bovenste scherm 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bovenste scherm 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Opnieuw opstarten"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Niet opnieuw tonen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dubbeltik om\ndeze app te verplaatsen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximaliseren"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimaliseren"</string> - <string name="close_button_text" msgid="2913281996024033299">"Sluiten"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Terug"</string> <string name="handle_text" msgid="4419667835599523257">"App-handgreep"</string> <string name="app_icon_text" msgid="2823268023931811747">"App-icoon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Formaat van venster naar links aanpassen"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Formaat van venster naar rechts aanpassen"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Formaat van venster maximaliseren of herstellen"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Formaat van venster maximaliseren of herstellen"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"App-venster minimaliseren"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Instellingen voor Standaard openen"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Kies hoe je weblinks voor deze app wilt openen"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In de app"</string> diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml index 9e1ee43a01b6..6390d37a3f57 100644 --- a/libs/WindowManager/Shell/res/values-or/strings.xml +++ b/libs/WindowManager/Shell/res/values-or/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ବାମ ପଟକୁ 50% କରନ୍ତୁ"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ବାମ ପଟେ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ଡାହାଣ ପଟକୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍ କରନ୍ତୁ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ଆପ୍ସ ସ୍ୱାପ କରନ୍ତୁ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ଉପର ଆଡ଼କୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍ କରନ୍ତୁ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ଉପର ଆଡ଼କୁ 70% କରନ୍ତୁ"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ଉପର ଆଡ଼କୁ 50% କରନ୍ତୁ"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ପୁଣି ଦେଖାନ୍ତୁ ନାହିଁ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ଏହି ଆପକୁ ମୁଭ\nକରିବା ପାଇଁ ଦୁଇଥର-ଟାପ କରନ୍ତୁ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ବଡ଼ କରନ୍ତୁ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ଛୋଟ କରନ୍ତୁ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ବନ୍ଦ କରନ୍ତୁ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ପଛକୁ ଫେରନ୍ତୁ"</string> <string name="handle_text" msgid="4419667835599523257">"ଆପର ହେଣ୍ଡେଲ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ଆପ ଆଇକନ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ବାମପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ଡାହାଣପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ଆପ ୱିଣ୍ଡୋକୁ ମିନିମାଇଜ କରନ୍ତୁ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ଡିଫଲ୍ଟ ସେଟିଂସକୁ ଖୋଲନ୍ତୁ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ଏହି ଆପ ପାଇଁ ୱେବ ଲିଙ୍କଗୁଡ଼ିକୁ କିପରି ଖୋଲିବେ, ତାହା ବାଛନ୍ତୁ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ଆପରେ"</string> diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml index 3bc730bc0043..d2b837c5df3a 100644 --- a/libs/WindowManager/Shell/res/values-pa/strings.xml +++ b/libs/WindowManager/Shell/res/values-pa/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ਖੱਬੇ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ਖੱਬੇ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ਸੱਜੇ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ਐਪਾਂ ਨੂੰ ਸਵੈਪ ਕਰੋ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ਉੱਪਰ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ਉੱਪਰ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ਉੱਪਰ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ਇਸ ਐਪ ਦਾ ਟਿਕਾਣਾ ਬਦਲਣ ਲਈ\nਡਬਲ ਟੈਪ ਕਰੋ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ਵੱਡਾ ਕਰੋ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ਛੋਟਾ ਕਰੋ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ਬੰਦ ਕਰੋ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ਪਿੱਛੇ"</string> <string name="handle_text" msgid="4419667835599523257">"ਐਪ ਹੈਂਡਲ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ਐਪ ਪ੍ਰਤੀਕ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਖੱਬੇ ਪਾਸੇ ਕਰੋ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਸੱਜੇ ਪਾਸੇ ਕਰੋ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ਐਪ ਵਿੰਡੋ ਨੂੰ ਛੋਟਾ ਕਰੋ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸੈਟਿੰਗਾਂ ਮੁਤਾਬਕ ਖੋਲ੍ਹੋ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ਇਸ ਐਪ ਲਈ ਵੈੱਬ ਲਿੰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਦਾ ਤਰੀਕਾ ਚੁਣੋ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ਐਪ ਵਿੱਚ"</string> diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml index 3a55cf3f9f4e..59deb01e689f 100644 --- a/libs/WindowManager/Shell/res/values-pl/strings.xml +++ b/libs/WindowManager/Shell/res/values-pl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% lewej części ekranu"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% lewej części ekranu"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Prawa część ekranu na pełnym ekranie"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamień aplikacje"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Górna część ekranu na pełnym ekranie"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% górnej części ekranu"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% górnej części ekranu"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Uruchom ponownie"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Nie pokazuj ponownie"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Aby przenieść aplikację,\nkliknij dwukrotnie"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksymalizuj"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalizuj"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zamknij"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Wstecz"</string> <string name="handle_text" msgid="4419667835599523257">"Uchwyt aplikacji"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacji"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmień rozmiar okna do lewej"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmień rozmiar okna do prawej"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Zmaksymalizuj lub przywróć rozmiar okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Zmaksymalizuj lub przywróć rozmiar okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Zminimalizuj okno aplikacji"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Ustawienia domyślnego otwierania"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Wybierz, gdzie chcesz otwierać linki z tej aplikacji"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"W aplikacji"</string> diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml index 3e019ecabcbd..593f830e0d6e 100644 --- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Esquerda a 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Esquerda a 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Lado direito em tela cheia"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Parte superior em tela cheia"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Parte superior a 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Não mostrar novamente"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toque duas vezes para\nmover o app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Voltar"</string> <string name="handle_text" msgid="4419667835599523257">"Identificador do app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícone do app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela do app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Configurações \"Abrir por padrão\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para este app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"No app"</string> diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml index 3eaf0f515b97..fcf59163be83 100644 --- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% no ecrã esquerdo"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% no ecrã esquerdo"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ecrã direito inteiro"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ecrã superior inteiro"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% no ecrã superior"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% no ecrã superior"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Não mostrar de novo"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toque duas vezes\npara mover esta app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Anterior"</string> <string name="handle_text" msgid="4419667835599523257">"Indicador da app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícone da app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar tamanho da janela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar tamanho da janela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela da app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Definições de Abrir por predefinição"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para esta app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Na app"</string> diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml index 3e019ecabcbd..593f830e0d6e 100644 --- a/libs/WindowManager/Shell/res/values-pt/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Esquerda a 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Esquerda a 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Lado direito em tela cheia"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Parte superior em tela cheia"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Parte superior a 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Não mostrar novamente"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toque duas vezes para\nmover o app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Voltar"</string> <string name="handle_text" msgid="4419667835599523257">"Identificador do app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícone do app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela do app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Configurações \"Abrir por padrão\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para este app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"No app"</string> diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml index 0195acac1919..81db82a8c526 100644 --- a/libs/WindowManager/Shell/res/values-ro/strings.xml +++ b/libs/WindowManager/Shell/res/values-ro/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Partea stângă: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Partea stângă: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Partea dreaptă pe ecran complet"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Comută între aplicații"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Partea de sus pe ecran complet"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Partea de sus: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Partea de sus: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Repornește"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Nu mai afișa"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Atinge de două ori\nca să muți aplicația"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizează"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizează"</string> - <string name="close_button_text" msgid="2913281996024033299">"Închide"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Înapoi"</string> <string name="handle_text" msgid="4419667835599523257">"Handle de aplicație"</string> <string name="app_icon_text" msgid="2823268023931811747">"Pictograma aplicației"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionează fereastra la stânga"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionează fereastra la dreapta"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizează sau restabilește dimensiunea ferestrei"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizează sau restabilește dimensiunea ferestrei"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizează fereastra aplicației"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Setări de deschidere în mod prestabilit"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Alege modul de deschidere a linkurilor web pentru aplicație"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"În aplicație"</string> diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml index adc6f32e4a8e..aa6f484debee 100644 --- a/libs/WindowManager/Shell/res/values-ru/strings.xml +++ b/libs/WindowManager/Shell/res/values-ru/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левый на 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левый на 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Правый во весь экран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Поменять приложения местами"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхний во весь экран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхний на 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхний на 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Перезапустить"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Больше не показывать"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Дважды нажмите, чтобы\nпереместить приложение."</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Развернуть"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Свернуть"</string> - <string name="close_button_text" msgid="2913281996024033299">"Закрыть"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Обозначение приложения"</string> <string name="app_icon_text" msgid="2823268023931811747">"Значок приложения"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Растянуть окно влево"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Растянуть окно вправо"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Развернуть окно или восстановить его размер"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Развернуть окно или восстановить его размер"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Свернуть окно приложения"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Настройки, регулирующие, как по умолчанию открываются ссылки"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Выберите, где будут открываться ссылки из этого приложения"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"В приложении"</string> diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml index 26bd9372763c..efa978aa4505 100644 --- a/libs/WindowManager/Shell/res/values-si/strings.xml +++ b/libs/WindowManager/Shell/res/values-si/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"වම් 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"වම් 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"දකුණු පූර්ණ තිරය"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"යෙදුම් හුවමාරු කරන්න"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ඉහළම පූර්ණ තිරය"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ඉහළම 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ඉහළම 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"යළි අරඹන්න"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"නැවත නොපෙන්වන්න"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"මෙම යෙදුම ගෙන යාමට\nදෙවරක් තට්ටු කරන්න"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"විහිදන්න"</string> - <string name="minimize_button_text" msgid="271592547935841753">"කුඩා කරන්න"</string> - <string name="close_button_text" msgid="2913281996024033299">"වසන්න"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ආපසු"</string> <string name="handle_text" msgid="4419667835599523257">"යෙදුම් හසුරුව"</string> <string name="app_icon_text" msgid="2823268023931811747">"යෙදුම් නිරූපකය"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"කවුළුව වමට ප්රතිප්රමාණ කරන්න"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"කවුළුව දකුණට ප්රතිප්රමාණ කරන්න"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"කවුළු ප්රමාණය උපරිම කරන්න හෝ ප්රතිසාධනය කරන්න"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"කවුළු ප්රමාණය උපරිම කරන්න හෝ ප්රතිසාධනය කරන්න"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"යෙදුම් කවුළුව අවම කරන්න"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"පෙරනිමි සැකසීම් මඟින් විවෘත කරන්න"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"මෙම යෙදුම සඳහා වෙබ් සබැඳි විවෘත කරන ආකාරය තෝරා ගන්න"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"යෙදුම තුළ"</string> diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml index 8b6999e9c0d0..fac26b49819a 100644 --- a/libs/WindowManager/Shell/res/values-sk/strings.xml +++ b/libs/WindowManager/Shell/res/values-sk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ľavá – 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ľavá – 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pravá– na celú obrazovku"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Vymeniť aplikácie"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Horná – na celú obrazovku"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Horná – 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Horná – 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reštartovať"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Už nezobrazovať"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Túto aplikáciu\npresuniete dvojitým klepnutím"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximalizovať"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalizovať"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zavrieť"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Späť"</string> <string name="handle_text" msgid="4419667835599523257">"Rukoväť aplikácie"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikácie"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmeniť veľkosť okna vľavo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmeniť veľkosť okna vpravo"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovať alebo obnoviť veľkosť okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximalizovať alebo obnoviť veľkosť okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalizovať okno aplikácie"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvárať podľa predvolených nastavení"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Vyberte, ako sa majú v tejto aplikácii otvárať webové odkazy"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikácii"</string> diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml index 5f1f6efd92fc..f8dacc4fde23 100644 --- a/libs/WindowManager/Shell/res/values-sl/strings.xml +++ b/libs/WindowManager/Shell/res/values-sl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desni v celozaslonski način"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamenjava aplikacij"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Zgornji v celozaslonski način"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Zgornji 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Zgornji 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Znova zaženi"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikaži več"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvakrat se dotaknite\nza premik te aplikacije"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimiraj"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimiraj"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zapri"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Nazaj"</string> <string name="handle_text" msgid="4419667835599523257">"Identifikator aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Sprememba velikosti okna na levi"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Sprememba velikosti okna na desni"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Povečava ali obnovitev velikosti okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Povečava ali obnovitev velikosti okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Pomanjšava okna aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Nastavitve privzetega odpiranja"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Izberite način odpiranja spletnih povezav za to aplikacijo"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml index 45a1c001755f..c64df85dad65 100644 --- a/libs/WindowManager/Shell/res/values-sq/strings.xml +++ b/libs/WindowManager/Shell/res/values-sq/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Majtas 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Majtas 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ekrani i plotë djathtas"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ndërro aplikacionet"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ekrani i plotë lart"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Lart 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Lart 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Rinis"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Mos e shfaq përsëri"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Trokit dy herë për të\nlëvizur këtë aplikacion"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimizo"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizo"</string> - <string name="close_button_text" msgid="2913281996024033299">"Mbyll"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Pas"</string> <string name="handle_text" msgid="4419667835599523257">"Emërtimi i aplikacionit"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona e aplikacionit"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ndrysho përmasat e dritares në të majtë"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ndrysho përmasat e dritares në të djathtë"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizo ose restauro madhësinë e dritares"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimizo ose restauro madhësinë e dritares"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizo dritaren e aplikacionit"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Hap sipas cilësimeve të parazgjedhura"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Zgjidh si do t\'i hapësh lidhjet e uebit për këtë aplikacion"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Në aplikacion"</string> diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml index 40ca9a41d290..d2462a7282c2 100644 --- a/libs/WindowManager/Shell/res/values-sr/strings.xml +++ b/libs/WindowManager/Shell/res/values-sr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Леви екран 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Леви екран 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Режим целог екрана за доњи екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Замените места апликацијама"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Режим целог екрана за горњи екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горњи екран 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горњи екран 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Рестартуј"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Не приказуј поново"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Двапут додирните да бисте\nпреместили ову апликацију"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Увећајте"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Умањите"</string> - <string name="close_button_text" msgid="2913281996024033299">"Затворите"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Идентификатор апликације"</string> <string name="app_icon_text" msgid="2823268023931811747">"Икона апликације"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Промените величину прозора налево"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Промените величину прозора надесно"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увећајте или вратите величину прозора"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Увећајте или вратите величину прозора"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Умањите прозор апликације"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Подешавање Подразумевано отварај"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Одаберите начин отварања веб-линкова за ову апликацију"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У апликацији"</string> diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml index 4e126e88d242..0105e158ac08 100644 --- a/libs/WindowManager/Shell/res/values-sv/strings.xml +++ b/libs/WindowManager/Shell/res/values-sv/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vänster 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vänster 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Helskärm på höger skärm"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Byt appar"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Helskärm på övre skärm"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Övre 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Övre 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Starta om"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Visa inte igen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tryck snabbt två gånger\nför att flytta denna app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Utöka"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimera"</string> - <string name="close_button_text" msgid="2913281996024033299">"Stäng"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tillbaka"</string> <string name="handle_text" msgid="4419667835599523257">"Apphandtag"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ändra storlek på fönstret åt vänster"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ändra storlek på fönstret åt höger"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximera eller återställ fönsterstorleken"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximera eller återställ fönsterstorleken"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimera appfönstret"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Inställningar för Öppna som standard"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Välj hur webblänkar ska öppnas för den här appen"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string> diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml index 8bfdfc62a5b7..b4415cb58b87 100644 --- a/libs/WindowManager/Shell/res/values-sw/strings.xml +++ b/libs/WindowManager/Shell/res/values-sw/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kushoto 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kushoto 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Skrini nzima ya kulia"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Badilisha Programu"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Skrini nzima ya juu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Juu 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Juu 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Zima kisha uwashe"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Usionyeshe tena"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Gusa mara mbili ili\nusogeze programu hii"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Panua"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Punguza"</string> - <string name="close_button_text" msgid="2913281996024033299">"Funga"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Rudi nyuma"</string> <string name="handle_text" msgid="4419667835599523257">"Utambulisho wa programu"</string> <string name="app_icon_text" msgid="2823268023931811747">"Aikoni ya Programu"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Badilisha ukubwa wa dirisha kushoto"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Badilisha ukubwa wa dirisha kulia"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Panua au urejeshe ukubwa wa dirisha"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Panua au urejeshe ukubwa wa dirisha"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Punguza dirisha la programu"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Fungua kwa mipangilio chaguomsingi"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Chagua jinsi ya kufungua viungo vya wavuti vya programu hii"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Kwenye programu"</string> diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml index 4d9093c5bf31..ccc9f9423e8a 100644 --- a/libs/WindowManager/Shell/res/values-ta/strings.xml +++ b/libs/WindowManager/Shell/res/values-ta/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"இடது புறம் 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"இடது புறம் 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"வலது புறம் முழுத் திரை"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ஆப்ஸை மாற்றும்"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"மேற்புறம் முழுத் திரை"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"மேலே 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"மேலே 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"மீண்டும் தொடங்கு"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"மீண்டும் காட்டாதே"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"இந்த ஆப்ஸை நகர்த்த\nஇருமுறை தட்டவும்"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"பெரிதாக்கும்"</string> - <string name="minimize_button_text" msgid="271592547935841753">"சிறிதாக்கும்"</string> - <string name="close_button_text" msgid="2913281996024033299">"மூடும்"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"பின்செல்லும்"</string> <string name="handle_text" msgid="4419667835599523257">"ஆப்ஸ் ஹேண்டில்"</string> <string name="app_icon_text" msgid="2823268023931811747">"ஆப்ஸ் ஐகான்"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"சாளரத்தை இடதுபுறமாக அளவு மாற்றும்"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"சாளரத்தை வலதுபுறமாக அளவு மாற்றும்"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ஆப்ஸ் சாளரத்தைச் சிறிதாக்கும்"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"இயல்பாக அமைப்புகளைத் திறக்கும்"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"இந்த ஆப்ஸில் வலை இணைப்புகளைத் திறக்கும் வழிமுறையைத் தேர்வுசெய்யுங்கள்"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ஆப்ஸில்"</string> diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml index f7cf43ed520c..96ce40abb477 100644 --- a/libs/WindowManager/Shell/res/values-te/strings.xml +++ b/libs/WindowManager/Shell/res/values-te/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ఎడమవైపు 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ఎడమవైపు 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"కుడివైపు ఫుల్-స్క్రీన్"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"యాప్లను మార్చండి"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ఎగువ ఫుల్-స్క్రీన్"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ఎగువ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ఎగువ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"రీస్టార్ట్ చేయండి"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"మళ్లీ చూపవద్దు"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ఈ యాప్ను తరలించడానికి\nడబుల్-ట్యాప్ చేయండి"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"గరిష్టీకరించండి"</string> - <string name="minimize_button_text" msgid="271592547935841753">"కుదించండి"</string> - <string name="close_button_text" msgid="2913281996024033299">"మూసివేయండి"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"వెనుకకు"</string> <string name="handle_text" msgid="4419667835599523257">"యాప్ హ్యాండిల్"</string> <string name="app_icon_text" msgid="2823268023931811747">"యాప్ చిహ్నం"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"విండో ఎడమ వైపునకు సైజ్ను మార్చండి"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"విండో కుడి వైపునకు సైజ్ను మార్చండి"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"విండో సైజ్ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"విండో సైజ్ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"యాప్ విండోను కుదించండి"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ఆటోమేటిక్ సెట్టింగ్ల ద్వారా తెరవండి"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ఈ యాప్నకు సంబంధించిన వెబ్ లింక్లను ఎలా తెరవాలో ఎంచుకోండి"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"యాప్లో"</string> diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml index 77cd2e28517b..16372d26977c 100644 --- a/libs/WindowManager/Shell/res/values-th/strings.xml +++ b/libs/WindowManager/Shell/res/values-th/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ซ้าย 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ซ้าย 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"เต็มหน้าจอทางขวา"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"สลับแอป"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"เต็มหน้าจอด้านบน"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ด้านบน 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ด้านบน 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"รีสตาร์ท"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ไม่ต้องแสดงข้อความนี้อีก"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"แตะสองครั้ง\nเพื่อย้ายแอปนี้"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ขยายใหญ่สุด"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ย่อ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ปิด"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"กลับ"</string> <string name="handle_text" msgid="4419667835599523257">"แฮนเดิลแอป"</string> <string name="app_icon_text" msgid="2823268023931811747">"ไอคอนแอป"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ปรับขนาดหน้าต่างไปทางซ้าย"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ปรับขนาดหน้าต่างไปทางขวา"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ย่อหน้าต่างแอป"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"เปิดตามการตั้งค่าเริ่มต้น"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"เลือกวิธีเปิดเว็บลิงก์สำหรับแอปนี้"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ในแอป"</string> diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml index 056bc225669c..ad38be82a76a 100644 --- a/libs/WindowManager/Shell/res/values-tl/strings.xml +++ b/libs/WindowManager/Shell/res/values-tl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Gawing 50% ang nasa kaliwa"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Gawing 30% ang nasa kaliwa"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"I-full screen ang nasa kanan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Pagpalitin ang Mga App"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"I-full screen ang nasa itaas"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gawing 70% ang nasa itaas"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gawing 50% ang nasa itaas"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"I-restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Huwag nang ipakita ulit"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"I-double tap para\nilipat ang app na ito"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"I-maximize"</string> - <string name="minimize_button_text" msgid="271592547935841753">"I-minimize"</string> - <string name="close_button_text" msgid="2913281996024033299">"Isara"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Bumalik"</string> <string name="handle_text" msgid="4419667835599523257">"Handle ng app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icon ng App"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"I-resize pakaliwa ang window"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"I-resize pakanan ang window"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"I-maximize o i-restore ang laki ng window"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"I-maximize o i-restore ang laki ng window"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"I-minimize ang window ng app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Buksan sa pamamagitan ng mga default na setting"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Piliin kung paano magbukas ng web link para sa app na ito"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Sa app"</string> diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml index 017f6bb1d539..2bc0a960bbb5 100644 --- a/libs/WindowManager/Shell/res/values-tr/strings.xml +++ b/libs/WindowManager/Shell/res/values-tr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Solda %50"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Solda %30"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Sağda tam ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Uygulamaların Yerini Değiştir"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Üstte tam ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Üstte %70"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Üstte %50"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Yeniden başlat"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Bir daha gösterme"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Bu uygulamayı taşımak için\niki kez dokunun"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Ekranı Kapla"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Küçült"</string> - <string name="close_button_text" msgid="2913281996024033299">"Kapat"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Geri"</string> <string name="handle_text" msgid="4419667835599523257">"Uygulama tanıtıcısı"</string> <string name="app_icon_text" msgid="2823268023931811747">"Uygulama Simgesi"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pencereyi sola yeniden boyutlandır"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pencereyi sağa yeniden boyutlandır"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Uygulama penceresini küçült"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Varsayılan olarak açma ayarları"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu uygulama için web bağlantılarının nasıl açılacağını seçin"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Uygulamada"</string> diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml index 32ce4a0c6ece..c1aa82e472b1 100644 --- a/libs/WindowManager/Shell/res/values-uk/strings.xml +++ b/libs/WindowManager/Shell/res/values-uk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ліве вікно на 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ліве вікно на 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Праве вікно на весь екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Поміняти додатки місцями"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхнє вікно на весь екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхнє вікно на 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхнє вікно на 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Перезапустити"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Більше не показувати"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Двічі торкніться, щоб\nперемістити цей додаток"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Збільшити"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Згорнути"</string> - <string name="close_button_text" msgid="2913281996024033299">"Закрити"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Дескриптор додатка"</string> <string name="app_icon_text" msgid="2823268023931811747">"Значок додатка"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змінити розмір вікна ліворуч"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змінити розмір вікна праворуч"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Розгорнути вікно або відновити його розмір"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Розгорнути вікно або відновити його розмір"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Згорнути вікно додатка"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Налаштування \"Відкривати за умовчанням\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Виберіть, як відкривати вебпосилання в цьому додатку"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У додатку"</string> diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml index 4de0c47d2750..1afb48d7952c 100644 --- a/libs/WindowManager/Shell/res/values-ur/strings.xml +++ b/libs/WindowManager/Shell/res/values-ur/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"بائیں %50"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"بائیں %30"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"دائیں فل اسکرین"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ایپس سویپ کریں"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"بالائی فل اسکرین"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"اوپر %70"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"اوپر %50"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ری اسٹارٹ کریں"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"دوبارہ نہ دکھائیں"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"اس ایپ کو منتقل کرنے کیلئے\nدو بار تھپتھپائیں"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"بڑا کریں"</string> - <string name="minimize_button_text" msgid="271592547935841753">"چھوٹا کریں"</string> - <string name="close_button_text" msgid="2913281996024033299">"بند کریں"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"پیچھے"</string> <string name="handle_text" msgid="4419667835599523257">"ایپ ہینڈل"</string> <string name="app_icon_text" msgid="2823268023931811747">"ایپ کا آئیکن"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"دائیں طرف ونڈو کا سائز تبدیل کریں"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ونڈو کا سائز بائیں طرف تبدیل کریں"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ایپ ونڈو کو چھوٹا کریں"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"بطور ڈیفالٹ ترتیبات کھولیں"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"اس ایپ کے لیے ویب لنکس کھولنے کا طریقہ منتخب کریں"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ایپ میں"</string> diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml index 8c0d9bb216d4..04fd4290a89f 100644 --- a/libs/WindowManager/Shell/res/values-uz/strings.xml +++ b/libs/WindowManager/Shell/res/values-uz/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Chapda 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Chapda 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"O‘ngda to‘liq ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ilovalarni almashtirish"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Tepada to‘liq ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Tepada 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Tepada 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Qaytadan"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Boshqa chiqmasin"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Bu ilovani siljitish uchun\nikki marta bosing"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Yoyish"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Kichraytirish"</string> - <string name="close_button_text" msgid="2913281996024033299">"Yopish"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Orqaga"</string> <string name="handle_text" msgid="4419667835599523257">"Ilova identifikatori"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ilova belgisi"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Oyna oʻlchamini chapga oʻzgartirish"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Oyna oʻlchamini oʻngga oʻzgartirish"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ilova oynasini kichraytirish"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Birlamchi sozlamalar asosida ochish"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu ilovalardagi veb havolalar qanday ochilishini tanlang"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Ilovada"</string> diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml index 3455eedeca5f..169c2b787fa7 100644 --- a/libs/WindowManager/Shell/res/values-vi/strings.xml +++ b/libs/WindowManager/Shell/res/values-vi/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Trái 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Trái 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Toàn màn hình bên phải"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Hoán đổi ứng dụng"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Toàn màn hình phía trên"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Trên 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Trên 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Khởi động lại"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Không hiện lại"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Nhấn đúp để\ndi chuyển ứng dụng này"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Phóng to"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Thu nhỏ"</string> - <string name="close_button_text" msgid="2913281996024033299">"Đóng"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Quay lại"</string> <string name="handle_text" msgid="4419667835599523257">"Ô điều khiển ứng dụng"</string> <string name="app_icon_text" msgid="2823268023931811747">"Biểu tượng ứng dụng"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Đổi kích thước và chuyển cửa sổ sang trái"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Đổi kích thước và chuyển cửa sổ sang phải"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Phóng to hoặc khôi phục kích thước cửa sổ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Phóng to hoặc khôi phục kích thước cửa sổ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Thu nhỏ cửa sổ ứng dụng"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Mở các chế độ cài đặt theo mặc định"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Chọn cách mở đường liên kết trang web cho ứng dụng này"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Trong ứng dụng"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml index 369fa4ba6244..942734ad0849 100644 --- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左侧 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左侧 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右侧全屏"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"交换应用位置"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"顶部全屏"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"顶部 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"顶部 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"重启"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"不再显示"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"点按两次\n即可移动此应用"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"关闭"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"返回"</string> <string name="handle_text" msgid="4419667835599523257">"应用手柄"</string> <string name="app_icon_text" msgid="2823268023931811747">"应用图标"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"调整窗口大小并贴靠左侧"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"调整窗口大小并贴靠右侧"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"将窗口最大化或恢复大小"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"将窗口最大化或恢复大小"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"将应用窗口最小化"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"默认打开设置"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"选择如何打开此应用中的网页链接"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"在此应用内"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml index 8624f94d50b6..f89792235c78 100644 --- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左邊 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左邊 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右邊全螢幕"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"切換應用程式"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"頂部全螢幕"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"頂部 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"頂部 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"重新啟動"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"不要再顯示"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"輕按兩下\n即可移動此應用程式"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"關閉"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"返去"</string> <string name="handle_text" msgid="4419667835599523257">"應用程式控點"</string> <string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"將視窗移去左邊調整大小"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"將視窗移去右邊調整大小"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗放到最大或者還原視窗大小"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"將視窗放到最大或者還原視窗大小"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"將應用程式視窗縮到最細"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"採用預設設定打開"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"選擇此應用程式開啟網絡連結的方式"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"在應用程式內"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml index 199c10257d5b..3c6abec3c08c 100644 --- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"以 50% 的螢幕空間顯示左側畫面"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"以 30% 的螢幕空間顯示左側畫面"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"以全螢幕顯示右側畫面"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"切換應用程式"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"以全螢幕顯示頂端畫面"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"以 70% 的螢幕空間顯示頂端畫面"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"以 50% 的螢幕空間顯示頂端畫面"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"重新啟動"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"不要再顯示"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"輕觸兩下即可\n移動這個應用程式"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"關閉"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"返回"</string> <string name="handle_text" msgid="4419667835599523257">"應用程式控制代碼"</string> <string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"調整應用程式視窗大小並向左貼齊"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"調整應用程式視窗大小並向右貼齊"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗最大化或還原大小"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"將視窗最大化或還原大小"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"將應用程式視窗最小化"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"開啟連結的預設設定"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"選擇如何開啟這個應用程式的網頁連結"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"使用應用程式"</string> diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml index 8f40142736bc..b304299a6c18 100644 --- a/libs/WindowManager/Shell/res/values-zu/strings.xml +++ b/libs/WindowManager/Shell/res/values-zu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kwesokunxele ngo-50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kwesokunxele ngo-30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Isikrini esigcwele esingakwesokudla"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Shintsha ama-app"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Isikrini esigcwele esiphezulu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Okuphezulu okungu-70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Okuphezulu okungu-50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Qala kabusha"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ungabonisi futhi"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Thepha kabili ukuze\nuhambise le-app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Khulisa"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Nciphisa"</string> - <string name="close_button_text" msgid="2913281996024033299">"Vala"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Emuva"</string> <string name="handle_text" msgid="4419667835599523257">"Inkomba ye-App"</string> <string name="app_icon_text" msgid="2823268023931811747">"Isithonjana Se-app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Shintsha usayizi wewindi ngakwesokunxele"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Shintsha usayizi wewindi ngakwesokudla"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Khulisa noma buyisela usayizi wewindi"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Khulisa noma buyisela usayizi wewindi"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Nciphisa iwindi le-app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Vula amasethingi ngokuzenzakalela"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Khetha indlela yokuvula amalinki ewebhu ale app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Ku-app"</string> diff --git a/libs/WindowManager/Shell/res/values/colors.xml b/libs/WindowManager/Shell/res/values/colors.xml index d754243a2b07..8d18f959951b 100644 --- a/libs/WindowManager/Shell/res/values/colors.xml +++ b/libs/WindowManager/Shell/res/values/colors.xml @@ -68,4 +68,8 @@ <color name="desktop_mode_caption_button_on_hover_light">#11000000</color> <color name="desktop_mode_caption_button_on_hover_dark">#11FFFFFF</color> <color name="desktop_mode_caption_button">#00000000</color> + <color name="tiling_divider_background_light">#C9C7B6</color> + <color name="tiling_divider_background_dark">#4A4739</color> + <color name="tiling_handle_background_light">#000000</color> + <color name="tiling_handle_background_dark">#FFFFFF</color> </resources> diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml index a0c68ad44379..32660e8fca27 100644 --- a/libs/WindowManager/Shell/res/values/dimen.xml +++ b/libs/WindowManager/Shell/res/values/dimen.xml @@ -618,6 +618,15 @@ <!-- The vertical inset to apply to the app chip's ripple drawable --> <dimen name="desktop_mode_header_app_chip_ripple_inset_vertical">4dp</dimen> + <!-- The corner radius of the windowing actions pill buttons's ripple drawable --> + <dimen name="desktop_mode_handle_menu_windowing_action_ripple_radius">24dp</dimen> + <!-- The horizontal/vertical inset to apply to the ripple drawable effect of windowing + actions pill central buttons --> + <dimen name="desktop_mode_handle_menu_windowing_action_ripple_inset_base">2dp</dimen> + <!-- The horizontal/vertical vertical inset to apply to the ripple drawable effect of windowing + actions pill edge buttons --> + <dimen name="desktop_mode_handle_menu_windowing_action_ripple_inset_shift">4dp</dimen> + <!-- The corner radius of the minimize button's ripple drawable --> <dimen name="desktop_mode_header_minimize_ripple_radius">18dp</dimen> <!-- The vertical inset to apply to the minimize button's ripple drawable --> diff --git a/libs/WindowManager/Shell/shared/res/values/dimen.xml b/libs/WindowManager/Shell/shared/res/values/dimen.xml index 23c9caf2046c..f6a176fb3be8 100644 --- a/libs/WindowManager/Shell/shared/res/values/dimen.xml +++ b/libs/WindowManager/Shell/shared/res/values/dimen.xml @@ -39,6 +39,8 @@ <!-- Bubble drop target dimensions --> <dimen name="drop_target_elevation">1dp</dimen> + <dimen name="drop_target_radius">28dp</dimen> + <dimen name="drop_target_stroke">1dp</dimen> <dimen name="drop_target_full_screen_padding">20dp</dimen> <dimen name="drop_target_desktop_window_padding_small">100dp</dimen> <dimen name="drop_target_desktop_window_padding_large">130dp</dimen> diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetManager.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetManager.kt index 2dc183f3f707..5c2590849dd2 100644 --- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetManager.kt +++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetManager.kt @@ -18,29 +18,34 @@ package com.android.wm.shell.shared.bubbles import android.content.Context import android.graphics.Rect -import android.view.View +import android.graphics.RectF +import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.widget.FrameLayout import androidx.core.animation.Animator import androidx.core.animation.AnimatorListenerAdapter import androidx.core.animation.ValueAnimator +import com.android.wm.shell.shared.R /** * Manages animating drop targets in response to dragging bubble icons or bubble expanded views * across different drag zones. */ class DropTargetManager( - context: Context, + private val context: Context, private val container: FrameLayout, private val isLayoutRtl: Boolean, private val dragZoneChangedListener: DragZoneChangedListener, ) { private var state: DragState? = null - private val dropTargetView = View(context) + private val dropTargetView = DropTargetView(context) private var animator: ValueAnimator? = null + private var morphRect: RectF = RectF(0f, 0f, 0f, 0f) private companion object { - const val ANIMATION_DURATION_MS = 250L + const val MORPH_ANIM_DURATION = 250L + const val DROP_TARGET_ALPHA_IN_DURATION = 150L + const val DROP_TARGET_ALPHA_OUT_DURATION = 100L } /** Must be called when a drag gesture is starting. */ @@ -55,15 +60,10 @@ class DropTargetManager( private fun setupDropTarget() { if (dropTargetView.parent != null) container.removeView(dropTargetView) container.addView(dropTargetView, 0) - // TODO b/393173014: set elevation and background dropTargetView.alpha = 0f - dropTargetView.scaleX = 1f - dropTargetView.scaleY = 1f - dropTargetView.translationX = 0f - dropTargetView.translationY = 0f - // the drop target is added with a width and height of 1 pixel. when it gets resized, we use - // set its scale to the width and height of the bounds it should have to avoid layout passes - dropTargetView.layoutParams = FrameLayout.LayoutParams(/* width= */ 1, /* height= */ 1) + dropTargetView.elevation = context.resources.getDimension(R.dimen.drop_target_elevation) + // Match parent and the target is drawn within the view + dropTargetView.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT) } /** Called when the user drags to a new location. */ @@ -92,10 +92,7 @@ class DropTargetManager( when { dropTargetBounds == null -> startFadeAnimation(from = dropTargetView.alpha, to = 0f) dropTargetView.alpha == 0f -> { - dropTargetView.translationX = dropTargetBounds.exactCenterX() - dropTargetView.translationY = dropTargetBounds.exactCenterY() - dropTargetView.scaleX = dropTargetBounds.width().toFloat() - dropTargetView.scaleY = dropTargetBounds.height().toFloat() + dropTargetView.update(RectF(dropTargetBounds)) startFadeAnimation(from = 0f, to = 1f) } else -> startMorphAnimation(dropTargetBounds) @@ -104,7 +101,9 @@ class DropTargetManager( private fun startFadeAnimation(from: Float, to: Float, onEnd: (() -> Unit)? = null) { animator?.cancel() - val animator = ValueAnimator.ofFloat(from, to).setDuration(ANIMATION_DURATION_MS) + val duration = + if (from < to) DROP_TARGET_ALPHA_IN_DURATION else DROP_TARGET_ALPHA_OUT_DURATION + val animator = ValueAnimator.ofFloat(from, to).setDuration(duration) animator.addUpdateListener { _ -> dropTargetView.alpha = animator.animatedValue as Float } if (onEnd != null) { animator.doOnEnd(onEnd) @@ -113,23 +112,20 @@ class DropTargetManager( animator.start() } - private fun startMorphAnimation(bounds: Rect) { + private fun startMorphAnimation(endBounds: Rect) { animator?.cancel() val startAlpha = dropTargetView.alpha - val startTx = dropTargetView.translationX - val startTy = dropTargetView.translationY - val startScaleX = dropTargetView.scaleX - val startScaleY = dropTargetView.scaleY - val animator = ValueAnimator.ofFloat(0f, 1f).setDuration(ANIMATION_DURATION_MS) + val startRect = dropTargetView.getRect() + val animator = ValueAnimator.ofFloat(0f, 1f).setDuration(MORPH_ANIM_DURATION) animator.addUpdateListener { _ -> val fraction = animator.animatedValue as Float dropTargetView.alpha = startAlpha + (1 - startAlpha) * fraction - dropTargetView.translationX = startTx + (bounds.exactCenterX() - startTx) * fraction - dropTargetView.translationY = startTy + (bounds.exactCenterY() - startTy) * fraction - dropTargetView.scaleX = - startScaleX + (bounds.width().toFloat() - startScaleX) * fraction - dropTargetView.scaleY = - startScaleY + (bounds.height().toFloat() - startScaleY) * fraction + + morphRect.left = (startRect.left + (endBounds.left - startRect.left) * fraction) + morphRect.top = (startRect.top + (endBounds.top - startRect.top) * fraction) + morphRect.right = (startRect.right + (endBounds.right - startRect.right) * fraction) + morphRect.bottom = (startRect.bottom + (endBounds.bottom - startRect.bottom) * fraction) + dropTargetView.update(morphRect) } this.animator = animator animator.start() diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetView.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetView.kt new file mode 100644 index 000000000000..2bb6cf4ec3aa --- /dev/null +++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/bubbles/DropTargetView.kt @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.wm.shell.shared.bubbles + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.RectF +import android.view.View +import com.android.wm.shell.shared.R + +/** + * Shows a drop target within this view. + */ +class DropTargetView(context: Context) : View(context) { + + private val rectPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + color = context.getColor(com.android.internal.R.color.materialColorPrimaryContainer) + style = Paint.Style.FILL + alpha = (0.35f * 255).toInt() + } + + private val strokePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + color = context.getColor(com.android.internal.R.color.materialColorPrimaryContainer) + style = Paint.Style.STROKE + strokeWidth = context.resources.getDimensionPixelSize(R.dimen.drop_target_stroke).toFloat() + } + + private val cornerRadius = context.resources.getDimensionPixelSize( + R.dimen.drop_target_radius).toFloat() + + private val rect = RectF(0f, 0f, 0f, 0f) + + override fun onDraw(canvas: Canvas) { + canvas.save() + canvas.drawRoundRect(rect, cornerRadius, cornerRadius, rectPaint) + canvas.drawRoundRect(rect, cornerRadius, cornerRadius, strokePaint) + canvas.restore() + } + + fun update(positionRect: RectF) { + rect.set(positionRect) + invalidate() + } + + fun getRect(): RectF { + return RectF(rect) + } +}
\ No newline at end of file diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java index 00c446c3da60..2e33253b5e09 100644 --- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java +++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java @@ -22,6 +22,7 @@ import static com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper.enabl import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.TaskInfo; import android.content.Context; import android.hardware.display.DisplayManager; import android.os.SystemProperties; @@ -287,6 +288,16 @@ public class DesktopModeStatus { } /** + * @return If {@code true} we set opaque background for all freeform tasks to prevent freeform + * tasks below from being visible if freeform task window above is translucent. + * Otherwise if fluid resize is enabled, add a background to freeform tasks. + */ + public static boolean shouldSetBackground(@NonNull TaskInfo taskInfo) { + return taskInfo.isFreeform() && (!DesktopModeStatus.isVeiledResizeEnabled() + || DesktopModeFlags.ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS.isTrue()); + } + + /** * @return {@code true} if the app handle should be shown because desktop mode is enabled or * the device has a large screen */ @@ -374,7 +385,7 @@ public class DesktopModeStatus { * of the display's root [TaskDisplayArea] is set to WINDOWING_MODE_FREEFORM. */ public static boolean enterDesktopByDefaultOnFreeformDisplay(@NonNull Context context) { - if (!Flags.enterDesktopByDefaultOnFreeformDisplays()) { + if (!DesktopExperienceFlags.ENTER_DESKTOP_BY_DEFAULT_ON_FREEFORM_DISPLAYS.isTrue()) { return false; } return SystemProperties.getBoolean(ENTER_DESKTOP_BY_DEFAULT_ON_FREEFORM_DISPLAY_SYS_PROP, @@ -387,7 +398,7 @@ public class DesktopModeStatus { * screen. */ public static boolean shouldMaximizeWhenDragToTopEdge(@NonNull Context context) { - if (!Flags.enableDragToMaximize()) { + if (!DesktopExperienceFlags.ENABLE_DRAG_TO_MAXIMIZE.isTrue()) { return false; } return SystemProperties.getBoolean(ENABLE_DRAG_TO_MAXIMIZE_SYS_PROP, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java index 53551387230c..26c362611518 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java @@ -147,10 +147,9 @@ class ActivityEmbeddingAnimationAdapter { /** To be overridden by subclasses to adjust the animation surface change. */ void onAnimationUpdateInner(@NonNull SurfaceControl.Transaction t) { // Update the surface position and alpha. - if (com.android.graphics.libgui.flags.Flags.edgeExtensionShader() - && mAnimation.getExtensionEdges() != 0x0 + if (mAnimation.getExtensionEdges() != 0x0 && !(mChange.hasFlags(FLAG_TRANSLUCENT) - && mChange.getActivityComponent() != null)) { + && mChange.getActivityComponent() != null)) { // Extend non-translucent activities t.setEdgeExtensionEffect(mLeash, mAnimation.getExtensionEdges()); } @@ -189,8 +188,7 @@ class ActivityEmbeddingAnimationAdapter { @CallSuper void onAnimationEnd(@NonNull SurfaceControl.Transaction t) { onAnimationUpdate(t, mAnimation.getDuration()); - if (com.android.graphics.libgui.flags.Flags.edgeExtensionShader() - && mAnimation.getExtensionEdges() != 0x0) { + if (mAnimation.getExtensionEdges() != 0x0) { t.setEdgeExtensionEffect(mLeash, /* edge */ 0); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java index c3e783ddf4f1..85b7ac27daa0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java @@ -20,11 +20,9 @@ import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManagerPolicyConstants.TYPE_LAYER_OFFSET; import static android.window.TransitionInfo.FLAG_IS_BEHIND_STARTING_WINDOW; -import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static com.android.wm.shell.activityembedding.ActivityEmbeddingAnimationSpec.createShowSnapshotForClosingAnimation; import static com.android.wm.shell.transition.TransitionAnimationHelper.addBackgroundToTransition; -import static com.android.wm.shell.transition.TransitionAnimationHelper.edgeExtendWindow; import static com.android.wm.shell.transition.TransitionAnimationHelper.getTransitionBackgroundColorIfSet; import static com.android.wm.shell.transition.Transitions.TRANSIT_TASK_FRAGMENT_DRAG_RESIZE; @@ -143,10 +141,6 @@ class ActivityEmbeddingAnimationRunner { // ending states. prepareForJumpCut(info, startTransaction); } else { - if (!com.android.graphics.libgui.flags.Flags.edgeExtensionShader()) { - addEdgeExtensionIfNeeded(startTransaction, finishTransaction, - postStartTransactionCallbacks, adapters); - } addBackgroundColorIfNeeded(info, startTransaction, finishTransaction, adapters); for (ActivityEmbeddingAnimationAdapter adapter : adapters) { duration = Math.max(duration, adapter.getDurationHint()); @@ -329,34 +323,6 @@ class ActivityEmbeddingAnimationRunner { } } - /** Adds edge extension to the surfaces that have such an animation property. */ - private void addEdgeExtensionIfNeeded(@NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction, - @NonNull List<Consumer<SurfaceControl.Transaction>> postStartTransactionCallbacks, - @NonNull List<ActivityEmbeddingAnimationAdapter> adapters) { - for (ActivityEmbeddingAnimationAdapter adapter : adapters) { - final Animation animation = adapter.mAnimation; - if (animation.getExtensionEdges() == 0) { - continue; - } - if (adapter.mChange.hasFlags(FLAG_TRANSLUCENT) - && adapter.mChange.getActivityComponent() != null) { - // Skip edge extension for translucent activity. - continue; - } - final TransitionInfo.Change change = adapter.mChange; - if (TransitionUtil.isOpeningType(adapter.mChange.getMode())) { - // Need to screenshot after startTransaction is applied otherwise activity - // may not be visible or ready yet. - postStartTransactionCallbacks.add( - t -> edgeExtendWindow(change, animation, t, finishTransaction)); - } else { - // Can screenshot now (before startTransaction is applied) - edgeExtendWindow(change, animation, startTransaction, finishTransaction); - } - } - } - /** Adds background color to the transition if any animation has such a property. */ private void addBackgroundColorIfNeeded(@NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction startTransaction, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS index 6207e5b020f7..7e557860365e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS @@ -4,5 +4,4 @@ madym@google.com mattsziklay@google.com mdehaini@google.com pbdr@google.com -tkachenkoi@google.com vaniadesmonda@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java index 313d151aeab7..d9489287ff42 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java @@ -364,7 +364,7 @@ public class Bubble implements BubbleViewProvider { @ShellMainThread Executor mainExecutor, @ShellBackgroundThread Executor bgExecutor) { return new Bubble(intent, user, - /* key= */ getAppBubbleKeyForApp(intent.getIntent().getPackage(), user), + /* key= */ getAppBubbleKeyForApp(ComponentUtils.getPackageName(intent), user), mainExecutor, bgExecutor); } 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 305fcdd5fb7d..be2240286ab1 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 @@ -117,6 +117,7 @@ import com.android.wm.shell.shared.annotations.ShellBackgroundThread; import com.android.wm.shell.shared.annotations.ShellMainThread; import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper; import com.android.wm.shell.shared.bubbles.BubbleBarLocation; +import com.android.wm.shell.shared.bubbles.BubbleBarLocation.UpdateSource; import com.android.wm.shell.shared.bubbles.BubbleBarUpdate; import com.android.wm.shell.shared.bubbles.BubbleDropTargetBoundsProvider; import com.android.wm.shell.shared.bubbles.DeviceConfig; @@ -795,7 +796,7 @@ public class BubbleController implements ConfigurationChangeListener, * Update bubble bar location and trigger and update to listeners */ public void setBubbleBarLocation(BubbleBarLocation bubbleBarLocation, - @BubbleBarLocation.UpdateSource int source) { + @UpdateSource int source) { if (isShowingAsBubbleBar()) { updateExpandedViewForBubbleBarLocation(bubbleBarLocation, source); BubbleBarUpdate bubbleBarUpdate = new BubbleBarUpdate(); @@ -805,7 +806,7 @@ public class BubbleController implements ConfigurationChangeListener, } private void updateExpandedViewForBubbleBarLocation(BubbleBarLocation bubbleBarLocation, - @BubbleBarLocation.UpdateSource int source) { + @UpdateSource int source) { if (isShowingAsBubbleBar()) { BubbleBarLocation previousLocation = mBubblePositioner.getBubbleBarLocation(); mBubblePositioner.setBubbleBarLocation(bubbleBarLocation); @@ -818,7 +819,7 @@ public class BubbleController implements ConfigurationChangeListener, private void logBubbleBarLocationIfChanged(BubbleBarLocation location, BubbleBarLocation previous, - @BubbleBarLocation.UpdateSource int source) { + @UpdateSource int source) { if (mLayerView == null) { return; } @@ -830,25 +831,25 @@ public class BubbleController implements ConfigurationChangeListener, return; } switch (source) { - case BubbleBarLocation.UpdateSource.DRAG_BAR: - case BubbleBarLocation.UpdateSource.A11Y_ACTION_BAR: + case UpdateSource.DRAG_BAR: + case UpdateSource.A11Y_ACTION_BAR: mLogger.log(onLeft ? BubbleLogger.Event.BUBBLE_BAR_MOVED_LEFT_DRAG_BAR : BubbleLogger.Event.BUBBLE_BAR_MOVED_RIGHT_DRAG_BAR); break; - case BubbleBarLocation.UpdateSource.DRAG_BUBBLE: - case BubbleBarLocation.UpdateSource.A11Y_ACTION_BUBBLE: + case UpdateSource.DRAG_BUBBLE: + case UpdateSource.A11Y_ACTION_BUBBLE: mLogger.log(onLeft ? BubbleLogger.Event.BUBBLE_BAR_MOVED_LEFT_DRAG_BUBBLE : BubbleLogger.Event.BUBBLE_BAR_MOVED_RIGHT_DRAG_BUBBLE); break; - case BubbleBarLocation.UpdateSource.DRAG_EXP_VIEW: - case BubbleBarLocation.UpdateSource.A11Y_ACTION_EXP_VIEW: + case UpdateSource.DRAG_EXP_VIEW: + case UpdateSource.A11Y_ACTION_EXP_VIEW: // TODO(b/349845968): move logging from BubbleBarLayerView to here break; - case BubbleBarLocation.UpdateSource.APP_ICON_DRAG: + case UpdateSource.APP_ICON_DRAG: mLogger.log(onLeft ? BubbleLogger.Event.BUBBLE_BAR_MOVED_LEFT_APP_ICON_DROP : BubbleLogger.Event.BUBBLE_BAR_MOVED_RIGHT_APP_ICON_DROP); break; - case BubbleBarLocation.UpdateSource.DRAG_TASK: + case UpdateSource.DRAG_TASK: mLogger.log(onLeft ? BubbleLogger.Event.BUBBLE_BAR_MOVED_LEFT_DRAG_TASK : BubbleLogger.Event.BUBBLE_BAR_MOVED_RIGHT_DRAG_TASK); break; @@ -872,10 +873,7 @@ public class BubbleController implements ConfigurationChangeListener, if (bubbleBarLocation == null) return; if (isShowingAsBubbleBar() && BubbleAnythingFlagHelper.enableCreateAnyBubble()) { mBubbleStateListener.onDragItemOverBubbleBarDragZone(bubbleBarLocation); - ensureBubbleViewsAndWindowCreated(); - if (mLayerView != null) { - mLayerView.showBubbleBarExtendedViewDropTarget(bubbleBarLocation); - } + showBubbleBarExpandedViewDropTarget(bubbleBarLocation); } } @@ -921,6 +919,13 @@ public class BubbleController implements ConfigurationChangeListener, return result; } + private void showBubbleBarExpandedViewDropTarget(BubbleBarLocation bubbleBarLocation) { + ensureBubbleViewsAndWindowCreated(); + if (mLayerView != null) { + mLayerView.showBubbleBarExtendedViewDropTarget(bubbleBarLocation); + } + } + private void hideBubbleBarExpandedViewDropTarget() { if (mLayerView != null) { mLayerView.hideBubbleBarExpandedViewDropTarget(); @@ -1541,20 +1546,9 @@ public class BubbleController implements ConfigurationChangeListener, public void expandStackAndSelectBubble(ShortcutInfo info, @Nullable BubbleBarLocation bubbleBarLocation) { if (!BubbleAnythingFlagHelper.enableCreateAnyBubble()) return; - BubbleBarLocation updateLocation = isShowingAsBubbleBar() ? bubbleBarLocation : null; - if (updateLocation != null) { - updateExpandedViewForBubbleBarLocation(updateLocation, - BubbleBarLocation.UpdateSource.APP_ICON_DRAG); - } Bubble b = mBubbleData.getOrCreateBubble(info); // Removes from overflow ProtoLog.v(WM_SHELL_BUBBLES, "expandStackAndSelectBubble - shortcut=%s", info); - if (b.isInflated()) { - mBubbleData.setSelectedBubbleAndExpandStack(b, updateLocation); - } else { - b.enable(Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE); - inflateAndAdd(b, /* suppressFlyout= */ true, /* showInShade= */ false, - updateLocation); - } + expandStackAndSelectAppBubble(b, bubbleBarLocation, UpdateSource.APP_ICON_DRAG); } /** @@ -1562,16 +1556,12 @@ public class BubbleController implements ConfigurationChangeListener, * * @param intent the intent for the bubble. */ - public void expandStackAndSelectBubble(Intent intent, UserHandle user) { + public void expandStackAndSelectBubble(Intent intent, UserHandle user, + @Nullable BubbleBarLocation bubbleBarLocation) { if (!BubbleAnythingFlagHelper.enableCreateAnyBubble()) return; Bubble b = mBubbleData.getOrCreateBubble(intent, user); // Removes from overflow ProtoLog.v(WM_SHELL_BUBBLES, "expandStackAndSelectBubble - intent=%s", intent); - if (b.isInflated()) { - mBubbleData.setSelectedBubbleAndExpandStack(b); - } else { - b.enable(Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE); - inflateAndAdd(b, /* suppressFlyout= */ true, /* showInShade= */ false); - } + expandStackAndSelectAppBubble(b, bubbleBarLocation, UpdateSource.APP_ICON_DRAG); } /** @@ -1583,14 +1573,19 @@ public class BubbleController implements ConfigurationChangeListener, public void expandStackAndSelectBubble(PendingIntent pendingIntent, UserHandle user, @Nullable BubbleBarLocation bubbleBarLocation) { if (!BubbleAnythingFlagHelper.enableCreateAnyBubble()) return; + Bubble b = mBubbleData.getOrCreateBubble(pendingIntent, user); // Removes from overflow + ProtoLog.v(WM_SHELL_BUBBLES, "expandStackAndSelectBubble - pendingIntent=%s", + pendingIntent); + expandStackAndSelectAppBubble(b, bubbleBarLocation, UpdateSource.APP_ICON_DRAG); + } + + private void expandStackAndSelectAppBubble(Bubble b, + @Nullable BubbleBarLocation bubbleBarLocation, @UpdateSource int source) { + if (!BubbleAnythingFlagHelper.enableCreateAnyBubble()) return; BubbleBarLocation updateLocation = isShowingAsBubbleBar() ? bubbleBarLocation : null; if (updateLocation != null) { - updateExpandedViewForBubbleBarLocation(updateLocation, - BubbleBarLocation.UpdateSource.APP_ICON_DRAG); + updateExpandedViewForBubbleBarLocation(updateLocation, source); } - Bubble b = mBubbleData.getOrCreateBubble(pendingIntent, user); - ProtoLog.v(WM_SHELL_BUBBLES, "expandStackAndSelectBubble - pendingIntent=%s", - pendingIntent); if (b.isInflated()) { mBubbleData.setSelectedBubbleAndExpandStack(b, updateLocation); } else { @@ -1623,7 +1618,7 @@ public class BubbleController implements ConfigurationChangeListener, } } else { if (location != null) { - setBubbleBarLocation(location, BubbleBarLocation.UpdateSource.DRAG_TASK); + setBubbleBarLocation(location, UpdateSource.DRAG_TASK); } b.enable(Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE); // Lazy init stack view when a bubble is created @@ -2840,14 +2835,16 @@ public class BubbleController implements ConfigurationChangeListener, } @Override - public void showShortcutBubble(ShortcutInfo info) { + public void showShortcutBubble(ShortcutInfo info, @Nullable BubbleBarLocation location) { mMainExecutor.execute(() -> mController - .expandStackAndSelectBubble(info, /* bubbleBarLocation = */ null)); + .expandStackAndSelectBubble(info, location)); } @Override - public void showAppBubble(Intent intent, UserHandle user) { - mMainExecutor.execute(() -> mController.expandStackAndSelectBubble(intent, user)); + public void showAppBubble(Intent intent, UserHandle user, + @Nullable BubbleBarLocation location) { + mMainExecutor.execute( + () -> mController.expandStackAndSelectBubble(intent, user, location)); } @Override @@ -2900,7 +2897,7 @@ public class BubbleController implements ConfigurationChangeListener, @Override public void setBubbleBarLocation(BubbleBarLocation location, - @BubbleBarLocation.UpdateSource int source) { + @UpdateSource int source) { mMainExecutor.execute(() -> mController.setBubbleBarLocation(location, source)); } @@ -2921,6 +2918,17 @@ public class BubbleController implements ConfigurationChangeListener, } }); } + + @Override + public void showDropTarget(boolean show, BubbleBarLocation location) { + mMainExecutor.execute(() -> { + if (show) { + showBubbleBarExpandedViewDropTarget(location); + } else { + hideBubbleBarExpandedViewDropTarget(); + } + }); + } } private class BubblesImpl implements Bubbles { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java index 44ae74479949..133af2a91a03 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java @@ -214,7 +214,8 @@ public interface Bubbles { * * @param entry the {@link BubbleEntry} by the notification. * @param shouldBubbleUp {@code true} if this notification should bubble up. - * @param fromSystem {@code true} if this update is from NotificationManagerService. + * @param fromSystem {@code true} if this update is from NotificationManagerService or App, + * false means this update is from SystemUi */ void onEntryUpdated(BubbleEntry entry, boolean shouldBubbleUp, boolean fromSystem); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/IBubbles.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/IBubbles.aidl index 0a4d79a6c297..ae1b4077098d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/IBubbles.aidl +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/IBubbles.aidl @@ -51,9 +51,11 @@ interface IBubbles { oneway void stopBubbleDrag(in BubbleBarLocation location, in int topOnScreen) = 11; - oneway void showShortcutBubble(in ShortcutInfo info) = 12; + oneway void showShortcutBubble(in ShortcutInfo info, in @nullable BubbleBarLocation location) = 12; - oneway void showAppBubble(in Intent intent, in UserHandle user) = 13; + oneway void showAppBubble(in Intent intent, in UserHandle user, in @nullable BubbleBarLocation location) = 13; oneway void showExpandedView() = 14; + + oneway void showDropTarget(in boolean show, in @nullable BubbleBarLocation location) = 15; }
\ No newline at end of file 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 29837dc04423..677c21c96f4b 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 @@ -473,7 +473,7 @@ public class BubbleBarLayerView extends FrameLayout /** Updates the expanded view size and position. */ public void updateExpandedView() { - if (mExpandedView == null || mExpandedBubble == null) return; + if (mExpandedView == null || mExpandedBubble == null || mExpandedView.isAnimating()) return; boolean isOverflowExpanded = mExpandedBubble.getKey().equals(BubbleOverflow.KEY); mPositioner.getBubbleBarExpandedViewBounds(mPositioner.isBubbleBarOnLeft(), isOverflowExpanded, mTempRect); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index df82091ef002..dd2050a5fd5d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -461,6 +461,14 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged } } + private void setAnimating(boolean imeAnimationOngoing) { + int animatingTypes = imeAnimationOngoing ? WindowInsets.Type.ime() : 0; + try { + mWmService.updateDisplayWindowAnimatingTypes(mDisplayId, animatingTypes); + } catch (RemoteException e) { + } + } + private int imeTop(float surfaceOffset, float surfacePositionY) { // surfaceOffset is already offset by the surface's top inset, so we need to subtract // the top inset so that the return value is in screen coordinates. @@ -619,6 +627,9 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged + imeTop(hiddenY, defaultY) + "->" + imeTop(shownY, defaultY) + " showing:" + (mAnimationDirection == DIRECTION_SHOW)); } + if (android.view.inputmethod.Flags.reportAnimatingInsetsTypes()) { + setAnimating(true); + } int flags = dispatchStartPositioning(mDisplayId, imeTop(hiddenY, defaultY), imeTop(shownY, defaultY), mAnimationDirection == DIRECTION_SHOW, isFloating, t); @@ -666,6 +677,8 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged } if (!android.view.inputmethod.Flags.refactorInsetsController()) { dispatchEndPositioning(mDisplayId, mCancelled, t); + } else if (android.view.inputmethod.Flags.reportAnimatingInsetsTypes()) { + setAnimating(false); } if (mAnimationDirection == DIRECTION_HIDE && !mCancelled) { ImeTracker.forLogging().onProgress(mStatsToken, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java index c6afc313b239..3f21e74a7d03 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java @@ -20,6 +20,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import android.app.ActivityManager; +import android.window.DesktopExperienceFlags; import android.window.DisplayAreaInfo; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -67,7 +68,7 @@ public class PipDesktopState { /** Returns whether PiP in Connected Displays is enabled by checking the flag. */ public boolean isConnectedDisplaysPipEnabled() { - return Flags.enableConnectedDisplaysPip(); + return DesktopExperienceFlags.ENABLE_CONNECTED_DISPLAYS_PIP.isTrue(); } /** Returns whether the display with the PiP task is in freeform windowing mode. */ @@ -88,7 +89,7 @@ public class PipDesktopState { return false; } final int displayId = mPipDisplayLayoutState.getDisplayId(); - return getDesktopRepository().getVisibleTaskCount(displayId) > 0 + return getDesktopRepository().isAnyDeskActive(displayId) || getDesktopWallpaperActivityTokenProvider().isWallpaperActivityVisible(displayId) || isDisplayInFreeform(); } @@ -100,7 +101,7 @@ public class PipDesktopState { return false; } final DesktopRepository desktopRepository = getDesktopRepository(); - return desktopRepository.getVisibleTaskCount(pipTask.getDisplayId()) > 0 + return desktopRepository.isAnyDeskActive(pipTask.getDisplayId()) || desktopRepository.isMinimizedPipPresentInDisplay(pipTask.getDisplayId()); } @@ -114,7 +115,7 @@ public class PipDesktopState { return false; } final int displayId = mPipDisplayLayoutState.getDisplayId(); - return getDesktopRepository().getVisibleTaskCount(displayId) == 0 + return !getDesktopRepository().isAnyDeskActive(displayId) && getDesktopWallpaperActivityTokenProvider().isWallpaperActivityVisible(displayId); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java index 6c04e2aa57a7..d304e20bcffc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java @@ -80,7 +80,19 @@ public class DividerHandleView extends View { private int mHoveringWidth; private int mHoveringHeight; private boolean mIsLeftRightSplit; - + private boolean mIsSplitScreen; + + /** + * Notifies the divider of ui mode change. + * + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void onUiModeChange(boolean isDarkMode) { + if (!mIsSplitScreen) { + mPaint.setColor(getTilingHandleColor(isDarkMode)); + invalidate(); + } + } public DividerHandleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mPaint.setColor(getResources().getColor(R.color.docked_divider_handle, null)); @@ -103,6 +115,27 @@ public class DividerHandleView extends View { mHoveringHeight = mHeight > mWidth ? ((int) (mHeight * 1.5f)) : mHeight; } + /** + * Used by tiling infrastructure to specify display light/dark mode and + * whether handle colors should be overridden on display mode change in case + * of non split screen. + * @param isSplitScreen Whether the divider is used by split screen or tiling. + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void setup(boolean isSplitScreen, boolean isDarkMode) { + mIsSplitScreen = isSplitScreen; + if (!mIsSplitScreen) { + mPaint.setColor(getTilingHandleColor(isDarkMode)); + setAlpha(.9f); + } + } + + private int getTilingHandleColor(Boolean isDarkMode) { + return isDarkMode ? getResources().getColor( + R.color.tiling_handle_background_dark, null /* theme */) : getResources().getColor( + R.color.tiling_handle_background_light, null /* theme */); + } + /** sets whether it's a left/right or top/bottom split */ public void setIsLeftRightSplit(boolean isLeftRightSplit) { mIsLeftRightSplit = isLeftRightSplit; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java index d5aaf752c3e0..cf0ecae7c815 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java @@ -47,15 +47,17 @@ public class DividerRoundedCorner extends View { private InvertedRoundedCornerDrawInfo mBottomLeftCorner; private InvertedRoundedCornerDrawInfo mBottomRightCorner; private boolean mIsLeftRightSplit; + private boolean mIsSplitScreen; public DividerRoundedCorner(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mDividerWidth = getResources().getDimensionPixelSize(R.dimen.split_divider_bar_width); mDividerBarBackground = new Paint(); mDividerBarBackground.setColor( - getResources().getColor(R.color.split_divider_background, null)); + getResources().getColor(R.color.split_divider_background, null /* theme */)); mDividerBarBackground.setFlags(Paint.ANTI_ALIAS_FLAG); mDividerBarBackground.setStyle(Paint.Style.FILL); + mIsSplitScreen = false; } @Override @@ -99,7 +101,41 @@ public class DividerRoundedCorner extends View { } /** + * Used by tiling infrastructure to specify display light/dark mode and + * whether handle colors should be overridden on display mode change in case + * of non split screen. + * + * @param isSplitScreen Whether the divider is used by split screen or tiling. + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void setup(boolean isSplitScreen, boolean isDarkMode) { + mIsSplitScreen = isSplitScreen; + if (!isSplitScreen) { + mDividerBarBackground.setColor(getTilingHandleColor(isDarkMode)); + } + } + + /** + * Notifies the divider of ui mode change. + * + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void onUiModeChange(boolean isDarkMode) { + if (!mIsSplitScreen) { + mDividerBarBackground.setColor(getTilingHandleColor(isDarkMode)); + invalidate(); + } + } + + private int getTilingHandleColor(boolean isDarkMode) { + return isDarkMode ? getResources().getColor( + R.color.tiling_divider_background_dark, null /* theme */) : getResources().getColor( + R.color.tiling_divider_background_light, null /* theme */); + } + + /** * Set whether the rounded corner is for a left/right split. + * * @param isLeftRightSplit whether it's a left/right split or top/bottom split. */ public void setIsLeftRightSplit(boolean isLeftRightSplit) { @@ -123,7 +159,16 @@ public class DividerRoundedCorner extends View { mCornerPosition = cornerPosition; final RoundedCorner roundedCorner = getDisplay().getRoundedCorner(cornerPosition); - mRadius = roundedCorner == null ? 0 : roundedCorner.getRadius(); + if (mIsSplitScreen) { + mRadius = roundedCorner == null ? 0 : roundedCorner.getRadius(); + } else { + mRadius = mContext + .getResources() + .getDimensionPixelSize( + com.android.wm.shell.shared.R.dimen + .desktop_windowing_freeform_rounded_corner_radius); + } + // Starts with a filled square, and then subtracting out a circle from the appropriate // corner. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java index 201870fe0181..9b11e4ab16fa 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java @@ -872,7 +872,7 @@ public class CompatUIController implements OnDisplaysChangedListener, return false; } boolean isDesktopModeShowing = mDesktopUserRepositories.get().getCurrent() - .getVisibleTaskCount(taskInfo.displayId) > 0; + .isAnyDeskActive(taskInfo.displayId); return DesktopModeFlags.ENABLE_DESKTOP_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE_BUGFIX .isTrue() && isDesktopModeShowing; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index 59acdc574434..79fbd32dafe6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -100,6 +100,7 @@ import com.android.wm.shell.desktopmode.DesktopTasksLimiter; import com.android.wm.shell.desktopmode.DesktopTasksTransitionObserver; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.desktopmode.DragToDesktopTransitionHandler; +import com.android.wm.shell.desktopmode.DragToDisplayTransitionHandler; import com.android.wm.shell.desktopmode.EnterDesktopTaskTransitionHandler; import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler; import com.android.wm.shell.desktopmode.OverviewToDesktopTransitionObserver; @@ -770,7 +771,8 @@ public abstract class WMShellModule { DesksOrganizer desksOrganizer, DesksTransitionObserver desksTransitionObserver, UserProfileContexts userProfileContexts, - DesktopModeCompatPolicy desktopModeCompatPolicy) { + DesktopModeCompatPolicy desktopModeCompatPolicy, + DragToDisplayTransitionHandler dragToDisplayTransitionHandler) { return new DesktopTasksController( context, shellInit, @@ -800,6 +802,7 @@ public abstract class WMShellModule { recentTasksController.orElse(null), interactionJankMonitor, mainHandler, + focusTransitionObserver, desktopModeEventLogger, desktopModeUiEventLogger, desktopWallpaperActivityTokenProvider, @@ -808,7 +811,8 @@ public abstract class WMShellModule { desksOrganizer, desksTransitionObserver, userProfileContexts, - desktopModeCompatPolicy); + desktopModeCompatPolicy, + dragToDisplayTransitionHandler); } @WMSingleton @@ -934,6 +938,12 @@ public abstract class WMShellModule { @WMSingleton @Provides + static DragToDisplayTransitionHandler provideDragToDisplayTransitionHandler() { + return new DragToDisplayTransitionHandler(); + } + + @WMSingleton + @Provides static Optional<DesktopModeKeyGestureHandler> provideDesktopModeKeyGestureHandler( Context context, Optional<DesktopModeWindowDecorViewModel> desktopModeWindowDecorViewModel, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt index 6104e79efc66..b8f4bb8d8323 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt @@ -84,7 +84,7 @@ class DesktopActivityOrientationChangeHandler( if (!Flags.respectOrientationChangeForUnresizeable()) return val task = shellTaskOrganizer.getRunningTaskInfo(taskId) ?: return val taskRepository = desktopUserRepositories.current - val isDesktopModeShowing = taskRepository.getVisibleTaskCount(task.displayId) > 0 + val isDesktopModeShowing = taskRepository.isAnyDeskActive(task.displayId) if (!isDesktopModeShowing || !task.isFreeform || task.isResizeable) return val taskBounds = task.configuration.windowConfiguration.bounds diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt index c9a63ff818f5..e89aafe267ed 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt @@ -27,9 +27,9 @@ import android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERN import android.view.Display.DEFAULT_DISPLAY import android.view.IWindowManager import android.view.WindowManager.TRANSIT_CHANGE +import android.window.DesktopExperienceFlags import android.window.WindowContainerTransaction import com.android.internal.protolog.ProtoLog -import com.android.window.flags.Flags import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTaskOrganizer import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider @@ -47,31 +47,9 @@ class DesktopDisplayModeController( ) { fun refreshDisplayWindowingMode() { - if (!Flags.enableDisplayWindowingModeSwitching()) return - // TODO: b/375319538 - Replace the check with a DisplayManager API once it's available. - val isExtendedDisplayEnabled = - 0 != - Settings.Global.getInt( - context.contentResolver, - DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, - 0, - ) - if (!isExtendedDisplayEnabled) { - // No action needed in mirror or projected mode. - return - } + if (!DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) return - val hasNonDefaultDisplay = - rootTaskDisplayAreaOrganizer.getDisplayIds().any { displayId -> - displayId != DEFAULT_DISPLAY - } - val targetDisplayWindowingMode = - if (hasNonDefaultDisplay) { - WINDOWING_MODE_FREEFORM - } else { - // Use the default display windowing mode when no non-default display. - windowManager.getWindowingMode(DEFAULT_DISPLAY) - } + val targetDisplayWindowingMode = getTargetWindowingModeForDefaultDisplay() val tdaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY) requireNotNull(tdaInfo) { "DisplayAreaInfo of DEFAULT_DISPLAY must be non-null." } val currentDisplayWindowingMode = tdaInfo.configuration.windowConfiguration.windowingMode @@ -111,6 +89,25 @@ class DesktopDisplayModeController( transitions.startTransition(TRANSIT_CHANGE, wct, /* handler= */ null) } + private fun getTargetWindowingModeForDefaultDisplay(): Int { + if (isExtendedDisplayEnabled() && hasExternalDisplay()) { + return WINDOWING_MODE_FREEFORM + } + return windowManager.getWindowingMode(DEFAULT_DISPLAY) + } + + // TODO: b/375319538 - Replace the check with a DisplayManager API once it's available. + private fun isExtendedDisplayEnabled() = + 0 != + Settings.Global.getInt( + context.contentResolver, + DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, + 0, + ) + + private fun hasExternalDisplay() = + rootTaskDisplayAreaOrganizer.getDisplayIds().any { it != DEFAULT_DISPLAY } + private fun logV(msg: String, vararg arguments: Any?) { ProtoLog.v(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments) } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt index 7074e8bc9cce..6c6d830e915e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandler.kt @@ -21,6 +21,7 @@ import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM import android.os.Handler import android.os.IBinder import android.view.SurfaceControl.Transaction +import android.view.WindowManager.TRANSIT_TO_BACK import android.window.TransitionInfo import android.window.TransitionRequestInfo import android.window.WindowContainerTransaction @@ -61,7 +62,9 @@ class DesktopMinimizationTransitionHandler( finishTransaction: Transaction, finishCallback: Transitions.TransitionFinishCallback, ): Boolean { - if (!TransitionUtil.isClosingType(info.type)) return false + val shouldAnimate = + TransitionUtil.isClosingType(info.type) || info.type == Transitions.TRANSIT_MINIMIZE + if (!shouldAnimate) return false val animations = mutableListOf<Animator>() val onAnimFinish: (Animator) -> Unit = { animator -> @@ -75,10 +78,14 @@ class DesktopMinimizationTransitionHandler( } } + val checkChangeMode = { change: TransitionInfo.Change -> + change.mode == info.type || + (info.type == Transitions.TRANSIT_MINIMIZE && change.mode == TRANSIT_TO_BACK) + } animations += info.changes .filter { - it.mode == info.type && it.taskInfo?.windowingMode == WINDOWING_MODE_FREEFORM + checkChangeMode(it) && it.taskInfo?.windowingMode == WINDOWING_MODE_FREEFORM } .mapNotNull { createMinimizeAnimation(it, finishTransaction, onAnimFinish) } if (animations.isEmpty()) return false diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt index 0cc8a6a5c1a3..e3a71a1ad9a5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt @@ -16,14 +16,19 @@ package com.android.wm.shell.desktopmode +import android.app.ActivityTaskManager.INVALID_TASK_ID import android.window.DesktopExperienceFlags +import com.android.wm.shell.desktopmode.DesktopModeEventLogger.Companion.UnminimizeReason import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.sysui.ShellCommandHandler +import com.android.wm.shell.transition.FocusTransitionObserver import java.io.PrintWriter /** Handles the shell commands for the DesktopTasksController. */ -class DesktopModeShellCommandHandler(private val controller: DesktopTasksController) : - ShellCommandHandler.ShellCommandActionHandler { +class DesktopModeShellCommandHandler( + private val controller: DesktopTasksController, + private val focusTransitionObserver: FocusTransitionObserver, +) : ShellCommandHandler.ShellCommandActionHandler { override fun onShellCommand(args: Array<String>, pw: PrintWriter): Boolean = when (args[0]) { @@ -76,20 +81,21 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl } private fun runMoveToNextDisplay(args: Array<String>, pw: PrintWriter): Boolean { + var taskId = INVALID_TASK_ID if (args.size < 2) { - // First argument is the action name. - pw.println("Error: task id should be provided as arguments") - return false - } - - val taskId = + taskId = focusTransitionObserver.globallyFocusedTaskId + } else { try { - args[1].toInt() + taskId = args[1].toInt() } catch (e: NumberFormatException) { pw.println("Error: task id should be an integer") return false } - + } + if (taskId == INVALID_TASK_ID) { + pw.println("Error: no appropriate task found") + return false + } controller.moveToNextDisplay(taskId) return true } @@ -183,8 +189,12 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl pw.println("Error: task id should be an integer") return false } - pw.println("Not implemented.") - return false + controller.moveTaskToFront( + /* taskId= */ taskId, + /* remoteTransition= */ null, + /* unminimizeReason= */ UnminimizeReason.UNKNOWN, + ) + return true } private fun runMoveTaskOutOfDesk(args: Array<String>, pw: PrintWriter): Boolean { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt index 04e609ec3820..73df9767ee50 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt @@ -460,11 +460,15 @@ class DesktopRepository( .singleOrNull() == taskId } - /** - * Returns the active tasks in the given display's active desk. - * - * TODO: b/389960283 - migrate callers to [getActiveTaskIdsInDesk]. - */ + /** Whether the task is the only visible desktop task in the display. */ + fun isOnlyVisibleTask(taskId: Int, displayId: Int): Boolean { + val desk = desktopData.getActiveDesk(displayId) ?: return false + return desk.visibleTasks.size == 1 && desk.visibleTasks.single() == taskId + } + + /** Whether the display has only one visible desktop task. */ + fun hasOnlyOneVisibleTask(displayId: Int): Boolean = getVisibleTaskCount(displayId) == 1 + @VisibleForTesting fun getActiveTasks(displayId: Int): ArraySet<Int> = ArraySet(desktopData.getActiveDesk(displayId)?.activeTasks) @@ -593,7 +597,7 @@ class DesktopRepository( } else { desk.visibleTasks.remove(taskId) } - val newCount = getVisibleTaskCount(deskId) + val newCount = getVisibleTaskCountInDesk(deskId) if (prevCount != newCount) { logD( "Update task visibility taskId=%d visible=%b deskId=%d displayId=%d", @@ -777,18 +781,29 @@ class DesktopRepository( } } - /** - * Gets number of visible freeform tasks on given [displayId]'s active desk. - * - * TODO: b/389960283 - migrate callers to [getVisibleTaskCountInDesk]. - */ + /** Whether the display is currently showing any desk. */ + fun isAnyDeskActive(displayId: Int): Boolean { + if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { + val desk = desktopData.getDefaultDesk(displayId) + if (desk == null) { + logE("Could not find default desk for display: $displayId") + return false + } + return desk.visibleTasks.isNotEmpty() + } + return desktopData.getActiveDesk(displayId) != null + } + + /** Gets number of visible freeform tasks on given [displayId]'s active desk. */ + @Deprecated("Use isAnyDeskActive() instead.", ReplaceWith("isAnyDeskActive()")) + @VisibleForTesting fun getVisibleTaskCount(displayId: Int): Int = (desktopData.getActiveDesk(displayId)?.visibleTasks?.size ?: 0).also { logD("getVisibleTaskCount=$it") } /** Gets the number of visible tasks on the given desk. */ - fun getVisibleTaskCountInDesk(deskId: Int): Int = + private fun getVisibleTaskCountInDesk(deskId: Int): Int = desktopData.getDesk(deskId)?.visibleTasks?.size ?: 0 /** @@ -1007,6 +1022,21 @@ class DesktopRepository( fun saveBoundsBeforeFullImmersive(taskId: Int, bounds: Rect) = boundsBeforeFullImmersiveByTaskId.set(taskId, Rect(bounds)) + /** Returns the current state of the desktop, formatted for usage by remote clients. */ + fun getDeskDisplayStateForRemote(): Array<DisplayDeskState> = + desktopData + .desksSequence() + .groupBy { it.displayId } + .map { (displayId, desks) -> + val activeDeskId = desktopData.getActiveDesk(displayId)?.deskId + DisplayDeskState().apply { + this.displayId = displayId + this.activeDeskId = activeDeskId ?: INVALID_DESK_ID + this.deskIds = desks.map { it.deskId }.toIntArray() + } + } + .toTypedArray() + /** TODO: b/389960283 - consider updating only the changing desks. */ private fun updatePersistentRepository(displayId: Int) { val desks = desktopData.desksSequence(displayId).map { desk -> desk.deepCopy() }.toList() diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt index 6034299453fb..70a648f57125 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt @@ -35,7 +35,7 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId) return } - if (isFreeformTask(taskInfo)) { + if (isFreeformTask(taskInfo) && !desktopRepository.isActiveTask(taskInfo.taskId)) { desktopRepository.addTask(taskInfo.displayId, taskInfo.taskId, taskInfo.isVisible) } } @@ -44,23 +44,33 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser logD("onTaskChanging for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId) val desktopRepository: DesktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) - if (!desktopRepository.isActiveTask(taskInfo.taskId)) return - // TODO: b/394281403 - with multiple desks, it's possible to have a non-freeform task // inside a desk, so this should be decoupled from windowing mode. // Also, changes in/out of desks are handled by the [DesksTransitionObserver], which has // more specific information about the desk involved in the transition, which might be // more accurate than assuming it's always the default/active desk in the display, as this // method does. - // Case 1: Freeform task is changed in Desktop Mode. - if (isFreeformTask(taskInfo)) { - if (taskInfo.isVisible) { + // Case 1: When the task change is from a task in the desktop repository which is now + // fullscreen, + // remove the task from the desktop repository since it is no longer a freeform task. + if (!isFreeformTask(taskInfo)) { + if (desktopRepository.isActiveTask(taskInfo.taskId)) { + desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId) + } + } else { // Task change is a freeform task + if (!desktopRepository.isActiveTask(taskInfo.taskId)) { + // Case 2: When the task change is a freeform visible task, but the task is not + // yet active in the desktop repository, adds task to desktop repository. desktopRepository.addTask(taskInfo.displayId, taskInfo.taskId, taskInfo.isVisible) + } else { + // Case 3: When the task change is a freeform task which already exists as an active + // task in the desktop repository, updates the task state. + desktopRepository.updateTask( + taskInfo.displayId, + taskInfo.taskId, + taskInfo.isVisible, + ) } - desktopRepository.updateTask(taskInfo.displayId, taskInfo.taskId, taskInfo.isVisible) - } else { - // Case 2: Freeform task is changed outside Desktop Mode. - desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId) } } @@ -82,14 +92,22 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser logD("onTaskMovingToFront for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId) val desktopRepository: DesktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) - if (!desktopRepository.isActiveTask(taskInfo.taskId)) return - if (!isFreeformTask(taskInfo)) { + // When the task change is from a task in the desktop repository which is now fullscreen, + // remove the task from the desktop repository since it is no longer a freeform task. + if (!isFreeformTask(taskInfo) && desktopRepository.isActiveTask(taskInfo.taskId)) { desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId) } - desktopRepository.addTask(taskInfo.displayId, taskInfo.taskId, taskInfo.isVisible) + if (isFreeformTask(taskInfo)) { + // If the task is already active in the repository, then it only moves the task to the + // front. + desktopRepository.addTask(taskInfo.displayId, taskInfo.taskId, taskInfo.isVisible) + } } override fun onTaskMovingToBack(taskInfo: RunningTaskInfo) { + val desktopRepository: DesktopRepository = + desktopUserRepositories.getProfile(taskInfo.userId) + if (!desktopRepository.isActiveTask(taskInfo.taskId)) return logD("onTaskMovingToBack for taskId=%d, displayId=%d", taskInfo.taskId, taskInfo.displayId) // TODO: b/367268953 - Connect this with DesktopRepository. } @@ -101,7 +119,7 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser if (!desktopRepository.isActiveTask(taskInfo.taskId)) return // TODO: b/370038902 - Handle Activity#finishAndRemoveTask. if ( - !DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue() || + !DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue || desktopRepository.isClosingTask(taskInfo.taskId) ) { // A task that's vanishing should be removed: diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 180d069f359d..8f7e52ea2108 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -138,6 +138,7 @@ import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit import com.android.wm.shell.sysui.UserChangeListener +import com.android.wm.shell.transition.FocusTransitionObserver import com.android.wm.shell.transition.OneShotRemoteHandler import com.android.wm.shell.transition.Transitions import com.android.wm.shell.transition.Transitions.TransitionFinishCallback @@ -196,6 +197,7 @@ class DesktopTasksController( private val recentTasksController: RecentTasksController?, private val interactionJankMonitor: InteractionJankMonitor, @ShellMainThread private val handler: Handler, + private val focusTransitionObserver: FocusTransitionObserver, private val desktopModeEventLogger: DesktopModeEventLogger, private val desktopModeUiEventLogger: DesktopModeUiEventLogger, private val desktopWallpaperActivityTokenProvider: DesktopWallpaperActivityTokenProvider, @@ -205,6 +207,7 @@ class DesktopTasksController( private val desksTransitionObserver: DesksTransitionObserver, private val userProfileContexts: UserProfileContexts, private val desktopModeCompatPolicy: DesktopModeCompatPolicy, + private val dragToDisplayTransitionHandler: DragToDisplayTransitionHandler, ) : RemoteCallable<DesktopTasksController>, Transitions.TransitionHandler, @@ -216,7 +219,7 @@ class DesktopTasksController( private var visualIndicator: DesktopModeVisualIndicator? = null private var userId: Int private val desktopModeShellCommandHandler: DesktopModeShellCommandHandler = - DesktopModeShellCommandHandler(this) + DesktopModeShellCommandHandler(this, focusTransitionObserver) private val mOnAnimationFinishedCallback = { releaseVisualIndicator() } private lateinit var snapEventHandler: SnapEventHandler @@ -336,8 +339,8 @@ class DesktopTasksController( activateDefaultDeskInDisplay(displayId, remoteTransition) } - /** Gets number of visible freeform tasks in [displayId]. */ - fun visibleTaskCount(displayId: Int): Int = taskRepository.getVisibleTaskCount(displayId) + /** Returns whether the given display has an active desk. */ + fun isAnyDeskActive(displayId: Int): Boolean = taskRepository.isAnyDeskActive(displayId) /** * Returns true if any of the following is true: @@ -345,9 +348,16 @@ class DesktopTasksController( * - A transparent fullscreen task exists on top in Desktop Mode * - PiP on Desktop Windowing is enabled, there is an active PiP window and the desktop * wallpaper is visible. + * + * TODO: b/362720497 - consolidate with [isAnyDeskActive]. + * - top-transparent-fullscreen case: should not be needed if we allow it to launch inside + * the desk in fullscreen instead of force-exiting desktop and having to trick this method + * into thinking it is in desktop mode when a task in this state exists. + * - PIP case: a PIP presence should influence desk activation, so + * [DesktopRepository#isAnyDeskActive] should be sufficient. */ fun isDesktopModeShowing(displayId: Int): Boolean { - val hasVisibleTasks = visibleTaskCount(displayId) > 0 + val hasVisibleTasks = taskRepository.isAnyDeskActive(displayId) val hasTopTransparentFullscreenTask = taskRepository.getTopTransparentFullscreenTaskId(displayId) != null val hasMinimizedPip = @@ -462,15 +472,14 @@ class DesktopTasksController( remoteTransition: RemoteTransition? = null, callback: IMoveToDesktopCallback? = null, ): Boolean { - val runningTask = shellTaskOrganizer.getRunningTaskInfo(taskId) - val backgroundTask = recentTasksController?.findTaskInBackground(taskId) - if (runningTask == null && backgroundTask == null) { + val task = + shellTaskOrganizer.getRunningTaskInfo(taskId) + ?: recentTasksController?.findTaskInBackground(taskId) + if (task == null) { logW("moveTaskToDefaultDeskAndActivate taskId=%d not found", taskId) return false } - // TODO(342378842): Instead of using default display, support multiple displays - val displayId = runningTask?.displayId ?: DEFAULT_DISPLAY - val deskId = getDefaultDeskId(displayId) + val deskId = getDefaultDeskId(task.displayId) return moveTaskToDesk( taskId = taskId, deskId = deskId, @@ -522,14 +531,14 @@ class DesktopTasksController( remoteTransition: RemoteTransition? = null, callback: IMoveToDesktopCallback? = null, ): Boolean { - if (recentTasksController?.findTaskInBackground(taskId) == null) { + val task = recentTasksController?.findTaskInBackground(taskId) + if (task == null) { logW("moveBackgroundTaskToDesktop taskId=%d not found", taskId) return false } logV("moveBackgroundTaskToDesktop with taskId=%d", taskId) - // TODO(342378842): Instead of using default display, support multiple displays val taskIdToMinimize = - bringDesktopAppsToFrontBeforeShowingNewTask(DEFAULT_DISPLAY, wct, taskId) + bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, taskId) val exitResult = desktopImmersiveController.exitImmersiveIfApplicable( wct = wct, @@ -668,11 +677,7 @@ class DesktopTasksController( // Bring other apps to front first. bringDesktopAppsToFrontBeforeShowingNewTask(displayId, wct, task.taskId) } - if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { - prepareMoveTaskToDesk(wct, task, deskId) - } else { - addMoveToDesktopChanges(wct, task) - } + addMoveToDeskTaskChanges(wct = wct, task = task, deskId = deskId) return taskIdToMinimize } @@ -811,7 +816,7 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = taskInfo.taskId, displayId = displayId, - forceToFullscreen = false, + forceExitDesktop = false, ) taskRepository.setPipShouldKeepDesktopActive(displayId, keepActive = true) val desktopExitRunnable = @@ -884,7 +889,7 @@ class DesktopTasksController( snapEventHandler.removeTaskIfTiled(displayId, taskId) taskRepository.setPipShouldKeepDesktopActive(displayId, keepActive = true) - val willExitDesktop = willExitDesktop(taskId, displayId, forceToFullscreen = false) + val willExitDesktop = willExitDesktop(taskId, displayId, forceExitDesktop = false) val desktopExitRunnable = performDesktopExitCleanUp( wct = wct, @@ -977,7 +982,7 @@ class DesktopTasksController( ) { logV("moveToFullscreenWithAnimation taskId=%d", task.taskId) val wct = WindowContainerTransaction() - val willExitDesktop = willExitDesktop(task.taskId, task.displayId, forceToFullscreen = true) + val willExitDesktop = willExitDesktop(task.taskId, task.displayId, forceExitDesktop = true) val deactivationRunnable = addMoveToFullscreenChanges(wct, task, willExitDesktop) // We are moving a freeform task to fullscreen, put the home task under the fullscreen task. @@ -996,7 +1001,14 @@ class DesktopTasksController( deactivationRunnable?.invoke(transition) // handles case where we are moving to full screen without closing all DW tasks. - if (!taskRepository.isOnlyVisibleNonClosingTask(task.taskId)) { + if ( + !taskRepository.isOnlyVisibleNonClosingTask(task.taskId) + // This callback is already invoked by |addMoveToFullscreenChanges| when one of these + // flags is enabled. + && + !DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && + !Flags.enableDesktopWindowingPip() + ) { desktopModeEnterExitTransitionListener?.onExitDesktopModeTransitionStarted( FULLSCREEN_ANIMATION_DURATION ) @@ -1105,12 +1117,13 @@ class DesktopTasksController( excludeTaskId = launchingTaskId, reason = DesktopImmersiveController.ExitReason.TASK_LAUNCH, ) - var deskIdToActivate: Int? = null - if ( - DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue && + var activationRunOnTransitStart: RunOnTransitStart? = null + val shouldActivateDesk = + (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue || + DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) && !isDesktopModeShowing(displayId) - ) { - deskIdToActivate = + if (shouldActivateDesk) { + val deskIdToActivate = checkNotNull( launchingTaskId?.let { taskRepository.getDeskIdForTask(it) } ?: getDefaultDeskId(displayId) @@ -1120,6 +1133,18 @@ class DesktopTasksController( // Desk activation must be handled before app launch-related transactions. activateDeskWct.merge(launchTransaction, /* transfer= */ true) launchTransaction = activateDeskWct + activationRunOnTransitStart = { transition -> + desksTransitionObserver.addPendingTransition( + DeskTransition.ActivateDesk( + token = transition, + displayId = displayId, + deskId = deskIdToActivate, + ) + ) + } + desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted( + FREEFORM_ANIMATION_DURATION + ) } val t = if (remoteTransition == null) { @@ -1153,24 +1178,7 @@ class DesktopTasksController( if (launchingTaskId != null && taskRepository.isMinimizedTask(launchingTaskId)) { addPendingUnminimizeTransition(t, displayId, launchingTaskId, unminimizeReason) } - if ( - DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && - deskIdToActivate != null - ) { - if (DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) { - desksTransitionObserver.addPendingTransition( - DeskTransition.ActivateDesk( - token = t, - displayId = displayId, - deskId = deskIdToActivate, - ) - ) - } - - desktopModeEnterExitTransitionListener?.onEnterDesktopModeTransitionStarted( - FREEFORM_ANIMATION_DURATION - ) - } + activationRunOnTransitStart?.invoke(t) exitImmersiveResult.asExit()?.runOnTransitionStart?.invoke(t) return t } @@ -1234,6 +1242,10 @@ class DesktopTasksController( pendingIntentBackgroundActivityStartMode = ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_ALWAYS launchBounds = bounds + if (DesktopModeFlags.ENABLE_SHELL_INITIAL_BOUNDS_REGRESSION_BUG_FIX.isTrue) { + // Sets launch bounds size as flexible so core can recalculate. + flexibleLaunchSize = true + } } wct.sendPendingIntent(pendingIntent, intent, ops.toBundle()) @@ -1244,6 +1256,8 @@ class DesktopTasksController( * Move [task] to display with [displayId]. * * No-op if task is already on that display per [RunningTaskInfo.displayId]. + * + * TODO: b/399411604 - split this up into smaller functions. */ private fun moveToDisplay(task: RunningTaskInfo, displayId: Int) { logV("moveToDisplay: taskId=%d displayId=%d", task.taskId, displayId) @@ -1299,30 +1313,32 @@ class DesktopTasksController( // TODO: b/393977830 and b/397437641 - do not assume that freeform==desktop. if (!task.isFreeform) { - addMoveToDesktopChanges(wct, task, displayId) - } else if (Flags.enableMoveToNextDisplayShortcut()) { - applyFreeformDisplayChange(wct, task, displayId) + addMoveToDeskTaskChanges(wct = wct, task = task, deskId = destinationDeskId) + } else { + if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { + desksOrganizer.moveTaskToDesk(wct, destinationDeskId, task) + } + if (Flags.enableMoveToNextDisplayShortcut()) { + applyFreeformDisplayChange(wct, task, displayId) + } } - val activationRunnable: RunOnTransitStart? - if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { - desksOrganizer.moveTaskToDesk(wct, destinationDeskId, task) - prepareForDeskActivation(displayId, wct) - desksOrganizer.activateDesk(wct, destinationDeskId) - activationRunnable = { transition -> - desksTransitionObserver.addPendingTransition( - DeskTransition.ActiveDeskWithTask( - token = transition, - displayId = displayId, - deskId = destinationDeskId, - enterTaskId = task.taskId, - ) - ) - } - } else { + if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { wct.reparent(task.token, displayAreaInfo.token, /* onTop= */ true) - activationRunnable = null } + + addDeskActivationChanges(destinationDeskId, wct) + val activationRunnable: RunOnTransitStart = { transition -> + desksTransitionObserver.addPendingTransition( + DeskTransition.ActiveDeskWithTask( + token = transition, + displayId = displayId, + deskId = destinationDeskId, + enterTaskId = task.taskId, + ) + ) + } + if (Flags.enableDisplayFocusInShellTransitions()) { // Bring the destination display to top with includingParents=true, so that the // destination display gains the display focus, which makes the top task in the display @@ -1893,16 +1909,24 @@ class DesktopTasksController( private fun willExitDesktop( triggerTaskId: Int, displayId: Int, - forceToFullscreen: Boolean, + forceExitDesktop: Boolean, ): Boolean { + if ( + forceExitDesktop && + (Flags.enableDesktopWindowingPip() || + DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) + ) { + // |forceExitDesktop| is true when the callers knows we'll exit desktop, such as when + // explicitly going fullscreen, so there's no point in checking the desktop state. + return true + } if (Flags.enablePerDisplayDesktopWallpaperActivity()) { if (!taskRepository.isOnlyVisibleNonClosingTask(triggerTaskId, displayId)) { return false } } else if ( Flags.enableDesktopWindowingPip() && - taskRepository.isMinimizedPipPresentInDisplay(displayId) && - !forceToFullscreen + taskRepository.isMinimizedPipPresentInDisplay(displayId) ) { return false } else { @@ -2040,12 +2064,13 @@ class DesktopTasksController( triggerTask?.let { task -> when { // Check if freeform task launch during recents should be handled - shouldHandleMidRecentsFreeformLaunch -> handleMidRecentsFreeformTaskLaunch(task) + shouldHandleMidRecentsFreeformLaunch -> + handleMidRecentsFreeformTaskLaunch(task, transition) // Check if the closing task needs to be handled TransitionUtil.isClosingType(request.type) -> handleTaskClosing(task, transition, request.type) // Check if the top task shouldn't be allowed to enter desktop mode - isIncompatibleTask(task) -> handleIncompatibleTaskLaunch(task) + isIncompatibleTask(task) -> handleIncompatibleTaskLaunch(task, transition) // Check if fullscreen task should be updated task.isFullscreen -> handleFullscreenTaskLaunch(task, transition) // Check if freeform task should be updated @@ -2284,20 +2309,23 @@ class DesktopTasksController( * This is a special case where we want to launch the task in fullscreen instead of freeform. */ private fun handleMidRecentsFreeformTaskLaunch( - task: RunningTaskInfo + task: RunningTaskInfo, + transition: IBinder, ): WindowContainerTransaction? { logV("DesktopTasksController: handleMidRecentsFreeformTaskLaunch") val wct = WindowContainerTransaction() - addMoveToFullscreenChanges( - wct = wct, - taskInfo = task, - willExitDesktop = - willExitDesktop( - triggerTaskId = task.taskId, - displayId = task.displayId, - forceToFullscreen = true, - ), - ) + val runOnTransitStart = + addMoveToFullscreenChanges( + wct = wct, + taskInfo = task, + willExitDesktop = + willExitDesktop( + triggerTaskId = task.taskId, + displayId = task.displayId, + forceExitDesktop = true, + ), + ) + runOnTransitStart?.invoke(transition) wct.reorder(task.token, true) return wct } @@ -2321,16 +2349,18 @@ class DesktopTasksController( // launched. We should make this task go to fullscreen instead of freeform. Note // that this means any re-launch of a freeform window outside of desktop will be in // fullscreen as long as default-desktop flag is disabled. - addMoveToFullscreenChanges( - wct = wct, - taskInfo = task, - willExitDesktop = - willExitDesktop( - triggerTaskId = task.taskId, - displayId = task.displayId, - forceToFullscreen = true, - ), - ) + val runOnTransitStart = + addMoveToFullscreenChanges( + wct = wct, + taskInfo = task, + willExitDesktop = + willExitDesktop( + triggerTaskId = task.taskId, + displayId = task.displayId, + forceExitDesktop = true, + ), + ) + runOnTransitStart?.invoke(transition) return wct } bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, task.taskId) @@ -2394,7 +2424,8 @@ class DesktopTasksController( if (shouldFullscreenTaskLaunchSwitchToDesktop(task)) { logD("Switch fullscreen task to freeform on transition: taskId=%d", task.taskId) return WindowContainerTransaction().also { wct -> - addMoveToDesktopChanges(wct, task) + val deskId = getDefaultDeskId(task.displayId) + addMoveToDeskTaskChanges(wct = wct, task = task, deskId = deskId) // In some launches home task is moved behind new task being launched. Make sure // that's not the case for launches in desktop. Also, if this launch is the first // one to trigger the desktop mode (e.g., when [forceEnterDesktop()]), activate the @@ -2425,7 +2456,8 @@ class DesktopTasksController( // If a freeform task receives a request for a fullscreen launch, apply the same // changes we do for similar transitions. The task not having WINDOWING_MODE_UNDEFINED // set when needed can interfere with future split / multi-instance transitions. - return WindowContainerTransaction().also { wct -> + val wct = WindowContainerTransaction() + val runOnTransitStart = addMoveToFullscreenChanges( wct = wct, taskInfo = task, @@ -2433,10 +2465,11 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = task.taskId, displayId = task.displayId, - forceToFullscreen = true, + forceExitDesktop = true, ), ) - } + runOnTransitStart?.invoke(transition) + return wct } return null } @@ -2451,7 +2484,10 @@ class DesktopTasksController( * If a task is not compatible with desktop mode freeform, it should always be launched in * fullscreen. */ - private fun handleIncompatibleTaskLaunch(task: RunningTaskInfo): WindowContainerTransaction? { + private fun handleIncompatibleTaskLaunch( + task: RunningTaskInfo, + transition: IBinder, + ): WindowContainerTransaction? { logV("handleIncompatibleTaskLaunch") if (!isDesktopModeShowing(task.displayId) && !forceEnterDesktop(task.displayId)) return null // Only update task repository for transparent task. @@ -2463,7 +2499,8 @@ class DesktopTasksController( } // Already fullscreen, no-op. if (task.isFullscreen) return null - return WindowContainerTransaction().also { wct -> + val wct = WindowContainerTransaction() + val runOnTransitStart = addMoveToFullscreenChanges( wct = wct, taskInfo = task, @@ -2471,10 +2508,11 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = task.taskId, displayId = task.displayId, - forceToFullscreen = true, + forceExitDesktop = true, ), ) - } + runOnTransitStart?.invoke(transition) + return wct } /** @@ -2521,55 +2559,44 @@ class DesktopTasksController( } /** - * Apply all changes required when task is first added to desktop. Uses the task's current - * display by default to apply initial bounds and placement relative to the display. Use a - * different [displayId] if the task should be moved to a different display. + * Applies the [wct] changes needed when a task is first moving to a desk. + * + * Note that this recalculates the initial bounds of the task, so it should not be used when + * transferring a task between desks. + * + * TODO: b/362720497 - this should be improved to be reusable by desk-to-desk CUJs where + * [DesksOrganizer.moveTaskToDesk] needs to be called and even cross-display CUJs where + * [applyFreeformDisplayChange] needs to be called. Potentially by comparing source vs + * destination desk ids and display ids, or adding extra arguments to the function. */ - @VisibleForTesting - @Deprecated("Deprecated with multiple desks", ReplaceWith("prepareMoveTaskToDesk()")) - fun addMoveToDesktopChanges( + fun addMoveToDeskTaskChanges( wct: WindowContainerTransaction, - taskInfo: RunningTaskInfo, - displayId: Int = taskInfo.displayId, - ) { - val displayLayout = displayController.getDisplayLayout(displayId) ?: return - val tdaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(displayId)!! - val tdaWindowingMode = tdaInfo.configuration.windowConfiguration.windowingMode - // TODO: b/397437641 - reconsider the windowing mode choice when multiple desks is enabled. - val targetWindowingMode = - if (tdaWindowingMode == WINDOWING_MODE_FREEFORM) { - // Display windowing is freeform, set to undefined and inherit it - WINDOWING_MODE_UNDEFINED - } else { - WINDOWING_MODE_FREEFORM - } - val initialBounds = getInitialBounds(displayLayout, taskInfo, displayId) - - if (canChangeTaskPosition(taskInfo)) { - wct.setBounds(taskInfo.token, initialBounds) - } - wct.setWindowingMode(taskInfo.token, targetWindowingMode) - wct.reorder(taskInfo.token, /* onTop= */ true) - if (useDesktopOverrideDensity()) { - wct.setDensityDpi(taskInfo.token, DESKTOP_DENSITY_OVERRIDE) - } - } - - private fun prepareMoveTaskToDesk( - wct: WindowContainerTransaction, - taskInfo: RunningTaskInfo, + task: RunningTaskInfo, deskId: Int, ) { - if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) return - val displayId = taskRepository.getDisplayForDesk(deskId) - val displayLayout = displayController.getDisplayLayout(displayId) ?: return - val initialBounds = getInitialBounds(displayLayout, taskInfo, displayId) - if (canChangeTaskPosition(taskInfo)) { - wct.setBounds(taskInfo.token, initialBounds) + val targetDisplayId = taskRepository.getDisplayForDesk(deskId) + val displayLayout = displayController.getDisplayLayout(targetDisplayId) ?: return + val initialBounds = getInitialBounds(displayLayout, task, targetDisplayId) + if (canChangeTaskPosition(task)) { + wct.setBounds(task.token, initialBounds) + } + if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { + desksOrganizer.moveTaskToDesk(wct = wct, deskId = deskId, task = task) + } else { + val tdaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(targetDisplayId)!! + val tdaWindowingMode = tdaInfo.configuration.windowConfiguration.windowingMode + val targetWindowingMode = + if (tdaWindowingMode == WINDOWING_MODE_FREEFORM) { + // Display windowing is freeform, set to undefined and inherit it + WINDOWING_MODE_UNDEFINED + } else { + WINDOWING_MODE_FREEFORM + } + wct.setWindowingMode(task.token, targetWindowingMode) + wct.reorder(task.token, /* onTop= */ true) } - desksOrganizer.moveTaskToDesk(wct, deskId = deskId, task = taskInfo) if (useDesktopOverrideDensity()) { - wct.setDensityDpi(taskInfo.token, DESKTOP_DENSITY_OVERRIDE) + wct.setDensityDpi(task.token, DESKTOP_DENSITY_OVERRIDE) } } @@ -3173,25 +3200,24 @@ class DesktopTasksController( val wct = WindowContainerTransaction() wct.setBounds(taskInfo.token, destinationBounds) - // TODO: b/362720497 - reparent to a specific desk within the target display. - // Reparent task if it has been moved to a new display. - if (Flags.enableConnectedDisplaysWindowDrag()) { - val newDisplayId = motionEvent.getDisplayId() - if (newDisplayId != taskInfo.getDisplayId()) { - val displayAreaInfo = - rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(newDisplayId) - if (displayAreaInfo == null) { - logW( - "Task reparent cannot find DisplayAreaInfo for displayId=%d", - newDisplayId, - ) - } else { - wct.reparent(taskInfo.token, displayAreaInfo.token, /* onTop= */ true) - } + val newDisplayId = motionEvent.getDisplayId() + val displayAreaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(newDisplayId) + val isCrossDisplayDrag = + Flags.enableConnectedDisplaysWindowDrag() && + newDisplayId != taskInfo.getDisplayId() && + displayAreaInfo != null + val handler = + if (isCrossDisplayDrag) { + dragToDisplayTransitionHandler + } else { + null } + if (isCrossDisplayDrag) { + // TODO: b/362720497 - reparent to a specific desk within the target display. + wct.reparent(taskInfo.token, displayAreaInfo.token, /* onTop= */ true) } - transitions.startTransition(TRANSIT_CHANGE, wct, null) + transitions.startTransition(TRANSIT_CHANGE, wct, handler) releaseVisualIndicator() } @@ -3613,27 +3639,11 @@ class DesktopTasksController( controller, { c -> run { - c.taskRepository.addDeskChangeListener( - deskChangeListener, - c.mainExecutor, - ) - c.taskRepository.addVisibleTasksListener( - visibleTasksListener, - c.mainExecutor, - ) - c.taskbarDesktopTaskListener = taskbarDesktopTaskListener - c.desktopModeEnterExitTransitionListener = - desktopModeEntryExitTransitionListener - } - }, - { c -> - run { - c.taskRepository.removeDeskChangeListener(deskChangeListener) - c.taskRepository.removeVisibleTasksListener(visibleTasksListener) - c.taskbarDesktopTaskListener = null - c.desktopModeEnterExitTransitionListener = null + syncInitialState(c) + registerListeners(c) } }, + { c -> run { unregisterListeners(c) } }, ) } @@ -3729,6 +3739,31 @@ class DesktopTasksController( c.startLaunchIntentTransition(intent, options, displayId) } } + + private fun syncInitialState(c: DesktopTasksController) { + remoteListener.call { l -> + // TODO: b/393962589 - implement desks limit. + val canCreateDesks = true + l.onListenerConnected( + c.taskRepository.getDeskDisplayStateForRemote(), + canCreateDesks, + ) + } + } + + private fun registerListeners(c: DesktopTasksController) { + c.taskRepository.addDeskChangeListener(deskChangeListener, c.mainExecutor) + c.taskRepository.addVisibleTasksListener(visibleTasksListener, c.mainExecutor) + c.taskbarDesktopTaskListener = taskbarDesktopTaskListener + c.desktopModeEnterExitTransitionListener = desktopModeEntryExitTransitionListener + } + + private fun unregisterListeners(c: DesktopTasksController) { + c.taskRepository.removeDeskChangeListener(deskChangeListener) + c.taskRepository.removeVisibleTasksListener(visibleTasksListener) + c.taskbarDesktopTaskListener = null + c.desktopModeEnterExitTransitionListener = null + } } private fun logV(msg: String, vararg arguments: Any?) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt index 9a97ae8d61a0..df2cf67fced2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt @@ -26,6 +26,7 @@ import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_PIP import android.view.WindowManager.TRANSIT_TO_BACK import android.view.WindowManager.TRANSIT_TO_FRONT +import android.window.DesktopExperienceFlags import android.window.DesktopModeFlags import android.window.DesktopModeFlags.ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER import android.window.DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY @@ -162,18 +163,24 @@ class DesktopTasksTransitionObserver( continue } val desktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) - val visibleTaskCount = desktopRepository.getVisibleTaskCount(taskInfo.displayId) + val isInDesktop = desktopRepository.isAnyDeskActive(taskInfo.displayId) if ( - visibleTaskCount > 0 && + isInDesktop && change.mode == TRANSIT_TO_BACK && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM ) { + val isLastTask = + if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { + desktopRepository.hasOnlyOneVisibleTask(taskInfo.displayId) + } else { + desktopRepository.isOnlyVisibleTask(taskInfo.taskId, taskInfo.displayId) + } desktopRepository.minimizeTask(taskInfo.displayId, taskInfo.taskId) desktopMixedTransitionHandler.addPendingMixedTransition( DesktopMixedTransitionHandler.PendingMixedTransition.Minimize( transition, taskInfo.taskId, - visibleTaskCount == 1, + isLastTask, ) ) } @@ -227,9 +234,9 @@ class DesktopTasksTransitionObserver( taskInfo: ActivityManager.RunningTaskInfo ): Int? { val desktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) - val visibleTaskCount = desktopRepository.getVisibleTaskCount(taskInfo.displayId) + val isInDesktop = desktopRepository.isAnyDeskActive(taskInfo.displayId) if ( - visibleTaskCount > 0 && + isInDesktop && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM && backAnimationController.latestTriggerBackTask == taskInfo.taskId && !desktopRepository.isClosingTask(taskInfo.taskId) @@ -253,7 +260,7 @@ class DesktopTasksTransitionObserver( val desktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) if ( - desktopRepository.getVisibleTaskCount(taskInfo.displayId) == 0 && + !desktopRepository.isAnyDeskActive(taskInfo.displayId) && change.mode == TRANSIT_CLOSE && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM && desktopWallpaperActivityTokenProvider.getToken(taskInfo.displayId) != null diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandler.kt new file mode 100644 index 000000000000..d51576a5148e --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandler.kt @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wm.shell.desktopmode + +import android.os.IBinder +import android.view.SurfaceControl +import android.window.TransitionInfo +import android.window.TransitionRequestInfo +import android.window.WindowContainerTransaction +import com.android.wm.shell.transition.Transitions + +/** Handles the transition to drag a window to another display by dragging the caption. */ +class DragToDisplayTransitionHandler : Transitions.TransitionHandler { + override fun handleRequest( + transition: IBinder, + request: TransitionRequestInfo, + ): WindowContainerTransaction? { + return null + } + + override fun startAnimation( + transition: IBinder, + info: TransitionInfo, + startTransaction: SurfaceControl.Transaction, + finishTransaction: SurfaceControl.Transaction, + finishCallback: Transitions.TransitionFinishCallback, + ): Boolean { + for (change in info.changes) { + val sc = change.leash + val endBounds = change.endAbsBounds + val endPosition = change.endRelOffset + startTransaction + .setWindowCrop(sc, endBounds.width(), endBounds.height()) + .setPosition(sc, endPosition.x.toFloat(), endPosition.y.toFloat()) + finishTransaction + .setWindowCrop(sc, endBounds.width(), endBounds.height()) + .setPosition(sc, endPosition.x.toFloat(), endPosition.y.toFloat()) + } + + startTransaction.apply() + finishCallback.onTransitionFinished(null) + return true + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt index 224ff37a1dca..3576b25e06b0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt @@ -162,7 +162,7 @@ class SystemModalsTransitionHandler( } private fun isDesktopModeShowing(displayId: Int): Boolean = - desktopUserRepositories.current.getVisibleTaskCount(displayId) > 0 + desktopUserRepositories.current.isAnyDeskActive(displayId) override fun handleRequest( transition: IBinder, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS index 44d46eea9c55..7a63ec5eeda3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS @@ -2,7 +2,6 @@ atsjenk@google.com jorgegil@google.com madym@google.com -nmusgrave@google.com pbdr@google.com vaniadesmonda@google.com pragyabajoria@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java index d666126b91ba..c0a0f469add4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.service.dreams.Flags.dismissDreamOnKeyguardDismiss; import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS; +import static android.view.WindowManager.TRANSIT_FLAG_AOD_APPEARING; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_APPEARING; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_LOCKED; @@ -200,7 +201,8 @@ public class KeyguardTransitionHandler transition, info, startTransaction, finishTransaction, finishCallback); } - if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_APPEARING) != 0) { + if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_APPEARING) != 0 + || (info.getFlags() & TRANSIT_FLAG_AOD_APPEARING) != 0) { return startAnimation(mAppearTransition, "appearing", transition, info, startTransaction, finishTransaction, finishCallback); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 61a193c7d523..04f03361258e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -782,7 +782,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private boolean isPipExitingToDesktopMode() { DesktopRepository currentRepo = getCurrentRepo(); return Flags.enableDesktopWindowingPip() && currentRepo != null - && (currentRepo.getVisibleTaskCount(mTaskInfo.displayId) > 0 + && (currentRepo.isAnyDeskActive(mTaskInfo.displayId) || isDisplayInFreeform()); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS index 5aa3c4e2abef..245669b644db 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS @@ -1,3 +1,2 @@ # WM shell sub-module TV pip owner -galinap@google.com bronger@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java index a033b824aa28..7918a216836f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/animation/PipAlphaAnimator.java @@ -131,9 +131,10 @@ public class PipAlphaAnimator extends ValueAnimator { } private void onAlphaAnimationUpdate(float alpha, SurfaceControl.Transaction tx) { + // only set shadow radius on fade in tx.setAlpha(mLeash, alpha) .setCornerRadius(mLeash, mCornerRadius) - .setShadowRadius(mLeash, mShadowRadius); + .setShadowRadius(mLeash, mDirection == FADE_IN ? mShadowRadius : 0f); tx.apply(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java index 1ce24f76ada5..6012fe66188d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java @@ -32,6 +32,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.Bundle; import android.view.SurfaceControl; +import android.window.DesktopExperienceFlags; import android.window.DisplayAreaInfo; import android.window.WindowContainerTransaction; @@ -41,7 +42,6 @@ import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.ProtoLog; import com.android.internal.util.Preconditions; -import com.android.window.flags.Flags; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayChangeController; @@ -303,7 +303,8 @@ public class PipController implements ConfigurationChangeListener, public void onDisplayRemoved(int displayId) { // If PiP was active on an external display that is removed, clean up states and set // {@link PipDisplayLayoutState} to DEFAULT_DISPLAY. - if (Flags.enableConnectedDisplaysPip() && mPipTransitionState.isInPip() + if (DesktopExperienceFlags.ENABLE_CONNECTED_DISPLAYS_PIP.isTrue() + && mPipTransitionState.isInPip() && displayId == mPipDisplayLayoutState.getDisplayId() && displayId != DEFAULT_DISPLAY) { mPipTransitionState.setState(PipTransitionState.EXITING_PIP); @@ -345,7 +346,6 @@ public class PipController implements ConfigurationChangeListener, return; } - mPipTouchHandler.updateMinMaxSize(mPipBoundsState.getAspectRatio()); mPipMenuController.hideMenu(); if (mPipTransitionState.isInFixedRotation()) { @@ -366,6 +366,8 @@ public class PipController implements ConfigurationChangeListener, mPipBoundsState.setBounds(toBounds); } t.setBounds(mPipTransitionState.getPipTaskToken(), mPipBoundsState.getBounds()); + // Update the size spec in PipBoundsState afterwards. + mPipBoundsState.updateMinMaxSize(mPipBoundsState.getAspectRatio()); } private void setDisplayLayout(DisplayLayout layout) { @@ -384,7 +386,7 @@ public class PipController implements ConfigurationChangeListener, // If PiP is enabled on Connected Displays, update PipDisplayLayoutState to have the correct // display info that PiP is entering in. - if (Flags.enableConnectedDisplaysPip()) { + if (DesktopExperienceFlags.ENABLE_CONNECTED_DISPLAYS_PIP.isTrue()) { final DisplayLayout displayLayout = mDisplayController.getDisplayLayout(displayId); if (displayLayout != null) { mPipDisplayLayoutState.setDisplayId(displayId); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java index b869bf153c34..d53365abd143 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java @@ -81,8 +81,6 @@ public class PipResizeGestureHandler implements private final PointF mDownSecondPoint = new PointF(); private final PointF mLastPoint = new PointF(); private final PointF mLastSecondPoint = new PointF(); - private final Point mMaxSize = new Point(); - private final Point mMinSize = new Point(); private final Rect mLastResizeBounds = new Rect(); private final Rect mUserResizeBounds = new Rect(); private final Rect mDownBounds = new Rect(); @@ -95,7 +93,6 @@ public class PipResizeGestureHandler implements private boolean mIsEnabled; private boolean mEnablePinchResize; private boolean mEnableDragCornerResize; - private boolean mIsSysUiStateValid; private boolean mThresholdCrossed; private boolean mOngoingPinchToResize = false; private boolean mWaitingForBoundsChangeTransition = false; @@ -152,7 +149,6 @@ public class PipResizeGestureHandler implements } void init() { - mContext.getDisplay().getRealSize(mMaxSize); reloadResources(); final Resources res = mContext.getResources(); @@ -163,15 +159,6 @@ public class PipResizeGestureHandler implements reloadResources(); } - /** - * Called when SysUI state changed. - * - * @param isSysUiStateValid Is SysUI valid or not. - */ - public void onSystemUiStateChanged(boolean isSysUiStateValid) { - mIsSysUiStateValid = isSysUiStateValid; - } - private void reloadResources() { mPipDragToResizeHandler.reloadResources(); mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop(); @@ -287,13 +274,15 @@ public class PipResizeGestureHandler implements } } + final Point minSize = mPipBoundsState.getMinSize(); + final Point maxSize = mPipBoundsState.getMaxSize(); if (mOngoingPinchToResize) { mPipPinchToResizeHandler.onPinchResize(mv, mDownPoint, mDownSecondPoint, mDownBounds, mLastPoint, mLastSecondPoint, mLastResizeBounds, mTouchSlop, - mMinSize, mMaxSize); + minSize, maxSize); } else if (mEnableDragCornerResize) { mPipDragToResizeHandler.onDragCornerResize(mv, mLastResizeBounds, mDownPoint, - mDownBounds, mMinSize, mMaxSize, mTouchSlop); + mDownBounds, minSize, maxSize, mTouchSlop); } } } @@ -327,7 +316,7 @@ public class PipResizeGestureHandler implements if (mEnablePinchResize && ev.getPointerCount() == 2) { mPipPinchToResizeHandler.onPinchResize(ev, mDownPoint, mDownSecondPoint, mDownBounds, mLastPoint, mLastSecondPoint, mLastResizeBounds, - mTouchSlop, mMinSize, mMaxSize); + mTouchSlop, mPipBoundsState.getMinSize(), mPipBoundsState.getMaxSize()); mOngoingPinchToResize = mAllowGesture; return mAllowGesture; } @@ -395,6 +384,7 @@ public class PipResizeGestureHandler implements void finishResize() { if (mLastResizeBounds.isEmpty()) { resetState(); + return; } // Cache initial bounds after release for animation before mLastResizeBounds are modified. @@ -406,16 +396,19 @@ public class PipResizeGestureHandler implements return; } + final Point minSize = mPipBoundsState.getMinSize(); + final Point maxSize = mPipBoundsState.getMaxSize(); + // If user resize is pretty close to max size, just auto resize to max. - if (mLastResizeBounds.width() >= PINCH_RESIZE_AUTO_MAX_RATIO * mMaxSize.x - || mLastResizeBounds.height() >= PINCH_RESIZE_AUTO_MAX_RATIO * mMaxSize.y) { - resizeRectAboutCenter(mLastResizeBounds, mMaxSize.x, mMaxSize.y); + if (mLastResizeBounds.width() >= PINCH_RESIZE_AUTO_MAX_RATIO * maxSize.x + || mLastResizeBounds.height() >= PINCH_RESIZE_AUTO_MAX_RATIO * maxSize.y) { + resizeRectAboutCenter(mLastResizeBounds, maxSize.x, maxSize.y); } // If user resize is smaller than min size, auto resize to min - if (mLastResizeBounds.width() < mMinSize.x - || mLastResizeBounds.height() < mMinSize.y) { - resizeRectAboutCenter(mLastResizeBounds, mMinSize.x, mMinSize.y); + if (mLastResizeBounds.width() < minSize.x + || mLastResizeBounds.height() < minSize.y) { + resizeRectAboutCenter(mLastResizeBounds, minSize.x, minSize.y); } // get the current movement bounds @@ -471,15 +464,6 @@ public class PipResizeGestureHandler implements mInputMonitor.pilferPointers(); } - - void updateMaxSize(int maxX, int maxY) { - mMaxSize.set(maxX, maxY); - } - - void updateMinSize(int minX, int minY) { - mMinSize.set(minX, minY); - } - void setOhmOffset(int offset) { mOhmOffset = offset; } @@ -567,8 +551,6 @@ public class PipResizeGestureHandler implements pw.println(innerPrefix + "mEnableDragCornerResize=" + mEnableDragCornerResize); pw.println(innerPrefix + "mThresholdCrossed=" + mThresholdCrossed); pw.println(innerPrefix + "mOhmOffset=" + mOhmOffset); - pw.println(innerPrefix + "mMinSize=" + mMinSize); - pw.println(innerPrefix + "mMaxSize=" + mMaxSize); } class PipResizeInputEventReceiver extends BatchedInputEventReceiver { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java index 7805ec34e105..383afcf6f821 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java @@ -16,9 +16,11 @@ package com.android.wm.shell.pip2.phone; +import android.app.PictureInPictureParams; import android.content.Context; import android.graphics.Matrix; import android.graphics.Rect; +import android.os.SystemProperties; import android.view.SurfaceControl; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -28,6 +30,7 @@ import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.ProtoLog; +import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.pip.PipBoundsState; import com.android.wm.shell.common.pip.PipDesktopState; @@ -39,6 +42,7 @@ import com.android.wm.shell.shared.split.SplitScreenConstants; import com.android.wm.shell.splitscreen.SplitScreenController; import java.util.Optional; +import java.util.function.Supplier; /** * Scheduler for Shell initiated PiP transitions and animations. @@ -46,6 +50,15 @@ import java.util.Optional; public class PipScheduler { private static final String TAG = PipScheduler.class.getSimpleName(); + /** + * The fixed start delay in ms when fading out the content overlay from bounds animation. + * The fadeout animation is guaranteed to start after the client has drawn under the new config. + */ + public static final int EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS = + SystemProperties.getInt( + "persist.wm.debug.extra_content_overlay_fade_out_delay_ms", 400); + private static final int CONTENT_OVERLAY_FADE_OUT_DURATION_MS = 500; + private final Context mContext; private final PipBoundsState mPipBoundsState; private final ShellExecutor mMainExecutor; @@ -60,6 +73,7 @@ public class PipScheduler { @Nullable private Runnable mUpdateMovementBoundsRunnable; private PipAlphaAnimatorSupplier mPipAlphaAnimatorSupplier; + private Supplier<PictureInPictureParams> mPipParamsSupplier; public PipScheduler(Context context, PipBoundsState pipBoundsState, @@ -222,6 +236,16 @@ public class PipScheduler { tx.apply(); } + void startOverlayFadeoutAnimation(@NonNull SurfaceControl overlayLeash, + boolean withStartDelay, @NonNull Runnable onAnimationEnd) { + PipAlphaAnimator animator = mPipAlphaAnimatorSupplier.get(mContext, overlayLeash, + null /* startTx */, null /* finishTx */, PipAlphaAnimator.FADE_OUT); + animator.setDuration(CONTENT_OVERLAY_FADE_OUT_DURATION_MS); + animator.setStartDelay(withStartDelay ? EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS : 0); + animator.setAnimationEndCallback(onAnimationEnd); + animator.start(); + } + void setUpdateMovementBoundsRunnable(@Nullable Runnable updateMovementBoundsRunnable) { mUpdateMovementBoundsRunnable = updateMovementBoundsRunnable; } @@ -236,6 +260,25 @@ public class PipScheduler { if (mPipBoundsState.getBounds().equals(newBounds)) { return; } + + // Take a screenshot of PiP and fade it out after resize is finished if seamless resize + // is off and if the PiP size is changing. + boolean animateCrossFadeResize = !getPipParams().isSeamlessResizeEnabled() + && !(mPipBoundsState.getBounds().width() == newBounds.width() + && mPipBoundsState.getBounds().height() == newBounds.height()); + if (animateCrossFadeResize) { + final Rect crop = new Rect(newBounds); + crop.offsetTo(0, 0); + // Note: Put this at layer=MAX_VALUE-2 since the input consumer for PIP is placed at + // MAX_VALUE-1 + final SurfaceControl snapshotSurface = ScreenshotUtils.takeScreenshot( + mSurfaceControlTransactionFactory.getTransaction(), + mPipTransitionState.getPinnedTaskLeash(), crop, Integer.MAX_VALUE - 2); + startOverlayFadeoutAnimation(snapshotSurface, false /* withStartDelay */, () -> { + mSurfaceControlTransactionFactory.getTransaction().remove(snapshotSurface).apply(); + }); + } + mPipBoundsState.setBounds(newBounds); maybeUpdateMovementBounds(); } @@ -259,4 +302,14 @@ public class PipScheduler { void setPipAlphaAnimatorSupplier(@NonNull PipAlphaAnimatorSupplier supplier) { mPipAlphaAnimatorSupplier = supplier; } + + void setPipParamsSupplier(@NonNull Supplier<PictureInPictureParams> pipParamsSupplier) { + mPipParamsSupplier = pipParamsSupplier; + } + + @NonNull + private PictureInPictureParams getPipParams() { + if (mPipParamsSupplier == null) return new PictureInPictureParams.Builder().build(); + return mPipParamsSupplier.get(); + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java index dbcbf3663827..d6634845ee21 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java @@ -91,6 +91,7 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener, }); } mPipResizeAnimatorSupplier = PipResizeAnimator::new; + mPipScheduler.setPipParamsSupplier(this::getPictureInPictureParams); } void setPictureInPictureParams(@Nullable PictureInPictureParams params) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java index 72346b335a8e..6fdfecaf15d5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java @@ -230,10 +230,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha pipBoundsState, mTouchState, mPipScheduler, mPipTransitionState, pipUiEventLogger, menuController, this::getMovementBounds, mPipDisplayLayoutState, pipDesktopState, mainExecutor, mPipPerfHintController); - mPipBoundsState.addOnAspectRatioChangedCallback(aspectRatio -> { - updateMinMaxSize(aspectRatio); - onAspectRatioChanged(); - }); + mPipBoundsState.addOnAspectRatioChangedCallback(aspectRatio -> onAspectRatioChanged()); mMoveOnShelVisibilityChanged = () -> { if (mIsImeShowing && mImeHeight > mShelfHeight) { @@ -418,15 +415,6 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha mMainExecutor.executeDelayed(mMoveOnShelVisibilityChanged, PIP_KEEP_CLEAR_AREAS_DELAY); } - /** - * Called when SysUI state changed. - * - * @param isSysUiStateValid Is SysUI valid or not. - */ - public void onSystemUiStateChanged(boolean isSysUiStateValid) { - mPipResizeGestureHandler.onSystemUiStateChanged(isSysUiStateValid); - } - void adjustBoundsForRotation(Rect outBounds, Rect curBounds, Rect insetBounds) { final Rect toMovementBounds = new Rect(); mPipBoundsAlgorithm.getMovementBounds(outBounds, insetBounds, toMovementBounds, 0); @@ -480,8 +468,6 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha mPipBoundsState.getExpandedBounds(), insetBounds, expandedMovementBounds, bottomOffset); - updatePipSizeConstraints(normalBounds, aspectRatio); - // The extra offset does not really affect the movement bounds, but are applied based on the // current state (ime showing, or shelf offset) when we need to actually shift int extraOffset = Math.max( @@ -507,35 +493,6 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha } /** - * Update the values for min/max allowed size of picture in picture window based on the aspect - * ratio. - * @param aspectRatio aspect ratio to use for the calculation of min/max size - */ - public void updateMinMaxSize(float aspectRatio) { - updatePipSizeConstraints(mPipBoundsState.getNormalBounds(), - aspectRatio); - } - - private void updatePipSizeConstraints(Rect normalBounds, - float aspectRatio) { - if (mPipResizeGestureHandler.isUsingPinchToZoom()) { - updatePinchResizeSizeConstraints(aspectRatio); - } else { - mPipResizeGestureHandler.updateMinSize(normalBounds.width(), normalBounds.height()); - mPipResizeGestureHandler.updateMaxSize(mPipBoundsState.getExpandedBounds().width(), - mPipBoundsState.getExpandedBounds().height()); - } - } - - private void updatePinchResizeSizeConstraints(float aspectRatio) { - mPipBoundsState.updateMinMaxSize(aspectRatio); - mPipResizeGestureHandler.updateMinSize(mPipBoundsState.getMinSize().x, - mPipBoundsState.getMinSize().y); - mPipResizeGestureHandler.updateMaxSize(mPipBoundsState.getMaxSize().x, - mPipBoundsState.getMaxSize().y); - } - - /** * TODO Add appropriate description */ public void onRegistrationChanged(boolean isRegistered) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java index 0cfab11dbc64..91fbd456eb63 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java @@ -50,7 +50,6 @@ import android.graphics.PointF; import android.graphics.Rect; import android.os.Bundle; import android.os.IBinder; -import android.os.SystemProperties; import android.view.SurfaceControl; import android.view.WindowManager; import android.window.TransitionInfo; @@ -102,15 +101,6 @@ public class PipTransition extends PipTransitionController implements "animating_bounds_change_duration"; static final int BOUNDS_CHANGE_JUMPCUT_DURATION = 0; - /** - * The fixed start delay in ms when fading out the content overlay from bounds animation. - * The fadeout animation is guaranteed to start after the client has drawn under the new config. - */ - private static final int EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS = - SystemProperties.getInt( - "persist.wm.debug.extra_content_overlay_fade_out_delay_ms", 400); - private static final int CONTENT_OVERLAY_FADE_OUT_DURATION_MS = 500; - // // Dependencies // @@ -481,7 +471,8 @@ public class PipTransition extends PipTransitionController implements if (swipePipToHomeOverlay != null) { // fadeout the overlay if needed. - startOverlayFadeoutAnimation(swipePipToHomeOverlay, () -> { + mPipScheduler.startOverlayFadeoutAnimation(swipePipToHomeOverlay, + true /* withStartDelay */, () -> { SurfaceControl.Transaction tx = new SurfaceControl.Transaction(); tx.remove(swipePipToHomeOverlay); tx.apply(); @@ -542,8 +533,8 @@ public class PipTransition extends PipTransitionController implements animator.setAnimationStartCallback(() -> animator.setEnterStartState(pipChange)); animator.setAnimationEndCallback(() -> { if (animator.getContentOverlayLeash() != null) { - startOverlayFadeoutAnimation(animator.getContentOverlayLeash(), - animator::clearAppIconOverlay); + mPipScheduler.startOverlayFadeoutAnimation(animator.getContentOverlayLeash(), + true /* withStartDelay */, animator::clearAppIconOverlay); } finishTransition(); }); @@ -551,16 +542,6 @@ public class PipTransition extends PipTransitionController implements return true; } - private void startOverlayFadeoutAnimation(@NonNull SurfaceControl overlayLeash, - @NonNull Runnable onAnimationEnd) { - PipAlphaAnimator animator = new PipAlphaAnimator(mContext, overlayLeash, - null /* startTx */, null /* finishTx */, PipAlphaAnimator.FADE_OUT); - animator.setDuration(CONTENT_OVERLAY_FADE_OUT_DURATION_MS); - animator.setStartDelay(EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS); - animator.setAnimationEndCallback(onAnimationEnd); - animator.start(); - } - private void handleBoundsEnterFixedRotation(TransitionInfo info, TransitionInfo.Change outPipTaskChange, TransitionInfo.Change outPipActivityChange) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 0438d16796cf..a3a808de6ff1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -93,6 +93,7 @@ import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.IActivityTaskManager; import android.app.PendingIntent; +import android.app.PictureInPictureParams; import android.app.TaskInfo; import android.content.ActivityNotFoundException; import android.content.Context; @@ -2079,8 +2080,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, Math.max(topLeftBounds.top, 0); bottomRightBounds.right = Math.min(bottomRightBounds.right, mSplitLayout.getDisplayWidth()); - bottomRightBounds.top = - Math.min(bottomRightBounds.top, mSplitLayout.getDisplayHeight()); + bottomRightBounds.bottom = + Math.min(bottomRightBounds.bottom, mSplitLayout.getDisplayHeight()); // TODO (b/349828130): Can change to getState() fully after brief soak time. if (mSplitState.get() != currentSnapPosition) { @@ -2890,6 +2891,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, prepareEnterSplitScreen(out); mSplitTransitions.setEnterTransition(transition, request.getRemoteTransition(), TRANSIT_SPLIT_SCREEN_PAIR_OPEN, !mIsDropEntering); + } else if (isSplitScreenVisible() && isOpening) { + // launching into an existing split stage; possibly launchAdjacent + // If we're replacing a pip-able app, we need to let mixed handler take care of + // it. Otherwise we'll just treat it as an enter+resize + if (mSplitLayout.calculateCurrentSnapPosition() != SNAP_TO_2_50_50) { + // updated layout will get applied in startAnimation pendingResize + mSplitTransitions.setEnterTransition(transition, + request.getRemoteTransition(), + TRANSIT_SPLIT_SCREEN_OPEN_TO_SIDE, true /*resizeAnim*/); + } } else if (inFullscreen && isSplitScreenVisible()) { // If the trigger task is in fullscreen and in split, exit split and place // task on top diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS index 28be0efc38f6..9dc0ebbb8e56 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS @@ -1,3 +1,2 @@ # WM shell sub-module TV splitscreen owner -galinap@google.com bronger@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java index 347dcff86529..a0fb62508cc1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java @@ -377,7 +377,7 @@ public class DefaultMixedHandler implements MixedTransitionHandler, return this::setRecentsTransitionDuringKeyguard; } else if (mDesktopTasksController != null // Check on the default display. Recents/gesture nav is only available there - && mDesktopTasksController.visibleTaskCount(DEFAULT_DISPLAY) > 0) { + && mDesktopTasksController.isAnyDeskActive(DEFAULT_DISPLAY)) { return this::setRecentsTransitionDuringDesktop; } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java index e9c6adec75d7..bf5800330979 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java @@ -67,7 +67,6 @@ import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITI import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITION_NONE; import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITION_OPEN; import static com.android.wm.shell.transition.DefaultSurfaceAnimator.buildSurfaceAnimation; -import static com.android.wm.shell.transition.TransitionAnimationHelper.edgeExtendWindow; import static com.android.wm.shell.transition.TransitionAnimationHelper.getTransitionBackgroundColorIfSet; import static com.android.wm.shell.transition.TransitionAnimationHelper.getTransitionTypeFromInfo; import static com.android.wm.shell.transition.TransitionAnimationHelper.isCoveredByOpaqueFullscreenChange; @@ -96,7 +95,6 @@ import android.os.UserHandle; import android.util.ArrayMap; import android.view.SurfaceControl; import android.view.WindowManager; -import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.window.TransitionInfo; import android.window.TransitionMetrics; @@ -543,21 +541,9 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler { backgroundColorForTransition); if (!isTask && a.getExtensionEdges() != 0x0) { - if (com.android.graphics.libgui.flags.Flags.edgeExtensionShader()) { - startTransaction.setEdgeExtensionEffect( - change.getLeash(), a.getExtensionEdges()); - finishTransaction.setEdgeExtensionEffect(change.getLeash(), /* edge */ 0); - } else { - if (!TransitionUtil.isOpeningType(mode)) { - // Can screenshot now (before startTransaction is applied) - edgeExtendWindow(change, a, startTransaction, finishTransaction); - } else { - // Need to screenshot after startTransaction is applied otherwise - // activity may not be visible or ready yet. - postStartTransactionCallbacks - .add(t -> edgeExtendWindow(change, a, t, finishTransaction)); - } - } + startTransaction.setEdgeExtensionEffect( + change.getLeash(), a.getExtensionEdges()); + finishTransaction.setEdgeExtensionEffect(change.getLeash(), /* edge */ 0); } final Rect clipRect = TransitionUtil.isClosingType(mode) @@ -848,9 +834,8 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler { a = mTransitionAnimation.loadVoiceActivityExitAnimation(enter, userId); } } else if (changeMode == TRANSIT_CHANGE) { - // In the absence of a specific adapter, we just want to keep everything stationary. - a = new AlphaAnimation(1.f, 1.f); - a.setDuration(TransitionAnimation.DEFAULT_APP_TRANSITION_DURATION); + // Apply end state directly by default. + return null; } else if (type == TRANSIT_RELAUNCH) { a = mTransitionAnimation.createRelaunchAnimation(endBounds, mInsets, endBounds); } else if (overrideType == ANIM_CUSTOM diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java index e04682a4b86f..f0f1ad05008b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java @@ -16,6 +16,7 @@ package com.android.wm.shell.transition; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.view.WindowManager.TRANSIT_CHANGE; @@ -216,6 +217,17 @@ public class FocusTransitionObserver { } /** + * Gets the globally focused task ID. + */ + public int getGloballyFocusedTaskId() { + if (!enableDisplayFocusInShellTransitions() || mFocusedDisplayId == INVALID_DISPLAY) { + return INVALID_TASK_ID; + } + final RunningTaskInfo globallyFocusedTask = mFocusedTaskOnDisplay.get(mFocusedDisplayId); + return globallyFocusedTask != null ? globallyFocusedTask.taskId : INVALID_TASK_ID; + } + + /** * Checks whether the given task has focused globally on the system. * (Note {@link RunningTaskInfo#isFocused} represents per-display focus.) */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java index 7984bcedc4e5..edfb56019a60 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java @@ -26,7 +26,6 @@ import static android.view.WindowManager.TRANSIT_TO_BACK; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.window.TransitionInfo.FLAGS_IS_NON_APP_WINDOW; import static android.window.TransitionInfo.FLAG_IS_DISPLAY; -import static android.window.TransitionInfo.FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT; import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITION_CLOSE; @@ -39,20 +38,10 @@ import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.WindowConfiguration; -import android.graphics.BitmapShader; -import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.Insets; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.graphics.Shader; -import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManager; import android.view.animation.Animation; -import android.view.animation.Transformation; -import android.window.ScreenCapture; import android.window.TransitionInfo; import com.android.internal.R; @@ -317,129 +306,6 @@ public class TransitionAnimationHelper { } /** - * Adds edge extension surface to the given {@code change} for edge extension animation. - */ - public static void edgeExtendWindow(@NonNull TransitionInfo.Change change, - @NonNull Animation a, @NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction) { - // Do not create edge extension surface for transfer starting window change. - // The app surface could be empty thus nothing can draw on the hardware renderer, which will - // block this thread when calling Surface#unlockCanvasAndPost. - if ((change.getFlags() & FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT) != 0) { - return; - } - final Transformation transformationAtStart = new Transformation(); - a.getTransformationAt(0, transformationAtStart); - final Transformation transformationAtEnd = new Transformation(); - a.getTransformationAt(1, transformationAtEnd); - - // We want to create an extension surface that is the maximal size and the animation will - // take care of cropping any part that overflows. - final Insets maxExtensionInsets = Insets.min( - transformationAtStart.getInsets(), transformationAtEnd.getInsets()); - - final int targetSurfaceHeight = Math.max(change.getStartAbsBounds().height(), - change.getEndAbsBounds().height()); - final int targetSurfaceWidth = Math.max(change.getStartAbsBounds().width(), - change.getEndAbsBounds().width()); - if (maxExtensionInsets.left < 0) { - final Rect edgeBounds = new Rect(0, 0, 1, targetSurfaceHeight); - final Rect extensionRect = new Rect(0, 0, - -maxExtensionInsets.left, targetSurfaceHeight); - final int xPos = maxExtensionInsets.left; - final int yPos = 0; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Left Edge Extension", startTransaction, finishTransaction); - } - - if (maxExtensionInsets.top < 0) { - final Rect edgeBounds = new Rect(0, 0, targetSurfaceWidth, 1); - final Rect extensionRect = new Rect(0, 0, - targetSurfaceWidth, -maxExtensionInsets.top); - final int xPos = 0; - final int yPos = maxExtensionInsets.top; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Top Edge Extension", startTransaction, finishTransaction); - } - - if (maxExtensionInsets.right < 0) { - final Rect edgeBounds = new Rect(targetSurfaceWidth - 1, 0, - targetSurfaceWidth, targetSurfaceHeight); - final Rect extensionRect = new Rect(0, 0, - -maxExtensionInsets.right, targetSurfaceHeight); - final int xPos = targetSurfaceWidth; - final int yPos = 0; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Right Edge Extension", startTransaction, finishTransaction); - } - - if (maxExtensionInsets.bottom < 0) { - final Rect edgeBounds = new Rect(0, targetSurfaceHeight - 1, - targetSurfaceWidth, targetSurfaceHeight); - final Rect extensionRect = new Rect(0, 0, - targetSurfaceWidth, -maxExtensionInsets.bottom); - final int xPos = maxExtensionInsets.left; - final int yPos = targetSurfaceHeight; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Bottom Edge Extension", startTransaction, finishTransaction); - } - } - - /** - * Takes a screenshot of {@code surfaceToExtend}'s edge and extends it for edge extension - * animation. - */ - private static SurfaceControl createExtensionSurface(@NonNull SurfaceControl surfaceToExtend, - @NonNull Rect edgeBounds, @NonNull Rect extensionRect, int xPos, int yPos, - @NonNull String layerName, @NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction) { - final SurfaceControl edgeExtensionLayer = new SurfaceControl.Builder() - .setName(layerName) - .setParent(surfaceToExtend) - .setHidden(true) - .setCallsite("TransitionAnimationHelper#createExtensionSurface") - .setOpaque(true) - .setBufferSize(extensionRect.width(), extensionRect.height()) - .build(); - - final ScreenCapture.LayerCaptureArgs captureArgs = - new ScreenCapture.LayerCaptureArgs.Builder(surfaceToExtend) - .setSourceCrop(edgeBounds) - .setFrameScale(1) - .setPixelFormat(PixelFormat.RGBA_8888) - .setChildrenOnly(true) - .setAllowProtected(false) - .setCaptureSecureLayers(true) - .build(); - final ScreenCapture.ScreenshotHardwareBuffer edgeBuffer = - ScreenCapture.captureLayers(captureArgs); - - if (edgeBuffer == null) { - ProtoLog.e(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, - "Failed to capture edge of window."); - return null; - } - - final BitmapShader shader = new BitmapShader(edgeBuffer.asBitmap(), - Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); - final Paint paint = new Paint(); - paint.setShader(shader); - - final Surface surface = new Surface(edgeExtensionLayer); - final Canvas c = surface.lockHardwareCanvas(); - c.drawRect(extensionRect, paint); - surface.unlockCanvasAndPost(c); - surface.release(); - - startTransaction.setLayer(edgeExtensionLayer, Integer.MIN_VALUE); - startTransaction.setPosition(edgeExtensionLayer, xPos, yPos); - startTransaction.setVisibility(edgeExtensionLayer, true); - finishTransaction.remove(edgeExtensionLayer); - - return edgeExtensionLayer; - } - - /** * Returns whether there is an opaque fullscreen Change positioned in front of the given Change * in the given TransitionInfo. */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java index 49510c8060fc..5e8c1fe2aa8d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java @@ -61,6 +61,7 @@ import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.shared.annotations.ShellBackgroundThread; import com.android.wm.shell.shared.annotations.ShellMainThread; +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHostSupplier; import com.android.wm.shell.windowdecor.extension.TaskInfoKt; @@ -247,6 +248,10 @@ public class CaptionWindowDecoration extends WindowDecoration<WindowDecorLinearL relayoutParams.mOccludingCaptionElements.add(controlsElement); relayoutParams.mCaptionTopPadding = getTopPadding(relayoutParams, taskInfo.getConfiguration().windowConfiguration.getBounds(), displayInsetsState); + // Set opaque background for all freeform tasks to prevent freeform tasks below + // from being visible if freeform task window above is translucent. + // Otherwise if fluid resize is enabled, add a background to freeform tasks. + relayoutParams.mShouldSetBackground = DesktopModeStatus.shouldSetBackground(taskInfo); } @SuppressLint("MissingPermission") diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index 0d773ecf88e4..7ef1a93cbe45 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -558,6 +558,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, } else { decoration.relayout(taskInfo, taskInfo.isFocused, decoration.mExclusionRegion); } + mDesktopTilingDecorViewModel.onTaskInfoChange(taskInfo); mActivityOrientationChangeHandler.ifPresent(handler -> handler.handleActivityOrientationChange(oldTaskInfo, taskInfo)); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index 6165dbf686fd..30e5c2ae0914 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -1064,6 +1064,10 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin relayoutParams.mCornerRadius = shouldIgnoreCornerRadius ? INVALID_CORNER_RADIUS : getCornerRadius(context, relayoutParams.mLayoutResId); } + // Set opaque background for all freeform tasks to prevent freeform tasks below + // from being visible if freeform task window above is translucent. + // Otherwise if fluid resize is enabled, add a background to freeform tasks. + relayoutParams.mShouldSetBackground = DesktopModeStatus.shouldSetBackground(taskInfo); } private static int getCornerRadius(@NonNull Context context, int layoutResId) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt index ff50672953c9..ad2e23cb4028 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt @@ -50,6 +50,7 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.Accessibilit import androidx.core.view.isGone import com.android.window.flags.Flags import com.android.wm.shell.R +import com.android.wm.shell.bubbles.ContextUtils.isRtl import com.android.wm.shell.shared.annotations.ShellBackgroundThread import com.android.wm.shell.shared.annotations.ShellMainThread import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper @@ -60,6 +61,8 @@ import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewCo import com.android.wm.shell.windowdecor.common.DecorThemeUtil import com.android.wm.shell.windowdecor.common.WindowDecorTaskResourceLoader import com.android.wm.shell.windowdecor.common.calculateMenuPosition +import com.android.wm.shell.windowdecor.common.DrawableInsets +import com.android.wm.shell.windowdecor.common.createRippleDrawable import com.android.wm.shell.windowdecor.extension.isFullscreen import com.android.wm.shell.windowdecor.extension.isMultiWindow import com.android.wm.shell.windowdecor.extension.isPinned @@ -71,6 +74,7 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext + /** * Handle menu opened when the appropriate button is clicked on. * @@ -467,6 +471,33 @@ class HandleMenu( val rootView = LayoutInflater.from(context) .inflate(R.layout.desktop_mode_window_decor_handle_menu, null /* root */) as View + private val windowingButtonRippleRadius = context.resources + .getDimensionPixelSize(R.dimen.desktop_mode_handle_menu_windowing_action_ripple_radius) + private val windowingButtonDrawableInsets = DrawableInsets( + vertical = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base), + horizontal = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base) + ) + private val windowingButtonDrawableInsetsLeft = DrawableInsets( + vertical = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base), + horizontalLeft = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_shift), + ) + private val windowingButtonDrawableInsetsRight = DrawableInsets( + vertical = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base), + horizontalRight = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_shift) + ) + // App Info Pill. private val appInfoPill = rootView.requireViewById<View>(R.id.app_info_pill) private val collapseMenuButton = appInfoPill.requireViewById<HandleMenuImageButton>( @@ -708,6 +739,49 @@ class HandleMenu( desktopBtn.isSelected = taskInfo.isFreeform desktopBtn.isEnabled = !taskInfo.isFreeform desktopBtn.imageTintList = style.windowingButtonColor + + val startInsets = if (context.isRtl) { + windowingButtonDrawableInsetsRight + } else { + windowingButtonDrawableInsetsLeft + } + val endInsets = if (context.isRtl) { + windowingButtonDrawableInsetsLeft + } else { + windowingButtonDrawableInsetsRight + } + + fullscreenBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = startInsets + ) + } + + splitscreenBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = windowingButtonDrawableInsets + ) + } + + floatingBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = windowingButtonDrawableInsets + ) + } + + desktopBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = endInsets + ) + } } private fun bindMoreActionsPill(style: MenuStyle) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt index c6cb62d153ac..1b0e0f70ed21 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MultiDisplayVeiledResizeTaskPositioner.kt @@ -363,10 +363,11 @@ class MultiDisplayVeiledResizeTaskPositioner( dragEventListeners.remove(dragEventListener) } - override fun onTopologyChanged(topology: DisplayTopology) { + override fun onTopologyChanged(topology: DisplayTopology?) { // TODO: b/383069173 - Cancel window drag when topology changes happen during drag. displayIds.clear() + if (topology == null) return val displayBounds = topology.getAbsoluteBounds() displayIds.addAll(List(displayBounds.size()) { displayBounds.keyAt(it) }) } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt index 7af6b8e26cbf..5bd42280e790 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/ResizeVeil.kt @@ -225,7 +225,7 @@ public class ResizeVeil @JvmOverloads constructor( val veilAnimT = surfaceControlTransactionSupplier.get() val iconAnimT = surfaceControlTransactionSupplier.get() veilAnimator = ValueAnimator.ofFloat(0f, 1f).apply { - duration = RESIZE_ALPHA_DURATION + duration = VEIL_ENTRY_ALPHA_ANIMATION_DURATION addUpdateListener { veilAnimT.setAlpha(background, animatedValue as Float) .apply() @@ -243,7 +243,8 @@ public class ResizeVeil @JvmOverloads constructor( }) } iconAnimator = ValueAnimator.ofFloat(0f, 1f).apply { - duration = RESIZE_ALPHA_DURATION + duration = ICON_ALPHA_ANIMATION_DURATION + startDelay = ICON_ENTRY_DELAY addUpdateListener { iconAnimT.setAlpha(icon, animatedValue as Float) .apply() @@ -387,23 +388,38 @@ public class ResizeVeil @JvmOverloads constructor( if (background == null || icon == null) return veilAnimator = ValueAnimator.ofFloat(1f, 0f).apply { - duration = RESIZE_ALPHA_DURATION + duration = VEIL_EXIT_ALPHA_ANIMATION_DURATION + startDelay = VEIL_EXIT_DELAY addUpdateListener { surfaceControlTransactionSupplier.get() .setAlpha(background, animatedValue as Float) - .setAlpha(icon, animatedValue as Float) .apply() } addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { surfaceControlTransactionSupplier.get() .hide(background) - .hide(icon) .apply() } }) } + iconAnimator = ValueAnimator.ofFloat(1f, 0f).apply { + duration = ICON_ALPHA_ANIMATION_DURATION + addUpdateListener { + surfaceControlTransactionSupplier.get() + .setAlpha(icon, animatedValue as Float) + .apply() + } + addListener(object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + surfaceControlTransactionSupplier.get() + .hide(icon) + .apply() + } + }) + } veilAnimator?.start() + iconAnimator?.start() isVisible = false } @@ -451,7 +467,11 @@ public class ResizeVeil @JvmOverloads constructor( companion object { private const val TAG = "ResizeVeil" - private const val RESIZE_ALPHA_DURATION = 100L + private const val ICON_ALPHA_ANIMATION_DURATION = 50L + private const val VEIL_ENTRY_ALPHA_ANIMATION_DURATION = 50L + private const val VEIL_EXIT_ALPHA_ANIMATION_DURATION = 200L + private const val ICON_ENTRY_DELAY = 33L + private const val VEIL_EXIT_DELAY = 33L private const val VEIL_CONTAINER_LAYER = TaskConstants.TASK_CHILD_LAYER_RESIZE_VEIL /** The background is a child of the veil container layer and goes at the bottom. */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java index 4002dc572897..7baef2b2dc97 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java @@ -16,7 +16,6 @@ package com.android.wm.shell.windowdecor; -import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.content.res.Configuration.DENSITY_DPI_UNDEFINED; import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsets.Type.mandatorySystemGestures; @@ -57,7 +56,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.desktopmode.DesktopModeEventLogger; -import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.windowdecor.WindowDecoration.RelayoutParams.OccludingCaptionElement; import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewHostViewContainer; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost; @@ -504,15 +502,14 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> startT.show(mTaskSurface); } - if (mTaskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM - && !DesktopModeStatus.isVeiledResizeEnabled()) { - // When fluid resize is enabled, add a background to freeform tasks - int backgroundColorInt = mTaskInfo.taskDescription.getBackgroundColor(); + if (params.mShouldSetBackground) { + final int backgroundColorInt = mTaskInfo.taskDescription != null + ? mTaskInfo.taskDescription.getBackgroundColor() : Color.BLACK; mTmpColor[0] = (float) Color.red(backgroundColorInt) / 255.f; mTmpColor[1] = (float) Color.green(backgroundColorInt) / 255.f; mTmpColor[2] = (float) Color.blue(backgroundColorInt) / 255.f; startT.setColor(mTaskSurface, mTmpColor); - } else if (!DesktopModeStatus.isVeiledResizeEnabled()) { + } else { startT.unsetColor(mTaskSurface); } @@ -833,6 +830,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> boolean mSetTaskVisibilityPositionAndCrop; boolean mHasGlobalFocus; boolean mShouldSetAppBounds; + boolean mShouldSetBackground; void reset() { mLayoutResId = Resources.ID_NULL; @@ -857,6 +855,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> mAsyncViewHost = false; mHasGlobalFocus = false; mShouldSetAppBounds = false; + mShouldSetBackground = false; } boolean hasInputFeatureSpy() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ButtonBackgroundDrawableUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ButtonBackgroundDrawableUtils.kt new file mode 100644 index 000000000000..e18239d3eb70 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ButtonBackgroundDrawableUtils.kt @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wm.shell.windowdecor.common + +import android.annotation.ColorInt +import android.graphics.Color +import android.graphics.drawable.LayerDrawable +import android.graphics.drawable.RippleDrawable +import android.graphics.drawable.ShapeDrawable +import android.graphics.drawable.shapes.RoundRectShape +import com.android.wm.shell.windowdecor.common.OPACITY_11 +import com.android.wm.shell.windowdecor.common.OPACITY_15 +import android.content.res.ColorStateList + +/** + * Represents drawable insets, specifying the number of pixels to inset a drawable from its bounds. + */ +data class DrawableInsets(val l: Int, val t: Int, val r: Int, val b: Int) { + constructor(vertical: Int = 0, horizontal: Int = 0) : + this(horizontal, vertical, horizontal, vertical) + constructor(vertical: Int = 0, horizontalLeft: Int = 0, horizontalRight: Int = 0) : + this(horizontalLeft, vertical, horizontalRight, vertical) +} + +/** + * Replaces the alpha component of a color with the given alpha value. + */ +@ColorInt +fun replaceColorAlpha(@ColorInt color: Int, alpha: Int): Int { + return Color.argb( + alpha, + Color.red(color), + Color.green(color), + Color.blue(color) + ) +} + +/** + * Creates a RippleDrawable with specified color, corner radius, and insets. + */ +fun createRippleDrawable( + @ColorInt color: Int, + cornerRadius: Int, + drawableInsets: DrawableInsets, +): RippleDrawable { + return RippleDrawable( + ColorStateList( + arrayOf( + intArrayOf(android.R.attr.state_hovered), + intArrayOf(android.R.attr.state_pressed), + intArrayOf(), + ), + intArrayOf( + replaceColorAlpha(color, OPACITY_11), + replaceColorAlpha(color, OPACITY_15), + Color.TRANSPARENT, + ) + ), + null /* content */, + LayerDrawable(arrayOf( + ShapeDrawable().apply { + shape = RoundRectShape( + FloatArray(8) { cornerRadius.toFloat() }, + null /* inset */, + null /* innerRadii */ + ) + paint.color = Color.WHITE + } + )).apply { + require(numberOfLayers == 1) { "Must only contain one layer" } + setLayerInset(0 /* index */, + drawableInsets.l, drawableInsets.t, drawableInsets.r, drawableInsets.b) + } + ) +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt index ee5d0e80d90c..e9426d2f67ad 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt @@ -137,6 +137,10 @@ class DesktopTilingDecorViewModel( } } + fun onTaskInfoChange(taskInfo: RunningTaskInfo) { + tilingTransitionHandlerByDisplayId.get(taskInfo.displayId)?.onTaskInfoChange(taskInfo) + } + override fun onDisplayChange( displayId: Int, fromRotation: Int, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt index fbbf1a5db72c..cb45c1732476 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt @@ -57,6 +57,7 @@ class DesktopTilingDividerWindowManager( private val transactionSupplier: Supplier<SurfaceControl.Transaction>, private var dividerBounds: Rect, private val displayContext: Context, + private val isDarkMode: Boolean, ) : WindowlessWindowManager(config, leash, null), DividerMoveCallback, View.OnLayoutChangeListener { private lateinit var viewHost: SurfaceControlViewHost private var tilingDividerView: TilingDividerView? = null @@ -153,7 +154,7 @@ class DesktopTilingDividerWindowManager( surfaceControlViewHost.setView(dividerView, lp) val tmpDividerBounds = Rect() getDividerBounds(tmpDividerBounds) - dividerView.setup(this, tmpDividerBounds, handleRegionSize) + dividerView.setup(this, tmpDividerBounds, handleRegionSize, isDarkMode) t.setRelativeLayer(leash, relativeLeash, 1) .setPosition( leash, @@ -172,6 +173,11 @@ class DesktopTilingDividerWindowManager( updateTouchRegion() } + /** Changes divider colour if dark/light mode is toggled. */ + fun onUiModeChange(isDarkMode: Boolean) { + tilingDividerView?.onUiModeChange(isDarkMode) + } + /** Hides the divider bar. */ fun hideDividerBar() { if (!dividerShown) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt index 983332565bd9..a45df045041f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt @@ -103,6 +103,7 @@ class DesktopTilingWindowDecoration( @VisibleForTesting var desktopTilingDividerWindowManager: DesktopTilingDividerWindowManager? = null private lateinit var dividerBounds: Rect + private var isDarkMode = false private var isResizing = false private var isTilingFocused = false @@ -129,6 +130,7 @@ class DesktopTilingWindowDecoration( val isTiled = destinationBounds != taskInfo.configuration.windowConfiguration.bounds initTilingApps(resizeMetadata, position, taskInfo) + isDarkMode = isTaskInDarkMode(taskInfo) // Observe drag resizing to break tiling if a task is drag resized. desktopModeWindowDecoration.addDragResizeListener(this) @@ -232,6 +234,7 @@ class DesktopTilingWindowDecoration( transactionSupplier, dividerBounds, displayContext, + isDarkMode, ) } // a leash to present the divider on top of, without re-parenting. @@ -356,6 +359,17 @@ class DesktopTilingWindowDecoration( transitions.startTransition(TRANSIT_CHANGE, wct, this) } + fun onTaskInfoChange(taskInfo: RunningTaskInfo) { + val isCurrentTaskInDarkMode = isTaskInDarkMode(taskInfo) + if (isCurrentTaskInDarkMode == isDarkMode || !isTilingManagerInitialised) return + isDarkMode = isCurrentTaskInDarkMode + desktopTilingDividerWindowManager?.onUiModeChange(isDarkMode) + } + + fun isTaskInDarkMode(taskInfo: RunningTaskInfo): Boolean = + (taskInfo.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == + Configuration.UI_MODE_NIGHT_YES + override fun startAnimation( transition: IBinder, info: TransitionInfo, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt index b8e3b0fdb8d8..54dcd2d082dc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt @@ -16,6 +16,7 @@ package com.android.wm.shell.windowdecor.tiling import android.content.Context +import android.content.res.Configuration import android.graphics.Canvas import android.graphics.Paint import android.graphics.Rect @@ -85,11 +86,14 @@ class TilingDividerView : FrameLayout, View.OnTouchListener, DragDetector.Motion dividerMoveCallback: DividerMoveCallback, dividerBounds: Rect, handleRegionSize: Size, + isDarkMode: Boolean, ) { callback = dividerMoveCallback this.dividerBounds.set(dividerBounds) handle.setIsLeftRightSplit(true) + handle.setup(/* isSplitScreen= */ false, isDarkMode) corners.setIsLeftRightSplit(true) + corners.setup(/* isSplitScreen= */ false, isDarkMode) handleRegionHeight = handleRegionSize.height handleRegionWidth = handleRegionSize.width cornersRadius = @@ -103,6 +107,18 @@ class TilingDividerView : FrameLayout, View.OnTouchListener, DragDetector.Motion ) } + fun onUiModeChange(isDarkMode: Boolean) { + handle.onUiModeChange(isDarkMode) + corners.onUiModeChange(isDarkMode) + paint.color = + if (isDarkMode) { + resources.getColor(R.color.tiling_divider_background_dark, null /* theme */) + } else { + resources.getColor(R.color.tiling_divider_background_light, null /* theme */) + } + invalidate() + } + override fun onFinishInflate() { super.onFinishInflate() dividerBar = requireViewById(R.id.divider_bar) @@ -112,7 +128,15 @@ class TilingDividerView : FrameLayout, View.OnTouchListener, DragDetector.Motion resources.getDimensionPixelSize(R.dimen.docked_stack_divider_lift_elevation) setOnTouchListener(this) setWillNotDraw(false) - paint.color = resources.getColor(R.color.split_divider_background, null) + paint.color = + if ( + context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == + Configuration.UI_MODE_NIGHT_YES + ) { + resources.getColor(R.color.tiling_divider_background_dark, /* theme= */null) + } else { + resources.getColor(R.color.tiling_divider_background_light, /* theme= */ null) + } paint.isAntiAlias = true paint.style = Paint.Style.FILL } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt index 870c894fe885..eb8b617df4ce 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt @@ -61,6 +61,8 @@ import com.android.wm.shell.windowdecor.common.OPACITY_15 import com.android.wm.shell.windowdecor.common.OPACITY_55 import com.android.wm.shell.windowdecor.common.OPACITY_65 import com.android.wm.shell.windowdecor.common.Theme +import com.android.wm.shell.windowdecor.common.DrawableInsets +import com.android.wm.shell.windowdecor.common.createRippleDrawable import com.android.wm.shell.windowdecor.extension.isLightCaptionBarAppearance import com.android.wm.shell.windowdecor.extension.isTransparentCaptionBarAppearance @@ -635,61 +637,10 @@ class AppHeaderViewHolder( ) } - @ColorInt - private fun replaceColorAlpha(@ColorInt color: Int, alpha: Int): Int { - return Color.argb( - alpha, - Color.red(color), - Color.green(color), - Color.blue(color) - ) - } - - private fun createRippleDrawable( - @ColorInt color: Int, - cornerRadius: Int, - drawableInsets: DrawableInsets, - ): RippleDrawable { - return RippleDrawable( - ColorStateList( - arrayOf( - intArrayOf(android.R.attr.state_hovered), - intArrayOf(android.R.attr.state_pressed), - intArrayOf(), - ), - intArrayOf( - replaceColorAlpha(color, OPACITY_11), - replaceColorAlpha(color, OPACITY_15), - Color.TRANSPARENT - ) - ), - null /* content */, - LayerDrawable(arrayOf( - ShapeDrawable().apply { - shape = RoundRectShape( - FloatArray(8) { cornerRadius.toFloat() }, - null /* inset */, - null /* innerRadii */ - ) - paint.color = Color.WHITE - } - )).apply { - require(numberOfLayers == 1) { "Must only contain one layer" } - setLayerInset(0 /* index */, - drawableInsets.l, drawableInsets.t, drawableInsets.r, drawableInsets.b) - } - ) - } - private enum class SizeToggleDirection { MAXIMIZE, RESTORE } - private data class DrawableInsets(val l: Int, val t: Int, val r: Int, val b: Int) { - constructor(vertical: Int = 0, horizontal: Int = 0) : - this(horizontal, vertical, horizontal, vertical) - } - private data class Header( val type: Type, val appTheme: Theme, diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt index 4c443d7501f7..d73d08c032f9 100644 --- a/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt +++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/flicker-service/src/com/android/wm/shell/flicker/DesktopModeFlickerScenarios.kt @@ -498,9 +498,9 @@ class DesktopModeFlickerScenarios { it.remove(VisibleLayersShownMoreThanOneConsecutiveEntry()) } + listOf( - AppWindowOnTopAtStart(DESKTOP_MODE_APP), AppWindowBecomesInvisible(DESKTOP_MODE_APP), AppWindowOnTopAtEnd(LAUNCHER), + AppWindowIsInvisibleAtEnd(DESKTOP_WALLPAPER), ).associateBy({ it }, { AssertionInvocationGroup.BLOCKING }) ) val OPEN_UNLIMITED_APPS = diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt index 28008393da84..d82c06691e46 100644 --- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt +++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt @@ -18,9 +18,9 @@ package com.android.wm.shell.scenarios import android.tools.NavBar import android.tools.Rotation -import com.android.internal.R import com.android.window.flags.Flags import com.android.wm.shell.Utils +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus import org.junit.After import org.junit.Assume import org.junit.Before @@ -42,8 +42,8 @@ constructor( fun setup() { Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet) // Skip the test when the drag-to-maximize is enabled on this device. - Assume.assumeFalse(Flags.enableDragToMaximize() && - instrumentation.context.resources.getBoolean(R.bool.config_dragToMaximizeInDesktopMode)) + Assume.assumeFalse( + DesktopModeStatus.shouldMaximizeWhenDragToTopEdge(instrumentation.context)) tapl.setEnableRotation(true) tapl.setExpectedRotation(rotation.value) testApp.enterDesktopMode(wmHelper, device) diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt index 60a0fb547909..675b63cf56bb 100644 --- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt +++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt @@ -23,12 +23,12 @@ import android.tools.flicker.rules.ChangeDisplayOrientationRule import android.tools.traces.parsers.WindowManagerStateHelper import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice -import com.android.internal.R import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.helpers.DesktopModeAppHelper import com.android.server.wm.flicker.helpers.SimpleAppHelper import com.android.window.flags.Flags import com.android.wm.shell.Utils +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus import org.junit.After import org.junit.Assume import org.junit.Before @@ -54,8 +54,8 @@ constructor(private val rotation: Rotation = Rotation.ROTATION_0) { fun setup() { Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet) // Skip the test when the drag-to-maximize is disabled on this device. - Assume.assumeTrue(Flags.enableDragToMaximize() && - instrumentation.context.resources.getBoolean(R.bool.config_dragToMaximizeInDesktopMode)) + Assume.assumeTrue( + DesktopModeStatus.shouldMaximizeWhenDragToTopEdge(instrumentation.context)) tapl.setEnableRotation(true) tapl.setExpectedRotation(rotation.value) ChangeDisplayOrientationRule.setRotation(rotation) diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt index 81c46f13b384..b9a5e4a95e36 100644 --- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt +++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/OpenAppWithExternalDisplayConnected.kt @@ -25,6 +25,7 @@ import android.tools.Rotation import android.tools.flicker.rules.ChangeDisplayOrientationRule import android.tools.traces.parsers.WindowManagerStateHelper import android.util.DisplayMetrics +import android.window.DesktopExperienceFlags import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import com.android.launcher3.tapl.LauncherInstrumentation @@ -64,7 +65,7 @@ constructor(private val rotation: Rotation = Rotation.ROTATION_0) { @Before fun setup() { Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet) - Assume.assumeTrue(Flags.enableDisplayWindowingModeSwitching()) + Assume.assumeTrue(DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) tapl.setEnableRotation(true) tapl.setExpectedRotation(rotation.value) ChangeDisplayOrientationRule.setRotation(rotation) diff --git a/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt b/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt index 7f48499b0558..e39fa3a71b03 100644 --- a/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt +++ b/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt @@ -22,7 +22,6 @@ import android.tools.flicker.legacy.FlickerBuilder import android.tools.flicker.legacy.LegacyFlickerTest import android.tools.flicker.legacy.LegacyFlickerTestFactory import android.tools.traces.component.ComponentNameMatcher -import android.tools.traces.component.EdgeExtensionComponentMatcher import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.wm.shell.flicker.splitscreen.benchmark.CopyContentInSplitBenchmark @@ -99,7 +98,6 @@ class CopyContentInSplit(override val flicker: LegacyFlickerTest) : ComponentNameMatcher.SPLASH_SCREEN, ComponentNameMatcher.SNAPSHOT, ComponentNameMatcher.IME_SNAPSHOT, - EdgeExtensionComponentMatcher(), magnifierLayer, popupWindowLayer ) 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 60f1d271c3af..d829c6afb787 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 @@ -104,6 +104,7 @@ public class ExpandedAnimationControllerTest extends PhysicsAnimationLayoutTestC @Test public void testExpansionAndCollapse() throws Exception { expand(); + waitForAnimation(); testBubblesInCorrectExpandedPositions(); waitForMainThread(); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java index 75ad621e1cad..e85d30fbaebd 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java @@ -124,7 +124,7 @@ public class PipDesktopStateTest { @Test public void isPipEnteringInDesktopMode_visibleCountZero_minimizedPipPresent_returnsTrue() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(true); assertTrue(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo)); @@ -132,7 +132,7 @@ public class PipDesktopStateTest { @Test public void isPipEnteringInDesktopMode_visibleCountNonzero_minimizedPipAbsent_returnsTrue() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(false); assertTrue(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo)); @@ -140,7 +140,7 @@ public class PipDesktopStateTest { @Test public void isPipEnteringInDesktopMode_visibleCountZero_minimizedPipAbsent_returnsFalse() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(false); assertFalse(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo)); @@ -148,7 +148,7 @@ public class PipDesktopStateTest { @Test public void shouldExitPipExitDesktopMode_visibleCountZero_wallpaperInvisible_returnsFalse() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible( DISPLAY_ID)).thenReturn(false); @@ -157,7 +157,7 @@ public class PipDesktopStateTest { @Test public void shouldExitPipExitDesktopMode_visibleCountNonzero_wallpaperVisible_returnsFalse() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible( DISPLAY_ID)).thenReturn(true); @@ -166,7 +166,7 @@ public class PipDesktopStateTest { @Test public void shouldExitPipExitDesktopMode_visibleCountZero_wallpaperVisible_returnsTrue() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible( DISPLAY_ID)).thenReturn(true); @@ -176,7 +176,7 @@ public class PipDesktopStateTest { @Test public void getOutPipWindowingMode_exitToDesktop_displayFreeform_returnsUndefined() { // Set visible task count to 1 so isPipExitingToDesktopMode returns true - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); setDisplayWindowingMode(WINDOWING_MODE_FREEFORM); assertEquals(WINDOWING_MODE_UNDEFINED, mPipDesktopState.getOutPipWindowingMode()); @@ -185,7 +185,7 @@ public class PipDesktopStateTest { @Test public void getOutPipWindowingMode_exitToDesktop_displayFullscreen_returnsFreeform() { // Set visible task count to 1 so isPipExitingToDesktopMode returns true - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); setDisplayWindowingMode(WINDOWING_MODE_FULLSCREEN); assertEquals(WINDOWING_MODE_FREEFORM, mPipDesktopState.getOutPipWindowingMode()); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java index 2264adec9a19..598a101b8bcd 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java @@ -67,8 +67,6 @@ import com.android.wm.shell.transition.Transitions; import dagger.Lazy; -import java.util.Optional; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -78,6 +76,8 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Optional; + /** * Tests for {@link CompatUIController}. * @@ -707,13 +707,13 @@ public class CompatUIControllerTest extends ShellTestCase { @EnableFlags(Flags.FLAG_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE) public void testUpdateActiveTaskInfo_removeAllComponentWhenInDesktopModeFlagEnabled() { TaskInfo taskInfo = createTaskInfo(DISPLAY_ID, TASK_ID, /* hasSizeCompat= */ true); - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(false); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); verify(mController, never()).removeLayouts(taskInfo.taskId); - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(2); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(true); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); @@ -724,14 +724,14 @@ public class CompatUIControllerTest extends ShellTestCase { @RequiresFlagsDisabled(Flags.FLAG_APP_COMPAT_UI_FRAMEWORK) @DisableFlags(Flags.FLAG_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE) public void testUpdateActiveTaskInfo_removeAllComponentWhenInDesktopModeFlagDisabled() { - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(false); TaskInfo taskInfo = createTaskInfo(DISPLAY_ID, TASK_ID, /* hasSizeCompat= */ true); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); verify(mController, never()).removeLayouts(taskInfo.taskId); - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(2); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(true); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt index 0ff7230f6e0c..cc37c440f650 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt @@ -22,9 +22,10 @@ import android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.content.ContentResolver import android.os.Binder +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags import android.provider.Settings import android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS -import android.testing.AndroidTestingRunner import android.view.Display.DEFAULT_DISPLAY import android.view.IWindowManager import android.view.WindowManager.TRANSIT_CHANGE @@ -32,6 +33,7 @@ import android.window.DisplayAreaInfo import android.window.WindowContainerTransaction import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.never +import com.android.window.flags.Flags import com.android.wm.shell.MockToken import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTaskOrganizer @@ -40,6 +42,8 @@ import com.android.wm.shell.TestRunningTaskInfoBuilder import com.android.wm.shell.desktopmode.desktopwallpaperactivity.DesktopWallpaperActivityTokenProvider import com.android.wm.shell.transition.Transitions import com.google.common.truth.Truth.assertThat +import com.google.testing.junit.testparameterinjector.TestParameter +import com.google.testing.junit.testparameterinjector.TestParameterInjector import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -59,7 +63,7 @@ import org.mockito.kotlin.whenever * Usage: atest WMShellUnitTests:DesktopDisplayModeControllerTest */ @SmallTest -@RunWith(AndroidTestingRunner::class) +@RunWith(TestParameterInjector::class) class DesktopDisplayModeControllerTest : ShellTestCase() { private val transitions = mock<Transitions>() private val rootTaskDisplayAreaOrganizer = mock<RootTaskDisplayAreaOrganizer>() @@ -101,7 +105,7 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { private fun testDisplayWindowingModeSwitch( defaultWindowingMode: Int, extendedDisplayEnabled: Boolean, - expectTransition: Boolean, + expectToSwitch: Boolean, ) { defaultTDA.configuration.windowConfiguration.windowingMode = defaultWindowingMode whenever(mockWindowManager.getWindowingMode(anyInt())).thenReturn(defaultWindowingMode) @@ -113,10 +117,14 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { settingsSession.use { connectExternalDisplay() - defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM + if (expectToSwitch) { + // Assumes [connectExternalDisplay] properly triggered the switching transition. + // Will verify the transition later along with [disconnectExternalDisplay]. + defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM + } disconnectExternalDisplay() - if (expectTransition) { + if (expectToSwitch) { val arg = argumentCaptor<WindowContainerTransaction>() verify(transitions, times(2)) .startTransition(eq(TRANSIT_CHANGE), arg.capture(), isNull()) @@ -135,33 +143,30 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { } @Test - fun displayWindowingModeSwitchOnDisplayConnected_extendedDisplayDisabled() { - testDisplayWindowingModeSwitch( - defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, - extendedDisplayEnabled = false, - expectTransition = false, - ) - } - - @Test - fun displayWindowingModeSwitchOnDisplayConnected_fullscreenDisplay() { + @DisableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) + fun displayWindowingModeSwitchOnDisplayConnected_flagDisabled( + @TestParameter param: ModeSwitchTestCase + ) { testDisplayWindowingModeSwitch( - defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, - extendedDisplayEnabled = true, - expectTransition = true, + param.defaultWindowingMode, + param.extendedDisplayEnabled, + // When the flag is disabled, never switch. + expectToSwitch = false, ) } @Test - fun displayWindowingModeSwitchOnDisplayConnected_freeformDisplay() { + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) + fun displayWindowingModeSwitchOnDisplayConnected(@TestParameter param: ModeSwitchTestCase) { testDisplayWindowingModeSwitch( - defaultWindowingMode = WINDOWING_MODE_FREEFORM, - extendedDisplayEnabled = true, - expectTransition = false, + param.defaultWindowingMode, + param.extendedDisplayEnabled, + param.expectToSwitchByDefault, ) } @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitch_existingTasksOnConnected() { defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN whenever(mockWindowManager.getWindowingMode(anyInt())).thenReturn(WINDOWING_MODE_FULLSCREEN) @@ -180,6 +185,7 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { } @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitch_existingTasksOnDisconnected() { defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM whenever(mockWindowManager.getWindowingMode(anyInt())).thenAnswer { @@ -227,7 +233,34 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { } } - private companion object { + companion object { const val EXTERNAL_DISPLAY_ID = 100 + + enum class ModeSwitchTestCase( + val defaultWindowingMode: Int, + val extendedDisplayEnabled: Boolean, + val expectToSwitchByDefault: Boolean, + ) { + FULLSCREEN_DISPLAY( + defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, + extendedDisplayEnabled = true, + expectToSwitchByDefault = true, + ), + FULLSCREEN_DISPLAY_MIRRORING( + defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, + extendedDisplayEnabled = false, + expectToSwitchByDefault = false, + ), + FREEFORM_DISPLAY( + defaultWindowingMode = WINDOWING_MODE_FREEFORM, + extendedDisplayEnabled = true, + expectToSwitchByDefault = false, + ), + FREEFORM_DISPLAY_MIRRORING( + defaultWindowingMode = WINDOWING_MODE_FREEFORM, + extendedDisplayEnabled = false, + expectToSwitchByDefault = false, + ), + } } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt index 0d1c57221fb9..3e6f688e6acc 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopMinimizationTransitionHandlerTest.kt @@ -33,6 +33,7 @@ import com.android.wm.shell.ShellTestCase import com.android.wm.shell.TestRunningTaskInfoBuilder import com.android.wm.shell.common.DisplayController import com.android.wm.shell.common.ShellExecutor +import com.android.wm.shell.transition.Transitions import org.junit.Assert.assertFalse import org.junit.Assert.assertNull import org.junit.Assert.assertTrue @@ -154,6 +155,24 @@ class DesktopMinimizationTransitionHandlerTest : ShellTestCase() { assertTrue("Should animate going to back freeform task close transition", animates) } + @Test + fun startAnimation_minimizeTransitionToBackFreeformTask_returnsTrue() { + val animates = + handler.startAnimation( + transition = mock(), + info = + createTransitionInfo( + type = Transitions.TRANSIT_MINIMIZE, + task = createTask(WINDOWING_MODE_FREEFORM), + ), + startTransaction = mock(), + finishTransaction = mock(), + finishCallback = {}, + ) + + assertTrue("Should animate going to back freeform task minimize transition", animates) + } + private fun createTransitionInfo( type: Int = WindowManager.TRANSIT_TO_BACK, changeMode: Int = WindowManager.TRANSIT_TO_BACK, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt index 50590f021a2a..6b0ee5b7ffd4 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt @@ -56,7 +56,7 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskOpening_fullscreenTask_notActiveDesktopTask_noop() { + fun onTaskOpening_fullscreenTask_nonActiveDesktopTask_noop() { val task = createFullscreenTask().apply { isVisible = true } whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(false) @@ -68,7 +68,7 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskOpening_freeformTask_activeDesktopTask_removesTaskFromRepo() { + fun onTaskOpening_fullscreenTask_taskIsActiveInDesktopRepo_removesTaskFromDesktopRepo() { val task = createFullscreenTask().apply { isVisible = true } whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) @@ -78,19 +78,20 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskOpening_freeformTask_visibleDesktopTask_addsTaskToRepository() { + fun onTaskOpening_freeformTask_activeInDesktopRepository_noop() { val task = createFreeformTask().apply { isVisible = true } - whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(false) + whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) desktopTaskChangeListener.onTaskOpening(task) - verify(desktopUserRepositories.current).addTask(task.displayId, task.taskId, task.isVisible) + verify(desktopUserRepositories.current, never()) + .addTask(task.displayId, task.taskId, task.isVisible) } @Test - fun onTaskOpening_freeformTask_nonVisibleDesktopTask_addsTaskToRepository() { + fun onTaskOpening_freeformTask_notActiveInDesktopRepo_addsTaskToRepository() { val task = createFreeformTask().apply { isVisible = false } - whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) + whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(false) desktopTaskChangeListener.onTaskOpening(task) @@ -98,7 +99,7 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskChanging_freeformTaskOutsideDesktop_removesTaskFromRepo() { + fun onTaskChanging_fullscreenTask_activeInDesktopRepository_removesTaskFromRepo() { val task = createFullscreenTask().apply { isVisible = true } whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) @@ -108,7 +109,27 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskChanging_visibleTaskInDesktop_updatesTaskVisibility() { + fun onTaskChanging_fullscreenTask_nonActiveInDesktopRepo_noop() { + val task = createFullscreenTask().apply { isVisible = true } + whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(false) + + desktopTaskChangeListener.onTaskChanging(task) + + verify(desktopUserRepositories.current, never()).removeTask(task.displayId, task.taskId) + } + + @Test + fun onTaskChanging_freeformTask_nonActiveTaskInDesktopRepo_addsTaskToDesktopRepo() { + val task = createFreeformTask().apply { isVisible = true } + whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(false) + + desktopTaskChangeListener.onTaskChanging(task) + + verify(desktopUserRepositories.current).addTask(task.displayId, task.taskId, task.isVisible) + } + + @Test + fun onTaskChanging_freeformTask_activeVisibleTaskInDesktopRepo_updatesTaskVisibility() { val task = createFreeformTask().apply { isVisible = true } whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) @@ -119,7 +140,7 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskChanging_nonVisibleTask_updatesTaskVisibility() { + fun onTaskChanging_freeformTask_activeNonVisibleTask_updatesTaskVisibility() { val task = createFreeformTask().apply { isVisible = false } whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) @@ -130,7 +151,7 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskMovingToFront_freeformTaskOutsideDesktop_removesTaskFromRepo() { + fun onTaskMovingToFront_fullscreenTask_activeTaskInDesktopRepo_removesTaskFromRepo() { val task = createFullscreenTask().apply { isVisible = true } whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) @@ -140,9 +161,18 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test - fun onTaskMovingToFront_freeformTaskOutsideDesktop_addsTaskToRepo() { + fun onTaskMovingToFront_fullscreenTask_nonActiveTaskInDesktopRepo_noop() { val task = createFullscreenTask().apply { isVisible = true } - whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) + whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(false) + + desktopTaskChangeListener.onTaskMovingToFront(task) + + verify(desktopUserRepositories.current, never()).removeTask(task.displayId, task.taskId) + } + + @Test + fun onTaskMovingToFront_freeformTask_addsTaskToRepo() { + val task = createFreeformTask().apply { isVisible = true } desktopTaskChangeListener.onTaskMovingToFront(task) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt index ac1deec53bf6..63bf6841dba4 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt @@ -145,6 +145,7 @@ import com.android.wm.shell.splitscreen.SplitScreenController import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit +import com.android.wm.shell.transition.FocusTransitionObserver import com.android.wm.shell.transition.OneShotRemoteHandler import com.android.wm.shell.transition.TestRemoteTransition import com.android.wm.shell.transition.Transitions @@ -239,6 +240,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Mock private lateinit var taskbarDesktopTaskListener: TaskbarDesktopTaskListener @Mock private lateinit var freeformTaskTransitionStarter: FreeformTaskTransitionStarter @Mock private lateinit var mockHandler: Handler + @Mock private lateinit var focusTransitionObserver: FocusTransitionObserver @Mock private lateinit var desktopModeEventLogger: DesktopModeEventLogger @Mock private lateinit var desktopModeUiEventLogger: DesktopModeUiEventLogger @Mock lateinit var persistentRepository: DesktopPersistentRepository @@ -261,6 +263,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Mock private lateinit var desksTransitionsObserver: DesksTransitionObserver @Mock private lateinit var packageManager: PackageManager @Mock private lateinit var mockDisplayContext: Context + @Mock private lateinit var dragToDisplayTransitionHandler: DragToDisplayTransitionHandler private lateinit var controller: DesktopTasksController private lateinit var shellInit: ShellInit @@ -331,6 +334,16 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(enterDesktopTransitionHandler.moveToDesktop(any(), any())).thenAnswer { Binder() } whenever(exitDesktopTransitionHandler.startTransition(any(), any(), any(), any())) .thenReturn(Binder()) + whenever( + desktopMixedTransitionHandler.startLaunchTransition( + any(), + any(), + anyOrNull(), + anyOrNull(), + anyOrNull(), + ) + ) + .thenReturn(Binder()) whenever(displayController.getDisplayLayout(anyInt())).thenReturn(displayLayout) whenever(displayController.getDisplayContext(anyInt())).thenReturn(mockDisplayContext) whenever(displayController.getDisplay(anyInt())).thenReturn(display) @@ -422,6 +435,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() recentTasksController, mockInteractionJankMonitor, mockHandler, + focusTransitionObserver, desktopModeEventLogger, desktopModeUiEventLogger, desktopWallpaperActivityTokenProvider, @@ -431,6 +445,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() desksTransitionsObserver, userProfileContexts, desktopModeCompatPolicy, + dragToDisplayTransitionHandler, ) @After @@ -1062,75 +1077,81 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - fun visibleTaskCount_noTasks_returnsZero() { - assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0) + fun isAnyDeskActive_noTasks_returnsFalse() { + assertThat(controller.isAnyDeskActive(DEFAULT_DISPLAY)).isFalse() } @Test - fun visibleTaskCount_twoTasks_bothVisible_returnsTwo() { + fun isAnyDeskActive_twoTasks_bothVisible_returnsTrue() { setUpHomeTask() + setUpFreeformTask().also(::markTaskVisible) setUpFreeformTask().also(::markTaskVisible) - assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2) + + assertThat(controller.isAnyDeskActive(DEFAULT_DISPLAY)).isTrue() } @Test - fun visibleTaskCount_twoTasks_oneVisible_returnsOne() { + fun isInDesktop_twoTasks_oneVisible_returnsTrue() { setUpHomeTask() + setUpFreeformTask().also(::markTaskVisible) setUpFreeformTask().also(::markTaskHidden) - assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1) + + assertThat(controller.isAnyDeskActive(DEFAULT_DISPLAY)).isTrue() } @Test - fun visibleTaskCount_twoTasksVisibleOnDifferentDisplays_returnsOne() { + fun isAnyDeskActive_twoTasksVisibleOnDifferentDisplays_returnsTrue() { taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY) taskRepository.setActiveDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY) setUpHomeTask() + setUpFreeformTask(DEFAULT_DISPLAY).also(::markTaskVisible) setUpFreeformTask(SECOND_DISPLAY).also(::markTaskVisible) - assertThat(controller.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(1) + + assertThat(controller.isAnyDeskActive(SECOND_DISPLAY)).isTrue() } @Test - fun addMoveToDesktopChanges_gravityLeft_noBoundsApplied() { + fun addMoveToDeskTaskChanges_gravityLeft_noBoundsApplied() { setUpLandscapeDisplay() val task = setUpFullscreenTask(gravity = Gravity.LEFT) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(finalBounds).isEqualTo(Rect()) } @Test - fun addMoveToDesktopChanges_gravityRight_noBoundsApplied() { + fun addMoveToDeskTaskChanges_gravityRight_noBoundsApplied() { setUpLandscapeDisplay() val task = setUpFullscreenTask(gravity = Gravity.RIGHT) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(finalBounds).isEqualTo(Rect()) } @Test - fun addMoveToDesktopChanges_gravityTop_noBoundsApplied() { + fun addMoveToDeskTaskChanges_gravityTop_noBoundsApplied() { setUpLandscapeDisplay() val task = setUpFullscreenTask(gravity = Gravity.TOP) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(finalBounds).isEqualTo(Rect()) } @Test - fun addMoveToDesktopChanges_gravityBottom_noBoundsApplied() { + fun addMoveToDeskTaskChanges_gravityBottom_noBoundsApplied() { setUpLandscapeDisplay() val task = setUpFullscreenTask(gravity = Gravity.BOTTOM) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(finalBounds).isEqualTo(Rect()) @@ -1171,7 +1192,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_positionBottomRight() { + fun addMoveToDeskTaskChanges_positionBottomRight() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1180,7 +1201,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1189,7 +1210,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_positionTopLeft() { + fun addMoveToDeskTaskChanges_positionTopLeft() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1198,7 +1219,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1207,7 +1228,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_positionBottomLeft() { + fun addMoveToDeskTaskChanges_positionBottomLeft() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1216,7 +1237,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1225,7 +1246,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_positionTopRight() { + fun addMoveToDeskTaskChanges_positionTopRight() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1234,7 +1255,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1243,7 +1264,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_positionResetsToCenter() { + fun addMoveToDeskTaskChanges_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1252,7 +1273,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1261,7 +1282,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_lastWindowSnapLeft_positionResetsToCenter() { + fun addMoveToDeskTaskChanges_lastWindowSnapLeft_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1273,7 +1294,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1282,7 +1303,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_lastWindowSnapRight_positionResetsToCenter() { + fun addMoveToDeskTaskChanges_lastWindowSnapRight_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1300,7 +1321,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1309,7 +1330,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_lastWindowMaximised_positionResetsToCenter() { + fun addMoveToDeskTaskChanges_lastWindowMaximised_positionResetsToCenter() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1319,7 +1340,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1328,7 +1349,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_CASCADING_WINDOWS) - fun addMoveToDesktopChanges_defaultToCenterIfFree() { + fun addMoveToDeskTaskChanges_defaultToCenterIfFree() { setUpLandscapeDisplay() val stableBounds = Rect() displayLayout.getStableBoundsForDesktopMode(stableBounds) @@ -1346,7 +1367,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() val task = setUpFullscreenTask() val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) assertThat(stableBounds.getDesktopTaskPosition(finalBounds!!)) @@ -1354,7 +1375,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - fun addMoveToDesktopChanges_excludeCaptionFromAppBounds_nonResizableLandscape() { + fun addMoveToDeskTaskChanges_excludeCaptionFromAppBounds_nonResizableLandscape() { setUpLandscapeDisplay() val task = setUpFullscreenTask( @@ -1364,7 +1385,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(task)).thenReturn(true) val initialAspectRatio = calculateAspectRatio(task) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) val captionInsets = getAppHeaderHeight(context) @@ -1376,7 +1397,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - fun addMoveToDesktopChanges_excludeCaptionFromAppBounds_nonResizablePortrait() { + fun addMoveToDeskTaskChanges_excludeCaptionFromAppBounds_nonResizablePortrait() { setUpLandscapeDisplay() val task = setUpFullscreenTask( @@ -1386,7 +1407,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(desktopModeCompatPolicy.shouldExcludeCaptionFromAppBounds(task)).thenReturn(true) val initialAspectRatio = calculateAspectRatio(task) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) val finalBounds = findBoundsChange(wct, task) val captionInsets = getAppHeaderHeight(context) @@ -1424,29 +1445,29 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS) - fun addMoveToDesktopChanges_landscapeDevice_userFullscreenOverride_defaultPortraitBounds() { + fun addMoveToDeskTaskChanges_landscapeDevice_userFullscreenOverride_defaultPortraitBounds() { setUpLandscapeDisplay() val task = setUpFullscreenTask(enableUserFullscreenOverride = true) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS) - fun addMoveToDesktopChanges_landscapeDevice_systemFullscreenOverride_defaultPortraitBounds() { + fun addMoveToDeskTaskChanges_landscapeDevice_systemFullscreenOverride_defaultPortraitBounds() { setUpLandscapeDisplay() val task = setUpFullscreenTask(enableSystemFullscreenOverride = true) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_LANDSCAPE_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS) - fun addMoveToDesktopChanges_landscapeDevice_portraitResizableApp_aspectRatioOverridden() { + fun addMoveToDeskTaskChanges_landscapeDevice_portraitResizableApp_aspectRatioOverridden() { setUpLandscapeDisplay() val task = setUpFullscreenTask( @@ -1455,36 +1476,36 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() aspectRatioOverrideApplied = true, ) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_PORTRAIT_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS) - fun addMoveToDesktopChanges_portraitDevice_userFullscreenOverride_defaultPortraitBounds() { + fun addMoveToDeskTaskChanges_portraitDevice_userFullscreenOverride_defaultPortraitBounds() { setUpPortraitDisplay() val task = setUpFullscreenTask(enableUserFullscreenOverride = true) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS) - fun addMoveToDesktopChanges_portraitDevice_systemFullscreenOverride_defaultPortraitBounds() { + fun addMoveToDeskTaskChanges_portraitDevice_systemFullscreenOverride_defaultPortraitBounds() { setUpPortraitDisplay() val task = setUpFullscreenTask(enableSystemFullscreenOverride = true) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) assertThat(findBoundsChange(wct, task)).isEqualTo(DEFAULT_PORTRAIT_BOUNDS) } @Test @EnableFlags(Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS) - fun addMoveToDesktopChanges_portraitDevice_landscapeResizableApp_aspectRatioOverridden() { + fun addMoveToDeskTaskChanges_portraitDevice_landscapeResizableApp_aspectRatioOverridden() { setUpPortraitDisplay() val task = setUpFullscreenTask( @@ -1494,7 +1515,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() aspectRatioOverrideApplied = true, ) val wct = WindowContainerTransaction() - controller.addMoveToDesktopChanges(wct, task) + controller.addMoveToDeskTaskChanges(wct, task, deskId = 0) assertThat(findBoundsChange(wct, task)).isEqualTo(UNRESIZABLE_LANDSCAPE_BOUNDS) } @@ -1605,7 +1626,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY) fun moveTaskToDesktop_desktopWallpaperDisabled_nonRunningTask_launchesInFreeform() { - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task) @@ -1620,7 +1641,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY) fun moveTaskToDesktop_desktopWallpaperEnabled_nonRunningTask_launchesInFreeform() { whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null) - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task) @@ -1792,7 +1813,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(transitions.startTransition(anyInt(), any(), transitionHandlerArgCaptor.capture())) .thenReturn(Binder()) - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task) controller.moveTaskToDefaultDeskAndActivate( @@ -1807,6 +1828,34 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, + ) + fun moveBackgroundTaskToDesktop_nonDefaultDisplay_reordersHomeAndWallpaperOfNonDefaultDisplay() { + val homeTask = setUpHomeTask(displayId = SECOND_DISPLAY) + val wallpaperToken = MockToken().token() + whenever(desktopWallpaperActivityTokenProvider.getToken(SECOND_DISPLAY)) + .thenReturn(wallpaperToken) + val task = setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = 2, background = true) + + controller.moveTaskToDefaultDeskAndActivate( + taskId = task.taskId, + transitionSource = UNKNOWN, + remoteTransition = RemoteTransition(spy(TestRemoteTransition())), + ) + + val wct = getLatestTransition() + val homeReorderIndex = wct.indexOfReorder(homeTask, toTop = true) + val wallpaperReorderIndex = wct.indexOfReorder(wallpaperToken, toTop = true) + assertThat(homeReorderIndex).isNotEqualTo(-1) + assertThat(wallpaperReorderIndex).isNotEqualTo(-1) + // Wallpaper last, to be in front of Home. + assertThat(wallpaperReorderIndex).isGreaterThan(homeReorderIndex) + } + + @Test fun moveRunningTaskToDesktop_remoteTransition_usesOneShotHandler() { val transitionHandlerArgCaptor = argumentCaptor<TransitionHandler>() whenever(transitions.startTransition(anyInt(), any(), transitionHandlerArgCaptor.capture())) @@ -2069,6 +2118,21 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun moveToFullscreen_fromDeskWithMultipleTasks_deactivatesDesk() { + val deskId = 1 + taskRepository.addDesk(displayId = DEFAULT_DISPLAY, deskId = deskId) + taskRepository.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = deskId) + val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = deskId) + val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = deskId) + + controller.moveToFullscreen(task1.taskId, transitionSource = UNKNOWN) + + val wct = getLatestExitDesktopWct() + verify(desksOrganizer).deactivateDesk(wct, deskId = deskId) + } + + @Test fun moveToFullscreen_tdaFullscreen_windowingModeSetToUndefined() { val task = setUpFreeformTask() val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!! @@ -2278,7 +2342,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + @DisableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP, + ) fun moveToFullscreen_multipleVisibleNonMinimizedTasks_doesNotRemoveWallpaperActivity() { val homeTask = setUpHomeTask() val task1 = setUpFreeformTask() @@ -2305,29 +2372,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) - fun moveToFullscreen_multipleVisibleNonMinimizedTasks_doesNotRemoveWallpaperActivity_multiDesksEnabled() { - val homeTask = setUpHomeTask() - val task1 = setUpFreeformTask() - // Setup task2 - setUpFreeformTask() - - val tdaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY) - assertNotNull(tdaInfo).configuration.windowConfiguration.windowingMode = - WINDOWING_MODE_FULLSCREEN - - controller.moveToFullscreen(task1.taskId, transitionSource = UNKNOWN) - - val wct = getLatestExitDesktopWct() - val task1Change = assertNotNull(wct.changes[task1.token.asBinder()]) - assertThat(task1Change.windowingMode).isEqualTo(WINDOWING_MODE_UNDEFINED) - verify(desktopModeEnterExitTransitionListener) - .onExitDesktopModeTransitionStarted(FULLSCREEN_ANIMATION_DURATION) - // Does not remove wallpaper activity, as desktop still has a visible desktop task - wct.assertWithoutHop(ReorderPredicate(wallpaperToken, toTop = false)) - } - - @Test fun moveToFullscreen_nonExistentTask_doesNothing() { controller.moveToFullscreen(999, transitionSource = UNKNOWN) verifyExitDesktopWCTNotExecuted() @@ -2462,7 +2506,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun moveTaskToFront_backgroundTask_launchesTask() { - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever( desktopMixedTransitionHandler.startLaunchTransition( @@ -2484,7 +2528,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun moveTaskToFront_backgroundTaskBringsTasksOverLimit_minimizesBackTask() { val freeformTasks = (1..MAX_TASK_LIMIT).map { _ -> setUpFreeformTask() } - val task = createTaskInfo(1001) + val task = createRecentTaskInfo(1001) whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null) whenever( desktopMixedTransitionHandler.startLaunchTransition( @@ -2780,6 +2824,71 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + fun moveToNextDisplay_toDesktopInOtherDisplay_bringsExistingTasksToFront() { + val transition = Binder() + val sourceDeskId = 0 + val targetDeskId = 2 + taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = targetDeskId) + taskRepository.setDeskInactive(deskId = targetDeskId) + // Set up two display ids + whenever(rootTaskDisplayAreaOrganizer.displayIds) + .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY)) + // Create a mock for the target display area: second display + val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0) + whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY)) + .thenReturn(secondDisplayArea) + whenever(transitions.startTransition(eq(TRANSIT_CHANGE), any(), anyOrNull())) + .thenReturn(transition) + val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = sourceDeskId) + val task2 = setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = targetDeskId) + + controller.moveToNextDisplay(task1.taskId) + + // Existing desktop task in the target display is moved to front. + val wct = getLatestTransition() + wct.assertReorder(task2.token, /* toTop= */ true) + } + + @Test + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, + ) + fun moveToNextDisplay_toDesktopInOtherDisplay_movesHomeAndWallpaperToFront() { + val homeTask = setUpHomeTask(displayId = SECOND_DISPLAY) + whenever(desktopWallpaperActivityTokenProvider.getToken(SECOND_DISPLAY)) + .thenReturn(wallpaperToken) + val transition = Binder() + val sourceDeskId = 0 + val targetDeskId = 2 + taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = targetDeskId) + taskRepository.setDeskInactive(deskId = targetDeskId) + // Set up two display ids + whenever(rootTaskDisplayAreaOrganizer.displayIds) + .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY)) + // Create a mock for the target display area: second display + val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0) + whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY)) + .thenReturn(secondDisplayArea) + whenever(transitions.startTransition(eq(TRANSIT_CHANGE), any(), anyOrNull())) + .thenReturn(transition) + val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = sourceDeskId) + + controller.moveToNextDisplay(task1.taskId) + + // Home / Wallpaper should be moved to front as the background of desktop tasks, otherwise + // fullscreen (non-desktop) tasks could remain visible. + val wct = getLatestTransition() + val homeReorderIndex = wct.indexOfReorder(homeTask, toTop = true) + val wallpaperReorderIndex = wct.indexOfReorder(wallpaperToken, toTop = true) + assertThat(homeReorderIndex).isNotEqualTo(-1) + assertThat(wallpaperReorderIndex).isNotEqualTo(-1) + // Wallpaper last, to be in front of Home. + assertThat(wallpaperReorderIndex).isGreaterThan(homeReorderIndex) + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToNextDisplay_toDeskInOtherDisplay_movesToDeskAndActivates() { val transition = Binder() @@ -2853,6 +2962,35 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + fun moveToNextDisplay_movingToDesktop_sendsTaskbarRoundingUpdate() { + val transition = Binder() + val sourceDeskId = 1 + val targetDeskId = 2 + taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = targetDeskId) + taskRepository.setDeskInactive(deskId = targetDeskId) + // Set up two display ids + whenever(rootTaskDisplayAreaOrganizer.displayIds) + .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY)) + // Create a mock for the target display area: second display + val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0) + whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY)) + .thenReturn(secondDisplayArea) + whenever(transitions.startTransition(eq(TRANSIT_CHANGE), any(), anyOrNull())) + .thenReturn(transition) + + val task = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = sourceDeskId) + taskRepository.addTaskToDesk( + displayId = DEFAULT_DISPLAY, + deskId = sourceDeskId, + taskId = task.taskId, + isVisible = true, + ) + controller.moveToNextDisplay(task.taskId) + + verify(taskbarDesktopTaskListener).onTaskbarCornerRoundingUpdate(anyBoolean()) + } + + @Test fun getTaskWindowingMode() { val fullscreenTask = setUpFullscreenTask() val freeformTask = setUpFreeformTask() @@ -3366,6 +3504,39 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun handleRequest_fullscreenTask_switchToDesktop_movesTaskToDesk() { + taskRepository.addDesk(displayId = DEFAULT_DISPLAY, deskId = 5) + setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 5) + taskRepository.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = 5) + + val fullscreenTask = createFullscreenTask() + val wct = controller.handleRequest(Binder(), createTransition(fullscreenTask)) + + assertNotNull(wct, "should handle request") + verify(desksOrganizer).moveTaskToDesk(wct = wct, deskId = 5, task = fullscreenTask) + } + + @Test + @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun handleRequest_fullscreenTaskThatWasInactiveInDesk_tracksDeskDeactivation() { + // Set up and existing desktop task in an active desk. + val inactiveInDeskTask = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 0) + taskRepository.setDeskInactive(deskId = 0) + + // Now the task is launching as fullscreen. + inactiveInDeskTask.configuration.windowConfiguration.windowingMode = + WINDOWING_MODE_FULLSCREEN + val transition = Binder() + val wct = controller.handleRequest(transition, createTransition(inactiveInDeskTask)) + + // Desk is deactivated. + assertNotNull(wct, "should handle request") + verify(desksTransitionsObserver) + .addPendingTransition(DeskTransition.DeactivateDesk(transition, deskId = 0)) + } + + @Test fun handleRequest_fullscreenTask_freeformVisible_returnSwitchToFreeformWCT() { val homeTask = setUpHomeTask() val freeformTask = setUpFreeformTask() @@ -3541,6 +3712,20 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun handleRequest_freeformTaskFromInactiveDesk_tracksDeskDeactivation() { + val deskId = 0 + val freeformTask = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = deskId) + taskRepository.setDeskInactive(deskId = deskId) + + val transition = Binder() + controller.handleRequest(transition, createTransition(freeformTask)) + + verify(desksTransitionsObserver) + .addPendingTransition(DeskTransition.DeactivateDesk(transition, deskId)) + } + + @Test fun handleRequest_freeformTask_relaunchActiveTask_taskBecomesUndefined() { val freeformTask = setUpFreeformTask() markTaskHidden(freeformTask) @@ -3788,6 +3973,24 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun handleRequest_recentsAnimationRunning_relaunchActiveTask_tracksDeskDeactivation() { + // Set up a visible freeform task + val freeformTask = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 0) + markTaskVisible(freeformTask) + + // Mark recents animation running + recentsTransitionStateListener.onTransitionStateChanged(TRANSITION_STATE_ANIMATING) + + val transition = Binder() + controller.handleRequest(transition, createTransition(freeformTask)) + + desksTransitionsObserver.addPendingTransition( + DeskTransition.DeactivateDesk(transition, deskId = 0) + ) + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY) fun handleRequest_topActivityTransparentWithoutDisplay_returnSwitchToFreeformWCT() { val freeformTask = setUpFreeformTask() @@ -3905,6 +4108,31 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY, + ) + fun handleRequest_systemUIActivityWithDisplayInFreeformTask_inDesktop_tracksDeskDeactivation() { + val deskId = 5 + taskRepository.addDesk(displayId = DEFAULT_DISPLAY, deskId = deskId) + taskRepository.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = deskId) + val systemUIPackageName = + context.resources.getString(com.android.internal.R.string.config_systemUi) + val baseComponent = ComponentName(systemUIPackageName, /* cls= */ "") + val task = + setUpFreeformTask(displayId = DEFAULT_DISPLAY).apply { + baseActivity = baseComponent + isTopActivityNoDisplay = false + } + + val transition = Binder() + controller.handleRequest(transition, createTransition(task)) + + verify(desksTransitionsObserver) + .addPendingTransition(DeskTransition.DeactivateDesk(transition, deskId)) + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY) fun handleRequest_systemUIActivityWithoutDisplay_returnSwitchToFreeformWCT() { val freeformTask = setUpFreeformTask() @@ -4455,7 +4683,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + @DisableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP, + ) fun moveFocusedTaskToFullscreen_multipleVisibleTasks_doesNotRemoveWallpaperActivity() { val homeTask = setUpHomeTask() val task1 = setUpFreeformTask() @@ -4480,27 +4711,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) - fun moveFocusedTaskToFullscreen_multipleVisibleTasks_doesNotRemoveWallpaperActivity_multiDesksEnabled() { - val homeTask = setUpHomeTask() - val task1 = setUpFreeformTask() - val task2 = setUpFreeformTask() - val task3 = setUpFreeformTask() - - task1.isFocused = false - task2.isFocused = true - task3.isFocused = false - controller.enterFullscreen(DEFAULT_DISPLAY, transitionSource = UNKNOWN) - - val wct = getLatestExitDesktopWct() - val taskChange = assertNotNull(wct.changes[task2.token.asBinder()]) - assertThat(taskChange.windowingMode) - .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN - // Does not remove wallpaper activity - wct.assertWithoutHop(ReorderPredicate(wallpaperToken, toTop = null)) - } - - @Test - @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveFocusedTaskToFullscreen_multipleVisibleTasks_fullscreenOverHome_multiDesksEnabled() { val homeTask = setUpHomeTask() val task1 = setUpFreeformTask() @@ -5031,7 +5241,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() Mockito.argThat { wct -> return@argThat wct.hierarchyOps[0].isReparent }, - eq(null), + eq(dragToDisplayTransitionHandler), ) } @@ -5225,6 +5435,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @DisableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP, + ) fun enterSplit_multipleVisibleNonMinimizedTasks_removesWallpaperActivity() { val task1 = setUpFreeformTask() val task2 = setUpFreeformTask() @@ -6460,6 +6674,25 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + ) + fun startLaunchTransition_desktopNotShowing_updatesDesktopEnterExitListener() { + setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = 0) + taskRepository.setDeskInactive(deskId = 0) + + controller.startLaunchTransition( + transitionType = TRANSIT_OPEN, + wct = WindowContainerTransaction(), + launchingTaskId = null, + ) + + verify(desktopModeEnterExitTransitionListener).onEnterDesktopModeTransitionStarted(any()) + } + + @Test + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, ) fun startLaunchTransition_desktopShowing_doesNotReorderWallpaper() { val wct = WindowContainerTransaction() @@ -6628,7 +6861,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() if (background) { whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null) whenever(recentTasksController.findTaskInBackground(task.taskId)) - .thenReturn(createTaskInfo(task.taskId)) + .thenReturn(createRecentTaskInfo(taskId = task.taskId, displayId = displayId)) } else { whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task) } @@ -6799,6 +7032,12 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() return arg.lastValue } + private fun getLatestTransition(): WindowContainerTransaction { + val arg = argumentCaptor<WindowContainerTransaction>() + verify(transitions).startTransition(any(), arg.capture(), anyOrNull()) + return arg.lastValue + } + private fun getLatestEnterDesktopWct(): WindowContainerTransaction { val arg = argumentCaptor<WindowContainerTransaction>() verify(enterDesktopTransitionHandler).moveToDesktop(arg.capture(), any()) @@ -7057,8 +7296,9 @@ private fun WindowContainerTransaction?.anyWindowingModeChange( } ?: false } -private fun createTaskInfo(id: Int) = +private fun createRecentTaskInfo(taskId: Int, displayId: Int = DEFAULT_DISPLAY) = RecentTaskInfo().apply { - taskId = id + this.taskId = taskId + this.displayId = displayId token = WindowContainerToken(mock(IWindowContainerToken::class.java)) } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt index dd577f402952..5b0f94f91a13 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt @@ -128,7 +128,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun backNavigation_taskMinimized() { val task = createTaskInfo(1) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) transitionObserver.onTransitionReady( transition = mock(), @@ -146,7 +146,9 @@ class DesktopTasksTransitionObserverTest { fun backNavigation_withCloseTransitionNotLastTask_taskMinimized() { val task = createTaskInfo(1) val transition = mock<IBinder>() - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(2) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) + whenever(taskRepository.isOnlyVisibleTask(task.taskId, task.displayId)).thenReturn(false) + whenever(taskRepository.hasOnlyOneVisibleTask(task.displayId)).thenReturn(false) whenever(taskRepository.isClosingTask(task.taskId)).thenReturn(false) whenever(backAnimationController.latestTriggerBackTask).thenReturn(task.taskId) @@ -173,7 +175,7 @@ class DesktopTasksTransitionObserverTest { fun backNavigation_withCloseTransitionLastTask_wallpaperActivityClosed_taskMinimized() { val task = createTaskInfo(1) val transition = mock<IBinder>() - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isClosingTask(task.taskId)).thenReturn(false) whenever(backAnimationController.latestTriggerBackTask).thenReturn(task.taskId) @@ -202,7 +204,7 @@ class DesktopTasksTransitionObserverTest { fun backNavigation_withCloseTransitionLastTask_wallpaperActivityReordered_taskMinimized() { val task = createTaskInfo(1) val transition = mock<IBinder>() - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isClosingTask(task.taskId)).thenReturn(false) whenever(backAnimationController.latestTriggerBackTask).thenReturn(task.taskId) @@ -227,7 +229,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun backNavigation_nullTaskInfo_taskNotMinimized() { val task = createTaskInfo(1) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) transitionObserver.onTransitionReady( transition = mock(), @@ -243,7 +245,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun removeTasks_onTaskFullscreenLaunchWithOpenTransition_taskRemovedFromRepo() { val task = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isActiveTask(task.taskId)).thenReturn(true) transitionObserver.onTransitionReady( @@ -261,7 +263,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun removeTasks_onTaskFullscreenLaunchExitDesktopTransition_taskRemovedFromRepo() { val task = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isActiveTask(task.taskId)).thenReturn(true) transitionObserver.onTransitionReady( @@ -280,7 +282,7 @@ class DesktopTasksTransitionObserverTest { fun closeLastTask_wallpaperTokenExists_wallpaperIsRemoved() { val mockTransition = Mockito.mock(IBinder::class.java) val task = createTaskInfo(1, WINDOWING_MODE_FREEFORM) - whenever(taskRepository.getVisibleTaskCount(task.displayId)).thenReturn(0) + whenever(taskRepository.isAnyDeskActive(task.displayId)).thenReturn(false) transitionObserver.onTransitionReady( transition = mockTransition, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandlerTest.kt new file mode 100644 index 000000000000..51c302983fd0 --- /dev/null +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandlerTest.kt @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wm.shell.desktopmode + +import android.graphics.Point +import android.graphics.Rect +import android.os.IBinder +import android.view.SurfaceControl +import android.window.TransitionInfo +import android.window.TransitionRequestInfo +import com.android.wm.shell.transition.Transitions +import org.junit.Before +import org.junit.Test +import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever + +/** + * Test class for {@link DragToDisplayTransitionHandler} + * + * Usage: atest WMShellUnitTests:DragToDisplayTransitionHandlerTest + */ +class DragToDisplayTransitionHandlerTest { + private lateinit var handler: DragToDisplayTransitionHandler + private val mockTransition: IBinder = mock() + private val mockRequestInfo: TransitionRequestInfo = mock() + private val mockTransitionInfo: TransitionInfo = mock() + private val mockStartTransaction: SurfaceControl.Transaction = mock() + private val mockFinishTransaction: SurfaceControl.Transaction = mock() + private val mockFinishCallback: Transitions.TransitionFinishCallback = mock() + + @Before + fun setUp() { + handler = DragToDisplayTransitionHandler() + whenever(mockStartTransaction.setWindowCrop(any(), any(), any())) + .thenReturn(mockStartTransaction) + whenever(mockFinishTransaction.setWindowCrop(any(), any(), any())) + .thenReturn(mockFinishTransaction) + } + + @Test + fun handleRequest_anyRequest_returnsNull() { + val result = handler.handleRequest(mockTransition, mockRequestInfo) + assert(result == null) + } + + @Test + fun startAnimation_verifyTransformationsApplied() { + val mockChange1 = mock<TransitionInfo.Change>() + val leash1 = mock<SurfaceControl>() + val endBounds1 = Rect(0, 0, 50, 50) + val endPosition1 = Point(5, 5) + + whenever(mockChange1.leash).doReturn(leash1) + whenever(mockChange1.endAbsBounds).doReturn(endBounds1) + whenever(mockChange1.endRelOffset).doReturn(endPosition1) + + val mockChange2 = mock<TransitionInfo.Change>() + val leash2 = mock<SurfaceControl>() + val endBounds2 = Rect(100, 100, 200, 150) + val endPosition2 = Point(15, 25) + + whenever(mockChange2.leash).doReturn(leash2) + whenever(mockChange2.endAbsBounds).doReturn(endBounds2) + whenever(mockChange2.endRelOffset).doReturn(endPosition2) + + whenever(mockTransitionInfo.changes).doReturn(listOf(mockChange1, mockChange2)) + + handler.startAnimation( + mockTransition, + mockTransitionInfo, + mockStartTransaction, + mockFinishTransaction, + mockFinishCallback, + ) + + verify(mockStartTransaction).setWindowCrop(leash1, endBounds1.width(), endBounds1.height()) + verify(mockStartTransaction) + .setPosition(leash1, endPosition1.x.toFloat(), endPosition1.y.toFloat()) + verify(mockStartTransaction).setWindowCrop(leash2, endBounds2.width(), endBounds2.height()) + verify(mockStartTransaction) + .setPosition(leash2, endPosition2.x.toFloat(), endPosition2.y.toFloat()) + verify(mockStartTransaction).apply() + verify(mockFinishCallback).onTransitionFinished(null) + } +} diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt index 143d232013fc..7560945856ec 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt @@ -84,7 +84,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() { spyContext = spy(mContext) // Simulate having one Desktop task so that we see Desktop Mode as active whenever(desktopUserRepositories.current).thenReturn(desktopRepository) - whenever(desktopRepository.getVisibleTaskCount(anyInt())).thenReturn(1) + whenever(desktopRepository.isAnyDeskActive(anyInt())).thenReturn(true) whenever(spyContext.packageManager).thenReturn(packageManager) whenever(componentName.packageName).thenReturn(HOME_LAUNCHER_PACKAGE_NAME) whenever(packageManager.getHomeActivities(ArrayList())).thenReturn(componentName) @@ -111,7 +111,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() { @Test fun startAnimation_desktopNotActive_doesNotAnimate() { - whenever(desktopUserRepositories.current.getVisibleTaskCount(anyInt())).thenReturn(1) + whenever(desktopUserRepositories.current.isAnyDeskActive(anyInt())).thenReturn(true) val info = TransitionInfoBuilder(TRANSIT_OPEN) .addChange(TRANSIT_OPEN, createSystemModalTaskWithBaseActivity()) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS index 736d4cff6ce8..a7d1890a0286 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS @@ -1,3 +1,2 @@ # WM shell sub-module TV pip owners -galinap@google.com -bronger@google.com
\ No newline at end of file +bronger@google.com diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipAlphaAnimatorTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipAlphaAnimatorTest.java index 607e6a450883..14f9ffc52a66 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipAlphaAnimatorTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/animation/PipAlphaAnimatorTest.java @@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.clearInvocations; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; @@ -126,7 +127,7 @@ public class PipAlphaAnimatorTest { } @Test - public void onAnimationStart_setCornerAndShadowRadii() { + public void onAnimationStart_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); @@ -143,7 +144,26 @@ public class PipAlphaAnimatorTest { } @Test - public void onAnimationUpdate_setCornerAndShadowRadii() { + public void onAnimationStart_fadeOutAnimator_setCornerNoShadowRadii() { + mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, + mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); + mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + mPipAlphaAnimator.start(); + mPipAlphaAnimator.pause(); + }); + + verify(mMockStartTransaction, atLeastOnce()) + .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); + verify(mMockStartTransaction, never()) + .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); + verify(mMockStartTransaction, atLeastOnce()) + .setShadowRadius(eq(mTestLeash), eq(0f)); + } + + @Test + public void onAnimationUpdate_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); @@ -160,7 +180,26 @@ public class PipAlphaAnimatorTest { } @Test - public void onAnimationEnd_setCornerAndShadowRadii() { + public void onAnimationUpdate_fadeOutAnimator_setCornerNoShadowRadii() { + mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, + mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); + mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + mPipAlphaAnimator.start(); + mPipAlphaAnimator.pause(); + }); + + verify(mMockAnimateTransaction, atLeastOnce()) + .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); + verify(mMockAnimateTransaction, never()) + .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); + verify(mMockAnimateTransaction, atLeastOnce()) + .setShadowRadius(eq(mTestLeash), eq(0f)); + } + + @Test + public void onAnimationEnd_fadeInAnimator_setCornerAndShadowRadii() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); @@ -177,6 +216,25 @@ public class PipAlphaAnimatorTest { } @Test + public void onAnimationEnd_fadeOutAnimator_setCornerNoShadowRadii() { + mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, + mMockFinishTransaction, PipAlphaAnimator.FADE_OUT); + mPipAlphaAnimator.setSurfaceControlTransactionFactory(mMockFactory); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + mPipAlphaAnimator.start(); + mPipAlphaAnimator.end(); + }); + + verify(mMockFinishTransaction, atLeastOnce()) + .setCornerRadius(eq(mTestLeash), eq(TEST_CORNER_RADIUS)); + verify(mMockFinishTransaction, never()) + .setShadowRadius(eq(mTestLeash), eq(TEST_SHADOW_RADIUS)); + verify(mMockFinishTransaction, atLeastOnce()) + .setShadowRadius(eq(mTestLeash), eq(0f)); + } + + @Test public void onAnimationEnd_fadeInAnimator_leashVisibleAtEnd() { mPipAlphaAnimator = new PipAlphaAnimator(mMockContext, mTestLeash, mMockStartTransaction, mMockFinishTransaction, PipAlphaAnimator.FADE_IN); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java index 0c1952910d1a..275e4882a79d 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java @@ -28,6 +28,7 @@ import static org.mockito.kotlin.VerificationKt.times; import static org.mockito.kotlin.VerificationKt.verify; import android.app.ActivityManager; +import android.app.PictureInPictureParams; import android.content.Context; import android.content.res.Resources; import android.graphics.Matrix; @@ -47,6 +48,7 @@ import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.animation.PipAlphaAnimator; import com.android.wm.shell.splitscreen.SplitScreenController; +import com.android.wm.shell.util.StubTransaction; import org.junit.Before; import org.junit.Test; @@ -107,6 +109,8 @@ public class PipSchedulerTest { mPipScheduler.setSurfaceControlTransactionFactory(mMockFactory); mPipScheduler.setPipAlphaAnimatorSupplier((context, leash, startTx, finishTx, direction) -> mMockAlphaAnimator); + final PictureInPictureParams params = new PictureInPictureParams.Builder().build(); + mPipScheduler.setPipParamsSupplier(() -> params); SurfaceControl testLeash = new SurfaceControl.Builder() .setContainerLayer() @@ -289,6 +293,28 @@ public class PipSchedulerTest { verify(mMockUpdateMovementBoundsRunnable, times(1)).run(); } + @Test + public void finishResize_nonSeamless_alphaAnimatorStarted() { + final PictureInPictureParams params = + new PictureInPictureParams.Builder().setSeamlessResizeEnabled(false).build(); + mPipScheduler.setPipParamsSupplier(() -> params); + when(mMockFactory.getTransaction()).thenReturn(new StubTransaction()); + + mPipScheduler.scheduleFinishResizePip(TEST_BOUNDS); + + verify(mMockAlphaAnimator, times(1)).start(); + } + + @Test + public void finishResize_seamless_animatorNotStarted() { + final PictureInPictureParams params = + new PictureInPictureParams.Builder().setSeamlessResizeEnabled(true).build(); + mPipScheduler.setPipParamsSupplier(() -> params); + + mPipScheduler.scheduleFinishResizePip(TEST_BOUNDS); + verify(mMockAlphaAnimator, never()).start(); + } + private void setNullPipTaskToken() { when(mMockPipTransitionState.getPipTaskToken()).thenReturn(null); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java index 1b462c30e017..333569a7206e 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java @@ -294,6 +294,8 @@ public class PipTaskListenerTest { mPipTaskListener = new PipTaskListener(mMockContext, mMockShellTaskOrganizer, mMockPipTransitionState, mMockPipScheduler, mMockPipBoundsState, mMockPipBoundsAlgorithm, mMockShellExecutor); + clearInvocations(mMockPipScheduler); + Bundle extras = new Bundle(); extras.putBoolean(ANIMATING_ASPECT_RATIO_CHANGE, false); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DropTargetManagerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DropTargetManagerTest.kt index 180a6915b45f..3f7f21ef2074 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DropTargetManagerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/bubbles/DropTargetManagerTest.kt @@ -18,7 +18,6 @@ package com.android.wm.shell.shared.bubbles import android.content.Context import android.graphics.Rect -import android.view.View import android.widget.FrameLayout import androidx.core.animation.AnimatorTestRule import androidx.test.core.app.ApplicationProvider.getApplicationContext @@ -58,8 +57,8 @@ class DropTargetManagerTest { private val bubbleRightDragZone = DragZone.Bubble.Right(bounds = Rect(200, 0, 300, 100), dropTarget = Rect(200, 0, 280, 150)) - private val dropTargetView: View - get() = container.getChildAt(0) + private val dropTargetView: DropTargetView + get() = container.getChildAt(0) as DropTargetView @Before fun setUp() { @@ -238,8 +237,9 @@ class DropTargetManagerTest { InstrumentationRegistry.getInstrumentation().runOnMainSync { dropTargetManager.onDragEnded() - // advance the timer by 100ms so the animation doesn't complete - animatorTestRule.advanceTimeBy(100) + // advance the timer by 50ms so the animation doesn't complete + // needs to be < DropTargetManager.DROP_TARGET_ALPHA_OUT_DURATION + animatorTestRule.advanceTimeBy(50) } assertThat(container.childCount).isEqualTo(1) @@ -320,10 +320,10 @@ class DropTargetManagerTest { } private fun verifyDropTargetPosition(rect: Rect) { - assertThat(dropTargetView.scaleX).isEqualTo(rect.width()) - assertThat(dropTargetView.scaleY).isEqualTo(rect.height()) - assertThat(dropTargetView.translationX).isEqualTo(rect.exactCenterX()) - assertThat(dropTargetView.translationY).isEqualTo(rect.exactCenterY()) + assertThat(dropTargetView.getRect().left).isEqualTo(rect.left) + assertThat(dropTargetView.getRect().top).isEqualTo(rect.top) + assertThat(dropTargetView.getRect().right).isEqualTo(rect.right) + assertThat(dropTargetView.getRect().bottom).isEqualTo(rect.bottom) } private class FakeDragZoneChangedListener : DropTargetManager.DragZoneChangedListener { diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt index 4082ffd4ac0a..fb62ba75e056 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt @@ -16,6 +16,7 @@ package com.android.wm.shell.shared.desktopmode +import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM import android.content.Context import android.content.res.Resources import android.platform.test.annotations.DisableFlags @@ -27,6 +28,7 @@ import androidx.test.filters.SmallTest import com.android.internal.R import com.android.window.flags.Flags import com.android.wm.shell.ShellTestCase +import com.android.wm.shell.util.createTaskInfo import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before @@ -152,6 +154,70 @@ class DesktopModeStatusTest : ShellTestCase() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_freeformTask_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_notFreeformTask_returnsFalse() { + val notFreeFormTaskInfo = createTaskInfo() + assertThat(DesktopModeStatus.shouldSetBackground(notFreeFormTaskInfo)).isFalse() + } + + @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) + @DisableFlags(Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS) + @Test + fun shouldSetBackground_BTWFlagDisabled_freeformTaskAndFluid_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(false) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + + @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) + @DisableFlags(Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS) + @Test + fun shouldSetBackground_BTWFlagDisabled_freeformTaskAndVeiled_returnsFalse() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(true) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isFalse() + } + + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_freeformTaskAndFluid_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(false) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_windowModesTask_freeformTaskAndVeiled_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(true) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + @Test fun isDeviceEligibleForDesktopMode_configDEModeOnAndIntDispHostsDesktop_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) @@ -254,4 +320,11 @@ class DesktopModeStatusTest : ShellTestCase() { deviceRestrictions.isAccessible = true deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ !eligible) } + + private fun setIsVeiledResizeEnabled(enabled: Boolean) { + val deviceRestrictions = + DesktopModeStatus::class.java.getDeclaredField("IS_VEILED_RESIZE_ENABLED") + deviceRestrictions.isAccessible = true + deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ enabled) + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java index 414c0147660c..ffef0d18bcc1 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java @@ -16,6 +16,8 @@ package com.android.wm.shell.splitscreen; +import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_50_50; + import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -58,6 +60,7 @@ public class SplitTestUtils { doReturn(leash).when(out).getDividerLeash(); doReturn(bounds1).when(out).getTopLeftBounds(); doReturn(bounds2).when(out).getBottomRightBounds(); + doReturn(SNAP_TO_2_50_50).when(out).calculateCurrentSnapPosition(); return out; } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java index 6f73db0bacc3..677330790bab 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java @@ -1316,9 +1316,11 @@ public class ShellTransitionTests extends ShellTestCase { mTransactionPool, createTestDisplayController(), mMainExecutor, mMainHandler, mAnimExecutor, mock(HomeTransitionObserver.class), mock(FocusTransitionObserver.class)); + final RecentTasksController mockRecentsTaskController = mock(RecentTasksController.class); + doReturn(mContext).when(mockRecentsTaskController).getContext(); final RecentsTransitionHandler recentsHandler = new RecentsTransitionHandler(shellInit, mock(ShellTaskOrganizer.class), transitions, - mock(RecentTasksController.class), mock(HomeTransitionObserver.class)); + mockRecentsTaskController, mock(HomeTransitionObserver.class)); transitions.replaceDefaultHandlerForTest(mDefaultHandler); shellInit.init(); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt index 16c793587ade..e89a122595d5 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt @@ -321,6 +321,19 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest } @Test + fun testOnTaskInfoChanged_tilingNotified() { + val task = createTask( + windowingMode = WINDOWING_MODE_FREEFORM + ) + setUpMockDecorationsForTasks(task) + + onTaskOpening(task) + desktopModeWindowDecorViewModel.onTaskInfoChanged(task) + + verify(mockTilingWindowDecoration).onTaskInfoChange(task) + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_IMMERSIVE_HANDLE_HIDING) fun testInsetsStateChanged_notifiesAllDecorsInDisplay() { val task1 = createTask(windowingMode = WINDOWING_MODE_FREEFORM, displayId = 1) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java index af0162334440..a2927fa3527b 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java @@ -24,7 +24,6 @@ import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsets.Type.mandatorySystemGestures; import static android.view.WindowInsets.Type.statusBars; -import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession; import static com.android.wm.shell.MockSurfaceControlHelper.createMockSurfaceControlBuilder; import static com.android.wm.shell.MockSurfaceControlHelper.createMockSurfaceControlTransaction; @@ -51,7 +50,6 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.mockito.quality.Strictness.LENIENT; import android.annotation.NonNull; import android.app.ActivityManager; @@ -79,13 +77,11 @@ import android.window.WindowContainerTransaction; import androidx.test.filters.SmallTest; -import com.android.dx.mockito.inline.extended.StaticMockitoSession; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.TestRunningTaskInfoBuilder; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.desktopmode.DesktopModeEventLogger; -import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.tests.R; import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewContainer; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost; @@ -564,12 +560,7 @@ public class WindowDecorationTests extends ShellTestCase { } @Test - public void testRelayout_fluidResizeEnabled_freeformTask_setTaskSurfaceColor() { - StaticMockitoSession mockitoSession = mockitoSession().mockStatic( - DesktopModeStatus.class).strictness( - LENIENT).startMocking(); - when(DesktopModeStatus.isVeiledResizeEnabled()).thenReturn(false); - + public void testRelayout_shouldSetBackground_freeformTask_setTaskSurfaceColor() { final Display defaultDisplay = mock(Display.class); doReturn(defaultDisplay).when(mMockDisplayController) .getDisplay(Display.DEFAULT_DISPLAY); @@ -595,11 +586,10 @@ public class WindowDecorationTests extends ShellTestCase { .build(); final TestWindowDecoration windowDecor = createWindowDecoration(taskInfo); + mRelayoutParams.mShouldSetBackground = true; windowDecor.relayout(taskInfo, true /* hasGlobalFocus */); verify(mMockSurfaceControlStartT).setColor(mMockTaskSurface, new float[]{1.f, 1.f, 0.f}); - - mockitoSession.finishMocking(); } @Test @@ -627,11 +617,7 @@ public class WindowDecorationTests extends ShellTestCase { } @Test - public void testRelayout_fluidResizeEnabled_fullscreenTask_clearTaskSurfaceColor() { - StaticMockitoSession mockitoSession = mockitoSession().mockStatic( - DesktopModeStatus.class).strictness(LENIENT).startMocking(); - when(DesktopModeStatus.isVeiledResizeEnabled()).thenReturn(false); - + public void testRelayout_shouldNotSetBackground_fullscreenTask_clearTaskSurfaceColor() { final Display defaultDisplay = mock(Display.class); doReturn(defaultDisplay).when(mMockDisplayController) .getDisplay(Display.DEFAULT_DISPLAY); @@ -655,12 +641,11 @@ public class WindowDecorationTests extends ShellTestCase { .setWindowingMode(WINDOWING_MODE_FULLSCREEN) .build(); final TestWindowDecoration windowDecor = createWindowDecoration(taskInfo); + mRelayoutParams.mIsCaptionVisible = false; windowDecor.relayout(taskInfo, true /* hasGlobalFocus */); verify(mMockSurfaceControlStartT).unsetColor(mMockTaskSurface); - - mockitoSession.finishMocking(); } @Test diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt index 121e0e915d08..844205682d31 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt @@ -81,6 +81,7 @@ class DesktopTilingDividerWindowManagerTest : ShellTestCase() { transactionSupplierMock, BOUNDS, context, + /* isDarkMode= */ true ) } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt index 9a9d05a72442..9a3d5d871456 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt @@ -60,7 +60,7 @@ class TilingDividerViewTest : ShellTestCase() { tilingDividerView = LayoutInflater.from(mContext).inflate(R.layout.tiling_split_divider, /* root= */ null) as TilingDividerView - tilingDividerView.setup(dividerMoveCallbackMock, DIVIDER_BOUNDS, HANDLE_SIZE) + tilingDividerView.setup(dividerMoveCallbackMock, DIVIDER_BOUNDS, HANDLE_SIZE, true) tilingDividerView.handleY = 0..1500 } diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index 38ac8ab7135e..a892e887bd43 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -141,6 +141,7 @@ cc_defaults { "libsync", "libui", "aconfig_text_flags_c_lib", + "aconfig_view_accessibility_flags_c_lib", "server_configurable_flags", "libaconfig_storage_read_api_cc", "libgraphicsenv", diff --git a/libs/hwui/CanvasTransform.cpp b/libs/hwui/CanvasTransform.cpp index 30e7a628f1f6..6f60d01e4395 100644 --- a/libs/hwui/CanvasTransform.cpp +++ b/libs/hwui/CanvasTransform.cpp @@ -55,12 +55,20 @@ SkColor makeDark(SkColor color) { } } +SkColor invert(SkColor color) { + Lab lab = sRGBToLab(color); + lab.L = 100 - lab.L; + return LabToSRGB(lab, SkColorGetA(color)); +} + SkColor transformColor(ColorTransform transform, SkColor color) { switch (transform) { case ColorTransform::Light: return makeLight(color); case ColorTransform::Dark: return makeDark(color); + case ColorTransform::Invert: + return invert(color); default: return color; } @@ -80,19 +88,6 @@ SkColor transformColorInverse(ColorTransform transform, SkColor color) { static void applyColorTransform(ColorTransform transform, SkPaint& paint) { if (transform == ColorTransform::None) return; - if (transform == ColorTransform::Invert) { - auto filter = SkHighContrastFilter::Make( - {/* grayscale= */ false, SkHighContrastConfig::InvertStyle::kInvertLightness, - /* contrast= */ 0.0f}); - - if (paint.getColorFilter()) { - paint.setColorFilter(SkColorFilters::Compose(filter, paint.refColorFilter())); - } else { - paint.setColorFilter(filter); - } - return; - } - SkColor newColor = transformColor(transform, paint.getColor()); paint.setColor(newColor); @@ -112,6 +107,22 @@ static void applyColorTransform(ColorTransform transform, SkPaint& paint) { paint.setShader(SkGradientShader::MakeLinear( info.fPoints, info.fColors, info.fColorOffsets, info.fColorCount, info.fTileMode, info.fGradientFlags, nullptr)); + } else { + if (transform == ColorTransform::Invert) { + // Since we're trying to invert every thing around this draw call, we invert + // the color of the draw call if we don't know what it is. + auto filter = SkHighContrastFilter::Make( + {/* grayscale= */ false, + SkHighContrastConfig::InvertStyle::kInvertLightness, + /* contrast= */ 0.0f}); + + if (paint.getColorFilter()) { + paint.setColorFilter(SkColorFilters::Compose(filter, paint.refColorFilter())); + } else { + paint.setColorFilter(filter); + } + return; + } } } @@ -150,8 +161,13 @@ bool transformPaint(ColorTransform transform, SkPaint* paint) { } bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette palette) { - palette = filterPalette(paint, palette); bool shouldInvert = false; + if (transform == ColorTransform::Invert && palette != BitmapPalette::Colorful) { + // When the transform is Invert we invert any image that is not deemed "colorful", + // regardless of calculated image brightness. + shouldInvert = true; + } + palette = filterPalette(paint, palette); if (palette == BitmapPalette::Light && transform == ColorTransform::Dark) { shouldInvert = true; } diff --git a/libs/hwui/FeatureFlags.h b/libs/hwui/FeatureFlags.h index 5f84f47b725d..5ceb97cef17f 100644 --- a/libs/hwui/FeatureFlags.h +++ b/libs/hwui/FeatureFlags.h @@ -18,6 +18,7 @@ #define ANDROID_HWUI_FEATURE_FLAGS_H #ifdef __ANDROID__ +#include <android_view_accessibility.h> #include <com_android_text_flags.h> #endif // __ANDROID__ @@ -44,6 +45,19 @@ inline bool typeface_redesign_readonly() { } // namespace text_feature +namespace view_accessibility_flags { + +inline bool force_invert_color() { +#ifdef __ANDROID__ + static bool flag = android::view::accessibility::force_invert_color(); + return flag; +#else + return true; +#endif // __ANDROID__ +} + +} // namespace view_accessibility_flags + } // namespace android #endif // ANDROID_HWUI_FEATURE_FLAGS_H diff --git a/libs/hwui/OWNERS b/libs/hwui/OWNERS index 70d13ab8b3e5..9c06fd5f0225 100644 --- a/libs/hwui/OWNERS +++ b/libs/hwui/OWNERS @@ -3,7 +3,7 @@ alecmouri@google.com djsollen@google.com jreck@google.com -njawad@google.com +nscobie@google.com sumir@google.com # For text, e.g. Typeface, Font, Minikin, etc. diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index 4801bd1038a3..8b4e59aa73e2 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -27,6 +27,7 @@ #include "DamageAccumulator.h" #include "Debug.h" +#include "FeatureFlags.h" #include "Properties.h" #include "TreeInfo.h" #include "VectorDrawable.h" @@ -398,26 +399,32 @@ void RenderNode::syncDisplayList(TreeObserver& observer, TreeInfo* info) { deleteDisplayList(observer, info); mDisplayList = std::move(mStagingDisplayList); if (mDisplayList) { - WebViewSyncData syncData{.applyForceDark = shouldEnableForceDark(info)}; + WebViewSyncData syncData{.applyForceDark = shouldEnableForceDark(info) || + (info && isForceInvertDark(*info))}; mDisplayList.syncContents(syncData); handleForceDark(info); } } +// Return true if the tree should use the force invert feature that inverts +// the entire tree to darken it. inline bool RenderNode::isForceInvertDark(TreeInfo& info) { - return CC_UNLIKELY( - info.forceDarkType == android::uirenderer::ForceDarkType::FORCE_INVERT_COLOR_DARK); + return CC_UNLIKELY(info.forceDarkType == + android::uirenderer::ForceDarkType::FORCE_INVERT_COLOR_DARK); } +// Return true if the tree should use the force dark feature that selectively +// darkens light nodes on the tree. inline bool RenderNode::shouldEnableForceDark(TreeInfo* info) { - return CC_UNLIKELY( - info && - (!info->disableForceDark || isForceInvertDark(*info))); + return CC_UNLIKELY(info && !info->disableForceDark); } - - -void RenderNode::handleForceDark(android::uirenderer::TreeInfo *info) { +void RenderNode::handleForceDark(TreeInfo *info) { + if (CC_UNLIKELY(view_accessibility_flags::force_invert_color() && info && + isForceInvertDark(*info))) { + mDisplayList.applyColorTransform(ColorTransform::Invert); + return; + } if (!shouldEnableForceDark(info)) { return; } @@ -427,13 +434,7 @@ void RenderNode::handleForceDark(android::uirenderer::TreeInfo *info) { children.push_back(node); }); if (mDisplayList.hasText()) { - if (isForceInvertDark(*info) && mDisplayList.hasFill()) { - // Handle a special case for custom views that draw both text and background in the - // same RenderNode, which would otherwise be altered to white-on-white text. - usage = UsageHint::Container; - } else { - usage = UsageHint::Foreground; - } + usage = UsageHint::Foreground; } if (usage == UsageHint::Unknown) { if (children.size() > 1) { diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp index 63a024b8e780..3ef970830dc4 100644 --- a/libs/hwui/hwui/Bitmap.cpp +++ b/libs/hwui/hwui/Bitmap.cpp @@ -16,6 +16,8 @@ #include "Bitmap.h" #include <android-base/file.h> + +#include "FeatureFlags.h" #include "HardwareBitmapUploader.h" #include "Properties.h" #ifdef __ANDROID__ // Layoutlib does not support render thread @@ -547,9 +549,16 @@ BitmapPalette Bitmap::computePalette(const SkImageInfo& info, const void* addr, } ALOGV("samples = %d, hue [min = %f, max = %f, avg = %f]; saturation [min = %f, max = %f, avg = " - "%f]", + "%f] %d x %d", sampledCount, hue.min(), hue.max(), hue.average(), saturation.min(), saturation.max(), - saturation.average()); + saturation.average(), info.width(), info.height()); + + if (CC_UNLIKELY(view_accessibility_flags::force_invert_color())) { + if (saturation.delta() > 0.1f || + (hue.delta() > 20 && saturation.average() > 0.2f && value.average() < 0.9f)) { + return BitmapPalette::Colorful; + } + } if (hue.delta() <= 20 && saturation.delta() <= .1f) { if (value.average() >= .5f) { diff --git a/libs/hwui/hwui/Bitmap.h b/libs/hwui/hwui/Bitmap.h index 4e9bcf27c0ef..0fe5fe88f715 100644 --- a/libs/hwui/hwui/Bitmap.h +++ b/libs/hwui/hwui/Bitmap.h @@ -49,6 +49,7 @@ enum class BitmapPalette { Unknown, Light, Dark, + Colorful, }; namespace uirenderer { diff --git a/libs/hwui/jni/GIFMovie.cpp b/libs/hwui/jni/GIFMovie.cpp index 6c82aa1ca27d..476b6fda5007 100644 --- a/libs/hwui/jni/GIFMovie.cpp +++ b/libs/hwui/jni/GIFMovie.cpp @@ -63,7 +63,7 @@ GIFMovie::GIFMovie(SkStream* stream) } fCurrIndex = -1; fLastDrawIndex = -1; - fPaintingColor = SkPackARGB32(0, 0, 0, 0); + fPaintingColor = SK_AlphaTRANSPARENT; } GIFMovie::~GIFMovie() @@ -127,7 +127,7 @@ static void copyLine(uint32_t* dst, const unsigned char* src, const ColorMapObje for (; width > 0; width--, src++, dst++) { if (*src != transparent && *src < cmap->ColorCount) { const GifColorType& col = cmap->Colors[*src]; - *dst = SkPackARGB32(0xFF, col.Red, col.Green, col.Blue); + *dst = SkColorSetRGB(col.Red, col.Green, col.Blue); } } } @@ -395,10 +395,10 @@ bool GIFMovie::onGetBitmap(SkBitmap* bm) lastIndex = fGIF->ImageCount - 1; } - SkColor bgColor = SkPackARGB32(0, 0, 0, 0); + SkColor bgColor = SK_ColorTRANSPARENT; if (gif->SColorMap != nullptr && gif->SBackGroundColor < gif->SColorMap->ColorCount) { const GifColorType& col = gif->SColorMap->Colors[gif->SBackGroundColor]; - bgColor = SkColorSetARGB(0xFF, col.Red, col.Green, col.Blue); + bgColor = SkColorSetRGB(col.Red, col.Green, col.Blue); } // draw each frames - not intelligent way @@ -411,7 +411,7 @@ bool GIFMovie::onGetBitmap(SkBitmap* bm) if (!trans && gif->SColorMap != nullptr) { fPaintingColor = bgColor; } else { - fPaintingColor = SkColorSetARGB(0, 0, 0, 0); + fPaintingColor = SK_ColorTRANSPARENT; } bm->eraseColor(fPaintingColor); |