Merge "Modes tile: open simple dialog" into main
diff --git a/BAL_OWNERS b/BAL_OWNERS
index d56a1d4..ec779e7 100644
--- a/BAL_OWNERS
+++ b/BAL_OWNERS
@@ -2,4 +2,6 @@
achim@google.com
topjohnwu@google.com
lus@google.com
+haok@google.com
+wnan@google.com
diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
index dfa7206..ee03e4b 100644
--- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
@@ -120,6 +120,7 @@
import android.os.ThreadLocalWorkSource;
import android.os.Trace;
import android.os.UserHandle;
+import android.os.UserManager;
import android.os.WorkSource;
import android.provider.DeviceConfig;
import android.provider.Settings;
@@ -1794,7 +1795,8 @@
mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
mUseFrozenStateToDropListenerAlarms = Flags.useFrozenStateToDropListenerAlarms();
- mStartUserBeforeScheduledAlarms = Flags.startUserBeforeScheduledAlarms();
+ mStartUserBeforeScheduledAlarms = Flags.startUserBeforeScheduledAlarms()
+ && UserManager.supportsMultipleUsers();
if (mStartUserBeforeScheduledAlarms) {
mUserWakeupStore = new UserWakeupStore();
mUserWakeupStore.init();
@@ -3015,7 +3017,7 @@
mUseFrozenStateToDropListenerAlarms);
pw.println();
pw.print(Flags.FLAG_START_USER_BEFORE_SCHEDULED_ALARMS,
- mStartUserBeforeScheduledAlarms);
+ Flags.startUserBeforeScheduledAlarms());
pw.decreaseIndent();
pw.println();
pw.println();
diff --git a/api/coverage/tools/ExtractFlaggedApis.kt b/api/coverage/tools/ExtractFlaggedApis.kt
index bf67187..0a3ae4f 100644
--- a/api/coverage/tools/ExtractFlaggedApis.kt
+++ b/api/coverage/tools/ExtractFlaggedApis.kt
@@ -16,9 +16,9 @@
package android.platform.coverage
+import com.android.tools.metalava.model.CallableItem
import com.android.tools.metalava.model.ClassItem
import com.android.tools.metalava.model.Item
-import com.android.tools.metalava.model.MethodItem
import com.android.tools.metalava.model.text.ApiFile
import java.io.File
import java.io.FileWriter
@@ -40,24 +40,24 @@
fun extractFlaggedApisFromClass(
classItem: ClassItem,
- methods: List<MethodItem>,
+ callables: List<CallableItem>,
packageName: String,
builder: FlagApiMap.Builder
) {
- if (methods.isEmpty()) return
+ if (callables.isEmpty()) return
val classFlag = getClassFlag(classItem)
- for (method in methods) {
- val methodFlag = getFlagAnnotation(method) ?: classFlag
+ for (callable in callables) {
+ val callableFlag = getFlagAnnotation(callable) ?: classFlag
val api =
JavaMethod.newBuilder()
.setPackageName(packageName)
.setClassName(classItem.fullName())
- .setMethodName(method.name())
- for (param in method.parameters()) {
+ .setMethodName(callable.name())
+ for (param in callable.parameters()) {
api.addParameters(param.type().toTypeString())
}
- if (methodFlag != null) {
- addFlaggedApi(builder, api, methodFlag)
+ if (callableFlag != null) {
+ addFlaggedApi(builder, api, callableFlag)
}
}
}
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 7eb9d0f..fdf9abc4 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -236,7 +236,7 @@
ALOGD("%sAnimationPreloadTiming start time: %" PRId64 "ms",
mShuttingDown ? "Shutdown" : "Boot", elapsedRealtime());
preloadAnimation();
- ALOGD("%sAnimationPreloadStopTiming start time: %" PRId64 "ms",
+ ALOGD("%sAnimationPreloadTiming stop time: %" PRId64 "ms",
mShuttingDown ? "Shutdown" : "Boot", elapsedRealtime());
}
}
diff --git a/core/api/current.txt b/core/api/current.txt
index 9ad8dd3..0f23721 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -26593,7 +26593,7 @@
public final class MediaProjectionManager {
method @NonNull public android.content.Intent createScreenCaptureIntent();
method @NonNull public android.content.Intent createScreenCaptureIntent(@NonNull android.media.projection.MediaProjectionConfig);
- method public android.media.projection.MediaProjection getMediaProjection(int, @NonNull android.content.Intent);
+ method @Nullable public android.media.projection.MediaProjection getMediaProjection(int, @NonNull android.content.Intent);
}
}
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 7ae5d1b..e148b5c 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -271,12 +271,12 @@
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidRestrictedOnMeteredNetworks(int);
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void notifyStatsProviderLimitReached();
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void notifyStatsProviderWarningReached();
- method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void registerNetworkPolicyCallback(@Nullable java.util.concurrent.Executor, @NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
- method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void unregisterNetworkPolicyCallback(@NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
+ method @Deprecated @FlaggedApi("android.net.platform.flags.deprecate_network_policy_callback") @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void registerNetworkPolicyCallback(@Nullable java.util.concurrent.Executor, @NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
+ method @Deprecated @FlaggedApi("android.net.platform.flags.deprecate_network_policy_callback") @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void unregisterNetworkPolicyCallback(@NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
}
- public static interface NetworkPolicyManager.NetworkPolicyCallback {
- method public default void onUidBlockedReasonChanged(int, int);
+ @Deprecated @FlaggedApi("android.net.platform.flags.deprecate_network_policy_callback") public static interface NetworkPolicyManager.NetworkPolicyCallback {
+ method @Deprecated public default void onUidBlockedReasonChanged(int, int);
}
public class NetworkWatchlistManager {
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 2ca9f2e..44c4ab4 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1796,8 +1796,10 @@
public class InputSettings {
method @FlaggedApi("com.android.hardware.input.keyboard_a11y_bounce_keys_flag") public static int getAccessibilityBounceKeysThreshold(@NonNull android.content.Context);
method @FlaggedApi("com.android.hardware.input.keyboard_a11y_slow_keys_flag") public static int getAccessibilitySlowKeysThreshold(@NonNull android.content.Context);
+ method @FlaggedApi("com.android.hardware.input.keyboard_a11y_mouse_keys") public static boolean isAccessibilityMouseKeysEnabled(@NonNull android.content.Context);
method @FlaggedApi("com.android.hardware.input.keyboard_a11y_sticky_keys_flag") public static boolean isAccessibilityStickyKeysEnabled(@NonNull android.content.Context);
method @FlaggedApi("com.android.hardware.input.keyboard_a11y_bounce_keys_flag") @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void setAccessibilityBounceKeysThreshold(@NonNull android.content.Context, int);
+ method @FlaggedApi("com.android.hardware.input.keyboard_a11y_mouse_keys") @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void setAccessibilityMouseKeysEnabled(@NonNull android.content.Context, boolean);
method @FlaggedApi("com.android.hardware.input.keyboard_a11y_slow_keys_flag") @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void setAccessibilitySlowKeysThreshold(@NonNull android.content.Context, int);
method @FlaggedApi("com.android.hardware.input.keyboard_a11y_sticky_keys_flag") @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public static void setAccessibilityStickyKeysEnabled(@NonNull android.content.Context, boolean);
method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void setMaximumObscuringOpacityForTouch(@NonNull android.content.Context, @FloatRange(from=0, to=1) float);
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 5a3a8d5..cbabb02 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -3702,7 +3702,9 @@
* @see View#findViewById(int)
* @see Activity#requireViewById(int)
*/
- /* TODO(b/347672184): Re-add @Nullable */
+ // Strictly speaking this should be marked as @Nullable but the nullability of the return value
+ // is deliberately left unspecified as idiomatically correct code can make assumptions either
+ // way based on local context, e.g. layout specification.
public <T extends View> T findViewById(@IdRes int id) {
return getWindow().findViewById(id);
}
@@ -5823,7 +5825,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
*
* @throws android.content.ActivityNotFoundException
*
@@ -5858,7 +5861,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
* @param options Additional options for how the Activity should be started.
* See {@link android.content.Context#startActivity(Intent, Bundle)}
* Context.startActivity(Intent, Bundle)} for more details.
@@ -5966,7 +5970,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
* @param user The user to start the intent as.
* @hide Implement to provide correct calling token.
*/
@@ -6002,7 +6007,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
* @param options Additional options for how the Activity should be started. See {@link
* android.content.Context#startActivity(Intent, Bundle)} for more details.
* @param user The user to start the intent as.
@@ -6040,7 +6046,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
* @param options Additional options for how the Activity should be started. See {@link
* android.content.Context#startActivity(Intent, Bundle)} for more details.
* @param user The user to start the intent as.
@@ -6166,7 +6173,8 @@
*
* @param intent The IntentSender to launch.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
* @param fillInIntent If non-null, this will be provided as the
* intent parameter to {@link IntentSender#sendIntent}.
* @param flagsMask Intent flags in the original IntentSender that you
@@ -6205,7 +6213,8 @@
*
* @param intent The IntentSender to launch.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits.
+ * onActivityResult() when the activity exits;
+ * If < 0, no result will return when the activity exits.
* @param fillInIntent If non-null, this will be provided as the
* intent parameter to {@link IntentSender#sendIntent}.
* @param flagsMask Intent flags in the original IntentSender that you
@@ -6437,8 +6446,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits, as described in
- * {@link #startActivityForResult}.
+ * onActivityResult() when the activity exits; If < 0, no result will
+ * return when the activity exits, as described in {@link #startActivityForResult}.
*
* @return If a new activity was launched then true is returned; otherwise
* false is returned and you must handle the Intent yourself.
@@ -6469,7 +6478,8 @@
*
* @param intent The intent to start.
* @param requestCode If >= 0, this code will be returned in
- * onActivityResult() when the activity exits, as described in
+ * onActivityResult() when the activity exits; If < 0, no result
+ * will return when the activity exits, as described in
* {@link #startActivityForResult}.
* @param options Additional options for how the Activity should be started.
* See {@link android.content.Context#startActivity(Intent, Bundle)}
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index 57d9a71..5cb17fa 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -565,7 +565,9 @@
* @see View#findViewById(int)
* @see Dialog#requireViewById(int)
*/
- /* TODO(b/347672184): Re-add @Nullable */
+ // Strictly speaking this should be marked as @Nullable but the nullability of the return value
+ // is deliberately left unspecified as idiomatically correct code can make assumptions either
+ // way based on local context, e.g. layout specification.
public <T extends View> T findViewById(@IdRes int id) {
return mWindow.findViewById(id);
}
diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl
index a64261a..9f3829e 100644
--- a/core/java/android/app/IApplicationThread.aidl
+++ b/core/java/android/app/IApplicationThread.aidl
@@ -65,6 +65,7 @@
*
* {@hide}
*/
+@JavaDelegator
oneway interface IApplicationThread {
void scheduleReceiver(in Intent intent, in ActivityInfo info,
in CompatibilityInfo compatInfo,
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java
index 34cfa58..1529842 100644
--- a/core/java/android/companion/CompanionDeviceManager.java
+++ b/core/java/android/companion/CompanionDeviceManager.java
@@ -1172,6 +1172,12 @@
* BluetoothDevice#ACTION_BOND_STATE_CHANGED} intents to be notified when the bond removal
* process completes, and its result.
*
+ * <p>This API should be used to remove a bluetooth bond that was created either
+ * by using {@link BluetoothDevice#createBond(int)} or by a direct user action.
+ * The association must already exist with this device before calling this method, but
+ * this may be done retroactively to remove a bond that was created outside of the
+ * CompanionDeviceManager.
+ *
* @param associationId an already-associated companion device to remove bond from
* @return false on immediate error, true if bond removal process will begin
*/
diff --git a/core/java/android/content/pm/multiuser.aconfig b/core/java/android/content/pm/multiuser.aconfig
index 26ee4e8..c2c7b81 100644
--- a/core/java/android/content/pm/multiuser.aconfig
+++ b/core/java/android/content/pm/multiuser.aconfig
@@ -317,3 +317,13 @@
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "modify_private_space_secondary_unlock_setup_flow"
+ namespace: "profile_experiences"
+ description: "Updates to setting up secondary unlock factor from Settings for the first time"
+ bug: "332850595"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java
index 4935389..fb381d9 100644
--- a/core/java/android/hardware/camera2/CameraDevice.java
+++ b/core/java/android/hardware/camera2/CameraDevice.java
@@ -1406,18 +1406,31 @@
* {@link android.hardware.camera2.params.MandatoryStreamCombination} are better suited for this
* purpose.</p>
*
- * <p><b>NOTE:</b>
- * For apps targeting {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} and above,
+ * <p>If this function returns {@code true} for a particular stream combination, the camera
+ * device supports concurrent captures on all of the streams in the same CaptureRequest, with
+ * two exceptions below where concurrent captures are not supported: </p>
+ * <ul>
+ * <li>Supported stream combinations with exclusive dynamic range profiles as specified by
+ * {@link android.hardware.camera2.params.DynamicRangeProfiles#getProfileCaptureRequestConstraints}.</li>
+ * <li>Supported combinations of 'default' mode and 'max resolution' mode streams for devices
+ * with ULTRA_HIGH_RESOLUTION_SENSOR capability.</li>
+ * </ul>
+ * <p>For other cases where concurrent captures of a stream combination are not supported,
+ * this function returns {@code false}.</p>
+ *
+ * <p><b>NOTE:</b></p>
+ * <ul>
+ * <li>For apps targeting {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} and above,
* this method will automatically delegate to
* {@link CameraDeviceSetup#isSessionConfigurationSupported} whenever possible. This
* means that the output of this method will consider parameters set through
- * {@link SessionConfiguration#setSessionParameters} as well.
- * </p>
+ * {@link SessionConfiguration#setSessionParameters} as well.</li>
*
- * <p>Session Parameters will be ignored for apps targeting <=
+ * <li>Session Parameters will be ignored for apps targeting <=
* {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, or if
* {@link CameraManager#isCameraDeviceSetupSupported} returns false for the camera id
- * associated with this {@code CameraDevice}.</p>
+ * associated with this {@code CameraDevice}.</li>
+ * </ul>
*
* @return {@code true} if the given session configuration is supported by the camera device
* {@code false} otherwise.
@@ -1691,6 +1704,18 @@
* CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION} provides the list of
* feature combinations the camera device will reliably report.</p>
*
+ * <p>If this function returns {@code true} for a particular stream combination, the camera
+ * device supports concurrent captures on all of the streams in the same CaptureRequest,
+ * with two exceptions below where concurrent captures are not supported: </p>
+ * <ul>
+ * <li>Supported stream combinations with exclusive dynamic range profiles as specified by
+ * {@link android.hardware.camera2.params.DynamicRangeProfiles#getProfileCaptureRequestConstraints}.</li>
+ * <li>Supported combinations of 'default' mode and 'max resolution' mode streams for
+ * devices with ULTRA_HIGH_RESOLUTION_SENSOR capability.</li>
+ * </ul>
+ * <p>For other cases where concurrent captures of a stream combination are not supported,
+ * this function returns {@code false}.</p>
+ *
* <p><b>IMPORTANT:</b></p>
* <ul>
* <li>If feature support can be queried via {@link CameraCharacteristics}, applications
diff --git a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java
index 978a8f9..e3dbb2b 100644
--- a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java
+++ b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java
@@ -747,6 +747,10 @@
* {@link android.hardware.camera2.CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList}.
* </p>
*
+ * <p>This function returns an empty array if
+ * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO}
+ * is not supported.</p>
+ *
* @return an array of supported high speed video recording sizes
* @see #getHighSpeedVideoFpsRangesFor(Size)
* @see CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO
@@ -836,6 +840,10 @@
* supported for the same recording rate.</li>
* </p>
*
+ * <p>This function returns an empty array if
+ * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_CONSTRAINED_HIGH_SPEED_VIDEO}
+ * is not supported.</p>
+ *
* @return an array of supported high speed video recording FPS ranges The upper bound of
* returned ranges is guaranteed to be larger or equal to 120.
* @see #getHighSpeedVideoSizesFor
diff --git a/core/java/android/hardware/input/InputSettings.java b/core/java/android/hardware/input/InputSettings.java
index 4c5ebe7..bec1c9e 100644
--- a/core/java/android/hardware/input/InputSettings.java
+++ b/core/java/android/hardware/input/InputSettings.java
@@ -17,11 +17,13 @@
package android.hardware.input;
import static com.android.hardware.input.Flags.FLAG_KEYBOARD_A11Y_BOUNCE_KEYS_FLAG;
+import static com.android.hardware.input.Flags.FLAG_KEYBOARD_A11Y_MOUSE_KEYS;
import static com.android.hardware.input.Flags.FLAG_KEYBOARD_A11Y_SLOW_KEYS_FLAG;
import static com.android.hardware.input.Flags.FLAG_KEYBOARD_A11Y_STICKY_KEYS_FLAG;
import static com.android.hardware.input.Flags.keyboardA11yBounceKeysFlag;
import static com.android.hardware.input.Flags.keyboardA11ySlowKeysFlag;
import static com.android.hardware.input.Flags.keyboardA11yStickyKeysFlag;
+import static com.android.hardware.input.Flags.keyboardA11yMouseKeys;
import static com.android.hardware.input.Flags.touchpadTapDragging;
import static com.android.input.flags.Flags.enableInputFilterRustImpl;
@@ -662,4 +664,64 @@
UserHandle.USER_CURRENT);
}
+ /**
+ * Whether Accessibility mouse keys feature flag is enabled.
+ *
+ * <p>
+ * ‘Mouse keys’ is an accessibility feature to aid users who have physical disabilities,
+ * that allows the user to use the keys on the keyboard to control the mouse pointer and
+ * other perform other mouse functionality.
+ * </p>
+ *
+ * @hide
+ */
+ public static boolean isAccessibilityMouseKeysFeatureFlagEnabled() {
+ return keyboardA11yMouseKeys();
+ }
+
+ /**
+ * Whether Accessibility mouse keys is enabled.
+ *
+ * <p>
+ * ‘Mouse keys’ is an accessibility feature to aid users who have physical disabilities,
+ * that allows the user to use the keys on the keyboard to control the mouse pointer and
+ * other perform other mouse functionality.
+ * </p>
+ *
+ * @hide
+ */
+ @TestApi
+ @FlaggedApi(FLAG_KEYBOARD_A11Y_MOUSE_KEYS)
+ public static boolean isAccessibilityMouseKeysEnabled(@NonNull Context context) {
+ if (!isAccessibilityMouseKeysFeatureFlagEnabled()) {
+ return false;
+ }
+ return Settings.Secure.getIntForUser(context.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_MOUSE_KEYS_ENABLED, 0, UserHandle.USER_CURRENT)
+ != 0;
+ }
+
+ /**
+ * Set Accessibility mouse keys feature enabled/disabled.
+ *
+ * <p>
+ * ‘Mouse keys’ is an accessibility feature to aid users who have physical disabilities,
+ * that allows the user to use the keys on the keyboard to control the mouse pointer and
+ * other perform other mouse functionality.
+ * </p>
+ *
+ * @hide
+ */
+ @TestApi
+ @FlaggedApi(FLAG_KEYBOARD_A11Y_MOUSE_KEYS)
+ @RequiresPermission(Manifest.permission.WRITE_SETTINGS)
+ public static void setAccessibilityMouseKeysEnabled(@NonNull Context context,
+ boolean enabled) {
+ if (!isAccessibilityMouseKeysFeatureFlagEnabled()) {
+ return;
+ }
+ Settings.Secure.putIntForUser(context.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_MOUSE_KEYS_ENABLED, enabled ? 1 : 0,
+ UserHandle.USER_CURRENT);
+ }
}
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index d560399..da7997d 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -16,7 +16,6 @@
package android.inputmethodservice;
-import static android.view.inputmethod.Flags.predictiveBackIme;
import static android.inputmethodservice.InputMethodServiceProto.CANDIDATES_VIEW_STARTED;
import static android.inputmethodservice.InputMethodServiceProto.CANDIDATES_VISIBILITY;
import static android.inputmethodservice.InputMethodServiceProto.CONFIGURATION;
@@ -57,6 +56,7 @@
import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED;
import static android.view.inputmethod.Flags.FLAG_CONNECTIONLESS_HANDWRITING;
import static android.view.inputmethod.Flags.ctrlShiftShortcut;
+import static android.view.inputmethod.Flags.predictiveBackIme;
import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -101,7 +101,6 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
-import android.os.UserHandle;
import android.provider.Settings;
import android.text.InputType;
import android.text.Layout;
@@ -4342,13 +4341,14 @@
}
/**
- * Called when the IME switch button was clicked from the client. This will show the input
+ * Called when the IME switch button was clicked from the client. Depending on the number of
+ * enabled IME subtypes, this will either switch to the next IME/subtype, or show the input
* method picker dialog.
*
* @hide
*/
final void onImeSwitchButtonClickFromClient() {
- mPrivOps.onImeSwitchButtonClickFromClient(getDisplayId(), UserHandle.myUserId());
+ mPrivOps.onImeSwitchButtonClickFromClient(getDisplayId());
}
/**
diff --git a/core/java/android/inputmethodservice/navigationbar/NavigationBarView.java b/core/java/android/inputmethodservice/navigationbar/NavigationBarView.java
index a3beaf4..209f323 100644
--- a/core/java/android/inputmethodservice/navigationbar/NavigationBarView.java
+++ b/core/java/android/inputmethodservice/navigationbar/NavigationBarView.java
@@ -216,7 +216,11 @@
oldConfig.getLayoutDirection() != mConfiguration.getLayoutDirection();
if (densityChange || dirChange) {
- mImeSwitcherIcon = getDrawable(com.android.internal.R.drawable.ic_ime_switcher);
+ final int switcherResId = Flags.imeSwitcherRevamp()
+ ? com.android.internal.R.drawable.ic_ime_switcher_new
+ : com.android.internal.R.drawable.ic_ime_switcher;
+
+ mImeSwitcherIcon = getDrawable(switcherResId);
}
if (orientationChange || densityChange || dirChange) {
mBackIcon = getBackDrawable();
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index 334b231..3e6bbf6 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -21,6 +21,7 @@
import static android.app.ActivityManager.procStateToString;
import static android.content.pm.PackageManager.GET_SIGNATURES;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -36,6 +37,7 @@
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
+import android.net.platform.flags.Flags;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.os.Build;
@@ -954,11 +956,24 @@
* @param executor The {@link Executor} to run the callback on.
* @param callback The {@link NetworkPolicyCallback} to be registered.
* @hide
+ *
+ * @deprecated This API is only supported up to Android version
+ * {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}. On later versions,
+ * {@link android.net.ConnectivityManager.NetworkCallback} should be used wherever possible.
+ *
+ * @throws UnsupportedOperationException when called on Android versions after
+ * {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}.
*/
+ @Deprecated
+ @FlaggedApi(Flags.FLAG_DEPRECATE_NETWORK_POLICY_CALLBACK)
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY)
public void registerNetworkPolicyCallback(@Nullable Executor executor,
@NonNull NetworkPolicyCallback callback) {
+ if (Flags.deprecateNetworkPolicyCallback()) {
+ throw new UnsupportedOperationException("NetworkPolicyCallback is no longer supported."
+ + " Please use ConnectivityManager APIs instead");
+ }
if (callback == null) {
throw new NullPointerException("Callback cannot be null.");
}
@@ -974,10 +989,23 @@
*
* @param callback The {@link NetworkPolicyCallback} to be unregistered.
* @hide
+ *
+ * @deprecated This API is only supported up to Android version
+ * {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}. On later versions,
+ * {@link android.net.ConnectivityManager.NetworkCallback} should be used wherever possible.
+ *
+ * @throws UnsupportedOperationException when called on Android versions after
+ * {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}.
*/
+ @Deprecated
+ @FlaggedApi(Flags.FLAG_DEPRECATE_NETWORK_POLICY_CALLBACK)
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY)
public void unregisterNetworkPolicyCallback(@NonNull NetworkPolicyCallback callback) {
+ if (Flags.deprecateNetworkPolicyCallback()) {
+ throw new UnsupportedOperationException("NetworkPolicyCallback is no longer supported."
+ + " Please use ConnectivityManager APIs instead");
+ }
if (callback == null) {
throw new NullPointerException("Callback cannot be null.");
}
@@ -990,8 +1018,18 @@
/**
* Interface for the callback to listen for changes to network blocked status of apps.
*
+ * @deprecated This API is only supported up to Android version
+ * {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}. On later versions, this callback will
+ * <b>not</b> be called when the network blocked status of an app changes. Instead,
+ * {@link android.net.ConnectivityManager.NetworkCallback} should be used wherever possible.
+ *
+ * @see #registerNetworkPolicyCallback(Executor, NetworkPolicyCallback)
+ * @see #unregisterNetworkPolicyCallback(NetworkPolicyCallback)
+ *
* @hide
*/
+ @FlaggedApi(Flags.FLAG_DEPRECATE_NETWORK_POLICY_CALLBACK)
+ @Deprecated
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public interface NetworkPolicyCallback {
/**
diff --git a/core/java/android/net/flags.aconfig b/core/java/android/net/flags.aconfig
index 048c50e..48eb968 100644
--- a/core/java/android/net/flags.aconfig
+++ b/core/java/android/net/flags.aconfig
@@ -25,3 +25,13 @@
description: "Flag for registerOffloadEngine API in NsdManager"
bug: "294777050"
}
+
+flag {
+ name: "deprecate_network_policy_callback"
+ namespace: "backstage_power"
+ description: "Flag for deprecating NetworkPolicyCallback and related APIs"
+ bug: "353342610"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/core/java/android/os/IVibratorManagerService.aidl b/core/java/android/os/IVibratorManagerService.aidl
index 8b1577c..97993b6 100644
--- a/core/java/android/os/IVibratorManagerService.aidl
+++ b/core/java/android/os/IVibratorManagerService.aidl
@@ -41,5 +41,5 @@
// There is no order guarantee with respect to the two-way APIs above like
// vibrate/isVibrating/cancel.
oneway void performHapticFeedback(int uid, int deviceId, String opPkg, int constant,
- boolean always, String reason, boolean fromIme);
+ String reason, int flags, int privFlags);
}
diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java
index 2a62c24..5339d73 100644
--- a/core/java/android/os/SystemVibrator.java
+++ b/core/java/android/os/SystemVibrator.java
@@ -206,13 +206,12 @@
}
@Override
- public void performHapticFeedback(
- int constant, boolean always, String reason, boolean fromIme) {
+ public void performHapticFeedback(int constant, String reason, int flags, int privFlags) {
if (mVibratorManager == null) {
Log.w(TAG, "Failed to perform haptic feedback; no vibrator manager.");
return;
}
- mVibratorManager.performHapticFeedback(constant, always, reason, fromIme);
+ mVibratorManager.performHapticFeedback(constant, reason, flags, privFlags);
}
@Override
diff --git a/core/java/android/os/SystemVibratorManager.java b/core/java/android/os/SystemVibratorManager.java
index c80bcac..a9846ba 100644
--- a/core/java/android/os/SystemVibratorManager.java
+++ b/core/java/android/os/SystemVibratorManager.java
@@ -147,15 +147,14 @@
}
@Override
- public void performHapticFeedback(int constant, boolean always, String reason,
- boolean fromIme) {
+ public void performHapticFeedback(int constant, String reason, int flags, int privFlags) {
if (mService == null) {
Log.w(TAG, "Failed to perform haptic feedback; no vibrator manager service.");
return;
}
try {
- mService.performHapticFeedback(
- mUid, mContext.getDeviceId(), mPackageName, constant, always, reason, fromIme);
+ mService.performHapticFeedback(mUid, mContext.getDeviceId(), mPackageName, constant,
+ reason, flags, privFlags);
} catch (RemoteException e) {
Log.w(TAG, "Failed to perform haptic feedback.", e);
}
@@ -245,9 +244,8 @@
}
@Override
- public void performHapticFeedback(int effectId, boolean always, String reason,
- boolean fromIme) {
- SystemVibratorManager.this.performHapticFeedback(effectId, always, reason, fromIme);
+ public void performHapticFeedback(int effectId, String reason, int flags, int privFlags) {
+ SystemVibratorManager.this.performHapticFeedback(effectId, reason, flags, privFlags);
}
@Override
diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java
index 8af371c..71c83f2 100644
--- a/core/java/android/os/Vibrator.java
+++ b/core/java/android/os/Vibrator.java
@@ -33,6 +33,7 @@
import android.os.vibrator.VibrationConfig;
import android.os.vibrator.VibratorFrequencyProfile;
import android.util.Log;
+import android.view.HapticFeedbackConstants;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -519,17 +520,15 @@
*
* @param constant the ID for the haptic feedback. This should be one of the constants defined
* in {@link HapticFeedbackConstants}.
- * @param always {@code true} if the haptic feedback should be played regardless of the user
- * vibration intensity settings applicable to the corresponding vibration.
- * {@code false} if the vibration for the haptic feedback should respect the applicable
- * vibration intensity settings.
* @param reason the reason for this haptic feedback.
- * @param fromIme the haptic feedback is performed from an IME.
+ * @param flags Additional flags as per {@link HapticFeedbackConstants}.
+ * @param privFlags Additional private flags as per {@link HapticFeedbackConstants}.
*
* @hide
*/
- public void performHapticFeedback(int constant, boolean always, String reason,
- boolean fromIme) {
+ public void performHapticFeedback(int constant, String reason,
+ @HapticFeedbackConstants.Flags int flags,
+ @HapticFeedbackConstants.PrivateFlags int privFlags) {
Log.w(TAG, "performHapticFeedback is not supported");
}
diff --git a/core/java/android/os/VibratorManager.java b/core/java/android/os/VibratorManager.java
index 513c4bd..2c7a852 100644
--- a/core/java/android/os/VibratorManager.java
+++ b/core/java/android/os/VibratorManager.java
@@ -23,6 +23,7 @@
import android.app.ActivityThread;
import android.content.Context;
import android.util.Log;
+import android.view.HapticFeedbackConstants;
/**
* Provides access to all vibrators from the device, as well as the ability to run them
@@ -142,15 +143,14 @@
*
* @param constant the ID of the requested haptic feedback. Should be one of the constants
* defined in {@link HapticFeedbackConstants}.
- * @param always {@code true} if the haptic feedback should be played regardless of the user
- * vibration intensity settings applicable to the corresponding vibration.
- * {@code false} otherwise.
* @param reason the reason for this haptic feedback.
- * @param fromIme the haptic feedback is performed from an IME.
+ * @param flags Additional flags as per {@link HapticFeedbackConstants}.
+ * @param privFlags Additional private flags as per {@link HapticFeedbackConstants}.
* @hide
*/
- public void performHapticFeedback(int constant, boolean always, String reason,
- boolean fromIme) {
+ public void performHapticFeedback(int constant, String reason,
+ @HapticFeedbackConstants.Flags int flags,
+ @HapticFeedbackConstants.PrivateFlags int privFlags) {
Log.w(TAG, "performHapticFeedback is not supported");
}
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index 6b0d301..e4fc1cd 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -742,7 +742,9 @@
* @see View#findViewById(int)
* @see DreamService#requireViewById(int)
*/
- /* TODO(b/347672184): Re-add @Nullable */
+ // Strictly speaking this should be marked as @Nullable but the nullability of the return value
+ // is deliberately left unspecified as idiomatically correct code can make assumptions either
+ // way based on local context, e.g. layout specification.
public <T extends View> T findViewById(@IdRes int id) {
return getWindow().findViewById(id);
}
diff --git a/core/java/android/util/StateSet.java b/core/java/android/util/StateSet.java
index 16d6082..17adb32 100644
--- a/core/java/android/util/StateSet.java
+++ b/core/java/android/util/StateSet.java
@@ -288,6 +288,9 @@
case R.attr.state_activated:
sb.append("A ");
break;
+ case R.attr.state_hovered:
+ sb.append("H ");
+ break;
}
}
diff --git a/core/java/android/view/HapticFeedbackConstants.java b/core/java/android/view/HapticFeedbackConstants.java
index 69228ca..1fe06d4 100644
--- a/core/java/android/view/HapticFeedbackConstants.java
+++ b/core/java/android/view/HapticFeedbackConstants.java
@@ -16,11 +16,30 @@
package android.view;
+import android.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
/**
* Constants to be used to perform haptic feedback effects via
* {@link View#performHapticFeedback(int)}
*/
public class HapticFeedbackConstants {
+ /** @hide **/
+ @IntDef(flag = true, prefix = "FLAG_", value = {
+ FLAG_IGNORE_VIEW_SETTING,
+ FLAG_IGNORE_GLOBAL_SETTING,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Flags {}
+
+ /** @hide **/
+ @IntDef(flag = true, prefix = "PRIVATE_FLAG_", value = {
+ PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface PrivateFlags {}
private HapticFeedbackConstants() {}
@@ -258,4 +277,14 @@
*/
@Deprecated
public static final int FLAG_IGNORE_GLOBAL_SETTING = 0x0002;
+
+ /**
+ * Flag for {@link android.os.Vibrator#performHapticFeedback(int, boolean, String, int, int)} or
+ * {@link ViewRootImpl#performHapticFeedback(int, boolean, int, int)}: Perform the haptic
+ * feedback with the input method vibration settings, e.g. applying the keyboard vibration
+ * user settings to the KEYBOARD_* constants.
+ *
+ * @hide
+ */
+ public static final int PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS = 0x0001;
}
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 070d33b..14407ca 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -140,13 +140,13 @@
int seqId);
@UnsupportedAppUsage
- boolean performHapticFeedback(int effectId, boolean always, boolean fromIme);
+ boolean performHapticFeedback(int effectId, int flags, int privFlags);
/**
* Called by attached views to perform predefined haptic feedback without requiring VIBRATE
* permission.
*/
- oneway void performHapticFeedbackAsync(int effectId, boolean always, boolean fromIme);
+ oneway void performHapticFeedbackAsync(int effectId, int flags, int privFlags);
/**
* Initiate the drag operation itself
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 88d7a83..a23e383 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -30,6 +30,7 @@
import static android.view.Surface.FRAME_RATE_COMPATIBILITY_GTE;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
import static android.view.accessibility.AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED;
+import static android.view.accessibility.Flags.removeChildHoverCheckForTouchExploration;
import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_INVALID_BOUNDS;
import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_MISSING_WINDOW;
import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_NOT_VISIBLE_ON_SCREEN;
@@ -17486,9 +17487,9 @@
* Dispatching hover events to {@link TouchDelegate} to improve accessibility.
* <p>
* This method is dispatching hover events to the delegate target to support explore by touch.
- * Similar to {@link ViewGroup#dispatchTouchEvent}, this method send proper hover events to
+ * Similar to {@link ViewGroup#dispatchTouchEvent}, this method sends proper hover events to
* the delegate target according to the pointer and the touch area of the delegate while touch
- * exploration enabled.
+ * exploration is enabled.
* </p>
*
* @param event The motion event dispatch to the delegate target.
@@ -17520,17 +17521,33 @@
// hover events but receive accessibility focus, it should also not delegate to these
// views when hovered.
if (!oldHoveringTouchDelegate) {
- if ((action == MotionEvent.ACTION_HOVER_ENTER
- || action == MotionEvent.ACTION_HOVER_MOVE)
- && !pointInHoveredChild(event)
- && pointInDelegateRegion) {
- mHoveringTouchDelegate = true;
+ if (removeChildHoverCheckForTouchExploration()) {
+ if ((action == MotionEvent.ACTION_HOVER_ENTER
+ || action == MotionEvent.ACTION_HOVER_MOVE) && pointInDelegateRegion) {
+ mHoveringTouchDelegate = true;
+ }
+ } else {
+ if ((action == MotionEvent.ACTION_HOVER_ENTER
+ || action == MotionEvent.ACTION_HOVER_MOVE)
+ && !pointInHoveredChild(event)
+ && pointInDelegateRegion) {
+ mHoveringTouchDelegate = true;
+ }
}
} else {
- if (action == MotionEvent.ACTION_HOVER_EXIT
- || (action == MotionEvent.ACTION_HOVER_MOVE
+ if (removeChildHoverCheckForTouchExploration()) {
+ if (action == MotionEvent.ACTION_HOVER_EXIT
+ || (action == MotionEvent.ACTION_HOVER_MOVE)) {
+ if (!pointInDelegateRegion) {
+ mHoveringTouchDelegate = false;
+ }
+ }
+ } else {
+ if (action == MotionEvent.ACTION_HOVER_EXIT
+ || (action == MotionEvent.ACTION_HOVER_MOVE
&& (pointInHoveredChild(event) || !pointInDelegateRegion))) {
- mHoveringTouchDelegate = false;
+ mHoveringTouchDelegate = false;
+ }
}
}
switch (action) {
@@ -27543,7 +27560,9 @@
* @return a view with given ID if found, or {@code null} otherwise
* @see View#requireViewById(int)
*/
- /* TODO(b/347672184): Re-add @Nullable */
+ // Strictly speaking this should be marked as @Nullable but the nullability of the return value
+ // is deliberately left unspecified as idiomatically correct code can make assumptions either
+ // way based on local context, e.g. layout specification.
public final <T extends View> T findViewById(@IdRes int id) {
if (id == NO_ID) {
return null;
@@ -28636,20 +28655,20 @@
return false;
}
- final boolean always = (flags & HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING) != 0;
- boolean fromIme = false;
- if (mAttachInfo.mViewRootImpl != null) {
- fromIme = mAttachInfo.mViewRootImpl.mWindowAttributes.type == TYPE_INPUT_METHOD;
+ int privFlags = 0;
+ if (mAttachInfo.mViewRootImpl != null
+ && mAttachInfo.mViewRootImpl.mWindowAttributes.type == TYPE_INPUT_METHOD) {
+ privFlags = HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS;
}
if (Flags.useVibratorHapticFeedback()) {
if (!mAttachInfo.canPerformHapticFeedback()) {
return false;
}
- getSystemVibrator().performHapticFeedback(
- feedbackConstant, always, "View#performHapticFeedback", fromIme);
+ getSystemVibrator().performHapticFeedback(feedbackConstant,
+ "View#performHapticFeedback", flags, privFlags);
return true;
}
- return mAttachInfo.mRootCallbacks.performHapticFeedback(feedbackConstant, always, fromIme);
+ return mAttachInfo.mRootCallbacks.performHapticFeedback(feedbackConstant, flags, privFlags);
}
private Vibrator getSystemVibrator() {
@@ -31684,7 +31703,10 @@
interface Callbacks {
void playSoundEffect(int effectId);
- boolean performHapticFeedback(int effectId, boolean always, boolean fromIme);
+
+ boolean performHapticFeedback(int effectId,
+ @HapticFeedbackConstants.Flags int flags,
+ @HapticFeedbackConstants.PrivateFlags int privFlags);
}
/**
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index e5b17c8..596726f 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -9666,18 +9666,18 @@
* {@inheritDoc}
*/
@Override
- public boolean performHapticFeedback(int effectId, boolean always, boolean fromIme) {
+ public boolean performHapticFeedback(int effectId, int flags, int privFlags) {
if ((mDisplay.getFlags() & Display.FLAG_TOUCH_FEEDBACK_DISABLED) != 0) {
return false;
}
try {
if (USE_ASYNC_PERFORM_HAPTIC_FEEDBACK) {
- mWindowSession.performHapticFeedbackAsync(effectId, always, fromIme);
+ mWindowSession.performHapticFeedbackAsync(effectId, flags, privFlags);
return true;
} else {
// Original blocking binder call path.
- return mWindowSession.performHapticFeedback(effectId, always, fromIme);
+ return mWindowSession.performHapticFeedback(effectId, flags, privFlags);
}
} catch (RemoteException e) {
return false;
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 7cb70bd..0582afe 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -1722,7 +1722,9 @@
* @see View#findViewById(int)
* @see Window#requireViewById(int)
*/
- /* TODO(b/347672184): Re-add @Nullable */
+ // Strictly speaking this should be marked as @Nullable but the nullability of the return value
+ // is deliberately left unspecified as idiomatically correct code can make assumptions either
+ // way based on local context, e.g. layout specification.
public <T extends View> T findViewById(@IdRes int id) {
return getDecorView().findViewById(id);
}
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index 55f22a6..7871858 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -503,13 +503,13 @@
}
@Override
- public boolean performHapticFeedback(int effectId, boolean always, boolean fromIme) {
+ public boolean performHapticFeedback(int effectId, int flags, int privFlags) {
return false;
}
@Override
- public void performHapticFeedbackAsync(int effectId, boolean always, boolean fromIme) {
- performHapticFeedback(effectId, always, fromIme);
+ public void performHapticFeedbackAsync(int effectId, int flags, int privFlags) {
+ performHapticFeedback(effectId, flags, privFlags);
}
@Override
diff --git a/core/java/android/view/accessibility/a11ychecker/Android.bp b/core/java/android/view/accessibility/a11ychecker/Android.bp
deleted file mode 100644
index e5a577c..0000000
--- a/core/java/android/view/accessibility/a11ychecker/Android.bp
+++ /dev/null
@@ -1,7 +0,0 @@
-java_library_static {
- name: "A11yChecker",
- srcs: [
- "*.java",
- ],
- visibility: ["//visibility:public"],
-}
diff --git a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
index d0bc57b..44c1acc 100644
--- a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
+++ b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
@@ -128,6 +128,13 @@
}
flag {
+ namespace: "accessibility"
+ name: "remove_child_hover_check_for_touch_exploration"
+ description: "Remove a check for a hovered child that prevents touch events from being delegated to non-direct descendants"
+ bug: "304770837"
+}
+
+flag {
name: "skip_accessibility_warning_dialog_for_trusted_services"
namespace: "accessibility"
description: "Skips showing the accessibility warning dialog for trusted services."
diff --git a/core/java/android/view/inputmethod/InputMethodInfo.java b/core/java/android/view/inputmethod/InputMethodInfo.java
index 098f655..0e66f7a 100644
--- a/core/java/android/view/inputmethod/InputMethodInfo.java
+++ b/core/java/android/view/inputmethod/InputMethodInfo.java
@@ -891,12 +891,13 @@
@FlaggedApi(android.view.inputmethod.Flags.FLAG_IME_SWITCHER_REVAMP_API)
@Nullable
public Intent createImeLanguageSettingsActivityIntent() {
- if (TextUtils.isEmpty(mLanguageSettingsActivityName)) {
+ final var activityName = !TextUtils.isEmpty(mLanguageSettingsActivityName)
+ ? mLanguageSettingsActivityName : mSettingsActivityName;
+ if (TextUtils.isEmpty(activityName)) {
return null;
}
return new Intent(ACTION_IME_LANGUAGE_SETTINGS).setComponent(
- new ComponentName(getServiceInfo().packageName,
- mLanguageSettingsActivityName)
+ new ComponentName(getServiceInfo().packageName, activityName)
);
}
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index dbbfff0..c9d2eec 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -4354,7 +4354,8 @@
}
/**
- * Called when the IME switch button was clicked from the system. This will show the input
+ * Called when the IME switch button was clicked from the system. Depending on the number of
+ * enabled IME subtypes, this will either switch to the next IME/subtype, or show the input
* method picker dialog.
*
* @param displayId The ID of the display where the input method picker dialog should be shown.
diff --git a/core/java/android/window/WindowMetricsController.java b/core/java/android/window/WindowMetricsController.java
index 739cf0e..0d5e37e 100644
--- a/core/java/android/window/WindowMetricsController.java
+++ b/core/java/android/window/WindowMetricsController.java
@@ -75,8 +75,8 @@
/**
* The core implementation to obtain {@link WindowMetrics}
*
- * @param isMaximum {@code true} to obtain {@link WindowManager#getCurrentWindowMetrics()}.
- * {@code false} to obtain {@link WindowManager#getMaximumWindowMetrics()}.
+ * @param isMaximum {@code false} to obtain {@link WindowManager#getCurrentWindowMetrics()}.
+ * {@code true} to obtain {@link WindowManager#getMaximumWindowMetrics()}.
*/
private WindowMetrics getWindowMetricsInternal(boolean isMaximum) {
final Rect bounds;
diff --git a/core/java/android/window/flags/responsible_apis.aconfig b/core/java/android/window/flags/responsible_apis.aconfig
index 94f6503..6ce9725 100644
--- a/core/java/android/window/flags/responsible_apis.aconfig
+++ b/core/java/android/window/flags/responsible_apis.aconfig
@@ -58,6 +58,13 @@
}
flag {
+ name: "bal_additional_start_modes"
+ namespace: "responsible_apis"
+ description: "Introduce additional start modes."
+ bug: "352182359"
+}
+
+flag {
name: "bal_send_intent_with_options"
namespace: "responsible_apis"
description: "Add options parameter to IntentSender.sendIntent."
diff --git a/core/java/com/android/internal/display/RefreshRateSettingsUtils.java b/core/java/com/android/internal/display/RefreshRateSettingsUtils.java
index c23a501..47e4943 100644
--- a/core/java/com/android/internal/display/RefreshRateSettingsUtils.java
+++ b/core/java/com/android/internal/display/RefreshRateSettingsUtils.java
@@ -83,4 +83,32 @@
}
return maxRefreshRate;
}
+
+ /**
+ * Find the highest refresh rate among all the modes of all the built-in/physical displays.
+ *
+ * This method will acquire DisplayManager.mLock, so calling it while holding other locks
+ * should be done with care.
+ * @param context The context
+ * @return The highest refresh rate
+ */
+ public static float findHighestRefreshRateAmongAllBuiltInDisplays(Context context) {
+ final DisplayManager dm = context.getSystemService(DisplayManager.class);
+ final Display[] displays = dm.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED);
+ if (displays.length == 0) {
+ Log.w(TAG, "No valid display devices");
+ return DEFAULT_REFRESH_RATE;
+ }
+
+ float maxRefreshRate = DEFAULT_REFRESH_RATE;
+ for (Display display : displays) {
+ if (display.getType() != Display.TYPE_INTERNAL) continue;
+ for (Display.Mode mode : display.getSupportedModes()) {
+ if (mode.getRefreshRate() > maxRefreshRate) {
+ maxRefreshRate = mode.getRefreshRate();
+ }
+ }
+ }
+ return maxRefreshRate;
+ }
}
diff --git a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
index 82ae76a..ac4c066 100644
--- a/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
+++ b/core/java/com/android/internal/inputmethod/IInputMethodPrivilegedOperations.aidl
@@ -43,7 +43,7 @@
void switchToPreviousInputMethod(in AndroidFuture future /* T=Boolean */);
void switchToNextInputMethod(boolean onlyCurrentIme, in AndroidFuture future /* T=Boolean */);
void shouldOfferSwitchingToNextInputMethod(in AndroidFuture future /* T=Boolean */);
- void onImeSwitchButtonClickFromClient(int displayId, int userId);
+ void onImeSwitchButtonClickFromClient(int displayId);
void notifyUserActionAsync();
void applyImeVisibilityAsync(IBinder showOrHideInputToken, boolean setVisible,
in ImeTracker.Token statsToken);
diff --git a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
index f50f02e..2daf0fd 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java
@@ -378,16 +378,16 @@
}
/**
- * Calls {@link IInputMethodPrivilegedOperations#onImeSwitchButtonClickFromClient(int, int)}
+ * Calls {@link IInputMethodPrivilegedOperations#onImeSwitchButtonClickFromClient(int)}
*/
@AnyThread
- public void onImeSwitchButtonClickFromClient(int displayId, int userId) {
+ public void onImeSwitchButtonClickFromClient(int displayId) {
final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull();
if (ops == null) {
return;
}
try {
- ops.onImeSwitchButtonClickFromClient(displayId, userId);
+ ops.onImeSwitchButtonClickFromClient(displayId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/com/android/internal/widget/MaxHeightFrameLayout.java b/core/java/com/android/internal/widget/MaxHeightFrameLayout.java
new file mode 100644
index 0000000..d65dddd
--- /dev/null
+++ b/core/java/com/android/internal/widget/MaxHeightFrameLayout.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.widget;
+
+import android.annotation.AttrRes;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.Px;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+
+import com.android.internal.R;
+
+/**
+ * This custom subclass of FrameLayout enforces that its calculated height be no larger than the
+ * given maximum height (if any).
+ *
+ * @hide
+ */
+public class MaxHeightFrameLayout extends FrameLayout {
+
+ private int mMaxHeight = Integer.MAX_VALUE;
+
+ public MaxHeightFrameLayout(@NonNull Context context) {
+ this(context, null);
+ }
+
+ public MaxHeightFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public MaxHeightFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public MaxHeightFrameLayout(Context context, AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ final TypedArray a = context.obtainStyledAttributes(
+ attrs, R.styleable.MaxHeightFrameLayout, defStyleAttr, defStyleRes);
+ saveAttributeDataForStyleable(context, R.styleable.MaxHeightFrameLayout,
+ attrs, a, defStyleAttr, defStyleRes);
+
+ setMaxHeight(a.getDimensionPixelSize(R.styleable.MaxHeightFrameLayout_maxHeight,
+ Integer.MAX_VALUE));
+ }
+
+ /**
+ * Gets the maximum height of this view, in pixels.
+ *
+ * @see #setMaxHeight(int)
+ *
+ * @attr ref android.R.styleable#MaxHeightFrameLayout_maxHeight
+ */
+ @Px
+ public int getMaxHeight() {
+ return mMaxHeight;
+ }
+
+ /**
+ * Sets the maximum height this view can have.
+ *
+ * @param maxHeight the maximum height, in pixels
+ *
+ * @see #getMaxHeight()
+ *
+ * @attr ref android.R.styleable#MaxHeightFrameLayout_maxHeight
+ */
+ public void setMaxHeight(@Px int maxHeight) {
+ mMaxHeight = maxHeight;
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ if (MeasureSpec.getSize(heightMeasureSpec) > mMaxHeight) {
+ final int mode = MeasureSpec.getMode(heightMeasureSpec);
+ heightMeasureSpec = MeasureSpec.makeMeasureSpec(mMaxHeight, mode);
+ }
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+}
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 7c62615..c07fd38 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -27,7 +27,6 @@
#include <android_media_audiopolicy.h>
#include <android_os_Parcel.h>
#include <audiomanager/AudioManager.h>
-#include <android-base/properties.h>
#include <binder/IBinder.h>
#include <jni.h>
#include <media/AidlConversion.h>
@@ -42,10 +41,8 @@
#include <system/audio_policy.h>
#include <utils/Log.h>
-#include <thread>
#include <optional>
#include <sstream>
-#include <memory>
#include <vector>
#include "android_media_AudioAttributes.h"
@@ -264,13 +261,6 @@
jfieldID mMixerBehavior;
} gAudioMixerAttributesField;
-static struct {
- jclass clazz;
- jmethodID run;
-} gRunnableClassInfo;
-
-static JavaVM* gVm;
-
static Mutex gLock;
enum AudioError {
@@ -3372,55 +3362,6 @@
return enabled;
}
-class JavaSystemPropertyListener {
- public:
- JavaSystemPropertyListener(JNIEnv* env, jobject javaCallback, std::string sysPropName) :
- mCallback(env->NewGlobalRef(javaCallback)),
- mCachedProperty(android::base::CachedProperty{std::move(sysPropName)}) {
- mListenerThread = std::thread([this]() mutable {
- JNIEnv* threadEnv = GetOrAttachJNIEnvironment(gVm);
- while (!mCleanupSignal.load()) {
- using namespace std::chrono_literals;
- // 1s timeout so this thread can read the cleanup signal to (slowly) be able to
- // be destroyed.
- std::string newVal = mCachedProperty.WaitForChange(1000ms) ?: "";
- if (newVal != "" && mLastVal != newVal) {
- threadEnv->CallVoidMethod(mCallback, gRunnableClassInfo.run);
- mLastVal = std::move(newVal);
- }
- }
- });
- }
-
- ~JavaSystemPropertyListener() {
- mCleanupSignal.store(true);
- mListenerThread.join();
- JNIEnv* env = GetOrAttachJNIEnvironment(gVm);
- env->DeleteGlobalRef(mCallback);
- }
-
- private:
- jobject mCallback;
- android::base::CachedProperty mCachedProperty;
- std::thread mListenerThread;
- std::atomic<bool> mCleanupSignal{false};
- std::string mLastVal = "";
-};
-
-std::vector<std::unique_ptr<JavaSystemPropertyListener>> gSystemPropertyListeners;
-std::mutex gSysPropLock{};
-
-static void android_media_AudioSystem_listenForSystemPropertyChange(JNIEnv *env, jobject thiz,
- jstring sysProp,
- jobject javaCallback) {
- ScopedUtfChars sysPropChars{env, sysProp};
- auto listener = std::make_unique<JavaSystemPropertyListener>(env, javaCallback,
- std::string{sysPropChars.c_str()});
- std::unique_lock _l{gSysPropLock};
- gSystemPropertyListeners.push_back(std::move(listener));
-}
-
-
// ----------------------------------------------------------------------------
#define MAKE_AUDIO_SYSTEM_METHOD(x) \
@@ -3593,12 +3534,7 @@
android_media_AudioSystem_clearPreferredMixerAttributes),
MAKE_AUDIO_SYSTEM_METHOD(supportsBluetoothVariableLatency),
MAKE_AUDIO_SYSTEM_METHOD(setBluetoothVariableLatencyEnabled),
- MAKE_AUDIO_SYSTEM_METHOD(isBluetoothVariableLatencyEnabled),
- MAKE_JNI_NATIVE_METHOD("listenForSystemPropertyChange",
- "(Ljava/lang/String;Ljava/lang/Runnable;)V",
- android_media_AudioSystem_listenForSystemPropertyChange),
-
- };
+ MAKE_AUDIO_SYSTEM_METHOD(isBluetoothVariableLatencyEnabled)};
static const JNINativeMethod gEventHandlerMethods[] =
{MAKE_JNI_NATIVE_METHOD("native_setup", "(Ljava/lang/Object;)V",
@@ -3880,12 +3816,6 @@
gAudioMixerAttributesField.mMixerBehavior =
GetFieldIDOrDie(env, audioMixerAttributesClass, "mMixerBehavior", "I");
- jclass runnableClazz = FindClassOrDie(env, "java/lang/Runnable");
- gRunnableClassInfo.clazz = MakeGlobalRefOrDie(env, runnableClazz);
- gRunnableClassInfo.run = GetMethodIDOrDie(env, runnableClazz, "run", "()V");
-
- LOG_ALWAYS_FATAL_IF(env->GetJavaVM(&gVm) != 0);
-
AudioSystem::addErrorCallback(android_media_AudioSystem_error_callback);
RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods));
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 1a1d83c..809ec63 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -656,9 +656,8 @@
static jlong android_os_Process_getFreeMemory(JNIEnv* env, jobject clazz)
{
- std::array<std::string_view, 2> memFreeTags = {
- ::android::meminfo::SysMemInfo::kMemFree,
- ::android::meminfo::SysMemInfo::kMemCached,
+ std::array<std::string_view, 1> memFreeTags = {
+ ::android::meminfo::SysMemInfo::kMemAvailable,
};
std::vector<uint64_t> mem(memFreeTags.size());
::android::meminfo::SysMemInfo smi;
diff --git a/core/jni/android_view_InputChannel.cpp b/core/jni/android_view_InputChannel.cpp
index d11166f..e874163 100644
--- a/core/jni/android_view_InputChannel.cpp
+++ b/core/jni/android_view_InputChannel.cpp
@@ -16,18 +16,22 @@
#define LOG_TAG "InputChannel-JNI"
-#include "android-base/stringprintf.h"
-#include <nativehelper/JNIHelp.h>
-#include "nativehelper/scoped_utf_chars.h"
+#include "android_view_InputChannel.h"
+
#include <android_runtime/AndroidRuntime.h>
#include <binder/Parcel.h>
-#include <utils/Log.h>
+#include <com_android_input_flags.h>
#include <input/InputTransport.h>
-#include "android_view_InputChannel.h"
+#include <nativehelper/JNIHelp.h>
+#include <utils/Log.h>
+
+#include "android-base/stringprintf.h"
#include "android_os_Parcel.h"
#include "android_util_Binder.h"
-
#include "core_jni_helpers.h"
+#include "nativehelper/scoped_utf_chars.h"
+
+namespace input_flags = com::android::input::flags;
namespace android {
@@ -69,6 +73,9 @@
}
void NativeInputChannel::setDisposeCallback(InputChannelObjDisposeCallback callback, void* data) {
+ if (input_flags::remove_input_channel_from_windowstate()) {
+ return;
+ }
mDisposeCallback = callback;
mDisposeData = data;
}
diff --git a/core/jni/platform/host/HostRuntime.cpp b/core/jni/platform/host/HostRuntime.cpp
index 30c926c..7e2a5ac 100644
--- a/core/jni/platform/host/HostRuntime.cpp
+++ b/core/jni/platform/host/HostRuntime.cpp
@@ -17,6 +17,8 @@
#include <android-base/logging.h>
#include <android-base/properties.h>
#include <android/graphics/jni_runtime.h>
+#include <android_runtime/AndroidRuntime.h>
+#include <jni_wrappers.h>
#include <nativehelper/JNIHelp.h>
#include <nativehelper/jni_macros.h>
#include <unicode/putil.h>
@@ -27,9 +29,6 @@
#include <unordered_map>
#include <vector>
-#include "android_view_InputDevice.h"
-#include "core_jni_helpers.h"
-#include "jni.h"
#ifdef _WIN32
#include <windows.h>
#else
@@ -38,8 +37,6 @@
#include <sys/stat.h>
#endif
-#include <iostream>
-
using namespace std;
/*
@@ -49,12 +46,6 @@
* (see AndroidRuntime.cpp).
*/
-static JavaVM* javaVM;
-static jclass bridge;
-static jclass layoutLog;
-static jmethodID getLogId;
-static jmethodID logMethodId;
-
extern int register_android_os_Binder(JNIEnv* env);
extern int register_libcore_util_NativeAllocationRegistry_Delegate(JNIEnv* env);
@@ -168,28 +159,9 @@
}
}
- if (register_android_graphics_classes(env) < 0) {
- return -1;
- }
-
return 0;
}
-int AndroidRuntime::registerNativeMethods(JNIEnv* env, const char* className,
- const JNINativeMethod* gMethods, int numMethods) {
- return jniRegisterNativeMethods(env, className, gMethods, numMethods);
-}
-
-JNIEnv* AndroidRuntime::getJNIEnv() {
- JNIEnv* env;
- if (javaVM->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) return nullptr;
- return env;
-}
-
-JavaVM* AndroidRuntime::getJavaVM() {
- return javaVM;
-}
-
static vector<string> parseCsv(const string& csvString) {
vector<string> result;
istringstream stream(csvString);
@@ -200,29 +172,6 @@
return result;
}
-void LayoutlibLogger(base::LogId, base::LogSeverity severity, const char* tag, const char* file,
- unsigned int line, const char* message) {
- JNIEnv* env = AndroidRuntime::getJNIEnv();
- jint logPrio = severity;
- jstring tagString = env->NewStringUTF(tag);
- jstring messageString = env->NewStringUTF(message);
-
- jobject bridgeLog = env->CallStaticObjectMethod(bridge, getLogId);
-
- env->CallVoidMethod(bridgeLog, logMethodId, logPrio, tagString, messageString);
-
- env->DeleteLocalRef(tagString);
- env->DeleteLocalRef(messageString);
- env->DeleteLocalRef(bridgeLog);
-}
-
-void LayoutlibAborter(const char* abort_message) {
- // Layoutlib should not call abort() as it would terminate Studio.
- // Throw an exception back to Java instead.
- JNIEnv* env = AndroidRuntime::getJNIEnv();
- jniThrowRuntimeException(env, "The Android framework has encountered a fatal error");
-}
-
// This method has been copied/adapted from system/core/init/property_service.cpp
// If the ro.product.cpu.abilist* properties have not been explicitly
// set, derive them from ro.system.product.cpu.abilist* properties.
@@ -311,62 +260,49 @@
#endif
}
-static bool init_icu(const char* dataPath) {
- void* addr = mmapFile(dataPath);
- UErrorCode err = U_ZERO_ERROR;
- udata_setCommonData(addr, &err);
- if (err != U_ZERO_ERROR) {
- return false;
- }
- return true;
-}
-
-// Creates an array of InputDevice from key character map files
-static void init_keyboard(JNIEnv* env, const vector<string>& keyboardPaths) {
- jclass inputDevice = FindClassOrDie(env, "android/view/InputDevice");
- jobjectArray inputDevicesArray =
- env->NewObjectArray(keyboardPaths.size(), inputDevice, nullptr);
- int keyboardId = 1;
-
- for (const string& path : keyboardPaths) {
- base::Result<std::shared_ptr<KeyCharacterMap>> charMap =
- KeyCharacterMap::load(path, KeyCharacterMap::Format::BASE);
-
- InputDeviceInfo info = InputDeviceInfo();
- info.initialize(keyboardId, 0, 0, InputDeviceIdentifier(),
- "keyboard " + std::to_string(keyboardId), true, false,
- ui::LogicalDisplayId::DEFAULT);
- info.setKeyboardType(AINPUT_KEYBOARD_TYPE_ALPHABETIC);
- info.setKeyCharacterMap(*charMap);
-
- jobject inputDeviceObj = android_view_InputDevice_create(env, info);
- if (inputDeviceObj) {
- env->SetObjectArrayElement(inputDevicesArray, keyboardId - 1, inputDeviceObj);
- env->DeleteLocalRef(inputDeviceObj);
+// Loads the ICU data file from the location specified in the system property ro.icu.data.path
+static void loadIcuData() {
+ string icuPath = base::GetProperty("ro.icu.data.path", "");
+ if (!icuPath.empty()) {
+ // Set the location of ICU data
+ void* addr = mmapFile(icuPath.c_str());
+ UErrorCode err = U_ZERO_ERROR;
+ udata_setCommonData(addr, &err);
+ if (err != U_ZERO_ERROR) {
+ ALOGE("Unable to load ICU data\n");
}
- keyboardId++;
}
-
- if (bridge == nullptr) {
- bridge = FindClassOrDie(env, "com/android/layoutlib/bridge/Bridge");
- bridge = MakeGlobalRefOrDie(env, bridge);
- }
- jmethodID setInputManager = GetStaticMethodIDOrDie(env, bridge, "setInputManager",
- "([Landroid/view/InputDevice;)V");
- env->CallStaticVoidMethod(bridge, setInputManager, inputDevicesArray);
- env->DeleteLocalRef(inputDevicesArray);
}
-} // namespace android
+static int register_android_core_classes(JNIEnv* env) {
+ jclass system = FindClassOrDie(env, "java/lang/System");
+ jmethodID getPropertyMethod =
+ GetStaticMethodIDOrDie(env, system, "getProperty",
+ "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
-using namespace android;
+ // Get the names of classes that need to register their native methods
+ auto nativesClassesJString =
+ (jstring)env->CallStaticObjectMethod(system, getPropertyMethod,
+ env->NewStringUTF("core_native_classes"),
+ env->NewStringUTF(""));
+ const char* nativesClassesArray = env->GetStringUTFChars(nativesClassesJString, nullptr);
+ string nativesClassesString(nativesClassesArray);
+ vector<string> classesToRegister = parseCsv(nativesClassesString);
+ env->ReleaseStringUTFChars(nativesClassesJString, nativesClassesArray);
+
+ if (register_jni_procs(gRegJNIMap, classesToRegister, env) < 0) {
+ return JNI_ERR;
+ }
+
+ return 0;
+}
// Called right before aborting by LOG_ALWAYS_FATAL. Print the pending exception.
void abort_handler(const char* abort_message) {
ALOGE("About to abort the process...");
- JNIEnv* env = NULL;
- if (javaVM->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
+ JNIEnv* env = AndroidRuntime::getJNIEnv();
+ if (env == nullptr) {
ALOGE("vm->GetEnv() failed");
return;
}
@@ -377,107 +313,98 @@
ALOGE("Aborting because: %s", abort_message);
}
+// ------------------ Host implementation of AndroidRuntime ------------------
+
+/*static*/ JavaVM* AndroidRuntime::mJavaVM;
+
+/*static*/ int AndroidRuntime::registerNativeMethods(JNIEnv* env, const char* className,
+ const JNINativeMethod* gMethods,
+ int numMethods) {
+ return jniRegisterNativeMethods(env, className, gMethods, numMethods);
+}
+
+/*static*/ JNIEnv* AndroidRuntime::getJNIEnv() {
+ JNIEnv* env;
+ JavaVM* vm = AndroidRuntime::getJavaVM();
+ if (vm->GetEnv((void**)&env, JNI_VERSION_1_6) != JNI_OK) {
+ return nullptr;
+ }
+ return env;
+}
+
+/*static*/ JavaVM* AndroidRuntime::getJavaVM() {
+ return mJavaVM;
+}
+
+/*static*/ int AndroidRuntime::startReg(JNIEnv* env) {
+ if (register_android_core_classes(env) < 0) {
+ return JNI_ERR;
+ }
+ if (register_android_graphics_classes(env) < 0) {
+ return JNI_ERR;
+ }
+ return 0;
+}
+
+void AndroidRuntime::onVmCreated(JNIEnv* env) {
+ env->GetJavaVM(&mJavaVM);
+}
+
+void AndroidRuntime::onStarted() {
+ property_initialize_ro_cpu_abilist();
+ loadIcuData();
+
+ // Use English locale for number format to ensure correct parsing of floats when using strtof
+ setlocale(LC_NUMERIC, "en_US.UTF-8");
+}
+
+void AndroidRuntime::start(const char* className, const Vector<String8>& options, bool zygote) {
+ JNIEnv* env = AndroidRuntime::getJNIEnv();
+ // Register native functions.
+ if (startReg(env) < 0) {
+ ALOGE("Unable to register all android native methods\n");
+ }
+ onStarted();
+}
+
+AndroidRuntime::AndroidRuntime(char* argBlockStart, const size_t argBlockLength)
+ : mExitWithoutCleanup(false), mArgBlockStart(argBlockStart), mArgBlockLength(argBlockLength) {
+ init_android_graphics();
+}
+
+AndroidRuntime::~AndroidRuntime() {}
+
+// Version of AndroidRuntime to run on host
+class HostRuntime : public AndroidRuntime {
+public:
+ HostRuntime() : AndroidRuntime(nullptr, 0) {}
+
+ void onVmCreated(JNIEnv* env) override {
+ AndroidRuntime::onVmCreated(env);
+ // initialize logging, so ANDROD_LOG_TAGS env variable is respected
+ android::base::InitLogging(nullptr, android::base::StderrLogger, abort_handler);
+ }
+
+ void onStarted() override {
+ AndroidRuntime::onStarted();
+ }
+};
+
+} // namespace android
+
+using namespace android;
+
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) {
- javaVM = vm;
JNIEnv* env = nullptr;
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
return JNI_ERR;
}
- __android_log_set_aborter(abort_handler);
+ Vector<String8> args;
+ HostRuntime runtime;
- init_android_graphics();
-
- // Configuration is stored as java System properties.
- // Get a reference to System.getProperty
- jclass system = FindClassOrDie(env, "java/lang/System");
- jmethodID getPropertyMethod =
- GetStaticMethodIDOrDie(env, system, "getProperty",
- "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
-
- // Java system properties that contain LayoutLib config. The initial values in the map
- // are the default values if the property is not specified.
- std::unordered_map<std::string, std::string> systemProperties =
- {{"core_native_classes", ""},
- {"register_properties_during_load", ""},
- {"icu.data.path", ""},
- {"use_bridge_for_logging", ""},
- {"keyboard_paths", ""}};
-
- for (auto& [name, defaultValue] : systemProperties) {
- jstring propertyString =
- (jstring)env->CallStaticObjectMethod(system, getPropertyMethod,
- env->NewStringUTF(name.c_str()),
- env->NewStringUTF(defaultValue.c_str()));
- const char* propertyChars = env->GetStringUTFChars(propertyString, 0);
- systemProperties[name] = string(propertyChars);
- env->ReleaseStringUTFChars(propertyString, propertyChars);
- }
- // Get the names of classes that need to register their native methods
- vector<string> classesToRegister = parseCsv(systemProperties["core_native_classes"]);
-
- if (systemProperties["register_properties_during_load"] == "true") {
- // Set the system properties first as they could be used in the static initialization of
- // other classes
- if (register_android_os_SystemProperties(env) < 0) {
- return JNI_ERR;
- }
- classesToRegister.erase(find(classesToRegister.begin(), classesToRegister.end(),
- "android.os.SystemProperties"));
- bridge = FindClassOrDie(env, "com/android/layoutlib/bridge/Bridge");
- bridge = MakeGlobalRefOrDie(env, bridge);
- jmethodID setSystemPropertiesMethod =
- GetStaticMethodIDOrDie(env, bridge, "setSystemProperties", "()V");
- env->CallStaticVoidMethod(bridge, setSystemPropertiesMethod);
- property_initialize_ro_cpu_abilist();
- }
-
- if (register_jni_procs(gRegJNIMap, classesToRegister, env) < 0) {
- return JNI_ERR;
- }
-
- if (!systemProperties["icu.data.path"].empty()) {
- // Set the location of ICU data
- bool icuInitialized = init_icu(systemProperties["icu.data.path"].c_str());
- if (!icuInitialized) {
- return JNI_ERR;
- }
- }
-
- if (systemProperties["use_bridge_for_logging"] == "true") {
- layoutLog = FindClassOrDie(env, "com/android/ide/common/rendering/api/ILayoutLog");
- layoutLog = MakeGlobalRefOrDie(env, layoutLog);
- logMethodId = GetMethodIDOrDie(env, layoutLog, "logAndroidFramework",
- "(ILjava/lang/String;Ljava/lang/String;)V");
- if (bridge == nullptr) {
- bridge = FindClassOrDie(env, "com/android/layoutlib/bridge/Bridge");
- bridge = MakeGlobalRefOrDie(env, bridge);
- }
- getLogId = GetStaticMethodIDOrDie(env, bridge, "getLog",
- "()Lcom/android/ide/common/rendering/api/ILayoutLog;");
- android::base::SetLogger(LayoutlibLogger);
- android::base::SetAborter(LayoutlibAborter);
- } else {
- // initialize logging, so ANDROD_LOG_TAGS env variable is respected
- android::base::InitLogging(nullptr, android::base::StderrLogger);
- }
-
- // Use English locale for number format to ensure correct parsing of floats when using strtof
- setlocale(LC_NUMERIC, "en_US.UTF-8");
-
- if (!systemProperties["keyboard_paths"].empty()) {
- vector<string> keyboardPaths = parseCsv(systemProperties["keyboard_paths"]);
- init_keyboard(env, keyboardPaths);
- } else {
- fprintf(stderr, "Skip initializing keyboard\n");
- }
+ runtime.onVmCreated(env);
+ runtime.start("HostRuntime", args, false);
return JNI_VERSION_1_6;
}
-
-JNIEXPORT void JNI_OnUnload(JavaVM* vm, void*) {
- JNIEnv* env = nullptr;
- vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6);
- env->DeleteGlobalRef(bridge);
- env->DeleteGlobalRef(layoutLog);
-}
diff --git a/core/res/res/drawable/ic_ime_switcher_new.xml b/core/res/res/drawable/ic_ime_switcher_new.xml
new file mode 100644
index 0000000..04f4a25
--- /dev/null
+++ b/core/res/res/drawable/ic_ime_switcher_new.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="20dp"
+ android:height="20dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"
+ android:fillColor="#FFFFFFFF"/>
+</vector>
diff --git a/core/res/res/drawable/input_method_switch_button.xml b/core/res/res/drawable/input_method_switch_button.xml
new file mode 100644
index 0000000..396d81e
--- /dev/null
+++ b/core/res/res/drawable/input_method_switch_button.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+ android:insetTop="6dp"
+ android:insetBottom="6dp">
+ <ripple android:color="?android:attr/colorControlHighlight">
+ <item android:id="@android:id/mask">
+ <shape android:shape="rectangle">
+ <corners android:radius="28dp"/>
+ <solid android:color="@color/white"/>
+ </shape>
+ </item>
+
+ <item>
+ <shape android:shape="rectangle">
+ <corners android:radius="28dp"/>
+ <solid android:color="@color/transparent"/>
+ <stroke android:color="?attr/materialColorPrimary"
+ android:width="1dp"/>
+ <padding android:left="16dp"
+ android:top="8dp"
+ android:right="16dp"
+ android:bottom="8dp"/>
+ </shape>
+ </item>
+ </ripple>
+</inset>
diff --git a/core/res/res/drawable/input_method_switch_item_background.xml b/core/res/res/drawable/input_method_switch_item_background.xml
new file mode 100644
index 0000000..eb7a246
--- /dev/null
+++ b/core/res/res/drawable/input_method_switch_item_background.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/list_highlight_material">
+ <item android:id="@id/mask">
+ <shape android:shape="rectangle">
+ <corners android:radius="28dp"/>
+ <solid android:color="@color/white"/>
+ </shape>
+ </item>
+
+ <item>
+ <selector>
+ <item android:state_activated="true">
+ <shape android:shape="rectangle">
+ <corners android:radius="28dp"/>
+ <solid android:color="?attr/materialColorSecondaryContainer"/>
+ </shape>
+ </item>
+ </selector>
+ </item>
+</ripple>
diff --git a/core/res/res/layout/input_method_switch_dialog_new.xml b/core/res/res/layout/input_method_switch_dialog_new.xml
new file mode 100644
index 0000000..5a4d6b1
--- /dev/null
+++ b/core/res/res/layout/input_method_switch_dialog_new.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <com.android.internal.widget.MaxHeightFrameLayout
+ android:layout_width="320dp"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:maxHeight="373dp">
+
+ <com.android.internal.widget.RecyclerView
+ android:id="@+id/list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingVertical="8dp"
+ android:clipToPadding="false"
+ android:layoutManager="com.android.internal.widget.LinearLayoutManager"/>
+
+ </com.android.internal.widget.MaxHeightFrameLayout>
+
+ <LinearLayout
+ style="?android:attr/buttonBarStyle"
+ android:id="@+id/button_bar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:paddingHorizontal="16dp"
+ android:paddingTop="8dp"
+ android:paddingBottom="16dp"
+ android:visibility="gone">
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"/>
+
+ <Button
+ style="?attr/buttonBarButtonStyle"
+ android:id="@+id/button1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/input_method_switch_button"
+ android:layout_gravity="end"
+ android:text="@string/input_method_language_settings"
+ android:fontFamily="google-sans-text"
+ android:textAppearance="?attr/textAppearance"
+ android:visibility="gone"/>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/core/res/res/layout/input_method_switch_item_new.xml b/core/res/res/layout/input_method_switch_item_new.xml
new file mode 100644
index 0000000..16a97c4
--- /dev/null
+++ b/core/res/res/layout/input_method_switch_item_new.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingHorizontal="16dp"
+ android:paddingBottom="8dp">
+
+ <View
+ android:id="@+id/divider"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="?attr/materialColorSurfaceVariant"
+ android:layout_marginStart="20dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="24dp"
+ android:layout_marginBottom="12dp"
+ android:visibility="gone"/>
+
+ <TextView
+ android:id="@+id/header_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:fontFamily="google-sans-text"
+ android:textAppearance="?attr/textAppearance"
+ android:textColor="?attr/materialColorPrimary"
+ android:visibility="gone"/>
+
+ <LinearLayout
+ android:id="@+id/list_item"
+ android:layout_width="match_parent"
+ android:layout_height="72dp"
+ android:background="@drawable/input_method_switch_item_background"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingStart="20dp"
+ android:paddingEnd="24dp">
+
+ <LinearLayout
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:gravity="start|center_vertical"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:singleLine="true"
+ android:fontFamily="google-sans-text"
+ android:textAppearance="?attr/textAppearanceListItem"/>
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/image"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:gravity="center_vertical"
+ android:layout_marginStart="12dp"
+ android:src="@drawable/ic_check_24dp"
+ android:tint="?attr/materialColorOnSurface"
+ android:visibility="gone"/>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 8aeffbe..5b6de34 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -2443,4 +2443,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Wissel gebruiker"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Demp"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tik om klank te demp"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 5edfe13..7b40f30 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ገመድ-አልባ debuggingን ለማሰናከል ይምረጡ።"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"የሙከራ ጥቅል ሁነታ ነቅቷል"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"የመሞከሪያ ጥቅል ሁነታን ለማሰናከል የፋብሪካ ዳግም ቅንብርን ይሞክሩ።"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"የተሳሳተ HSUM ግንብ ውቅረት"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"የዚህ መሣሪያ የበይነገፅ-አልባ ሥርዓት ተጠቃሚ ሁነታ ሁኔታ ከግንብ ውቅረቱ ይለያል። እባክዎ መሣሪያውን የፋብሪካ ዳግም ያስጀምሩት።"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ተከታታይ ኮንሶል ነቅቷል"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"አፈጻጸም ተጽዕኖ አርፎበታል። ለማሰናከል፣ bootloader ን ይፈትሹ።"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"የሙከራ MTE ነቅቷል።"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> በርቷል።"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ጠፍተዋል።"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"የድምጽ መጠን ቁልፎቹን ይልቀቁ። <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ን ለማብራት ሁለቱንም የድምጽ መጠን ቁልፎች በድጋሚ ለ3 ሰከንዶች ተጭነው ይያዙ።"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ባህሪ ይምረጡ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ባህሪ ይምረጡ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ባህሪ ይምረጡ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"በቀጣይ ጊዜ የተደራሽነት አዝራሩን መታ ሲያደርጉ ባህሪው ይከፈታል"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"በቀጣይ ጊዜ ይህን አቋራጭ ሲመለከቱ ባህሪው ይከፈታል። ከማያ ገፅዎ ታች በ2 ጣቶች ወደላይ ያንሸራትቱ እና በፍጥነት ይልቀቁ።"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"በቀጣይ ጊዜ ይህን አቋራጭ ሲመለከቱ ባህሪው ይከፈታል። ከማያ ገፅዎ ታች ወደላይ በ3 ጣቶች ያንሸራትቱ እና ወዲያው ይልቀቁ።"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"ፒን በጣም አጭር ነው። ቢያንስ 4 አሃዝ መሆን አለበት።"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"ቆይተው እንደገና ይሞክሩ"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"ሙሉ ገፅ በማሳየት ላይ"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ለመውጣት ከማያ ገፅዎ አናት ወደታች ያንሸራትቱ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ገባኝ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ለተሻለ ዕይታ ያሽከርክሩ"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ለተሻለ ዕይታ <xliff:g id="NAME">%s</xliff:g>ን በሙሉ ገጽ ዕይታ ይክፈቱ"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ተጠቃሚ ቀይር"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ድምፀ-ከል አድርግ"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ድምፀ-ከል አድርግ ለማድረግ መታ ያድርጉ"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index e0d1949..e17e0b6 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1415,10 +1415,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"انقر لإيقاف ميزة \"تصحيح الأخطاء اللاسلكي\""</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"تم تفعيل وضع \"مفعّل الاختبار\""</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"يمكنك إجراء إعادة ضبط على الإعدادات الأصلية لإيقاف وضع \"مفعِّل اختبار\"."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"إعدادات التصميم الخاصة بوضع HSUM غير صحيحة"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"إنّ حالة \"وضع النظام بلا واجهة مستخدم رسومية\" (Headless System User Mode) على هذا الجهاز تختلف عن إعدادات تصميمه. يُرجى إعادة ضبط الجهاز على الإعدادات الأصلية."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"وحدة التحكّم التسلسلية مفعّلة"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"الأداء متأثر. لإيقاف وحدة التحكّم، تحقّق من برنامج الإقلاع."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"الميزة التجريبية إضافة وضع علامات الذاكرة (MTE) مفعّلة"</string>
@@ -1763,12 +1761,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم تفعيل <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم إيقاف <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ارفع إصبعَيك عن مفتاحَي مستوى الصوت. لتفعيل خدمة \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"، اضغط مع الاستمرار على كلا مفتاحَي مستوى الصوت مجددًا لمدة 3 ثوانٍ."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"اختيار ميزة"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"اختيار ميزة"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"اختيار ميزة"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"سيتم فتح الميزة عند النقر على زر أدوات تسهيل الاستخدام في المرة القادمة"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"سيتم فتح الميزة عند استخدام هذا الاختصار في المرة القادمة. مرِّر سريعًا من أسفل الشاشة إلى أعلاها باستخدام إصبعَين وارفعما بعدها بسرعة."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"سيتم فتح الميزة عند استخدام هذا الاختصار في المرة القادمة. مرِّر سريعًا من أسفل الشاشة إلى أعلاها باستخدام 3 أصابع وارفع أصابعك بعدها بسرعة."</string>
@@ -1894,8 +1889,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"رقم التعريف الشخصي أقصر مما يلزم، يجب ألا يقل عن ٤ أرقام. "</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"أعد المحاولة لاحقًا"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"جارٍ العرض بملء الشاشة"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"للخروج، مرِّر سريعًا من أسفل الشاشة لأعلاها"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"حسنًا"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"يمكنك تدوير الجهاز لرؤية شاشة معاينة الكاميرا بشكل أوضح."</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"عليك فتح \"<xliff:g id="NAME">%s</xliff:g>\" في وضع ملء الشاشة لرؤية شاشة معاينة الكاميرا بشكل أوضح."</string>
@@ -2447,4 +2441,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"تبديل المستخدم"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"كتم الصوت"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"انقر لكتم الصوت"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index b9a71b3..2642a32 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ৱায়াৰলেচ ডি\'বাগিং অক্ষম কৰিবলৈ বাছনি কৰক।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"টেষ্ট হাৰনেছ ম’ড সক্ষম কৰা আছে"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"টেষ্ট হাৰনেছ ম’ড অক্ষম কৰিবলৈ ফেক্টৰী ৰিছেট কৰক।"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"ভুল HSUM বিল্ডৰ কনফিগাৰেশ্বন"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"এই ডিভাইচৰ পৰিধীয় ডিভাইচহীন ছিষ্টেম ব্যৱহাৰকাৰী ম’ড স্থিতি ইয়াৰ বিল্ডৰ কনফিগাৰেশ্বনৰ পৰা পৃথক। অনুগ্ৰহ কৰি ডিভাইচটো ফেক্টৰী ৰিছেট কৰক।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ক্ৰমিক কনছ’ল সক্ষম কৰা আছে"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"কাৰ্যক্ষমতা প্ৰভাৱিত হৈছে। অক্ষম কৰিবলৈ বুটল’ডাৰ পৰীক্ষা কৰক।"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"পৰীক্ষামূলক MTE সক্ষম কৰা হ\'ল"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰা হ\'ল।"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধৰি ৰাখিছিল। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অফ কৰা হ\'ল।"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ভলিউম কী এৰি দিয়ক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰিবলৈ, দুয়োটা ভলিউম কী পুনৰ ৩ ছেকেণ্ডৰ বাবে টিপি হেঁচি ৰাখক।"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"এটা সুবিধা বাছনি কৰক"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"এটা সুবিধা বাছনি কৰক"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"এটা সুবিধা বাছনি কৰক"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"আপুনি ইয়াৰ পাছত সাধ্য-সুবিধা বুটামটোত টিপিলে সুবিধাটো খোল খাব"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ইয়াৰ পাছত আপুনি এই শ্বৰ্টকাটটো ব্যৱহাৰ কৰিলে সুবিধাটো খোল খাব। আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ২ টা আঙুলিৰে ছোৱাইপ কৰি আঙুলিকেইটা দ্ৰুতভাৱে উঠাই দিয়ক।"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ইয়াৰ পাছত আপুনি এই শ্বৰ্টকাটটো ব্যৱহাৰ কৰিলে সুবিধাটো খোল খাব। আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ৩ টা আঙুলিৰে ছোৱাইপ কৰি আঙুলিকেইটা দ্ৰুতভাৱে উঠাই দিয়ক।"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"পিনটো অতি চুটি। কমেও ৪টা সংখ্যাৰ হ\'ব লাগিব।"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"পাছত আকৌ চেষ্টা কৰক"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"স্ক্ৰীন পূৰ্ণৰূপত চাই আছে"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"বাহিৰ হ’বলৈ, আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে ওপৰৰ পৰা তললৈ ছোৱাইপ কৰক"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"বুজি পালোঁ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ভালকৈ চাবলৈ ঘূৰাওক"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ভালকৈ চাবলৈ <xliff:g id="NAME">%s</xliff:g> পূৰ্ণ স্ক্ৰীনত খোলক"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ব্যৱহাৰকাৰী সলনি কৰক"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"মিউট কৰক"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ধ্বনি মিউট কৰিবলৈ টিপক"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"ব্ৰাউজাৰ"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"সম্পৰ্ক"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ইমেইল"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"এছএমএছ"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"সংগীত"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"কেলেণ্ডাৰ"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"কেলকুলেটৰ"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"মেপ"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"এপ্লিকেশ্বন"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 764780f..90db2d4 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"WiFi sazlamasını deaktiv etmək üçün seçin."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Rejimi aktivdir"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Test Rejimini deaktiv etmək üçün fabrika ayarlarına sıfırlayın."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Yanlış HSUM qurma konfiqurasiyası"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Bu cihazın Monitorsuz sistem üzrə istifadəçi rejimindəki vəziyyəti onun konfiqurasiyasından fərqlənir. Cihazda zavod sıfırlaması edin."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Ardıcıl konsol aktiv edildi"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performans təsirlənir. Söndürməkçün yükləyicini yoxlayın."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Eksperimental MTE aktiv edilib"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktiv edildi."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Səs səviyyəsi düymələrinə basılaraq saxlanıb. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> deaktiv edilib."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Səs düymələrini buraxın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> xidmətini aktiv etmək üçün hər iki səs düyməsinə yenidən 3 saniyə basıb saxlayın."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Funksiya seçin"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Funksiya seçin"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Funksiya seçin"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Növbəti dəfə xüsusi imkanlar düyməsinə toxunduğunuz zaman funksiya açılacaq"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Növbəti dəfə bu qısayoldan istifadə etdiyiniz zaman funksiya açılacaq. Ekranın aşağısından 2 barmaq ilə yuxarı çəkin və tez buraxın."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Növbəti dəfə bu qısayoldan istifadə etdiyiniz zaman funksiya açılacaq. Ekranın aşağısından 3 barmaq ilə yuxarı çəkin və tez buraxın."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PİN çox qısadır. Ən azı 4 rəqəm olmalıdır."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Daha sonra yenidən yoxlayın."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Tam ekrana baxış"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Çıxmaq üçün ekranın yuxarısından aşağı çəkin"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Anladım"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Daha yaxşı görünüş üçün fırladın"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Yaxşı görmək üçün <xliff:g id="NAME">%s</xliff:g> tətbiqini tam ekranda açın"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"İstifadəçini dəyişin"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Susdurun"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Susdurmaq üçün toxunun"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index aad68d3..a2a885b 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Izaberite da biste onemogućili bežično otklanjanje grešaka."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen je režim probnog korišćenja"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Obavite resetovanje na fabrička podešavanja da biste onemogućili režim probnog korišćenja."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Pogrešna HSUM konfiguracija"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Status korisničkog režima sistema bez grafičkog korisničkog interfejsa za ovaj uređaj razlikuje se od njegove konfiguracije. Resetujte uređaj na fabrička podešavanja."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola je omogućena"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performanse su smanjene. Da biste onemogući konzolu, proverite pokretački program."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Eksperimentalni MTE je omogućen"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Pustite tastere za jačinu zvuka. Da biste uključili <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ponovo pritisnite i zadržite oba tastera za jačinu zvuka 3 sekunde."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Izaberite funkciju"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Izaberite funkciju"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Izaberite funkciju"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funkcija će se otvoriti kada sledeći put dodirnete dugme Pristupačnost"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija će se otvoriti kada sledeći put budete koristili ovu prečicu. Prevucite nagore od dna ekrana sa 2 prsta i brzo pustite."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija će se otvoriti kada sledeći put budete koristili ovu prečicu. Prevucite nagore od dna ekrana sa 3 prsta i brzo pustite."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN je prekratak. Mora da ima bar 4 cifre."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Probajte ponovo kasnije"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Prikazuje se ceo ekran"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Da biste zatvorili, prevucite nadole od vrha ekrana"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Važi"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotirajte radi boljeg prikaza"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Otvorite aplikaciju <xliff:g id="NAME">%s</xliff:g> preko celog ekrana da biste bolje videli"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Promeni korisnika"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Isključi zvuk"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Dodirnite da biste isključili zvuk"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 993457f..18d5698a 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Выберыце, каб выключыць адладку па Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Тэставы рэжым уключаны"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Каб выключыць тэставы рэжым, скіньце налады да заводскіх значэнняў."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Канфігурацыя рэжыму кансольнага сістэмнага карыстальніка не адпавядае зборцы"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Стан рэжыму кансольнага сістэмнага карыстальніка на гэтай прыладзе не адпавядае канфігурацыі яе зборкі. Скіньце прыладу да заводскіх налад."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Паслядоўная кансоль уключана"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Паказчык прадукцыйнасці змяніўся. Каб выключыць кансоль, праверце загрузчык."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Эксперыментальнае пашырэнне тэгаў памяці (MTE) уключана"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Клавішы гучнасці ўтрымліваліся націснутымі. Уключана служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Клавішы гучнасці ўтрымліваліся націснутымі. Служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" выключана."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Адпусціце клавішы гучнасці. Каб уключыць сэрвіс \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\", націсніце абедзве клавішы гучнасці яшчэ раз і ўтрымлівайце іх на працягу 3 секунд."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Выберыце функцыю"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Выберыце функцыю"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Выберыце функцыю"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Функцыя адкрыецца, калі вы наступным разам націснеце на кнопку спецыяльных магчымасцей"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функцыя адкрыецца, калі вы наступным разам выкарыстаеце гэты хуткі доступ. Правядзіце двума пальцамі ад нізу экрана ўверх і хутка адпусціце."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функцыя адкрыецца, калі вы наступным разам выкарыстаеце гэты хуткі доступ. Правядзіце трыма пальцамі ад нізу экрана ўверх і хутка адпусціце."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-код занадта кароткі. Павінен змяшчаць не менш за 4 лічбы."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Паўтарыце спробу пазней"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Прагляд у поўнаэкранным рэжыме"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Каб выйсці, правядзіце пальцам уніз ад верхняга краю экрана"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Зразумела"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Павярнуць для лепшага прагляду"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Для больш зручнага прагляду адкрыйце праграму \"<xliff:g id="NAME">%s</xliff:g>\", выкарыстоўваючы поўнаэкранны рэжым"</string>
@@ -2445,4 +2439,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Змяніць карыстальніка"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Выключыць гук"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Націсніце, каб выключыць гук"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 3360025..ea49f52 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Изберете, за да деактивирате безжичното отстраняване на грешки."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Режимът за тестова среда е активиран"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Възстановете фабричните настройки, за да деактивирате режима за тестова среда."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Грешна конфигурация на компилацията за режима на потребител на система без графичен потребителски интерфейс"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Състоянието на устройството в режима на потребител на система без графичен потребителски интерфейс се различава от това в конфигурацията на компилация. Моля, възстановете фабричните настройки на устройството."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Серийната конзола е активирана"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ефективността е засегната. За да деактивирате, проверете програмата за първоначално зареждане."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Експерименталното разширение MTE е активирано"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е включена."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е изключена."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Освободете бутоните за силата на звука. За да включите <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, отново натиснете двата бутона за силата на звука и задръжте за 3 секунди."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Изберете функция"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Изберете функция"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Изберете функция"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Функцията ще се отвори при следващото докосване бутона за достъпност"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функцията ще се отвори при следващото използване на този пряк път. Прекарайте 2 пръста нагоре от долната част на екрана и бързо освободете."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функцията ще се отвори при следващото използване на този пряк път. Прекарайте 3 пръста нагоре от долната част на екрана и бързо освободете."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"ПИН кодът е твърде кратък. Трябва да е поне 4 цифри."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Опитайте отново по-късно"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Изглед на цял екран"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"За изход плъзнете надолу от горната част на екрана"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Разбрах"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Завъртете за по-добър изглед"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Отворете <xliff:g id="NAME">%s</xliff:g> на цял екран за по-добър изглед"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Смяна на потребителя"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Спиране на звука"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Докоснете, за да спрете звука"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 1a7fc6b..3548993 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ওয়্যারলেস ডিবাগিং বন্ধ করতে বেছে নিন।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"টেস্ট হারনেস মোড চালু আছে"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"টেস্ট হারনেস মোড বন্ধ করতে ফ্যাক্টরি রিসেট করুন।"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM বিল্ড কনফিগারেশন ভুল আছে"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"এই ডিভাইসের হেডলেস সিস্টেম ইউজার মোড স্ট্যাটাস, তার বিল্ড কনফিগারেশনের থেকে আলাদা। আপনার ডিভাইস ফ্যাক্টরি রিসেট করুন।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"সিরিয়াল কনসোল চালু করা হয়েছে"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"পারফর্ম্যান্সে এর প্রভাব পড়বে। চালানো বন্ধ করতে \'বুটলোডার\' প্রোগ্রামে এটিকে চেক করে দেখুন।"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"পরীক্ষামূলক MTE চালু আছে"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করা হয়েছে।"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> বন্ধ করা হয়েছে।"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ভলিউম \'কী\' রিলিজ করুন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করুন, দু\'টি ভলিউম \'কী\' আবার প্রেস করে ৩ সেকেন্ড ধরে রাখুন।"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ফিচার বেছে নিন"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ফিচার বেছে নিন"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ফিচার বেছে নিন"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"পরের বার অ্যাক্সেসিবিলিটি বোতামে ট্যাপ করলে, ফিচারটি চালু হয়ে যাবে"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"পরের বার এই শর্টকাট ব্যবহার করলে, ফিচারটি চালু হয়ে যাবে। ২টি আঙ্গুল দিয়ে স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করে দ্রুত ছেড়ে দিন।"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"পরের বার এই শর্টকাট ব্যবহার করলে, ফিচারটি চালু হয়ে যাবে। ৩টি আঙ্গুল দিয়ে স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করে দ্রুত ছেড়ে দিন।"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"পিন খুবই ছোট৷ এটিকে কমপক্ষে ৪ সংখ্যার হতে হবে৷"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"পরে আবার চেষ্টা করুন"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"পূর্ণ স্ক্রিনে দেখা হচ্ছে"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"বেরিয়ে আসতে, আপনার স্ক্রিনের একেবারে উপর থেকে নিচের দিকে সোয়াইপ করুন"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"বুঝেছি"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"আরও ভাল ক্যামেরা ভিউ পাওয়ার জন্য ঘোরান"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"আরও ভাল ভিউয়ের জন্য ফুল স্ক্রিনে <xliff:g id="NAME">%s</xliff:g> খুলুন"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ব্যবহারকারী পাল্টান"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"মিউট করুন"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"সাউন্ড মিউট করতে ট্যাপ করুন"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 37bb750..eb66410 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Odaberite da onemogućite bežično otklanjanje grešaka."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen način rada okvira za testiranje"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Izvršite vraćanje na fabričke postavke da onemogućite način rada okvira za testiranje."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Pogrešna konfiguracija HSUM-a"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Stanje korisnika sistema bez grafičkog korisničkog interfejsa se razlikuje od njegove konfiguracije. Vratite uređaj na fabričke postavke."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola omogućena"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performanse su smanjene. Da onemogućite, provjerite program za učitavanje operativnog sistema."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Eksperimentalni MTE je omogućen"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Pustite tipke za jačinu zvuka. Da uključite uslugu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ponovo pritisnite i zadržite obje tipke za jačinu zvuka 3 sekunde."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Odaberite funkciju"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Odaberite funkciju"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Odaberite funkciju"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funkcija će se otvoriti sljedeći put kada dodirnete dugme za pristupačnost"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija će se otvoriti sljedeći put kada upotrijebite ovu prečicu. Prevucite s 2 prsta s dna ekrana i brzo pustite."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija će se otvoriti sljedeći put kada upotrijebite ovu prečicu. Prevucite s 3 prsta s dna ekrana i brzo pustite."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN je prekratak. Mora imati najmanje 4 cifre."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Pokušajte ponovo kasnije."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Prikazuje se cijeli ekran"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Da izađete, prevucite s vrha ekrana nadolje"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Razumijem"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotirajte za bolji prikaz"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Otvorite aplikaciju <xliff:g id="NAME">%s</xliff:g> preko cijelog ekrana radi boljeg pregleda"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Prebaci na drugog korisnika"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Isključi zvuk"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Dodirnite da isključite zvuk"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index fa10e45..9e5c336 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecciona per desactivar la depuració sense fil."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"S\'ha activat el mode Agent de prova"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Si vols desactivar el mode Agent de prova, restableix les dades de fàbrica."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configuració de la compilació HSUM incorrecta"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"L\'estat del mode d\'usuari del sistema sense interfície gràfica d\'aquest dispositiu és diferent de la configuració de la seva compilació. Restableix les dades de fàbrica del dispositiu."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"S\'ha activat la consola de sèrie"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Afecta el rendiment. Per desactivar-la, comprova el bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"L\'MTE experimental s\'ha activat"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S\'han mantingut premudes les tecles de volum. S\'ha activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S\'han mantingut premudes les tecles de volum. S\'ha desactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Deixa anar les tecles de volum. Per activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, torna a mantenir premudes totes dues tecles de volum durant 3 segons."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Tria una funció"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Tria una funció"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Tria una funció"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"La funció s\'obrirà la pròxima vegada que toquis el botó d\'accessibilitat"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La funció s\'obrirà la pròxima vegada que utilitzis aquesta drecera. Llisca cap amunt amb 2 dits des de la part inferior de la pantalla i aixeca\'ls ràpidament."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La funció s\'obrirà la pròxima vegada que utilitzis aquesta drecera. Llisca cap amunt amb 3 dits des de la part inferior de la pantalla i aixeca\'ls ràpidament."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"El PIN és massa curt. Ha de tenir quatre dígits com a mínim."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Torna-ho a provar més tard"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Mode de pantalla completa"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Per sortir, llisca cap avall des de la part superior de la pantalla"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Entesos"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Gira per a una millor visualització"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Obre <xliff:g id="NAME">%s</xliff:g> en pantalla completa per a una millor visualització"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Canvia d\'usuari"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Silencia"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Toca per silenciar el so"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index a4e5b28..78b79cb 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Vyberte, chcete-li zakázat bezdrátové ladění."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Režim správce testů je aktivní"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Chcete-li deaktivovat režim správce testů, restartujte zařízení do továrního nastavení."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Nesprávná konfigurace sestavení HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Stav systémového uživatele bez grafické vrstvy (HSUM) tohoto zařízení se liší od konfigurace sestavení. Resetujte zařízení do továrního nastavení."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Je zapnutá sériová konzole"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Toto má dopad na výkon. Chcete-li ji vypnout, zkontrolujte bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Je zapnuto experimentální MTE"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> byla vypnuta."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Uvolněte tlačítka hlasitosti. Pokud chcete zapnout službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, znovu tři sekundy podržte obě tlačítka hlasitosti."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Vyberte funkci"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Vyberte funkci"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Vyberte funkci"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funkce se otevře, až příště klepnete na tlačítko přístupnosti"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkce se otevře při příštím použití této zkratky. Přejeďte dvěma prsty nahoru ze spodní části obrazovky a rychle je zvedněte."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkce se otevře při příštím použití této zkratky. Přejeďte třemi prsty nahoru ze spodní části obrazovky a rychle je zvedněte."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Kód PIN je příliš krátký. Musí mít alespoň čtyři číslice."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Zkuste to znovu později"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Zobrazení celé obrazovky"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Tento režim ukončíte přejetím prstem dolů z horního okraje obrazovky"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Rozumím"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Otočte obrazovku, abyste lépe viděli"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Otevřete aplikaci <xliff:g id="NAME">%s</xliff:g> na celou obrazovku, aby byla lépe vidět"</string>
@@ -2445,4 +2439,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Přepnout uživatele"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Ztlumit"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Klepnutím ztlumíte zvuk"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 4d10a6d..b7e70ef 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Vælg for at deaktivere trådløs fejlretning."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Tilstanden Testsele er aktiveret"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Gendan fabriksindstillingerne for at deaktivere tilstanden Testsele."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Forkert HSUM-buildkonfiguration"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Tilstanden systembruger uden grafisk brugerflade på denne enhed er forskellig fra dens buildkonfiguration. Gendan enhedens fabriksindstillinger."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriekonsollen er aktiveret"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Effektiviteten er påvirket. Deaktiver via bootloaderen."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Eksperimentel MTE er aktiveret"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er aktiveret."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er deaktiveret."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Slip lydstyrkeknapperne. Du kan aktivere <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ved at holde begge lydstyrkeknapper nede igen i 3 sekunder."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Vælg en funktion"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Vælg en funktion"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Vælg en funktion"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funktionen åbnes næste gang, du trykker på knappen til hjælpefunktioner"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funktionen åbnes næste gang, du bruger denne genvej. Stryg opad fra bunden af skærmen med 2 fingre, og slip derefter hurtigt."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funktionen åbnes næste gang, du bruger denne genvej. Stryg opad fra bunden af skærmen med 3 fingre, og slip derefter hurtigt."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Pinkoden er for kort. Den skal være på mindst 4 tal."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Prøv igen senere"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visning i fuld skærm"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Stryg nedad fra toppen af skærmen for at afslutte"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK, det er forstået"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Roter, og få en bedre visning"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Åbn <xliff:g id="NAME">%s</xliff:g> i fuld skærm for at få en bedre visning"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Skift bruger"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Slå lyden fra"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tryk for at slå lyden fra"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index d22aec8..e30f92d 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Auswählen, um \"Debugging über WLAN\" zu deaktivieren."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test-Harnischmodus aktiviert"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Setz das Gerät auf die Werkseinstellungen zurück, um den Test-Harnischmodus zu deaktivieren."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Falsche HSUM‑Build-Konfiguration"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Der Headless System User Mode-Zustand unterscheidet sich von seiner Build-Konfiguration. Bitte setze das Gerät auf die Werkseinstellungen zurück."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serielle Konsole aktiviert"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Leistung wird beeinflusst. Überprüfe Bootloader zum Deaktivieren."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Experimentelle MTE aktiviert"</string>
@@ -1577,7 +1575,7 @@
<string name="add_account_button_label" msgid="322390749416414097">"Konto hinzufügen"</string>
<string name="number_picker_increment_button" msgid="7621013714795186298">"Verlängern"</string>
<string name="number_picker_decrement_button" msgid="5116948444762708204">"Verringern"</string>
- <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> berühren und halten."</string>
+ <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> gedrückt halten."</string>
<string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Zum Verlängern nach oben und zum Verringern nach unten schieben"</string>
<string name="time_picker_increment_minute_button" msgid="7195870222945784300">"Minuten verlängern"</string>
<string name="time_picker_decrement_minute_button" msgid="230925389943411490">"Minuten verringern"</string>
@@ -1604,7 +1602,7 @@
<string name="activitychooserview_choose_application_error" msgid="6937782107559241734">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> konnte nicht gestartet werden."</string>
<string name="shareactionprovider_share_with" msgid="2753089758467748982">"Teilen mit"</string>
<string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Mit <xliff:g id="APPLICATION_NAME">%s</xliff:g> teilen"</string>
- <string name="content_description_sliding_handle" msgid="982510275422590757">"Schieberegler: Berühren und halten"</string>
+ <string name="content_description_sliding_handle" msgid="982510275422590757">"Schieberegler: Gedrückt halten"</string>
<string name="description_target_unlock_tablet" msgid="7431571180065859551">"Zum Entsperren den Finger über den Bildschirm ziehen"</string>
<string name="action_bar_home_description" msgid="1501655419158631974">"Zur Startseite navigieren"</string>
<string name="action_bar_up_description" msgid="6611579697195026932">"Nach oben navigieren"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist aktiviert."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist deaktiviert."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lass die Lautstärketasten los. Halte zum Aktivieren von <xliff:g id="SERVICE_NAME">%1$s</xliff:g> beide Lautstärketasten noch einmal 3 Sekunden lang gedrückt."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Funktion auswählen"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Funktion auswählen"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Funktion auswählen"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Die Funktion wird geöffnet, wenn du das nächste Mal auf die Schaltfläche „Bedienungshilfen“ tippst"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Die Funktion wird geöffnet, wenn du diese Touch-Geste für Bedienungshilfen das nächste Mal verwendest. Wische mit 2 Fingern vom unteren Displayrand nach oben und lass dann schnell los."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Die Funktion wird geöffnet, wenn du diese Touch-Geste für Bedienungshilfen das nächste Mal verwendest. Wische mit 3 Fingern vom unteren Displayrand nach oben und lass dann schnell los."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Die PIN ist zu kurz. Sie muss mindestens 4 Ziffern umfassen."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Später erneut versuchen"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Vollbildmodus wird aktiviert"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Wenn du den Modus verlassen möchtest, wische vom oberen Displayrand nach unten"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Ok"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Drehen, um die Ansicht zu verbessern"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Du kannst <xliff:g id="NAME">%s</xliff:g> im Vollbildmodus öffnen, um die Ansicht zu verbessern"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Nutzer wechseln"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Stummschalten"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Zum Stummschalten tippen"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 8321d60..c7a5563 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Επιλέξτε, για να απενεργοποιήσετε τον ασύρματο εντοπισμό σφαλμάτων."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Η λειτουργία περιβάλλοντος δοκιμών ενεργοποιήθηκε"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Εκτελέστε επαναφορά εργοστασιακών ρυθμίσεων για να απενεργοποιήσετε τη λειτουργία περιβάλλοντος δοκιμών."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Λάθος διαμόρφωση κατασκευής HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Η κατάσταση της Λειτουργίας χρήστη συστήματος Headless (Headless System User Mode, HSUM) αυτής της συσκευής διαφέρει από τη διαμόρφωση κατασκευής της. Κάντε επαναφορά εργοστασιακών ρυθμίσεων της συσκευής."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Η σειριακή κονσόλα ενεργοποιήθηκε"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Η απόδοση επηρεάζεται. Για απενεργοποίηση, επιλέξτε το πρόγραμμα φόρτωσης εκκίνησης."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Ενεργοποιήθηκε το πειραματικό MTE"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ενεργοποιήθηκε."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>: απενεργοποιημένο"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Αφήστε τα κουμπιά έντασης ήχου. Για να ενεργοποιήσετε την υπηρεσία <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, πατήστε ξανά παρατεταμένα και τα δύο κουμπιά έντασης ήχου για τρία δευτερόλεπτα."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Επιλέξτε μια λειτουργία"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Επιλέξτε μια λειτουργία"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Επιλέξτε μια λειτουργία"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Η λειτουργία θα ανοίξει την επόμενη φορά που θα πατήσετε το κουμπί προσβασιμότητας"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Η λειτουργία θα ανοίξει την επόμενη φορά που θα χρησιμοποιήσετε αυτή τη συντόμευση. Σαρώστε προς τα πάνω με 2 δάχτυλα από το κάτω μέρος της οθόνης και απομακρύνετε γρήγορα τα δάχτυλά σας."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Η λειτουργία θα ανοίξει την επόμενη φορά που θα χρησιμοποιήσετε αυτή τη συντόμευση. Σαρώστε προς τα πάνω με 3 δάχτυλα από το κάτω μέρος της οθόνης και απομακρύνετε γρήγορα τα δάχτυλά σας."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Το PIN είναι υπερβολικά μικρό. Πρέπει να έχει μέγεθος τουλάχιστον 4 χαρακτήρων."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Δοκιμάστε ξανά αργότερα"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Προβολή σε πλήρη οθόνη"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Για έξοδο, σύρετε προς τα κάτω από το επάνω μέρος της οθόνης"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Το κατάλαβα"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Περιστρέψτε την οθόνη για καλύτερη προβολή"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Ανοίξτε την εφαρμογή <xliff:g id="NAME">%s</xliff:g> σε πλήρη οθόνη για καλύτερη προβολή"</string>
@@ -2119,7 +2113,7 @@
<string name="popup_window_default_title" msgid="6907717596694826919">"Αναδυόμενο παράθυρο"</string>
<string name="slice_more_content" msgid="3377367737876888459">"+ <xliff:g id="NUMBER">%1$d</xliff:g>"</string>
<string name="shortcut_restored_on_lower_version" msgid="9206301954024286063">"Η έκδοση εφαρμογής υποβαθμίστηκε ή δεν είναι συμβατή με αυτήν τη συντόμευση"</string>
- <string name="shortcut_restore_not_supported" msgid="4763198938588468400">"Δεν ήταν δυνατή η επαναφορά της συντόμευσης, επειδή η εφαρμογή δεν υποστηρίζει τη δημιουργία αντιγράφων ασφαλείας και την επαναφορά"</string>
+ <string name="shortcut_restore_not_supported" msgid="4763198938588468400">"Δεν ήταν δυνατή η επαναφορά της συντόμευσης, επειδή η εφαρμογή δεν υποστηρίζει τη δημιουργία αντιγράφου ασφαλείας και την επαναφορά"</string>
<string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"Δεν ήταν δυνατή η επαναφορά της συντόμευσης, λόγω αναντιστοιχίας της υπογραφής εφαρμογής"</string>
<string name="shortcut_restore_unknown_issue" msgid="2478146134395982154">"Δεν ήταν δυνατή η επαναφορά της συντόμευσης"</string>
<string name="shortcut_disabled_reason_unknown" msgid="753074793553599166">"Η συντόμευση είναι απενεργοποιημένη"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Εναλλαγή χρήστη"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Σίγαση"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Πατήστε για σίγαση του ήχου"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 39f55dd..5dfd2ac 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Wrong HSUM build configuration"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"The headless system user mode state of this device differs from its build configuration. Please factory reset the device."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performance is impacted. To disable, check bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Experimental MTE enabled"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for three seconds."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Choose a feature"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Choose a feature"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Choose a feature"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"The feature will open the next time that you tap the accessibility button"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open the next time that you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open the next time that you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN is too short. Must be at least four digits."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Try again later"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Viewing full screen"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"To exit, swipe down from the top of your screen"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Got it"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotate for a better view"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Open <xliff:g id="NAME">%s</xliff:g> in full screen for a better view"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Switch user"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Mute"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tap to mute sound"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index bd5976b..55c6376 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -2437,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Switch user"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Mute"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tap to mute sound"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Browser"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Contacts"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"Email"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Music"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Calendar"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Calculator"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index ad909ef..bb55bad 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Wrong HSUM build configuration"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"The headless system user mode state of this device differs from its build configuration. Please factory reset the device."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performance is impacted. To disable, check bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Experimental MTE enabled"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for three seconds."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Choose a feature"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Choose a feature"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Choose a feature"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"The feature will open the next time that you tap the accessibility button"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open the next time that you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open the next time that you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN is too short. Must be at least four digits."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Try again later"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Viewing full screen"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"To exit, swipe down from the top of your screen"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Got it"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotate for a better view"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Open <xliff:g id="NAME">%s</xliff:g> in full screen for a better view"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Switch user"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Mute"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tap to mute sound"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 5fe0d32..1ab0a16 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Wrong HSUM build configuration"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"The headless system user mode state of this device differs from its build configuration. Please factory reset the device."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performance is impacted. To disable, check bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Experimental MTE enabled"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for three seconds."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Choose a feature"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Choose a feature"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Choose a feature"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"The feature will open the next time that you tap the accessibility button"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open the next time that you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open the next time that you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN is too short. Must be at least four digits."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Try again later"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Viewing full screen"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"To exit, swipe down from the top of your screen"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Got it"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotate for a better view"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Open <xliff:g id="NAME">%s</xliff:g> in full screen for a better view"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Switch user"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Mute"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tap to mute sound"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 1c0ea4b..cac4a51 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -2437,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Switch user"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Mute"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tap to mute sound"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Browser"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Contacts"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"Email"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Music"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Calendar"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Calculator"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Applications"</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 6f49b54..b1f56b7 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecciona para inhabilitar la depuración inalámbrica."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Se habilitó el modo de agente de prueba"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Restablece la configuración de fábrica para inhabilitar el modo de agente de prueba."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"La configuración de compilación HSUM no es correcta"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"El estado de Headless System User Mode de este dispositivo difiere de la configuración de compilación. Restablece el dispositivo a su configuración de fábrica."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Se habilitó la consola en serie"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Afecta el rendimiento. Para inhabilitarla, verifica el bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE experimental habilitada"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Como mantuviste presionadas las teclas de volumen, se activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se presionaron las teclas de volumen. Se desactivó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Suelta las teclas de volumen. Para activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, vuelve a mantener presionadas las teclas de volumen durante 3 segundos."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Elige una función"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Elige una función"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Elige una función"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"La función se abrirá la próxima vez que presiones el botón de accesibilidad"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La función se abrirá la próxima vez que uses este atajo. Desliza hacia arriba con 2 dedos desde la parte inferior de la pantalla y levanta los dedos rápidamente."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La función se abrirá la próxima vez que uses este atajo. Desliza hacia arriba con 3 dedos desde la parte inferior de la pantalla y levanta los dedos rápidamente."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"El PIN es demasiado corto. Debe tener al menos 4 dígitos."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Vuelve a intentar más tarde."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visualización en pantalla completa"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Para salir, desliza el dedo hacia abajo desde la parte superior de la pantalla"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Entendido"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Gira la pantalla para obtener una mejor vista"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Abre <xliff:g id="NAME">%s</xliff:g> en pantalla completa para una mejor visualización"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Cambiar de usuario"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Silenciar"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Presiona para silenciar el sonido"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index bd2a616..f187cfd 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Toca para desactivar la depuración inalámbrica."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo de agente de prueba habilitado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Restablece los ajustes de fábrica para inhabilitar el modo de agente de prueba."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configuración de compilación del modo de usuario del sistema sin interfaz gráfica incorrecta"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"El estado del modo de usuario del sistema sin interfaz gráfica de este dispositivo es distinto al de su configuración de compilación. Restablece el estado de fábrica del dispositivo."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Se ha habilitado la consola en serie"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Afecta al rendimiento. Para inhabilitarlo, comprueba el bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE experimental habilitado"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Al mantener pulsadas las teclas de volumen, se ha activado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se han mantenido pulsadas las teclas de volumen. Se ha desactivado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Suelta las teclas de volumen. Para activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, mantén pulsadas las dos teclas de volumen de nuevo durante 3 segundos."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Elige una función"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Elige una función"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Elige una función"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"La función se abrirá la próxima vez que toques el botón de accesibilidad"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La función se abrirá la próxima vez que uses este acceso directo. Desliza hacia arriba con 2 dedos desde la parte inferior de la pantalla y suelta rápidamente."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La función se abrirá la próxima vez que uses este acceso directo. Desliza hacia arriba con 3 dedos desde la parte inferior de la pantalla y suelta rápidamente."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"El PIN es demasiado corto. Debe tener al menos 4 dígitos."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Reintentar más tarde"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Modo de pantalla completa"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Para salir, desliza hacia abajo desde la parte superior de la pantalla"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Entendido"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Gira la pantalla para verlo mejor"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Abre <xliff:g id="NAME">%s</xliff:g> en pantalla completa para verlo mejor"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Cambiar de usuario"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Silenciar"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Toca para silenciar el sonido"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 36bca22..5a618d6 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Valige juhtmevaba silumise keelamiseks."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testrakendirežiim on lubatud"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Testrakendirežiimi keelamiseks taastage tehaseseaded."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Vale HSUM-i järgu seadistus"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Selle seadme kasutajaliideseta süsteemikasutaja režiimi olek erineb selle järgu seadistusest. Lähtestage seade tehaseseadetele."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seeriakonsool on lubatud"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"See mõjutab toimivust. Keelamiseks kontrollige käivituslaadurit."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Katseline MTE on lubatud"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati sisse."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati välja."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Vabastage helitugevuse klahvid. Teenuse <xliff:g id="SERVICE_NAME">%1$s</xliff:g> sisselülitamiseks vajutage uuesti mõlemat helitugevuse klahvi ja hoidke neid 3 sekundit all."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Valige funktsioon"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Valige funktsioon"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Valige funktsioon"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funktsioon avaneb järgmine kord, kui puudutate juurdepääsetavuse nuppu"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funktsioon avaneb järgmine kord, kui kasutate seda otseteed. Tõmmake kahe sõrmega ekraani allservast üles ja vabastage kiiresti."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funktsioon avaneb järgmine kord, kui kasutate seda otseteed. Tõmmake kolme sõrmega ekraani allservast üles ja vabastage kiiresti."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-kood on liiga lühike. Peab olema vähemalt 4-kohaline."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Proovige hiljem uuesti"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Kuvamine täisekraanil"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Väljumiseks pühkige ekraanikuva ülaosast alla"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Selge"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Pöörake parema vaate jaoks"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Parema vaate jaoks avage rakendus <xliff:g id="NAME">%s</xliff:g> täisekraanil"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Vaheta kasutajat"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Vaigista"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Puudutage heli vaigistamiseks"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index a16c56b..5819289 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Hautatu hau hari gabeko arazketa desgaitzeko."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Proba-materialeko modua gaitu da"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Proba-materialaren modua desgaitzeko, berrezarri jatorrizko datuak."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Interfaze grafikorik gabeko sistema-erabiltzaile moduaren konpilazioaren konfigurazioa ez da zuzena"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Gailu honen interfaze grafikorik gabeko sistema-erabiltzaile moduaren egoera ez dator bat haren konpilazioaren konfigurazioarekin. Berrezarri gailuko jatorrizko datuak."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serie-kontsola gaituta"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Errendimenduari eragiten dio. Desgaitzeko, joan abiarazlera."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE esperimentala gaituta dago"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatu egin da."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desaktibatu egin da."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Askatu bolumen-botoiak. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatzeko, eduki sakatuta berriro bi bolumen-botoiak hiru segundoz."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Aukeratu eginbide bat"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Aukeratu eginbide bat"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Aukeratu eginbide bat"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Erabilerraztasuna botoia sakatzen duzun hurrengoan irekiko da eginbidea"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 2 hatz pantailaren behealdetik gorantz eta askatu bizkor."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 3 hatz pantailaren behealdetik gorantz eta askatu bizkor."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PINa laburregia da. Lau digitu izan behar ditu gutxienez."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Saiatu berriro geroago"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Pantaila osoko ikuspegia"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Irteteko, pasatu hatza pantailaren goialdetik beherantz"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Ados"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Biratu pantaila ikuspegi hobea lortzeko"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Ireki <xliff:g id="NAME">%s</xliff:g> pantaila osoan eta ikuspegi hobea lortuko duzu"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Aldatu erabiltzailea"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Desaktibatu audioa"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Sakatu audioa desaktibatzeko"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 3eeb781..7a08af6 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"برای غیرفعال کردن اشکالزدایی بیسیم انتخاب کنید."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"«حالت مجموعه دادههای تست» فعال شد"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"برای غیرفعال کردن «حالت مجموعه دادههای تست»، بازنشانی کارخانهای کنید."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"پیکربندی ساخت HSUM اشتباه است"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"وضعیت «حالت کاربر سیستم بیسر» در این دستگاه با پیکربندی ساخت متفاوت است. لطفاً دستگاه را بازنشانی کارخانهای کنید."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"کنسول سریال فعال است"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"عملکرد تحتتأثیر قرار گرفته است. برای غیرفعال کردن، bootloader را بررسی کنید."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE آزمایشی فعال شد"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"کلیدهای میزان صدا را رها کنید. برای روشن کردن <xliff:g id="SERVICE_NAME">%1$s</xliff:g>، هر دو کلید میزان صدا را مجدداً بهمدت ۳ ثانیه فشار دهید و نگه دارید."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"انتخاب ویژگی"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"انتخاب ویژگی"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"انتخاب ویژگی"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"دفعه بعد که روی دکمه دسترسپذیری تکضرب بزنید، این ویژگی باز میشود"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"دفعه بعد که از این میانبر استفاده کنید، این ویژگی باز میشود. با ۲ انگشت از پایین صفحه تند به بالا بکشید و سریع رها کنید."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"دفعه بعد که از این میانبر استفاده کنید، این ویژگی باز میشود. با ۳ انگشت از پایین صفحه تند به بالا بکشید و سریع رها کنید."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"پین بیش از حد کوتاه است. باید حداقل ۴ رقم باشد."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"بعداً دوباره امتحان کنید"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"مشاهده در حالت تمام صفحه"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"برای خروج، از بالای صفحه تند به پایین بکشید"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"متوجه شدم"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"برای دید بهتر، دستگاه را بچرخانید"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"برای دید بهتر، <xliff:g id="NAME">%s</xliff:g> را بهصورت تمامصفحه باز کنید"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"تغییر کاربر"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"بیصدا کردن"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"برای بیصدا کردن تکضرب بزنید"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 0cb8ce0..8393e9a 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Poista langaton virheenkorjaus käytöstä valitsemalla tämä."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testikehystila käytössä"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Palauta tehdasasetukset, niin voit poistaa testikehystilan käytöstä."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Väärä HSUM-koontiversiomääritys"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Tämän laitteen järjestelmäkäyttäjän tila eroaa koontiversiomäärityksestä. Palauta laitteen tehdasasetukset."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Sarjakonsoli käytössä"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Tämä vaikuttaa suorituskykyyn. Jos haluat poistaa toiminnon käytöstä, tarkista käynnistysohjelma."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Kokeellinen MTE käytössä"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin päälle."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin pois päältä."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Vapauta äänenvoimakkuuspainikkeet. Laita <xliff:g id="SERVICE_NAME">%1$s</xliff:g> päälle painamalla äänenvoimakkuuspainikkeita uudelleen kolmen sekunnin ajan."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Valitse ominaisuus"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Valitse ominaisuus"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Valitse ominaisuus"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Ominaisuus avautuu, kun seuraavan kerran napautat saavutettavuuspainiketta"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Ominaisuus avautuu, kun seuraavan kerran käytät tätä pikakomentoa. Pyyhkäise näytön alareunasta ylös kahdella sormella ja nosta sormet näytöltä nopeasti."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Ominaisuus avautuu, kun seuraavan kerran käytät tätä pikakomentoa. Pyyhkäise näytön alareunasta ylös kolmella sormella ja nosta sormet näytöltä nopeasti."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-koodi on liian lyhyt. Vähimmäispituus on neljä merkkiä."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Yritä myöhemmin uudelleen"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Koko ruudun tilassa"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Poistu pyyhkäisemällä alas näytön yläreunasta"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Selvä"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Kierrä, niin saat paremman näkymän"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Avaa <xliff:g id="NAME">%s</xliff:g>, niin saat paremman näkymän"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Vaihda käyttäjää"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Mykistä"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Mykistä äänet napauttamalla"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 07cbbf1..a0f8ec0 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Sélectionnez cette option pour désactiver le débogage sans fil."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mode Logiciel de test activé"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Effectuez une réinitialisation pour désactiver le mode Logiciel de test."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configuration incorrecte de la version du mode Utilisateur de système sans interface"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"L\'état du mode Utilisateur de système sans interface de cet appareil est différent de la configuration de votre version. Veuillez rétablir les paramètres par défaut de l\'appareil."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"La console série est activée"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"La performance est réduite. Pour désactiver cette fonction, vérifier le programme d\'amorçage."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Extension MTE expérimentale activée"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume maintenues enfoncées. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Relâchez les touches de volume. Pour activer <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, maintenez les deux touches de volume enfoncées pendant 3 secondes."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Choisir une fonctionnalité"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Choisir une fonctionnalité"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Choisir une fonctionnalité"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"La fonctionnalité s\'ouvrira la prochaine fois que vous toucherez le bouton d\'accessibilité"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez l\'écran du bas vers le haut avec deux doigts et relâchez rapidement."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez l\'écran du bas vers le haut avec trois doigts et relâchez rapidement."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Le NIP est trop court. Il doit comporter au moins 4 chiffres."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Réessayez plus tard"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Affichage plein écran"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Pour quitter ce mode, balayer l\'écran vers le bas à partir du haut"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Faire pivoter pour obtenir un meilleur affichage"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Ouvrir <xliff:g id="NAME">%s</xliff:g> en plein écran pour un meilleur affichage"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Changer d\'utilisateur"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Désactiver le son"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Toucher pour désactiver le son"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index e4b87ed..0f58c47 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Sélectionnez cette option pour désactiver le débogage sans fil."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mode Atelier de test activé"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Rétablissez la configuration d\'usine pour désactiver le mode Atelier de test."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Mauvaise configuration de compilation HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"L\'état du mode utilisateur du système headless de cet appareil diffère de sa configuration de compilation. Veuillez rétablir la configuration d\'usine de l\'appareil."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console série activée"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Les performances sont affectées. Pour désactiver la console série, vérifiez le bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE expérimentale activée"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Relâchez les boutons de volume. Pour activer <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, appuyez de nouveau sur les deux boutons de volume pendant trois secondes."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Sélectionnez une fonctionnalité"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Sélectionnez une fonctionnalité"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Sélectionnez une fonctionnalité"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"La fonctionnalité s\'ouvrira la prochaine fois que vous appuierez sur le bouton Accessibilité"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez du bas de l\'écran vers le haut avec deux doigts et relâchez rapidement."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez du bas de l\'écran vers le haut avec trois doigts et relâchez rapidement."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Le code PIN est trop court. Il doit comporter au moins 4 chiffres."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Veuillez réessayer ultérieurement."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Affichage en plein écran"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Pour quitter, balayez l\'écran de haut en bas"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Faites pivoter pour mieux voir"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Ouvrez <xliff:g id="NAME">%s</xliff:g> en plein écran pour mieux voir"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Changer d\'utilisateur"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Couper le son"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Appuyer pour couper le son"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 2adedd5..d016747 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -2443,4 +2443,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Cambiar de usuario"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Silenciar"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tocar para silenciar o son"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 6a01682..7204703 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"વાયરલેસ ડિબગીંગ બંધ કરવા માટે પસંદ કરો."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ટેસ્ટ હાર્નેસ મોડ ચાલુ કર્યો"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ટેસ્ટ હાર્નેસ મોડ બંધ કરવા માટે ફૅક્ટરી રીસેટ કરો."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUMનું ખોટું બિલ્ડ કન્ફિગ્યુરેશન"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"આ ડિવાઇસના હેડલેસ સિસ્ટમ યુઝર મોડનું સ્ટેટસ તેના બિલ્ડ કન્ફિગ્યુરેશન કરતાં અલગ હોય છે. કૃપા કરીને ડિવાઇસને ફેક્ટરી રીસેટ કરો."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"સિરીયલ કન્સોલ ચાલુ થયો"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"કાર્યપ્રદર્શનને અસર થાય છે. બંધ કરવા માટે, બૂટલોડર ચેક કરો."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"પ્રયોગાત્મક MTE ચાલુ કર્યું"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ચાલુ કરી."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> બંધ કરી."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"વૉલ્યૂમ કી છોડી દો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ને ચાલુ કરવા માટે, 3 સેકન્ડ માટે બન્ને વૉલ્યૂમ કીને ફરીથી દબાવી રાખો."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"સુવિધા પસંદ કરો"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"સુવિધા પસંદ કરો"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"સુવિધા પસંદ કરો"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"તમે આગલી વાર જ્યારે ઍક્સેસિબિલિટી બટન પર ટૅપ કરશો, ત્યારે આ સુવિધા ચાલુ થશે"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"તમે આગલી વાર જ્યારે આ શૉર્ટકટનો ઉપયોગ કરશો, ત્યારે આ સુવિધા ચાલુ થશે. તમારી સ્ક્રીનની સૌથી નીચેથી 2 આંગળી વડે ઉપરની દિશાએ સ્વાઇપ કરો અને ઝડપથી છોડી દો."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"તમે આગલી વાર જ્યારે આ શૉર્ટકટનો ઉપયોગ કરશો, ત્યારે આ સુવિધા ચાલુ થશે. તમારી સ્ક્રીનની સૌથી નીચેથી 3 આંગળી વડે ઉપરની દિશાએ સ્વાઇપ કરો અને ઝડપથી છોડી દો."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"પિન ખૂબ નાનો છે. ઓછામાં ઓછો 4 અંકનો હોવો આવશ્યક છે."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"પછી ફરી પ્રયાસ કરો"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"પૂર્ણ સ્ક્રીન પર જુઓ"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"બહાર નીકળવા માટે, તમારી સ્ક્રીનની સૌથી ઉપરથી નીચેની તરફ સ્વાઇપ કરો"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"સમજાઈ ગયું"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"બહેતર વ્યૂ માટે ફેરવો"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"બહેતર વ્યૂ માટે, પૂર્ણ સ્ક્રીનમાં <xliff:g id="NAME">%s</xliff:g> ખોલો"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"વપરાશકર્તા સ્વિચ કરો"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"મ્યૂટ કરો"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"સાઉન્ડ મ્યૂટ કરવા માટે ટૅપ કરો"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"બ્રાઉઝર"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"સંપર્કો"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ઇમેઇલ"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"મ્યુઝિક"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"કૅલેન્ડર"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"કેલ્ક્યુલેટર"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"નકશા"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ઍપ્લિકેશનો"</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 04ee203c..c4d6f4a 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -629,7 +629,7 @@
<string name="permlab_useBiometric" msgid="6314741124749633786">"बायोमीट्रिक हार्डवेयर इस्तेमाल करने दें"</string>
<string name="permdesc_useBiometric" msgid="7502858732677143410">"पुष्टि के लिए, ऐप्लिकेशन को बायोमीट्रिक हार्डवेयर इस्तेमाल करने की मंज़ूरी दें"</string>
<string name="permlab_manageFingerprint" msgid="7432667156322821178">"फ़िंगरप्रिंट हार्डवेयर को प्रबंधित करें"</string>
- <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"फ़िंगरप्रिंट वाले टेम्पलेट का इस्तेमाल करने के लिए जोड़ने और हटाने के लिए ऐप को तरीके शुरू करने देती है."</string>
+ <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"फ़िंगरप्रिंट वाले टेंप्लेट का इस्तेमाल करने के लिए जोड़ने और हटाने के लिए ऐप को तरीके शुरू करने देती है."</string>
<string name="permlab_useFingerprint" msgid="1001421069766751922">"फ़िंगरप्रिंट हार्डवेयर का उपयोग करें"</string>
<string name="permdesc_useFingerprint" msgid="412463055059323742">"ऐप के प्रमाणीकरण के लिए फ़िंगरप्रिंट हार्डवेयर का उपयोग करने देती है"</string>
<string name="permlab_audioWrite" msgid="8501705294265669405">"अपने संगीत संग्रह में बदलाव करने की अनुमति दें"</string>
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"वॉयरलेस डीबगिंग की सुविधा बंद करने के लिए चुनें."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"टेस्ट हार्नेस मोड चालू किया गया"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"टेस्ट हार्नेस मोड बंद करने के लिए फ़ैक्ट्री रीसेट करें."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"एचएसयूएम का बिल्ड कॉन्फ़िगरेशन गलत है"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"इस डिवाइस के लिए हेडलेस सिस्टम यूज़र मोड की स्थिति इसके बिल्ड कॉन्फ़िगरेशन से अलग है. कृपया अपने डिवाइस को फ़ैक्ट्री रीसेट करें."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"सीरियल कंसोल को चालू करें"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"परफ़ॉर्मेंस पर असर पड़ा है. बंद करने के लिए बूटलोडर चुनें."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"आज़माने के लिए एमटीई चालू है"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू कर दिया गया."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को बंद कर दिया गया."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"आवाज़ बटन को छोड़ें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> की सुविधा चालू करने के लिए, आवाज़ वाले दोनों बटन तीन सेकंड तक दबाकर रखें."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"कोई सुविधा चुनें"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"कोई सुविधा चुनें"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"कोई सुविधा चुनें"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"अगली बार सुलभता बटन पर टैप करने से, यह सुविधा चालू हो जाएगी"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"इस शॉर्टकट का अगली बार इस्तेमाल करने पर, यह सुविधा चालू हो जाएगी. स्क्रीन पर दो उंगलियों से, नीचे से ऊपर की ओर स्वाइप करें और फिर स्क्रीन से तुरंत उंगलियां हटा दें."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"इस शॉर्टकट का अगली बार इस्तेमाल करने पर, यह सुविधा चालू हो जाएगी. स्क्रीन पर तीन उंगलियों से, नीचे से ऊपर की ओर स्वाइप करें और फिर स्क्रीन से तुरंत उंगलियां हटा दें."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN बहुत छोटा है. कम से कम 4 अंकों का होना चाहिए."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"बाद में फिर से प्रयास करें"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"आप पूरे स्क्रीन पर देख रहे हैं"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"बंद करने के लिए, स्क्रीन के सबसे ऊपरी हिस्से से नीचे की ओर स्वाइप करें"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ठीक है"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"बेहतर व्यू पाने के लिए, डिवाइस की स्क्रीन को घुमाएं"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"बेहतर व्यू पाने के लिए <xliff:g id="NAME">%s</xliff:g> को फ़ुल स्क्रीन में खोलें"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"दूसरे खाते पर स्विच करें"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"म्यूट करें"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"आवाज़ म्यूट करने के लिए टैप करें"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"ब्राउज़र"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"संपर्क"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ईमेल"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"एसएमएस"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"संगीत"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"कैलेंडर"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"कैल्कुलेटर"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"मैप"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ऐप्लिकेशन"</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index acb6d04..c3a6ec2 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Odaberite da biste onemogućili bežično otklanjanje pogrešaka."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen je način testnog okvira"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Vratite na tvorničke postavke da biste onemogućili način testnog okvira."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Pogrešna konfiguracija sustavnog korisnika bez grafičkog korisničkog sučelja"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Stanje načina sustavnog korisnika bez grafičkog korisničkog sučelja na ovom uređaju razlikuje se od njegove konfiguracije. Vratite uređaj na tvorničke postavke."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola omogućena"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Izvedba je otežana. Provjerite pokretač operativnog sustava da biste onemogućili konzolu."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Omogućen je eksperimentalni MTE"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za glasnoću. Isključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Pustite tipke za glasnoću. Da biste uključili uslugu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ponovo pritisnite i zadržite obje tipke za glasnoću tri sekunde."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Odaberite značajku"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Odaberite značajku"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Odaberite značajku"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Značajka će se otvoriti sljedeći put kad dodirnete gumb za pristupačnost"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Značajka će se otvoriti sljedeći put kad upotrijebite ovaj prečac. Nakratko prijeđite dvama prstima s dna zaslona."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Značajka će se otvoriti sljedeći put kad upotrijebite ovaj prečac. Nakratko prijeđite s dna zaslona trima prstima."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN je prekratak. Mora imati barem 4 znamenke."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Pokušajte ponovo kasnije"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Gledanje preko cijelog zaslona"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Za izlaz povucite prstom od vrha zaslona prema dolje"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Shvaćam"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Zakrenite kako biste bolje vidjeli"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Otvorite aplikaciju <xliff:g id="NAME">%s</xliff:g> preko cijelog zaslona za bolji prikaz"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Promijeni korisnika"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Isključi zvuk"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Dodirnite za isključivanje zvuka"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 5002b09..396a482d 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Válassza ezt a vezeték nélküli hibakeresés letiltásához."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Tesztelési alapkörnyezet mód engedélyezve"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"A Tesztelési alapkörnyezet mód kikapcsolásához állítsa vissza a gyári beállításokat."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Hibás HSUM-buildkonfiguráció"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Az eszköz Headless System User Mode állapota eltér a buildjének a konfigurációjától. Kérjük, állítsa vissza az eszköz gyári beállításait."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Soros konzol engedélyezve"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ez hatással van a teljesítményre. A letiltáshoz ellenőrizze a rendszerindítót."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Kísérleti MTE engedélyezve"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolva."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kikapcsolva."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Engedje fel a hangerőszabályzó gombokat. A(z) <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolásához tartsa újra lenyomva a hangerőszabályzó gombokat három másodpercig."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Funkció kiválasztása"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Funkció kiválasztása"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Funkció kiválasztása"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"A funkció a Kisegítő lehetőségek gombra való következő koppintáskor lesz megnyitva"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"A funkció a gyorsparancs következő használatakor lesz megnyitva. Csúsztasson felfelé két ujjal a képernyő aljáról, majd emelje fel gyorsan az ujjait."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"A funkció a gyorsparancs következő használatakor lesz megnyitva. Csúsztasson felfelé három ujjal a képernyő aljáról, majd emelje fel gyorsan az ujjait."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"A PIN-kód túl rövid. Legalább 4 számjegyből kell állnia."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Próbálkozzon később"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Megtekintése teljes képernyőn"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"A kilépéshez csúsztasson gyorsan lefelé a képernyő tetejéről."</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Értem"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Forgassa el a jobb élmény érdekében"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"A jobb élmény érdekében teljes képernyős módban nyissa meg a(z) <xliff:g id="NAME">%s</xliff:g> alkalmazást"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Felhasználóváltás"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Némítás"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Koppintson a hang elnémításához"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 2a5bdfc..aad7760 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Սեղմեք՝ անլար վրիպազերծումն անջատելու համար:"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Թեստային ռեժիմը միացված է"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Թեստային ռեժիմն անջատելու համար զրոյացրեք կարգավորումները։"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM կառուցման սխալ կազմաձև"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Այս սարքի առանց գրաֆիկական ինտերֆեյսի համակարգի օգտատիրոջ ռեժիմի (HSUM) կարգավիճակը տարբերվում է դրա կառուցման կազմաձևից։ Խնդրում ենք վերականգնել սարքի գործարանային կարգավորումները։"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Սերիական վահանակը միացված է"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Աշխատանքի արդյունավետությունը նվազում է։ Վահանակն անջատելու համար ստուգեք օպերացիոն համակարգի բեռնիչը։"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Միացված է փորձնական MTE գործառույթը"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացավ։"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունն անջատվեց։"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Բաց թողեք ձայնի ուժգնության կոճակները։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացնելու համար սեղմեք և 3 վայրկյան պահեք ձայնի ուժգնության երկու կոճակը։"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Ընտրեք որևէ գործառույթ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Ընտրեք որևէ գործառույթ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Ընտրեք որևէ գործառույթ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Գործառույթը կբացվի հաջորդ անգամ, երբ սեղմեք «Հատուկ գործառույթներ» կոճակը"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Գործառույթը կբացվի հաջորդ անգամ, երբ օգտագործեք այս դյուրանցումը։ Երկու մատը էկրանի ներքևից սահեցրեք վերև և արագ բաց թողեք։"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Գործառույթը կբացվի հաջորդ անգամ, երբ օգտագործեք այս դյուրանցումը։ Երեք մատը էկրանի ներքևից սահեցրեք վերև և արագ բաց թողեք։"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-ը չափազանց կարճ է: Պետք է ունենա առնվազն 4 թվանիշ:"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Կրկին փորձեք մի փոքր ուշ"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Լիաէկրան դիտում"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Դուրս գալու համար էկրանի վերևից մատը սահեցրեք ներքև"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Պարզ է"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Պտտեք՝ դիտակերպը լավացնելու համար"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Բացեք <xliff:g id="NAME">%s</xliff:g> հավելվածը լիաէկրան ռեժիմում՝ դիտակերպը լավացնելու համար"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Անցնել մյուս հաշիվ"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Անտեսել"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Հպեք՝ ձայնն անջատելու համար"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index f861728..9668f0e 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Pilih untuk menonaktifkan proses debug nirkabel."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mode Tes Otomatis diaktifkan"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Lakukan reset ke setelan pabrik untuk menonaktifkan Mode Tes Otomatis."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Konfigurasi build HSUM salah"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Status Mode Pengguna Sistem Headless dari perangkat ini berbeda dari konfigurasi build-nya. Reset perangkat ke setelan pabrik."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Konsol serial diaktifkan"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performa terpengaruh. Untuk menonaktifkan, periksa bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE eksperimental diaktifkan"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> diaktifkan."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dinonaktifkan."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lepaskan tombol volume. Untuk mengaktifkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, tekan dan tahan kedua tombol volume lagi selama 3 detik."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Pilih fitur"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Pilih fitur"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Pilih fitur"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Fitur akan terbuka setelah Anda mengetuk tombol aksesibilitas"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Fitur akan terbuka setelah Anda menggunakan pintasan ini. Geser ke atas dengan 2 jari dari bawah layar, lalu lepaskan dengan cepat."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Fitur akan terbuka setelah Anda menggunakan pintasan ini. Geser ke atas dengan 3 jari dari bawah layar, lalu lepaskan dengan cepat."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN terlalu pendek. Minimal 4 digit."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Coba lagi nanti"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Melihat layar penuh"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Untuk keluar, geser ke bawah dari bagian atas layar"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Mengerti"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Putar posisi layar untuk mendapatkan tampilan yang lebih baik"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Buka <xliff:g id="NAME">%s</xliff:g> dalam layar penuh untuk mendapatkan tampilan yang lebih baik"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Ganti pengguna"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Bisukan"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Ketuk untuk membisukan suara"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 21d57ea..b179c15 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Veldu til að slökkva á þráðlausri villuleit."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Kveikt á stillingu prófunarvangs"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Núllstilltu til að slökkva á stillingu prófunarvangs."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Röng HSUM-grunnstilling"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Ástand bakgrunnsnotandastillingarinnar í þessu tæki er ekki það sama og grunnstillingin gefur til kynna. Núllstilltu tækið."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Raðstjórnborð virkjað"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Þetta hefur áhrif á afköst. Athugaðu ræsiforritið ef þú vilt gera þetta óvirkt."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Kveikt á MTE á tilraunarstigi"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Hljóðstyrkstökkum haldið inni. Kveikt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Hljóðstyrkstökkum haldið inni. Slökkt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Slepptu hljóðstyrkstökkunum. Til að kveikja á <xliff:g id="SERVICE_NAME">%1$s</xliff:g> skaltu halda báðum hljóðstyrkstökkunum aftur inni í 3 sekúndur."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Veldu eiginleika"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Veldu eiginleika"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Veldu eiginleika"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Eiginleikinn opnast næst þegar þú ýtir á aðgengishnappinn"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Eiginleikinn opnast næst þegar þú notar þessa flýtileið Strjúktu upp með 2 fingrum frá neðsta hluta skjásins og slepptu hratt."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Eiginleikinn opnast næst þegar þú notar þessa flýtileið Strjúktu upp með 3 fingrum frá neðsta hluta skjásins og slepptu hratt."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-númerið er of stutt. Það verður að vera a.m.k. 4 tölustafir."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Reyndu aftur síðar"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Notar allan skjáinn"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Strjúktu niður frá efsta hluta skjásins til að hætta"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Ég skil"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Snúðu til að sjá betur"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Opnaðu <xliff:g id="NAME">%s</xliff:g> á öllum skjánum til að fá betra yfirlit"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Skipta um notanda"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Þagga"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Ýttu til að þagga hljóð"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index e99e948..06aa308 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -499,9 +499,9 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accesso a comandi aggiuntivi provider di geolocalizz."</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Consente all\'app di accedere a ulteriori comandi del fornitore di posizione. Ciò potrebbe consentire all\'app di interferire con il funzionamento del GPS o di altre fonti di geolocalizzazione."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"accesso alla posizione esatta solo in primo piano"</string>
- <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Questa app può recuperare la tua posizione precisa dai Servizi di geolocalizzazione quando l\'app è in uso. L\'impostazione Servizi di geolocalizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione. Questa operazione potrebbe comportare un maggior consumo della batteria."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Questa app può recuperare la tua posizione precisa dai Servizi di localizzazione quando l\'app è in uso. L\'impostazione Servizi di localizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione. Questa operazione potrebbe comportare un maggior consumo della batteria."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Accesso alla posizione approssimativa solo in primo piano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Questa app può recuperare la tua posizione approssimativa dai Servizi di geolocalizzazione quando l\'app è in uso. L\'impostazione Servizi di geolocalizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Questa app può recuperare la tua posizione approssimativa dai Servizi di localizzazione quando l\'app è in uso. L\'impostazione Servizi di localizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accesso alla posizione in background"</string>
<string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Questa app può accedere alla posizione in qualsiasi momento, anche quando l\'app non è in uso."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifica impostazioni audio"</string>
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Seleziona per disattivare il debug wireless."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modalità test harness attivata"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Ripristina le impostazioni di fabbrica per disattivare la modalità test harness."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configurazione di compilazione della modalità utente di sistema headless errata"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Lo stato della modalità utente di sistema headless di questo dispositivo è diverso dalla sua configurazione di compilazione. Ripristina i dati di fabbrica del dispositivo."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console seriale attivata"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ci sono conseguenze sulle prestazioni. Per disattivare, seleziona il bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Funzionalità MTE sperimentale attivata"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> attivato."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> disattivato."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Rilascia i tasti del volume. Per attivare <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, tieni di nuovo premuti entrambi i tasti del volume per 3 secondi."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Scegli una funzionalità"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Scegli una funzionalità"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Scegli una funzionalità"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"La funzionalità si aprirà la prossima volta che toccherai il pulsante Accessibilità"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La funzionalità si aprirà la prossima volta che utilizzerai questa scorciatoia. Scorri verso l\'alto con 2 dita dalla parte inferiore dello schermo e rilascia rapidamente."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La funzionalità si aprirà la prossima volta che utilizzerai questa scorciatoia. Scorri verso l\'alto con 3 dita dalla parte inferiore dello schermo e rilascia rapidamente."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Il PIN è troppo corto. Deve avere almeno quattro cifre."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Riprova più tardi"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visualizzazione a schermo intero"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Per uscire, scorri verso il basso dalla parte superiore dello schermo"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Ruota per migliorare l\'anteprima"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Apri <xliff:g id="NAME">%s</xliff:g> a schermo intero per migliorare la visualizzazione"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Cambia utente"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Disattiva audio"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tocca per disattivare l\'audio"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 6a4cea6..dd9f6b8 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"יש לבחור כדי להשבית ניפוי באגים אלחוטי."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"מצב מסגרת בדיקה הופעל"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"כדי להשבית את מצב \'מסגרת בדיקה\' צריך לאפס להגדרות היצרן."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"תצורת build שגויה של \'משתמש מערכת ללא GUI\' (HSUM)"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"מצב ה\'משתמש מערכת ללא GUI\' של המכשיר הזה שונה מתצורת ה-build שלו. צריך לאפס את המכשיר להגדרות המקוריות."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"קונסולה סדרתית מופעלת"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"קיימת השפעה על הביצועים. כדי להשבית, יש לבדוק את תוכנת האתחול."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ה-MTE הניסיוני הופעל"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הושבת."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"אפשר לשחרר את מקש עוצמת הקול. כדי להפעיל את השירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, צריך ללחוץ לחיצה ארוכה על שני המקשים של עוצמת הקול שוב במשך 3 שניות."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"בחירת תכונה"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"בחירת תכונה"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"בחירת תכונה"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"התכונה תיפתח בפעם הבאה שתזוהה הקשה על לחצן הנגישות"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"התכונה תיפתח בפעם הבאה שייעשה שימוש במקש הקיצור הזה. צריך להחליק למעלה עם 2 אצבעות מהחלק התחתון של המסך ולשחרר במהירות."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"התכונה תיפתח בפעם הבאה שייעשה שימוש במקש הקיצור הזה. צריך להחליק למעלה עם 3 אצבעות מהחלק התחתון של המסך ולשחרר במהירות."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"קוד הגישה קצר מדי. חייב להיות באורך 4 ספרות לפחות."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"יש לנסות שוב מאוחר יותר"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"צפייה במסך מלא"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"כדי לצאת, מחליקים למטה מהחלק העליון של המסך"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"הבנתי"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"מסובבים כדי לראות טוב יותר"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"צריך לפתוח את <xliff:g id="NAME">%s</xliff:g> במסך מלא כדי לראות טוב יותר"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"החלפת משתמש"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"השתקה"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"צריך להקיש כדי להשתיק את הצליל"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 743d58e..2964486 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ワイヤレス デバッグを無効にするには選択します。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"テストハーネス モード有効"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"出荷時設定にリセットしてテストハーネス モードを無効にしてください。"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"ヘッドレス システム ユーザー モードのビルド構成に誤りがあります"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"このデバイスのヘッドレス システム ユーザー モードの状態は、ビルド構成と異なります。デバイスを初期状態にリセットしてください。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"シリアル コンソールは有効です"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"シリアル コンソールを有効にすると、パフォーマンスに影響します。無効にするには、ブートローダーをチェックしてください。"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"試験運用版 MTE を有効にしました"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が ON になりました。"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が OFF になりました。"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"音量ボタンを離してください。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> を有効にするには音量大と音量小の両方のボタンを 3 秒ほど長押ししてください。"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"機能の選択"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"機能の選択"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"機能の選択"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"この機能は、ユーザー補助機能ボタンを次回タップした時に利用できるようになります"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"この機能は、このショートカットを次回使用した時に利用できるようになります。2 本の指で画面の下部から上にスワイプし、素早く離してください。"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"この機能は、このショートカットを次回使用した時に利用できるようになります。3 本の指で画面の下部から上にスワイプし、素早く離してください。"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PINが短すぎます。4桁以上で設定してください。"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"しばらくしてから再試行"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"全画面表示"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"終了するには画面の上部から下にスワイプします"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"画面を回転させて見やすくしましょう"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"<xliff:g id="NAME">%s</xliff:g> を全画面表示で開いて見やすくしましょう"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ユーザーを切り替え"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ミュート"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"音声をミュートするにはタップします"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 45d8264..a45176f 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"აირჩიეთ შეცდომების უსადენო გამართვის გასათიშად."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"რეჟიმი „გარემო ტესტირებისთვის“ ჩართულია"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"დააბრუნეთ ქარხნული პარამეტრები „გარემო ტესტირებისთვის“ რეჟიმის გასათიშად."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"არასწორი HSUM build კონფიგურაცია"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ამ მოწყობილობის Headless სისტემის მომხმარებლის რეჟიმის მდგომარეობა განსხვავდება მისი build კონფიგურაციისგან. გთხოვთ მოწყობილობა ქარხნულ პარამეტრებზე დააბრუნოთ."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"სერიული კონსოლი ჩართულია"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"მუშაობა შეფერხებულია. გასათიშად მონიშნეთ ჩამტვირთავი."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ექსპერიმენტული MTE ჩართულია"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ჩართულია."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> გამორთულია."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ხელი აუშვით ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-ის ჩასართველად, ხელმეორედ ხანგრძლივად დააჭირეთ ორივე ხმის ღილაკს 3 წამის განმავლობაში."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ფუნქციის არჩევა"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ფუნქციის არჩევა"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ფუნქციის არჩევა"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"ეს ფუნქცია გაიხსნება, როცა შემდეგ ჯერზე შეეხებით მარტივი წვდომის ღილაკს"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ეს ფუნქცია გაიხსნება, როცა შემდეგ ჯერზე გამოიყენებთ ამ მალსახმობს. გადაფურცლეთ 2 თითით თქვენი ეკრანის ქვედა ნაწილიდან და სწრაფად აუშვით."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ეს ფუნქცია გაიხსნება, როცა შემდეგ ჯერზე გამოიყენებთ ამ მალსახმობს. გადაფურცლეთ 3 თითით თქვენი ეკრანის ქვედა ნაწილიდან და სწრაფად აუშვით."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN ძალიან მოკლეა. უნდა შედგებოდეს სულ ცოტა 4 ციფრისგან."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"სცადეთ მოგვიანებით"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"სრულ ეკრანზე ნახვა"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"თქვენი ეკრანის ზემოდან გადაფურცლეთ ქვემოთ, რათა გამოხვიდეთ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"გასაგებია"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"შეატრიალეთ უკეთესი ხედისთვის"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"გახსენით <xliff:g id="NAME">%s</xliff:g> სრულ ეკრანზე უკეთესი ხედისთვის"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"მომხმარებლის გადართვა"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"დადუმება"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"შეეხეთ ხმის დასადუმებლად"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"ბრაუზერი"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"კონტაქტები"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ელფოსტა"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"მუსიკა"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"კალენდარი"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"კალკულატორი"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"აპლიკაციები"</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 0393067..c526870 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Сымсыз түзетуді өшіру үшін басыңыз."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Сынақ бағдарламасы режимі қосылды"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сынақ бағдарламасы режимін өшіру үшін зауыттық күйіне қайтарыңыз."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM құрастыру конфигурациясы дұрыс емес"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Бұл құрылғының Headless System User Mode күйі құрастыру кезіндегі конфигурациясынан ерекшеленеді. Құрылғыны зауыттық параметрлеріне қайтарыңыз."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Сериялық консоль қосылды"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Өнімділікке әсер етеді. Өшіру үшін жүктегішті тексеріңіз."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Эксперименттік MTE қосылды"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Пайдаланушы дыбыс деңгейі пернелерін басып ұстап тұрды. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қосулы."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дыбыс деңгейі пернелерін басып тұрған соң, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өшірілді."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Дыбыс деңгейі пернелерін жіберіңіз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қызметін қосу үшін дыбыс деңгейі пернесінің екеуін де қайтадан 3 секундқа басып тұрыңыз."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Функция таңдау"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Функция таңдау"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Функция таңдау"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Келесіде арнайы мүмкіндіктер түймесін түрткенде, функция ашылады."</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Келесіде осы жылдам пәрменді қолданғанда, функция ашылады. 2 саусақпен экранның төменгі жағынан жоғары қарай сырғытып, жылдам жіберіп қалыңыз."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Келесіде осы жылдам пәрменді қолданғанда, функция ашылады. 3 саусақпен экранның төменгі жағынан жоғары қарай сырғытып, жылдам жіберіп қалыңыз."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN тым қысқа. Кем дегенде 4 бірлік болуы тиіс."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Кейінірек қайта әрекеттеніңіз."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Толық экранда көру"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Шығу үшін экранның жоғарғы жағынан төмен қарай сырғытыңыз."</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Түсінікті"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Жақсырақ көру үшін бұрыңыз."</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Жақсырақ көру үшін <xliff:g id="NAME">%s</xliff:g> қолданбасын толық экранда ашыңыз."</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Пайдаланушыны ауыстыру"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Дыбысын өшіру"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Дыбысын өшіру үшін түртіңіз."</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 8fa4c58..2bf799c 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ជ្រើសរើស ដើម្បីបិទការជួសជុលដោយឥតខ្សែ។"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"បានបើកមុខងារប្រមូលធ្វើតេស្ត"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ធ្វើការកំណត់ដូចដើមឡើងវិញ ដើម្បីបិទមុខងារប្រមូលធ្វើតេស្ត។"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"ការកំណត់រចនាសម្ព័ន្ធកំណែបង្កើត HSUM ខុស"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ស្ថានភាព Headless System User Mode របស់ឧបករណ៍នេះខុសពីការកំណត់រចនាសម្ព័ន្ធកំណែបង្កើតរបស់វា។ សូមកំណត់ឧបករណ៍នេះដូចចេញពីរោងចក្រ។"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"កុងសូលស៊េរីត្រូវបានបើក"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"ប្រតិបត្តិការទទួលរងការប៉ះពាល់។ សូមពិនិត្យមើលកម្មវិធីដំណើរការប្រព័ន្ធ ដើម្បីបិទ។"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"បានបើក MTE ពិសោធន៍"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបិទ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"លែងគ្រាប់ចុចកម្រិតសំឡេង។ ដើម្បីបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g> សូមចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់ម្ដងទៀតរយៈពេល 3 វិនាទី។"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ជ្រើសរើសមុខងារ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ជ្រើសរើសមុខងារ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ជ្រើសរើសមុខងារ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"មុខងារនេះនឹងបើក ពេលអ្នកចុចប៊ូតុងភាពងាយស្រួលនៅលើកក្រោយ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"មុខងារនេះនឹងបើក ពេលអ្នកប្រើផ្លូវកាត់នេះនៅលើកក្រោយ។ អូសពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នកឡើងលើដោយប្រើម្រាមដៃ 2 ហើយលែងឱ្យរហ័ស។"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"មុខងារនេះនឹងបើក ពេលអ្នកប្រើផ្លូវកាត់នេះនៅលើកក្រោយ។ អូសពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នកឡើងលើដោយប្រើម្រាមដៃ 3 ហើយលែងឱ្យរហ័ស។"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"កូដ PIN ខ្លីពេក។ ត្រូវតែមានយ៉ាងហោចណាស់ ៤ តួ។"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"សូមព្យាយាមម្ដងទៀតនៅពេលក្រោយ។"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"កំពុងមើលពេញអេក្រង់"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ដើម្បីចេញ សូមអូសពីផ្នែកខាងលើនៃអេក្រង់របស់អ្នកចុះក្រោម"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"យល់ហើយ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"បង្វិលដើម្បីមើលបានកាន់តែច្បាស់"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"បើក <xliff:g id="NAME">%s</xliff:g> នៅក្នុងអេក្រង់ពេញ ដើម្បីមើលបានកាន់តែច្បាស់"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ប្ដូរអ្នកប្រើប្រាស់"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"បិទសំឡេង"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ចុចដើម្បីបិទសំឡេង"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index dee9b4a..413a35a 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಆಯ್ಕೆ ಮಾಡಿ."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ಸ್ವಯಂ ಪರೀಕ್ಷೆಯಾಗುವಿಕೆ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ಸ್ವಯಂ ಪರೀಕ್ಷೆಯಾಗುವಿಕೆ ಮೋಡ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್ ಮಾಡಬೇಕು."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM ಬಿಲ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ತಪ್ಪಾಗಿದೆ"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ಈ ಸಾಧನದ ಹೆಡ್ಲೆಸ್ ಸಿಸ್ಟಂ ಬಳಕೆದಾರ ಮೋಡ್ ಸ್ಥಿತಿಯು ಅದರ ಬಿಲ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ಗಿಂತ ಭಿನ್ನವಾಗಿದೆ. ಸಾಧನವನ್ನು ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್ ಮಾಡಿ."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ಸರಣಿ ಕನ್ಸೋಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ. ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು, ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ಪ್ರಾಯೋಗಿಕ MTE ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗಿದೆ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲು, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಮತ್ತೊಮ್ಮೆ 3 ಸೆಕೆಂಡ್ಗಳ ಕಾಲ ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ಫೀಚರ್ ಆರಿಸಿ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ಫೀಚರ್ ಆರಿಸಿ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ಫೀಚರ್ ಆರಿಸಿ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"ಮುಂದಿನ ಬಾರಿ ನೀವು ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿದಾಗ ಈ ಫೀಚರ್ ಆನ್ ಆಗುತ್ತದೆ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ಮುಂದಿನ ಬಾರಿ ನೀವು ಈ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಬಳಸುವಾಗ ಈ ಫೀಚರ್ ಆನ್ ಆಗುತ್ತದೆ. ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಕೆಳಗಿನಿಂದ 2 ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಹಾಗೂ ತ್ವರಿತವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಿ."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ಮುಂದಿನ ಬಾರಿ ನೀವು ಈ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಬಳಸುವಾಗ ಈ ಫೀಚರ್ ಆನ್ ಆಗುತ್ತದೆ. ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಕೆಳಗಿನಿಂದ 3 ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಹಾಗೂ ತ್ವರಿತವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಿ."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"ಪಿನ್ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದೆ. ಕನಿಷ್ಠ ಪಕ್ಷ 4 ಅಂಕಿಗಳಾಗಿರಬೇಕು."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"ಪೂರ್ಣ ಪರದೆಯನ್ನು ವೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ನಿರ್ಗಮಿಸಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ತಿಳಿಯಿತು"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ಅತ್ಯುತ್ತಮ ವೀಕ್ಷಣೆಗಾಗಿ ತಿರುಗಿಸಿ"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ಅತ್ಯುತ್ತಮ ವೀಕ್ಷಣೆಗಾಗಿ <xliff:g id="NAME">%s</xliff:g> ಅನ್ನು ಪೂರ್ಣ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ತೆರೆಯಿರಿ"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ಮ್ಯೂಟ್ ಮಾಡಿ"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ಧ್ವನಿಯನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"ಬ್ರೌಸರ್"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"ಸಂಪರ್ಕಗಳು"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ಇಮೇಲ್"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"ಸಂಗೀತ"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Calendar"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"ಕ್ಯಾಲ್ಕ್ಯುಲೇಟರ್"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ಆ್ಯಪ್ಗಳು"</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 7a4774b..e0d3fb7 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"무선 디버깅을 사용 중지하려면 선택하세요."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"테스트 하네스 모드 사용 설정됨"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"테스트 하네스 모드를 사용 중지하려면 초기화하세요."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"잘못된 HSUM 빌드 구성"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"이 기기의 헤드리스 시스템 사용자 모드 상태가 빌드 구성과 다릅니다. 기기를 초기화하세요."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"시리얼 콘솔 사용 설정됨"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"성능에 영향을 미쳤습니다. 사용 중지하려면 부트로더를 확인하세요."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"실험용 MTE 사용 설정됨"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 중지되었습니다."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"볼륨 키에서 손을 뗍니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>을 켜려면 볼륨 키 2개를 3초 동안 길게 누르세요."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"기능을 선택합니다"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"기능을 선택합니다"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"기능을 선택합니다"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"다음번에 접근성 버튼을 탭할 때 이 기능이 열립니다."</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"다음번에 이 단축키를 사용할 때 이 기능이 열립니다. 화면 하단에서 손가락 두 개를 사용해 위로 스와이프했다가 빠르게 놓습니다."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"다음번에 이 단축키를 사용할 때 이 기능이 열립니다. 화면 하단에서 손가락 세 개를 사용해 위로 스와이프했다가 빠르게 놓습니다."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN이 너무 짧습니다. 최소 4자 이상이어야 합니다."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"나중에 다시 시도"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"전체 화면 모드"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"종료하려면 화면 상단에서 아래로 스와이프합니다."</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"확인"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"카메라 미리보기 화면이 잘 보이도록 회전하세요."</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"화면이 더 잘 보이도록 <xliff:g id="NAME">%s</xliff:g>을(를) 전체 화면에서 여세요."</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"사용자 전환"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"음소거"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"탭하여 소리 음소거"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index cf1d2d3..e4c4603 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Мүчүлүштүктөрдү Wi-Fi аркылуу оңдоону өчүрүңүз."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Сыноо программасынын режими иштетилди"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сыноо программасынын режимин өчүрүү үчүн баштапкы параметрлерге кайтарыңыз."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM курама конфигурациясы туура эмес"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Бул түзмөктөгү Консолдук системаны колдонуучу режиминин абалы курама конфигурациядан айырмаланып турат. Түзмөктү баштапкы абалга кайтарыңыз."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Майнаптуулугуна таасири тиет. Өчүрүү үчүн операциялык тутумду жүктөгүчтү текшериңиз."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Cынамык MTE иштетилди"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> күйгүзүлдү."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өчүрүлдү."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Үн баскычтарын коё бериңиз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> кызматын күйгүзүү үчүн үн баскычтарын кайра 3 секунд коё бербей басып туруңуз."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Функция тандаңыз"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Функция тандаңыз"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Функция тандаңыз"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Эми функция атайын мүмкүнчүлүктөр баскычын басканыңызда ачылат"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Эми функция ушул ыкчам баскыч менен ачылат. Экранды 2 манжаңыз менен ылдыйдан өйдө карай сүрүп, тез коё бериңиз."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Эми функция ушул ыкчам баскыч менен ачылат. Экранды 3 манжаңыз менен ылдыйдан өйдө карай сүрүп, тез коё бериңиз."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN өтө кыска. Аз дегенде 4 сандан турушу керек."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Бир аздан кийин кайталап көрүңүз"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Толук экран режими"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Чыгуу үчүн экранды өйдө жагынан ылдый сүрүп коюңуз"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Түшүндүм"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Жакшыраак көрүү үчүн буруңуз"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Жакшыраак көрүү үчүн <xliff:g id="NAME">%s</xliff:g> колдонмосун толук экранда ачыңыз"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Колдонуучуну которуштуруу"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Үнүн басуу"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Үнүн басуу үчүн таптап коюңуз"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index dde778b..ef5e51d 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ເລືອກເພື່ອປິດການນຳໃຊ້ການດີບັກໄຮ້ສາຍ."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ເປີດໃຊ້ໂໝດ Test Harness ແລ້ວ"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ດຳເນີນການຣີເຊັດເປັນຄ່າຈາກໂຮງງານເພື່ອປິດການນຳໃຊ້ໂໝດ Test Harness."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"ການຕັ້ງຄ່າ build ຂອງ HSUM ບໍ່ຖືກຕ້ອງ"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ສະຖານະໂໝດຜູ້ໃຊ້ລະບົບແບບບໍ່ມີສ່ວນຫົວຂອງອຸປະກອນນີ້ແຕກຕ່າງຈາກການຕັ້ງຄ່າ build. ກະລຸນາຣີເຊັດອຸປະກອນເປັນຄ່າຈາກໂຮງງານ."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ເປີດນຳໃຊ້ຊີຣຽວຄອນໂຊແລ້ວ"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"ມີຜົນກະທົບກັບປະສິດທິພາບ. ເພື່ອປິດການນຳໃຊ້, ໃຫ້ກວດສອບ bootloader ເບິ່ງ."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ເປີດການນຳໃຊ້ MTE ແບບທົດລອງແລ້ວ"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ເປີດໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ແລ້ວ."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ປິດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ໄວ້ແລ້ວ."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ປ່ອຍປຸ່ມລະດັບສຽງ. ເພື່ອເປີດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ໃຫ້ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ 3 ວິນາທີ."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ເລືອກຄຸນສົມບັດ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ເລືອກຄຸນສົມບັດ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ເລືອກຄຸນສົມບັດ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"ຄຸນສົມບັດນີ້ຈະເປີດຂຶ້ນໃນເທື່ອຕໍ່ໄປທີ່ທ່ານແຕະປຸ່ມການຊ່ວຍເຂົ້າເຖິງ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ຄຸນສົມບັດນີ້ຈະເປີດຂຶ້ນໃນເທື່ອຕໍ່ໄປທີ່ທ່ານໃຊ້ທາງລັດນີ້. ໃຊ້ 2 ນິ້ວປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍຂອງທ່ານແລ້ວປ່ອຍແບບໄວໆ."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ຄຸນສົມບັດນີ້ຈະເປີດຂຶ້ນໃນເທື່ອຕໍ່ໄປທີ່ທ່ານໃຊ້ທາງລັດນີ້. ໃຊ້ 3 ນິ້ວປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍຂອງທ່ານແລ້ວປ່ອຍແບບໄວໆ."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN ສັ້ນເກີນໄປ. ຕ້ອງມີຢ່າງໜ້ອຍ 4 ຫຼັກ."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"ລອງໃໝ່ອີກຄັ້ງໃນພາຍຫລັງ."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"ການເບິ່ງເຕັມໜ້າຈໍ"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ເພື່ອອອກ, ໃຫ້ປັດລົງຈາກເທິງສຸດຂອງໜ້າຈໍຂອງທ່ານ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ເຂົ້າໃຈແລ້ວ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ໝຸນເພື່ອມຸມມອງທີ່ດີຂຶ້ນ"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ເປີດ <xliff:g id="NAME">%s</xliff:g> ໃນໂໝດເຕັມຈໍເພື່ອມຸມມອງທີ່ດີຂຶ້ນ"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ສະຫຼັບຜູ້ໃຊ້"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ປິດສຽງ"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ແຕະເພື່ອປິດສຽງ"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index f7ee53a..e2d59fd 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Pasirinkite, kad išjungtumėte belaidžio ryšio derinimą."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testavimo sistemos režimas įgalintas"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Atkurkite gamyklinius duomenis, kad išjungtumėte testavimo sistemos režimą."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Netinkama sistemos be grafinės naudotojo sąsajos naudotojo režimo kompiliavimo konfigūracija"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Šio įrenginio sistemos be grafinės naudotojo sąsajos naudotojo režimo būsena skiriasi nuo jo kompiliavimo konfigūracijos. Atkurkite gamyklinius įrenginio nustatymus."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijos pultas įgalintas"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Našumas paveiktas. Norėdami išjungti, patikrinkite paleidyklę."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Eksperimentiniai atminties žymėjimo plėtiniai (angl. „Memory Tagging Extensions“, MTE) įgalinti"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ įjungta."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ išjungta."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Atleiskite garsumo klavišus. Kad įjungtumėte „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“, paspauskite ir 3 sekundes palaikykite garsumo klavišus."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Pasirinkite funkciją"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Pasirinkite funkciją"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Pasirinkite funkciją"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funkcija bus atidaryta kitą kartą, kai paliesite pritaikomumo mygtuką"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija bus atidaryta kitą kartą, kai naudosite šį spartųjį klavišą. Perbraukite dviem pirštais aukštyn nuo ekrano apačios ir greitai atleiskite."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija bus atidaryta kitą kartą, kai naudosite šį spartųjį klavišą. Perbraukite trimis pirštais aukštyn nuo ekrano apačios ir greitai atleiskite."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN kodas per trumpas. Jis turi būti bent 4 skaitmenų."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Vėliau bandykite dar kartą"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Peržiūrima viso ekrano režimu"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Jei norite išeiti, perbraukite žemyn nuo ekrano viršaus"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Supratau"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Pasukite, kad geriau matytumėte vaizdą"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Atidarykite „<xliff:g id="NAME">%s</xliff:g>“ viso ekrano režimu, kad geriau matytumėte vaizdą"</string>
@@ -2445,4 +2439,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Perjungti naudotoją"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Nutildyti"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Palieskite, kad nutildytumėte garsą"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 6cc99a4..42fb763 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -2444,4 +2444,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Mainīt lietotāju"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Izslēgt skaņu"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Pieskarieties, lai izslēgtu skaņu"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index cf70e96..b3b3e37 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -2443,4 +2443,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Сменете го корисникот"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Исклучи звук"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Допрете за да го исклучите звукот"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index f13f1bb..f9a74e7 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"വയർലെസ് ഡീബഗ്ഗിംഗ് പ്രവർത്തനരഹിതമാക്കാൻ തിരഞ്ഞെടുക്കുക."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"പരിശോധനാ സംവിധാനങ്ങൾ മോഡ് പ്രവർത്തനക്ഷമമാക്കി"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"പരിശോധനാ സംവിധാന മോഡ് പ്രവർത്തനരഹിതമാക്കാൻ ഫാക്ടറി പുനഃക്രമീകരണം നിർവഹിക്കുക."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM ബിൽഡ് കോൺഫിഗറേഷൻ തെറ്റാണ്"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ഈ ഉപകരണത്തിന്റെ ഹെഡ്ലെസ് സിസ്റ്റം യൂസർ മോഡ് നില ഇതിന്റെ ബിൽഡ് കോൺഫിഗറേഷനിൽ നിന്ന് വ്യത്യസ്തമാണ്. ഉപകരണം ഫാക്ടറി റീസെറ്റ് ചെയ്യുക."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"സീരിയൽ കൺസോൾ പ്രവർത്തനക്ഷമമാക്കി"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"പ്രകടനത്തെ ബാധിച്ചു. പ്രവർത്തനരഹിതമാക്കാൻ, ബൂട്ട് ലോഡർ പരിശോധിക്കുക."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"പരീക്ഷണാത്മക MTE പ്രവർത്തനക്ഷമമാക്കി"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"വോളിയം കീകൾ പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കി."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"വോളിയം കീകൾ അമർത്തിപ്പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓഫാക്കി."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"വോളിയം കീകൾ വിടുക. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കാൻ, രണ്ട് വോളിയം കീകളും വീണ്ടും മൂന്ന് സെക്കൻഡ് അമർത്തിപ്പിടിക്കുക."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ഒരു ഫീച്ചർ തിരഞ്ഞെടുക്കുക"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ഒരു ഫീച്ചർ തിരഞ്ഞെടുക്കുക"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ഒരു ഫീച്ചർ തിരഞ്ഞെടുക്കുക"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"അടുത്ത തവണ നിങ്ങൾ ഉപയോഗസഹായി ബട്ടൺ ടാപ്പ് ചെയ്യുമ്പോൾ ഫീച്ചർ തുറക്കും"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"അടുത്ത തവണ നിങ്ങൾ ഈ കുറുക്കുവഴി ഉപയോഗിക്കുമ്പോൾ ഫീച്ചർ തുറക്കും. നിങ്ങളുടെ സ്ക്രീനിന്റെ താഴെ നിന്ന് 2 വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പെട്ടെന്ന് വിടുക."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"അടുത്ത തവണ നിങ്ങൾ ഈ കുറുക്കുവഴി ഉപയോഗിക്കുമ്പോൾ ഫീച്ചർ തുറക്കും. നിങ്ങളുടെ സ്ക്രീനിന്റെ താഴെ നിന്ന് 3 വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പെട്ടെന്ന് വിടുക."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"പിൻ തീരെ ചെറുതാണ്. 4 അക്കമെങ്കിലും ഉണ്ടായിരിക്കണം."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"പിന്നീട് വീണ്ടും ശ്രമിക്കുക"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"പൂർണ്ണ സ്ക്രീനിൽ കാണുന്നു"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"പുറത്ത് കടക്കാൻ, സ്ക്രീനിന്റെ മുകളിൽ നിന്ന് താഴോട്ട് സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"മനസ്സിലായി"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"മികച്ച കാഴ്ചയ്ക്കായി റൊട്ടേറ്റ് ചെയ്യുക"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"മികച്ച കാഴ്ചയ്ക്ക് പൂർണ്ണ സ്ക്രീനിൽ <xliff:g id="NAME">%s</xliff:g> തുറക്കുക"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ഉപയോക്താവിനെ മാറുക"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"മ്യൂട്ടുചെയ്യുക"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ശബ്ദം മ്യൂട്ട് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 109cce8..dc92f63 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Wireless debugging-г идэвхгүй болгохын тулд сонгоно уу."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Туршилтын цогц горимыг идэвхжүүлсэн"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Туршилтын цогц горимыг идэвхгүй болгохын тулд үйлдвэрийн төлөвт шинэчилнэ үү."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM-н хийцийн тохируулга буруу байна"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Энэ төхөөрөмжийн Интерфейсгүй системийн хэрэглэгчийн горимын төлөв хийцийн тохируулгаас нь өөр байна. Төхөөрөмжийг үйлдвэрийн тохиргоонд шинэчилнэ үү."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Цуваа консолыг идэвхжүүлсэн"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Гүйцэтгэлд нөлөөлнө. Идэвхгүй болгохын тулд эхэлж ачаалагчийг шалгана уу."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Туршилтын MTE-г идэвхжүүлсэн"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаалаа."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г унтраалаа."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Дууны түвшний товчнуудыг суллана уу. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаахын тулд дууны түвшний 2 товчийг зэрэг 3 секундийн турш удаан дарна уу."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Онцлог сонгоно уу"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Онцлог сонгоно уу"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Онцлог сонгоно уу"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Таныг дараагийн удаа хандалтын товчийг товших үед тус онцлог нээгдэнэ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Таныг дараагийн удаа энэ товчлолыг ашиглах үед тус онцлог нээгдэнэ. Дэлгэцийнхээ доод талаас 2 хуруугаараа дээш шудраад, түргэн суллана уу."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Таныг дараагийн удаа энэ товчлолыг ашиглах үед тус онцлог нээгдэнэ. Дэлгэцийнхээ доод талаас 3 хуруугаараа дээш шудраад, түргэн суллана уу."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"ПИН хэт богино байна. Хамгийн багадаа 4 цифртэй байх ёстой."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Дараа дахин оролдоно уу"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Бүтэн дэлгэцээр үзэж байна"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Гарахын тулд дэлгэцийнхээ дээд талаас доош шударна уу"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Ойлголоо"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Харагдах байдлыг сайжруулах бол эргүүлнэ үү"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Харагдах байдлыг сайжруулах бол <xliff:g id="NAME">%s</xliff:g>-г бүтэн дэлгэцээр нээнэ үү"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Хэрэглэгч сэлгэх"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Дууг хаах"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Дууг хаахын тулд товшино уу"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 3817d27..3874200 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"वायरलेस डीबगिंग बंद करण्यासाठी निवडा."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"टेस्ट हार्नेस मोड सुरू केला आहे"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"टेस्ट हार्नेस मोड बंद करण्यासाठी फॅक्टरी रीसेट करा."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM च्या बिल्डचे कॉन्फिगरेशन चुकीचे आहे"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"या डिव्हाइसची हेडलेस सिस्टीम वापरकर्ता मोड स्थिती ही बिल्डच्या कॉंफिगरेशनपेक्षा वेगळी आहे. कृपया डिव्हाइस फॅक्टरी रीसेट करा."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"सिरीअल कन्सोल सुरू केला आहे"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"परफॉर्मन्सवर परिणाम होतो. बंद करण्यासाठी, बूटलोडर तपासा."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"प्रायोगिक MTE सुरू केले आहे"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू केला आहे."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> बंद केले आहे."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"व्हॉल्यूम की रिलीझ करा. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू करण्यासाठी, दोन्ही व्हॉल्यूम की पुन्हा प्रेस करा आणि तीन सेकंदांसाठी धरून ठेवा."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"वैशिष्ट्य निवडा"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"वैशिष्ट्य निवडा"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"वैशिष्ट्य निवडा"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"तुम्ही पुढील वेळी अॅक्सेसिबिलिटी बटणावर टॅप कराल, तेव्हा वैशिष्ट्य उघडेल"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"तुम्ही पुढील वेळी हा शॉर्टकट वापराल, तेव्हा वैशिष्ट्य उघडेल. २ बोटांनी तुमच्या स्क्रीनच्या तळापासून वर स्वाइप करा आणि पटकन रिलीझ करा."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"तुम्ही पुढील वेळी हा शॉर्टकट वापराल, तेव्हा वैशिष्ट्य उघडेल. ३ बोटांनी तुमच्या स्क्रीनच्या तळापासून वर स्वाइप करा आणि पटकन रिलीझ करा."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"पिन खूप लहान आहे. किमान 4 अंकांचा असणे आवश्यक आहे."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"नंतर पुन्हा प्रयत्न करा"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"पूर्ण स्क्रीनवर पाहत आहात"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"बाहेर पडण्यासाठी, तुमच्या स्क्रीनच्या सर्वात वरून खाली स्वाइप करा"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"समजले"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"अधिक चांगल्या दृश्यासाठी फिरवा"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"अधिक चांगल्या दृश्यासाठी <xliff:g id="NAME">%s</xliff:g> हे फुल स्क्रीनमध्ये उघडा"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"वापरकर्ता स्विच करा"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"म्यूट करा"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"आवाज म्यूट करण्यासाठी टॅप करा"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"ब्राउझर"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Contacts"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ईमेल"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"एसएमएस"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"संगीत"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Calendar"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Calculator"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"अॅप्लिकेशन"</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index d1bd23d..cc866b90 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Pilih untuk melumpuhkan penyahpepijatan wayarles."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mod Abah-abah Ujian didayakan"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Laksanakan tetapan semula kilang untuk melumpuhkan Mod Abah-abah Ujian."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Konfigurasi binaan HSUM salah"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Keadaan Mod Pengguna Sistem Tanpa Kepala peranti ini berbeza daripada konfigurasi binaan peranti. Tetapkan semula peranti kepada tetapan kilang."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Konsol bersiri didayakan"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Prestasi terjejas. Untuk melumpuhkan, semak pemuat but."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Percubaan MTE didayakan"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dihidupkan."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dimatikan."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lepaskan kekunci kelantangan. Untuk menghidupkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, sila tekan dan tahan kedua-dua kekunci kelantangan sekali lagi selama 3 saat."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Pilih ciri"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Pilih ciri"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Pilih ciri"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Ciri ini akan dibuka pada kali seterusnya anda mengetik butang kebolehaksesan"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Ciri ini akan dibuka pada kali seterusnya anda menggunakan pintasan ini. Leret ke atas menggunakan 2 jari dari bahagian bawah skrin anda dan lepaskan dengan cepat."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Ciri ini akan dibuka pada kali seterusnya anda menggunakan pintasan ini. Leret ke atas menggunakan 3 jari dari bahagian bawah skrin anda dan lepaskan dengan cepat."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN terlalu pendek. Mesti sekurang-kurangnya 4 angka."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Cuba sebentar lagi"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Melihat skrin penuh"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Untuk keluar, leret ke bawah daripada bahagian atas skrin anda"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Faham"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Putar untuk mendapatkan paparan yang lebih baik"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Buka <xliff:g id="NAME">%s</xliff:g> dalam skrin penuh untuk mendapatkan paparan yang lebih baik"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Tukar pengguna"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Redam"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Ketik untuk meredamkan bunyi"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Penyemak Imbas"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Kenalan"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"E-mel"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Muzik"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Kalendar"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Kalkulator"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikasi"</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 535b854..fca79cb 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ကြိုးမဲ့ အမှားရှာပြင်ခြင်းကို ပိတ်ရန် ရွေးပါ။"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"\'စမ်းသပ်ခြင်းစနစ်မုဒ်\' ဖွင့်ထားသည်"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"\'စမ်းသပ်ခြင်းစနစ် မုဒ်\' ကိုပိတ်ရန် စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပါ။"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM တည်ဆောက်ပုံ စီစဉ်သတ်မှတ်ချက် မှားနေသည်"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ဤစက်၏ ‘မမြင်နိုင်သော စနစ်အသုံးပြုသူမုဒ်’ အခြေအနေသည် ၎င်း၏ တည်ဆောက်ပုံ စီစဉ်သတ်မှတ်ချက်နှင့် ကွဲလွဲနေသည်။ ဤစက်ကို စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပါ။"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"အမှတ်စဉ် ကွန်ဆိုးလ်ကို ဖွင့်ထားသည်"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"စွမ်းဆောင်ရည်အပေါ် သက်ရောက်မှုရှိနိုင်ပါသည်။ ပိတ်ရန် bootloader ကို စစ်ဆေးပါ။"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"အစမ်းသုံး MTE ကို ဖွင့်ထားသည်"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်လိုက်သည်။"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ပိတ်လိုက်သည်။"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"အသံထိန်းခလုတ်များကို လွှတ်လိုက်ပါ။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်ရန် အသံထိန်းခလုတ်နှစ်ခုစလုံးကို ၃ စက္ကန့်ကြာအောင် ထပ်နှိပ်ပါ။"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"တူးလ်ရွေးပါ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"တူးလ်ရွေးပါ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"တူးလ်ရွေးပါ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"နောက်တစ်ကြိမ်တွင် သုံးနိုင်မှုခလုတ်ကို တို့သည့်အခါ ဤဝန်ဆောင်မှု ပွင့်လာမည်"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"နောက်တစ်ကြိမ်တွင် ဤဖြတ်လမ်းကို သုံးသည့်အခါ ဤဝန်ဆောင်မှု ပွင့်လာမည်။ သင့်ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ လက် ၂ ချောင်းဖြင့် ပွတ်ဆွဲ၍ အမြန်လွှတ်လိုက်ပါ။"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"နောက်တစ်ကြိမ်တွင် ဤဖြတ်လမ်းကို သုံးသည့်အခါ ဤဝန်ဆောင်မှု ပွင့်လာမည်။ သင့်ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ လက် ၃ ချောင်းဖြင့် ပွတ်ဆွဲ၍ အမြန်လွှတ်လိုက်ပါ။"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"ပင် နံပါတ် တိုလွန်းသည်။. အနည်းဆုံး ဂဏန်း ၄ လုံး ဖြစ်ရမည်။"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"နောက်မှ ပြန်ကြိုးစားပါ"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"မျက်နှာပြင်အပြည့် ကြည့်နေသည်"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ထွက်ရန် သင့်ဖန်သားပြင်ထိပ်မှ အောက်သို့ ပွတ်ဆွဲပါ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ရပါပြီ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ပိုကောင်းသောမြင်ကွင်းအတွက် လှည့်ပါ"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ပိုကောင်းသောမြင်ကွင်းအတွက် ဖန်သားပြင်အပြည့်ဖြင့် <xliff:g id="NAME">%s</xliff:g> ကို ဖွင့်ပါ"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"အသုံးပြုသူ ပြောင်းရန်"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"အသံပိတ်ရန်"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"အသံပိတ်ရန် တို့ပါ"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index fe45ab7..03db9c5 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Velg for å slå av trådløs feilsøking."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testrammeverk-modus er slått på"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Tilbakestill enheten til fabrikkstandard for å slå av Testrammeverk-modus."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Feil konfigurasjon for kodebygging for hodeløs systembruker-modus"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Statusen for hodeløs systembruker-modus for denne enheten avviker fra enhetens konfigurasjon for kodebygging. Tilbakestill enheten til fabrikkstandard."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriekonsollen er aktivert"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ytelsen er påvirket. Sjekk oppstartsinnlasteren for å deaktivere."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE på forsøksstadiet er aktivert"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Slipp opp volumtastene. For å slå på <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, trykk og hold på begge volumtastene igjen i 3 sekunder."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Velg en funksjon"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Velg en funksjon"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Velg en funksjon"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funksjonen åpnes neste gang du trykker på Tilgjengelighet-knappen"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funksjonen åpnes neste gang du bruker denne snarveien. Sveip opp med 2 fingre fra nederst på skjermen, og slipp raskt opp."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funksjonen åpnes neste gang du bruker denne snarveien. Sveip opp med 3 fingre fra nederst på skjermen, og slipp raskt opp."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-koden er for kort. Den må bestå av minst fire sifre."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Prøv på nytt senere"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visning i fullskjerm"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"For å gå ut, sveip ned fra toppen av skjermen"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Skjønner"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Roter for å få en bedre visning"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Åpne <xliff:g id="NAME">%s</xliff:g> i fullskjerm for å se bedre"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Bytt bruker"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Kutt lyden"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Trykk for å kutte lyden"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 8519e23..6c58d16 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"वायरलेस डिबगिङ असक्षम पार्न यो विकल्प चयन गर्नुहोस्।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"परीक्षण प्याकेज मोड सक्षम पारियो"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"परीक्षण प्याकेज मोड असक्षम पार्न फ्याक्ट्री रिसेट गर्नुहोस्।"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM बिल्ड कन्फिगुरेसन गलत छ"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"यो डिभाइसको हेडलेस सिस्टम युजर मोडको स्थिति यसको बिल्ड कन्फिगुरेसनभन्दा फरक छ। कृपया यो डिभाइस फ्याक्ट्री रिसेट गर्नुहोस्।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"क्रमसम्बन्धी कन्सोल सक्षम पारियो"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"पर्फर्मेन्समा प्रभाव परेको छ। यसलाई असक्षम पार्न बुटलोडरको जाँच गर्नुहोस्।"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"परीक्षणका क्रममा रहेको MTE अन गरियो"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन भयो।"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अफ भयो।"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"भोल्युम बटनहरू थिच्न छाड्नुहोस्। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन गर्न दुवै भोल्युम बटन फेरि ३ सेकेन्डसम्म थिचिराख्नुहोस्।"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"कुनै सुविधा चयन गर्नुहोस्"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"कुनै सुविधा चयन गर्नुहोस्"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"कुनै सुविधा चयन गर्नुहोस्"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"तपाईंले अर्को पटक एक्सेसिबिलिटी बटनमा ट्याप गर्दा यो सुविधा खुल्ने छ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"तपाईंले अर्को पटक यो सर्टकट प्रयोग गर्दा यो सुविधा खुल्ने छ। २ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस् र तुरुन्तै औँला उठाउनुहोस्।"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"तपाईंले अर्को पटक यो सर्टकट प्रयोग गर्दा यो सुविधा खुल्ने छ। ३ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस् र तुरुन्तै औँला उठाउनुहोस्।"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN अति छोटो भयो। कम्तीमा ४ अङ्क हुन आवश्यक छ।"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"पछि पुनः प्रयास गर्नुहोस्"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"पूरा पर्दा हेर्दै"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"यहाँबाट बाहिरिन स्क्रिनको सिरानबाट तलतिर स्वाइप गर्नुहोस्"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"बुझेँ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"अझ राम्रो दृश्य हेर्न चाहनुहुन्छ भने रोटेट गर्नुहोस्"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"अझ राम्रो दृश्य हेर्न चाहनुहुन्छ भने <xliff:g id="NAME">%s</xliff:g> खोल्नुहोस्"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"प्रयोगकर्ता बदल्नुहोस्"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"म्युट गर्नुहोस्"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"साउन्ड म्युट गर्न ट्याप गर्नुहोस्"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index e557d59..5fd6d42 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecteer deze optie om draadloze foutopsporing uit te zetten."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test harness-modus staat aan"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Reset de fabrieksinstellingen om de test harness-modus uit te zetten."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Onjuiste HSUM-buildconfiguratie"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"De Headless System User Mode-status van dit apparaat wijkt af van de buildconfiguratie. Zet het apparaat terug op de fabrieksinstellingen."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriële console staat aan"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Dit is van invloed op de prestaties. Controleer de bootloader om dit uit te zetten."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Experimentele MTE aangezet"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat aan."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat uit."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Laat de volumeknoppen los. Als je <xliff:g id="SERVICE_NAME">%1$s</xliff:g> wilt aanzetten, houd je beide volumeknoppen weer 3 seconden ingedrukt."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Kies een functie"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Kies een functie"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Kies een functie"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"De functie opent de volgende keer dat je op de knop Toegankelijkheid tikt"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"De functie opent de volgende keer dat je deze snelkoppeling gebruikt. Swipe met 2 vingers omhoog vanaf de onderkant van je scherm en laat snel los."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"De functie opent de volgende keer dat je deze snelkoppeling gebruikt. Swipe met 3 vingers omhoog vanaf de onderkant van je scherm en laat snel los."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Pincode is te kort. Moet ten minste vier cijfers lang zijn."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Probeer het later opnieuw"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Volledig scherm wordt getoond"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Swipe omlaag vanaf de bovenkant van het scherm om af te sluiten"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Ik snap het"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Draai voor een betere weergave"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Open <xliff:g id="NAME">%s</xliff:g> op volledig scherm voor een betere weergave"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Gebruiker wijzigen"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Geluid uitzetten"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tik om het geluid uit te zetten"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 211d0ae..883ef1f 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -1032,7 +1032,7 @@
<string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"ଆପଣ ଆପଣଙ୍କର ଅନଲକ୍ ପାଟର୍ନକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଆଙ୍କିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ଥର ଅସଫଳ ଚେଷ୍ଟା ପରେ, ଆପଣଙ୍କୁ Google ସାଇନ୍ଇନ୍ ବ୍ୟବହାର କରି ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍କୁ ଅନ୍ଲକ୍ କରିବା ପାଇଁ କୁହାଯିବ। \n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> ସେକେଣ୍ଡ ମଧ୍ୟରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"ଅନଲକ୍ ପାଟର୍ନକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଅଙ୍କନ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ ପ୍ରୟାସ ପରେ, Google ସାଇନ୍-ଇନ୍ ବ୍ୟବହାର କରି ଆପଣଙ୍କୁ ନିଜ ଫୋନ୍କୁ ଅନଲକ୍ କରିବାକୁ କୁହାଯିବ।\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"ଟାବଲେଟ୍କୁ ଅନ୍ଲକ୍ କରିବା ପାଇଁ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ ପ୍ରୟାସ ପରେ, ଟାବଲେଟ୍ଟି ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ ଏବଂ ଆପଣ ସମସ୍ତ ୟୁଜର୍ ଡାଟା ହରାଇବେ।"</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍କୁ ଭୁଲ ଭାବେ ଅନ୍ଲକ୍ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ଥର ଅସଫଳ ଚେଷ୍ଟା ପରେ, ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍ ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ କରାଯିବ ଏବଂ ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତା ଡାଟା ହରାଇବ।"</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଆପଣଙ୍କର Android TV ଡିଭାଇସକୁ ଭୁଲ ଭାବେ ଅନଲକ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ଥର ଅସଫଳ ଚେଷ୍ଟା ପରେ ଆପଣଙ୍କର Android TV ଡିଭାଇସ ଫେକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ କରାଯିବ ଏବଂ ସମସ୍ତ ୟୁଜର ଡାଟା ହରାଇବ।"</string>
<string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"ଫୋନ୍ ଅନଲକ୍ କରିବାକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ପ୍ରୟାସ କଲେ। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ ପ୍ରୟାସ ପରେ, ଫୋନ୍ଟି ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ ଏବଂ ଆପଣ ସମସ୍ତ ୟୁଜର୍ ଡାଟା ହରାଇବେ।"</string>
<string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"ଟାବଲେଟ୍ ଅନଲକ୍ କରିବାକୁ ଆପଣ <xliff:g id="NUMBER">%d</xliff:g> ଥର ଭୁଲ ପ୍ରୟାସ କଲେ। ଟାବଲେଟ୍ଟି ବର୍ତ୍ତମାନ ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ।"</string>
<string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"ଆପଣ <xliff:g id="NUMBER">%d</xliff:g> ଥର ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍କୁ ଭୁଲ ଭାବେ ଅନ୍ଲକ୍ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି। ବର୍ତ୍ତମାନ ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍ ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ।"</string>
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ୱାୟାରଲେସ୍ ଡିବଗିଂକୁ ଅକ୍ଷମ କରିବା ପାଇଁ ଚୟନ କରନ୍ତୁ।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ଟେଷ୍ଟ ହାର୍ନେସ୍ ମୋଡ୍ ସକ୍ଷମ ଅଛି"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ଟେଷ୍ଟ ହାର୍ନେସ୍ ମୋଡ୍ ଅକ୍ଷମ କରିବାକୁ ଏକ ଫ୍ୟାକ୍ଟରୀ ରିସେଟ୍ କରନ୍ତୁ।"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"ଭୁଲ HSUM ବିଲ୍ଡ କନଫିଗରେସନ"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ଏହି ଡିଭାଇସର ହେଡଲେସ ସିଷ୍ଟମ ୟୁଜର ମୋଡ ସ୍ଥିତି ଏହାର ବିଲ୍ଡ କନଫିଗରେସନଠାରୁ ଭିନ୍ନ ଅଟେ। ଦୟାକରି ଡିଭାଇସକୁ ଫେକ୍ଟୋରୀ ରିସେଟ କରନ୍ତୁ।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"କ୍ରମିକ କନ୍ସୋଲ୍କୁ ସକ୍ଷମ କରାଯାଇଛି"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"କାର୍ଯ୍ୟଦକ୍ଷତା ପ୍ରଭାବିତ ହୋଇଛି। ଅକ୍ଷମ କରିବା ପାଇଁ, ବୁଟ୍ଲୋଡର୍ର ଯାଞ୍ଚ କରନ୍ତୁ।"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ପରୀକ୍ଷାମୂଳକ MTEକୁ ସକ୍ଷମ କରାଯାଇଛି"</string>
@@ -1709,7 +1707,7 @@
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"ଆପଣଙ୍କ ପାସ୍ୱର୍ଡକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ଭାବେ ଟାଇପ୍ କରିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ସେକେଣ୍ଡ ପରେ \n\nପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"ଆପଣଙ୍କ ଲକ୍ ଖୋଲିବା ପାଟର୍ନକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ଭାବେ ଅଙ୍କନ କରିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ସେକେଣ୍ଡ ପରେ \n\nପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"ଟାବଲେଟ୍ ଅନଲକ୍ କରିବାକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ପ୍ରୟାସ କଲେ। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ ପ୍ରୟାସ ପରେ, ଟାବଲେଟ୍ଟି ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ ଏବଂ ସମସ୍ତ ୟୁଜର୍ ଡାଟା ବାହାରିଯିବ।"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍କୁ ଭୁଲ ଭାବେ ଅନ୍ଲକ୍ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ଥର ଅସଫଳ ଚେଷ୍ଟା ପରେ, ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍ ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ କରାଯିବ ଏବଂ ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତା ଡାଟା ହରାଇବ।"</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଆପଣଙ୍କର Android TV ଡିଭାଇସକୁ ଭୁଲ ଭାବେ ଅନଲକ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି। <xliff:g id="NUMBER_1">%2$d</xliff:g> ଥର ଅସଫଳ ଚେଷ୍ଟା ପରେ ଆପଣଙ୍କର Android TV ଡିଭାଇସ ଫେକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ କରାଯିବ ଏବଂ ସମସ୍ତ ୟୁଜର ଡାଟା ହରାଇବ।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"ଫୋନ୍ ଅନଲକ୍ କରିବାକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ପ୍ରୟାସ କଲେ। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ ପ୍ରୟାସ ପରେ, ଫୋନ୍ଟି ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ ଏବଂ ସମସ୍ତ ୟୁଜର୍ ଡାଟା ବାହାରିଯିବ।"</string>
<string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"ଟାବଲେଟ୍ ଅନଲକ୍ କରିବାକୁ ଆପଣ <xliff:g id="NUMBER">%d</xliff:g> ଥର ଭୁଲ ପ୍ରୟାସ କଲେ। ଟାବଲେଟ୍ଟି ବର୍ତ୍ତମାନ ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ।"</string>
<string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"ଆପଣ <xliff:g id="NUMBER">%d</xliff:g> ଥର ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍କୁ ଭୁଲ ଭାବେ ଅନ୍ଲକ୍ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି। ବର୍ତ୍ତମାନ ଆପଣଙ୍କର Android TV ଡିଭାଇସ୍ ଫ୍ୟାକ୍ଟୋରୀ ଡିଫଲ୍ଟକୁ ରିସେଟ୍ ହୋଇଯିବ।"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଚାଲୁ ହୋଇଛି।"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ବନ୍ଦ ହୋଇଛି।"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ଭଲ୍ୟୁମ କୀ\'ଗୁଡ଼ିକୁ ରିଲିଜ କରନ୍ତୁ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g>କୁ ଚାଲୁ କରିବା ପାଇଁ ଉଭୟ ଭଲ୍ୟୁମ କୀ\'କୁ ପୁଣି 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇ ଧରି ରଖନ୍ତୁ।"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ଏକ ଫିଚର ବାଛନ୍ତୁ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ଏକ ଫିଚର ବାଛନ୍ତୁ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ଏକ ଫିଚର ବାଛନ୍ତୁ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"ଆପଣ ଆଗାମୀ ଥର ଆକ୍ସେସିବିଲିଟୀ ବଟନରେ ଟାପ କଲେ ଏହି ଫିଚରଟି ଖୋଲିବ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ଆପଣ ଆଗାମୀ ଥର ଏହି ସର୍ଟକଟକୁ ବ୍ୟବହାର କଲେ ଏହି ଫିଚରଟି ଖୋଲିବ। ଆପଣଙ୍କ ସ୍କ୍ରିନର ନିମ୍ନଭାଗରୁ 2 ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରି ଶୀଘ୍ର ରିଲିଜ କରନ୍ତୁ।"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ଆପଣ ଆଗାମୀ ଥର ଏହି ସର୍ଟକଟକୁ ବ୍ୟବହାର କଲେ ଏହି ଫିଚରଟି ଖୋଲିବ। ଆପଣଙ୍କ ସ୍କ୍ରିନର ନିମ୍ନଭାଗରୁ 3 ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରି ଶୀଘ୍ର ରିଲିଜ କରନ୍ତୁ।"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN ବହୁତ ଛୋଟ। ଅତି କମ୍ରେ 4 ସଂଖ୍ୟା ବିଶିଷ୍ଟ ହେବା ଦରକାର।"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନରେ ଦେଖାଯାଉଛି"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ବାହାରି ଯିବା ପାଇଁ ଆପଣଙ୍କ ସ୍କ୍ରିନର ଶୀର୍ଷରୁ ତଳକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ବୁଝିଗଲି"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ଏକ ଭଲ ଭ୍ୟୁ ପାଇଁ ରୋଟେଟ କରନ୍ତୁ"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ଏକ ଭଲ ଭ୍ୟୁ ପାଇଁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରେ <xliff:g id="NAME">%s</xliff:g> ଖୋଲନ୍ତୁ"</string>
@@ -1991,7 +1985,7 @@
<string name="importance_from_person" msgid="4235804979664465383">"ସମ୍ପୃକ୍ତ ଲୋକଙ୍କ କାରଣରୁ ଏହା ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଅଟେ।"</string>
<string name="notification_history_title_placeholder" msgid="7748630986182249599">"କଷ୍ଟମ୍ ଆପ୍ ବିଜ୍ଞପ୍ତି"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g>ରେ ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବା ପାଇଁ <xliff:g id="ACCOUNT">%2$s</xliff:g>କୁ (ପୂର୍ବରୁ ଏହି ଆକାଉଣ୍ଟ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ନାମରେ ଅଛି) ଅନୁମତି ଦେବେ?"</string>
- <string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>ରେ ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବା ପାଇଁ <xliff:g id="ACCOUNT">%2$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string>
+ <string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>ରେ ଏକ ନୂଆ ୟୁଜର ତିଆରି କରିବା ପାଇଁ <xliff:g id="ACCOUNT">%2$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string>
<string name="supervised_user_creation_label" msgid="6884904353827427515">"ନିରୀକ୍ଷିତ ୟୁଜର ଯୋଗ କରନ୍ତୁ"</string>
<string name="language_selection_title" msgid="52674936078683285">"ଏକ ଭାଷା ଯୋଗ କରନ୍ତୁ"</string>
<string name="country_selection_title" msgid="5221495687299014379">"ପସନ୍ଦର ଅଞ୍ଚଳ"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ୟୁଜରଙ୍କୁ ସ୍ୱିଚ କରନ୍ତୁ"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ମ୍ୟୁଟ କରନ୍ତୁ"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ସାଉଣ୍ଡ ମ୍ୟୁଟ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 76ddb42..fda4943 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਚੁਣੋ।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ਟੈਸਟ ਹਾਰਨੈੱਸ ਮੋਡ ਚਾਲੂ ਹੈ"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ਟੈਸਟ ਹਾਰਨੈੱਸ ਮੋਡ ਬੰਦ ਕਰਨ ਲਈ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਕਰੋ।"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"ਗਲਤ HSUM ਬਿਲਡ ਸੰਰੂਪਣ"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ਇਸ ਡੀਵਾਈਸ ਦੀ ਹੈੱਡਲੈੱਸ ਸਿਸਟਮ ਯੂਜ਼ਰ ਮੋਡ ਸਥਿਤੀ ਇਸਦੇ ਬਿਲਡ ਸੰਰੂਪਣ ਤੋਂ ਵੱਖਰੀ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਡੀਵਾਈਸ ਨੂੰ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਕਰੋ।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ਸੀਰੀਅਲ ਕੰਸੋਲ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"ਕਾਰਗੁਜ਼ਾਰੀ ਪ੍ਰਭਾਵਿਤ ਹੋਈ ਹੈ। ਬੰਦ ਕਰਨ ਲਈ, ਬੂਟਲੋਡਰ ਦੇਖੋ।"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ਪ੍ਰਯੋਗਮਈ MTE ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ ਛੱਡੋ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ, ਦੋਵੇਂ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ 3 ਸਕਿੰਟਾਂ ਲਈ ਦੁਬਾਰਾ ਦਬਾਈ ਰੱਖੋ।"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ਕੋਈ ਵਿਸ਼ੇਸ਼ਤਾ ਚੁਣੋ"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ਕੋਈ ਵਿਸ਼ੇਸ਼ਤਾ ਚੁਣੋ"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ਕੋਈ ਵਿਸ਼ੇਸ਼ਤਾ ਚੁਣੋ"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਨੂੰ ਟੈਪ ਕਰੋਗੇ, ਤਾਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਖੁੱਲ੍ਹ ਜਾਵੇਗੀ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ, ਤਾਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਖੁੱਲ੍ਹ ਜਾਵੇਗੀ। 2 ਉਂਗਲਾਂ ਨਾਲ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਤੁਰੰਤ ਛੱਡੋ।"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ, ਤਾਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਖੁੱਲ੍ਹ ਜਾਵੇਗੀ। 3 ਉਂਗਲਾਂ ਨਾਲ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਤੁਰੰਤ ਛੱਡੋ।"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"ਪਿੰਨ ਬਹੁਤ ਜ਼ਿਆਦਾ ਛੋਟਾ ਹੈ। ਘੱਟੋ-ਘੱਟ 4 ਅੰਕ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"ਪੂਰੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦੇਖੋ"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ਬਾਹਰ ਜਾਣ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰ ਤੋਂ ਹੇਠਾਂ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ਸਮਝ ਲਿਆ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"ਬਿਹਤਰ ਦ੍ਰਿਸ਼ ਅਨੁਭਵ ਲਈ ਘੁਮਾਓ"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"ਬਿਹਤਰ ਦ੍ਰਿਸ਼ ਅਨੁਭਵ ਲਈ <xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਪੂਰੀ-ਸਕ੍ਰੀਨ ਵਿੱਚ ਖੋਲ੍ਹੋ"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"ਵਰਤੋਂਕਾਰ ਬਦਲੋ"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ਮਿਊਟ ਕਰੋ"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ਧੁਨੀ ਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 81e5bf2..bfaf21c 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Wybierz, by wyłączyć debugowanie bezprzewodowe."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Tryb jarzma testowego został włączony"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Przywróć ustawienia fabryczne, by wyłączyć tryb jarzma testowego."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Nieprawidłowa konfiguracja kompilacji trybu użytkownika systemowego bez interfejsu graficznego"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Stan trybu użytkownika systemowego bez interfejsu graficznego różni się od konfiguracji kompilacji. Przywróć urządzenie do ustawień fabrycznych."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Konsola szeregowa włączona"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Wpływa na wydajność. Aby wyłączyć, sprawdź program rozruchowy."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Włączono eksperymentalne rozszerzenie MTE"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została włączona."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została wyłączona."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Zwolnij przyciski głośności. Aby włączyć usługę <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, naciśnij i przytrzymaj oba przyciski głośności przez 3 sekundy."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Wybierz funkcję"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Wybierz funkcję"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Wybierz funkcję"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funkcja otworzy się, gdy następnym razem klikniesz przycisk ułatwień dostępu"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcja otworzy się, gdy następnym razem użyjesz tego skrótu. Przesuń 2 palcami z dołu ekranu i szybko je unieś."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcja otworzy się, gdy następnym razem użyjesz tego skrótu. Przesuń 3 palcami z dołu ekranu i szybko je unieś."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN jest za krótki. Musi mieć co najmniej 4 cyfry."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Spróbuj ponownie później"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Włączony pełny ekran"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Aby zamknąć, przesuń palcem w dół z góry ekranu"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Obróć, aby lepiej widzieć"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Otwórz aplikację <xliff:g id="NAME">%s</xliff:g> na pełnym ekranie, aby lepiej widzieć"</string>
@@ -2445,4 +2439,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Przełącz konto"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Wycisz"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Kliknij, aby wyciszyć dźwięk"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Przeglądarka"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Kontakty"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"E-mail"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS-y"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Muzyka"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Kalendarz"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Kalkulator"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mapy"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacje"</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index c270c1c..a6c07ef 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecione para desativar a depuração por Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo Arcabouço de testes ativado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Realize uma redefinição para configuração original para desativar o modo Arcabouço de testes."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configuração incorreta do build do modo de usuário do sistema headless"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"O estado do modo de usuário do sistema headless deste dispositivo é diferente da configuração do build dele. Faça a redefinição de fábrica do dispositivo."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console serial ativado"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"O desempenho foi impactado. Para desativar, verifique o carregador de inicialização."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE experimental ativada"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solte as teclas de volume. Para ativar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, toque e pressione as duas teclas de volume por três segundos."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Escolha um recurso"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Escolha um recurso"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Escolha um recurso"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"O recurso será aberto na próxima vez que você tocar no botão de acessibilidade"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 2 dedos de baixo para cima na tela e solte rapidamente."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 3 dedos de baixo para cima na tela e solte rapidamente."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"O PIN é curto demais. Deve ter pelo menos 4 dígitos."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Tente novamente mais tarde"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visualização em tela cheia"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Para sair, deslize de cima para baixo na tela"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Entendi"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Gire a tela para ter uma visualização melhor"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Abra o app <xliff:g id="NAME">%s</xliff:g> em tela cheia para ter uma melhor visualização"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Trocar usuário"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Desativar som"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Toque para silenciar"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index cf07ea8..6c88408 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecione para desativar a depuração sem fios."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo de estrutura de teste ativado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Efetue uma reposição de dados de fábrica para desativar o Modo de estrutura de teste."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configuração da compilação do modo de utilizador do sistema sem interface incorreta"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"O estado do modo de utilizador do sistema sem interface deste dispositivo difere da respetiva configuração da compilação. Faça uma reposição de fábrica do dispositivo."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Consola de série ativada"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"O desempenho é afetado. Para desativar, selecione o carregador de arranque."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE experimental ativada"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solte as teclas de volume. Para ativar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, prima sem soltar ambas as teclas de volume novamente durante 3 segundos."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Escolha uma funcionalidade"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Escolha uma funcionalidade"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Escolha uma funcionalidade"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"A funcionalidade vai ser aberta da próxima vez que tocar no botão Acessibilidade"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"A funcionalidade vai ser aberta da próxima vez que usar este atalho. Deslize com 2 dedos a partir da parte inferior do ecrã e solte rapidamente."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"A funcionalidade vai ser aberta da próxima vez que usar este atalho. Deslize para cima com 3 dedos a partir da parte inferior do ecrã e solte rapidamente."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"O PIN é demasiado pequeno. Deve ter, no mínimo, 4 dígitos."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Tente mais tarde"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visualização de ecrã inteiro"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Para sair, deslize rapidamente para baixo a partir da parte superior do ecrã"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rode para uma melhor visualização"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Abra <xliff:g id="NAME">%s</xliff:g> em ecrã inteiro para uma melhor visualização"</string>
@@ -2444,4 +2438,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Mudar de utilizador"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Desativar som"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Toque para desativar o som"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Navegador"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Contactos"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"Email"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Música"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Calendário"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Calculadora"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Maps"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplicações"</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index c270c1c..a6c07ef 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecione para desativar a depuração por Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo Arcabouço de testes ativado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Realize uma redefinição para configuração original para desativar o modo Arcabouço de testes."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configuração incorreta do build do modo de usuário do sistema headless"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"O estado do modo de usuário do sistema headless deste dispositivo é diferente da configuração do build dele. Faça a redefinição de fábrica do dispositivo."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console serial ativado"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"O desempenho foi impactado. Para desativar, verifique o carregador de inicialização."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE experimental ativada"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solte as teclas de volume. Para ativar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, toque e pressione as duas teclas de volume por três segundos."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Escolha um recurso"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Escolha um recurso"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Escolha um recurso"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"O recurso será aberto na próxima vez que você tocar no botão de acessibilidade"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 2 dedos de baixo para cima na tela e solte rapidamente."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 3 dedos de baixo para cima na tela e solte rapidamente."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"O PIN é curto demais. Deve ter pelo menos 4 dígitos."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Tente novamente mais tarde"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visualização em tela cheia"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Para sair, deslize de cima para baixo na tela"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Entendi"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Gire a tela para ter uma visualização melhor"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Abra o app <xliff:g id="NAME">%s</xliff:g> em tela cheia para ter uma melhor visualização"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Trocar usuário"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Desativar som"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Toque para silenciar"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index e490ac5e..4a94715 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selectează pentru a dezactiva remedierea erorilor wireless."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modul Set de testare este activat"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Revino la setările din fabrică pentru a dezactiva modul Set de testare."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Configurare greșită a versiunii HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Starea Headless System User Mode a acestui dispozitiv diferă de configurarea versiunii. Revino la setările din fabrică ale dispozitivului."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Consola din serie este activată"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performanța este afectată. Pentru a dezactiva, verifică programul bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE experimentală activată"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S-au apăsat lung tastele de volum. S-a activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S-au apăsat lung tastele de volum. S-a dezactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Eliberează butoanele de volum. Pentru a activa <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, apasă lung pe ambele butoane de volum timp de trei secunde încă o dată."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Alege o funcție"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Alege o funcție"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Alege o funcție"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funcția se va deschide data viitoare când atingi butonul de accesibilitate"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funcția se va deschide data viitoare când folosești această comandă rapidă. Glisează în sus cu două degete din partea de jos a ecranului și ridică-le rapid."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funcția se va deschide data viitoare când folosești această comandă rapidă. Glisează în sus cu trei degete din partea de jos a ecranului și ridică-le rapid."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Codul PIN este prea scurt. Trebuie să aibă cel puțin 4 cifre."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Reîncearcă mai târziu"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Vizualizare pe ecran complet"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Pentru a ieși, glisează în jos din partea de sus a ecranului"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Am înțeles"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotește pentru o previzualizare mai bună"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Deschide <xliff:g id="NAME">%s</xliff:g> pe ecran complet pentru o imagine mai bună"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Schimbă utilizatorul"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Dezactivează sunetul"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Atinge pentru a dezactiva sunetul"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 923d2b4..96da732 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Нажмите, чтобы отключить отладку по Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Тестовый режим включен"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Чтобы отключить тестовый режим, сбросьте настройки до заводских."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Неверная конфигурация сборки РКСП"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Состояние режима консольного системного пользователя для этого устройства отличается от его конфигурации сборки. Сбросьте настройки устройства до заводских."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Консоль последовательного порта включена"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Производительность устройства снижена. Чтобы отключить консоль, перейдите в загрузчик операционной системы."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Включена экспериментальная функция MTE"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" включена."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" отключена."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Отпустите кнопки громкости. Чтобы включить <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, нажмите и удерживайте обе кнопки регулировки громкости в течение трех секунд."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Выберите функцию"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Выберите функцию"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Выберите функцию"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Функция теперь будет включаться при нажатии кнопки специальных возможностей."</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функция теперь будет включаться при выполнении действия быстрого запуска. Проведите двумя пальцами по экрану снизу вверх."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функция теперь будет включаться при выполнении действия быстрого запуска. Проведите тремя пальцами по экрану снизу вверх."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-код должен содержать не менее 4 символов."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Повторите попытку позже."</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Полноэкранный режим"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Чтобы выйти, проведите вниз от верхнего края экрана"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"ОК"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Поверните, чтобы лучше видеть."</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Откройте приложение \"<xliff:g id="NAME">%s</xliff:g>\" в полноэкранном режиме, чтобы лучше видеть."</string>
@@ -2445,4 +2439,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Сменить пользователя"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Отключить звук"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Нажмите, чтобы отключить звук."</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 992f8aa0..6549a7e 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"නොරැහැන් නිදොස්කරණය අබල කිරීමට තෝරන්න."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"පුරක පරීක්ෂා ප්රකාරය සබලයි"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"පුරක පරීක්ෂා ප්රකාරය අබල කිරීමට කර්මාන්තශාලා යළි සැකසීමක් ඉටු කරන්න."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"වැරදි HSUM තැනුම් වින්යාසය"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"මෙම උපාංගයෙහි හිස රහිත පද්ධති පරිශීලක ප්රකාරය තත්ත්වය එහි තැනුම් වින්යාසයෙන් වෙනස් වේ. උපාංගය කර්මාන්තශාලා යළි සකසන්න."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"අනුක්රමික කොන්සෝලය සබලයි"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"කාර්ය සාධනය බලපෑමට ලක් වී ඇත. අබල කිරීමට, ආරම්භකය පරීක්ෂා කරන්න."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"අත්හදා බැලීමේ MTE සබලයි"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මකයි."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාවිරහිතයි."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"හඬ පරිමා යතුරු මුදා හරින්න. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> සක්රීය කිරීමට, හඬ පරිමා යතුරු දෙකම නැවත තත්පර 3ක් ඔබා අල්ලා සිටින්න."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"විශේෂාංගයක් තෝරා ගන්න"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"විශේෂාංගයක් තෝරා ගන්න"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"විශේෂාංගයක් තෝරා ගන්න"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"මීළඟ වතාවේ ඔබ ප්රවේශ්යතා බොත්තම තට්ටු කිරීමෙන් විශේෂාංගය විවෘත වේ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ඔබ මෙම කෙටිමඟ භාවිතා කරන මීළඟ වතාවේ විශේෂාංගය විවෘත වනු ඇත. ඔබේ තිරයෙහි පහළ සිට ඇඟිලි 2කින් ඉහළට ස්වයිප් කර ඉක්මනින් නිදහස් කරන්න."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ඔබ මෙම කෙටිමඟ භාවිතා කරන මීළඟ වතාවේ විශේෂාංගය විවෘත වනු ඇත. ඔබේ තිරයෙහි පහළ සිට ඇඟිලි 3කින් ඉහළට ස්වයිප් කර ඉක්මනින් නිදහස් කරන්න."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN කුඩා වැඩිය. ඉලක්කම් 4 වත් විය යුතුය."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"පසුව නැවත උත්සාහ කරන්න"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"මුළු තිරය බලමින්"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"පිටවීමට, ඔබේ තිරයෙහි ඉහළ සිට පහළට ස්වයිප් කරන්න"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"වැටහුණි"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"වඩා හොඳ දසුනක් සඳහා කරකවන්න"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"වඩා හොඳ දසුනක් සඳහා <xliff:g id="NAME">%s</xliff:g> පූර්ණ තිරයේ විවෘත කරන්න"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"පරිශීලක මාරු කරන්න"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"නිහඬ කරන්න"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ශබ්දය නිශ්ශබ්ද කිරීමට තට්ටු කරන්න"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index f3154c9..27500c4 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Výberom zakážete bezdrôtové ladenie."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Režim správcu testov je aktivovaný"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Ak chcete zakázať režim správcu testov, obnovte výrobné nastavenia."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Nesprávna konfigurácia kompilácie pre režim konzolového systémového používateľa"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Stav režimu konzolového systémového používateľa pre toto zariadenie sa líši od jeho konfigurácie kompilácie. Obnovte výrobné nastavenia zariadenia."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Sériová konzola je povolená"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ovplyvňuje výkon. Ak ju chcete zakázať, skontrolujte zavádzací program systému."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Je zapnuté experimentálne rozšírenie MTE"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vypnutá."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Uvoľnite tlačidlá hlasitosti. Ak chcete zapnúť službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, znova pridržte tri sekundy obe tlačidlá hlasitosti."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Vyberte funkciu"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Vyberte funkciu"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Vyberte funkciu"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Táto funkcia sa otvorí, keď nabudúce klepnete na tlačidlo dostupnosti"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Táto funkcia sa otvorí, keď nabudúce použijete túto skratku. Potiahnite zdola obrazovky dvoma prstami nahor a rýchlo uvoľnite."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Táto funkcia sa otvorí, keď nabudúce použijete túto skratku. Potiahnite zdola obrazovky troma prstami nahor a rýchlo uvoľnite."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Kód PIN je príliš krátky. Musí mať minimálne 4 číslice."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Skúste to neskôr"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Zobrazenie na celú obrazovku"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Ukončíte potiahnutím zhora obrazovky nadol"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Dobre"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Otočte zariadenie pre lepšie zobrazenie"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Otvorte <xliff:g id="NAME">%s</xliff:g> na celej obrazovke pre lepšie zobrazenie"</string>
@@ -2445,4 +2439,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Prepnúť používateľa"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Ignorovať"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Klepnutím vypnite zvuk"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 8a29452..08043ec 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Izberite, če želite onemogočiti brezžično odpravljanje napak."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Način preizkusnega ogrodja je omogočen"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Če želite onemogočiti način preizkusnega ogrodja, ponastavite napravo na tovarniške nastavitve."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Napačna konfiguracija gradnje za način sistemskega uporabnika brez grafičnega uporabniškega vmesnika"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Stanje načina sistemskega uporabnika brez grafičnega uporabniškega vmesnika za to napravo se razlikuje od njene konfiguracije gradnje. Napravo ponastavite na tovarniške nastavitve."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola je omogočena"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Učinkovitost delovanja je slabša. Uporabo konzole lahko onemogočite v zagonskem nalagalniku."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Preizkusne razširitve MTE so omogočene"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vklopljena."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je izklopljena."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Spustite gumba za glasnost. Če želite vklopiti storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, znova pritisnite in 3 sekunde pridržite oba gumba za glasnost."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Izberite funkcijo"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Izberite funkcijo"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Izberite funkcijo"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funkcija se bo odprla, ko se boste naslednjič dotaknili gumba za dostopnost"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija se bo odprla, ko boste naslednjič uporabili to bližnjico. Z dvema prstoma povlecite navzgor z dna zaslona in hitro spustite."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija se bo odprla, ko boste naslednjič uporabili to bližnjico. S tremi prsti povlecite navzgor z dna zaslona in hitro spustite."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN je prekratek. Imeti mora vsaj 4 števke."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Poskusite znova pozneje"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Vklopljen je celozaslonski način"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Če želite zapreti, povlecite navzdol z vrha zaslona"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Razumem"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Zasukajte za boljši pregled."</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Aplikacijo <xliff:g id="NAME">%s</xliff:g> odprite v celozaslonskem načinu za boljši pregled."</string>
@@ -2445,4 +2439,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Preklop uporabnika"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Izklop zvoka"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Dotaknite se za izklop zvoka"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Brskalnik"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Stiki"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"E-pošta"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Glasba"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Koledar"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Računalo"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Zemljevidi"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Aplikacije"</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index cba1f08..9adae67 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Zgjidh për të çaktivizuar korrigjimin përmes Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modaliteti i lidhjes së testimit është aktivizuar"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Kryej një rivendosje në cilësimet e fabrikës për të çaktivizuar \"Modalitetin e lidhjes së testimit\"."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Konfigurim i gabuar i ndërtimit të modalitetit HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Gjendja e \"Modalitetit të përdoruesit për sistemin pa kokë\" për këtë pajisje ndryshon nga konfigurimi i ndërtimit. Rivendose pajisjen në gjendje fabrike."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Paneli komandues i serisë është aktivizuar"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ndikohet cilësia e funksionimit. Për ta çaktivizuar, kontrollo ngarkuesin e sistemit."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"MTE eksperimentale u aktivizua"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tastet e volumit të mbajtura shtypur. U çaktivizua \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lësho tastet e volumit. Për të aktivizuar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, shtyp dhe mbaj shtypur të dy tastet e volumit sërish për 3 sekonda."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Zgjidh një veçori"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Zgjidh një veçori"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Zgjidh një veçori"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Veçoria do të hapet herën tjetër kur të trokasësh te butoni i qasshmërisë"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Veçoria do të hapet herën tjetër kur të përdorësh këtë shkurtore. Rrëshqit shpejt lart me 2 gishta nga fundi i ekranit dhe lëshoje me shpejtësi."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Veçoria do të hapet herën tjetër kur të përdorësh këtë shkurtore. Rrëshqit shpejt lart me 3 gishta nga fundi i ekranit dhe lëshoje me shpejtësi."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-i është shumë i shkurtër. Duhet të jetë të paktën 4 shifra."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Provo sërish më vonë"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Po shikon ekranin e plotë"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Për të dalë, rrëshqit shpejt poshtë nga kreu i ekranit"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"E kuptova"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rrotullo për një pamje më të mirë"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Hape <xliff:g id="NAME">%s</xliff:g> në ekran të plotë për pamje më të mirë"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Ndërro përdoruesin"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Hiqi zërin"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Trokit për t\'i hequr zërin"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index afb8e6b..6cea89f 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1412,10 +1412,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Изаберите да бисте онемогућили бежично отклањање грешака."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Омогућен је режим пробног коришћења"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Обавите ресетовање на фабричка подешавања да бисте онемогућили режим пробног коришћења."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Погрешна HSUM конфигурација"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Статус корисничког режима система без графичког корисничког интерфејса за овај уређај разликује се од његове конфигурације. Ресетујте уређај на фабричка подешавања."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Серијска конзола је омогућена"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Перформансе су смањене. Да бисте онемогући конзолу, проверите покретачки програм."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Експериментални MTE је омогућен"</string>
@@ -1760,12 +1758,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је искључена."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Пустите тастере за јачину звука. Да бисте укључили <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, поново притисните и задржите оба тастера за јачину звука 3 секунде."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Изаберите функцију"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Изаберите функцију"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Изаберите функцију"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Функција ће се отворити када следећи пут додирнете дугме Приступачност"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функција ће се отворити када следећи пут будете користили ову пречицу. Превуците нагоре од дна екрана са 2 прста и брзо пустите."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функција ће се отворити када следећи пут будете користили ову пречицу. Превуците нагоре од дна екрана са 3 прста и брзо пустите."</string>
@@ -1891,8 +1886,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN је прекратак. Мора да има бар 4 цифре."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Пробајте поново касније"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Приказује се цео екран"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Да бисте затворили, превуците надоле од врха екрана"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Важи"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Ротирајте ради бољег приказа"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Отворите апликацију <xliff:g id="NAME">%s</xliff:g> преко целог екрана да бисте боље видели"</string>
@@ -2444,4 +2438,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Промени корисника"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Искључи звук"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Додирните да бисте искључили звук"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 6dee8ea..53f1408 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Välj för att inaktivera trådlös felsökning."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Läget för testverktyg har aktiverats"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Inaktivera testverktygsläget genom att göra en återställning till standardinställningarna."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Fel HSUM-byggkonfigurering"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Statusen för läget fönsterlös systemanvändare för den här enheten skiljer sig från dess byggkonfigurering. Återställ standardinställningarna på enheten."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriekonsolen är aktiverad"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Prestandan påverkas. Inaktivera via starthanteraren."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Experimentell MTE har aktiverats"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har aktiverats."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har inaktiverats."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Släpp volymknapparna. Du kan aktivera <xliff:g id="SERVICE_NAME">%1$s</xliff:g> genom att hålla båda volymknapparna nedtryckta i tre sekunder igen."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Välj en funktion"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Välj en funktion"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Välj en funktion"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Funktionen öppnas nästa gång du trycker på tillgänglighetsknappen"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funktionen öppnas nästa gång du använder kortkommandot. Svep uppåt med två fingrar från skärmens nederkant och släpp snabbt."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funktionen öppnas nästa gång du använder kortkommandot. Svep uppåt med tre fingrar från skärmens nederkant och släpp snabbt."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Pinkoden är för kort. Måste vara minst fyra siffror."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Försök igen senare"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Visar på fullskärm"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Svep nedåt från skärmens överkant för att avsluta"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Rotera för att få en bättre vy"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Öppna <xliff:g id="NAME">%s</xliff:g> i fullskärmsläget för att få en bättre vy"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Byt användare"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Ljud av"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tryck för att stänga av ljudet"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 05cc4bb..c096d4b 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Chagua ili uzime utatuzi usiotumia waya."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Hali ya Muunganisho wa Majaribio imewashwa"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Rejesha mipangilio iliyotoka nayo kiwandani ili uzime hali ya Muunganisho wa Majaribio."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Mipangilio ya muundo wa HSUM si sahihi"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Hali ya Mtumiaji wa Mfumo usio na Skrini, Kiolesura au Vifaa Vinavyochomekwa katika kifaa hiki inatofautiana na mipangilio ya muundo wa kifaa. Tafadhali rejesha mipangilio ambayo kifaa kilitoka nayo kiwandani."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Muunganisho kupitia mlango umewashwa"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Utendaji unaathirika. lli uzime, teua programu ya kuwasha mfumo wa uendeshaji."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Kipengele cha majaribio cha MTE kimeruhusiwa"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Vitufe vya sauti vilivyoshikiliwa. Umewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Vitufe vya sauti vimeshikiliwa. Umezima <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Achilia vitufe vya sauti. Ili uwashe <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, bonyeza na ushikilie tena vitufe vyote vya sauti kwa sekunde 3."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Chagua kipengele"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Chagua kipengele"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Chagua kipengele"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Kipengele kitafunguka utakapogusa tena kitufe cha zana za ufikivu"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Kipengele kitafunguka utakapotumia tena njia hii ya mkato. Telezesha vidole 2 kuanzia sehemu ya chini ya skrini yako kwenda juu kisha uachilie haraka."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Kipengele kitafunguka utakapotumia tena njia hii ya mkato. Telezesha vidole 3 kuanzia sehemu ya chini ya skrini yako kwenda juu kisha uachilie haraka."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN ni fupi mno. Lazima iwe angalau tarakimu 4."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Jaribu tena baadaye"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Unatazama skrini nzima"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Telezesha kidole chini kutoka sehemu ya juu ya skrini yako ili ufunge"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Nimeelewa"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Zungusha ili upate mwonekano bora"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Fungua <xliff:g id="NAME">%s</xliff:g> kwenye skrini nzima ili uone maudhui kwa urahisi"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Badilisha mtumiaji"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Zima sauti"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Gusa ili uzime sauti"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 78513d6..429862b 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"வைஃபை பிழைதிருத்தத்தை முடக்க தேர்ந்தெடுக்கவும்."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"\'தன்னியக்க சோதனைப்\' பயன்முறை இயக்கப்பட்டது"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"’தன்னியக்க சோதனைப்\' பயன்முறையை முடக்க ஆரம்பநிலைக்கு மீட்டமைக்கவும்."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"தவறான HSUM பதிப்பு உள்ளமைப்பு"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"இந்தச் சாதனத்தின் காட்சி இடைமுகமற்ற சிஸ்டம் பயனர் பயன்முறையின் நிலை அதன் பதிப்பு உள்ளமைப்பிலிருந்து வேறுபடுகிறது. சாதனத்தை ஆரம்பநிலைக்கு மீட்டமையுங்கள்."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"சீரியல் கன்சோல் இயக்கப்பட்டது"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"செயல்திறன் பாதிக்கப்பட்டுள்ளது. முடக்குவதற்கு பூட்லோடரைத் தேர்வுசெய்யவும்."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"பரிசோதனை MTE இயக்கப்பட்டது"</string>
@@ -1527,7 +1525,7 @@
<string name="forward_intent_to_work" msgid="3620262405636021151">"பணிக் கணக்கில் பயன்பாட்டைப் பயன்படுத்துகிறீர்கள்"</string>
<string name="input_method_binding_label" msgid="1166731601721983656">"உள்ளீட்டு முறை"</string>
<string name="sync_binding_label" msgid="469249309424662147">"ஒத்திசை"</string>
- <string name="accessibility_binding_label" msgid="1974602776545801715">"அணுகல்தன்மை"</string>
+ <string name="accessibility_binding_label" msgid="1974602776545801715">"மாற்றுத்திறன் வசதி"</string>
<string name="wallpaper_binding_label" msgid="1197440498000786738">"வால்பேப்பர்"</string>
<string name="chooser_wallpaper" msgid="3082405680079923708">"வால்பேப்பரை மாற்று"</string>
<string name="notification_listener_binding_label" msgid="2702165274471499713">"அறிவிப்புகளைக் கண்காணிக்கும் சேவை"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆன் செய்யப்பட்டது."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆஃப் செய்யப்பட்டது."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ஒலியளவு பட்டன்களை அழுத்துவதை நிறுத்துங்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> சேவையை இயக்க, ஒலியளவு பட்டன்கள் இரண்டையும் 3 வினாடிகளுக்கு மீண்டும் அழுத்திப் பிடிக்கவும்."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"அம்சத்தைத் தேர்வுசெய்யுங்கள்"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"அம்சத்தைத் தேர்வுசெய்யுங்கள்"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"அம்சத்தைத் தேர்வுசெய்யுங்கள்"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"அடுத்த முறை மாற்றுத்திறன் பட்டனை நீங்கள் தட்டும்போது அம்சம் திறக்கும்"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"அடுத்த முறை இந்த ஷார்ட்கட்டை நீங்கள் பயன்படுத்தும்போது அம்சம் திறக்கும். 2 விரல்களால் திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்து விரைவாக விரல்களை எடுக்கவும்."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"அடுத்த முறை இந்த ஷார்ட்கட்டை நீங்கள் பயன்படுத்தும்போது அம்சம் திறக்கும். 3 விரல்களால் திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்து விரைவாக விரல்களை எடுக்கவும்."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"பின் மிகவும் சிறியதாக உள்ளது. குறைந்தது 4 இலக்கங்கள் இருக்க வேண்டும்."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"மீண்டும் முயற்சிக்கவும்"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"முழுத் திரையில் காட்டுகிறது"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"வெளியேற, உங்கள் திரையின் மேலிருந்து கீழ்நோக்கி ஸ்வைப் செய்யவும்"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"புரிந்தது"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"சிறந்த காட்சிக்கு சுழற்றுங்கள்"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"சிறந்த காட்சிக்கு, <xliff:g id="NAME">%s</xliff:g> ஆப்ஸை முழுத்திரைப் பயன்முறையில் திறக்கவும்"</string>
@@ -2065,7 +2059,7 @@
<string name="app_category_news" msgid="1172762719574964544">"செய்திகளும் பத்திரிகைகளும்"</string>
<string name="app_category_maps" msgid="6395725487922533156">"வரைபடங்களும் வழிசெலுத்தலும்"</string>
<string name="app_category_productivity" msgid="1844422703029557883">"உற்பத்தித்திறன்"</string>
- <string name="app_category_accessibility" msgid="6643521607848547683">"அணுகல்தன்மை"</string>
+ <string name="app_category_accessibility" msgid="6643521607848547683">"மாற்றுத்திறன் வசதி"</string>
<string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"சாதனச் சேமிப்பகம்"</string>
<string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"USB பிழைதிருத்தம்"</string>
<string name="time_picker_hour_label" msgid="4208590187662336864">"மணி"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"பயனரை மாற்றுங்கள்"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ஒலியடக்கு"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"ஒலியடக்க தட்டவும்"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 5f55515..830c4f6 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"వైర్లెస్ డీబగ్గింగ్ను డిజేబుల్ చేయడానికి ఎంచుకోండి."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"పరీక్ష నియంత్రణ మోడ్ ప్రారంభించబడింది"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"పరీక్ష నియంత్రణ మోడ్ను నిలిపివేయడానికి ఫ్యాక్టరీ రీసెట్ను అమలు చేయండి."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"తప్పు HSUM బిల్డ్ కాన్ఫిగరేషన్"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"ఈ పరికరానికి సంబంధించిన హెడ్లెస్ సిస్టమ్ యూజర్ మోడ్ స్టేట్, దాని బిల్డ్ కాన్ఫిగరేషన్ కంటే భిన్నంగా ఉంటుంది. దయచేసి పరికరాన్ని ఫ్యాక్టరీ రీసెట్ చేయండి."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"సీరియల్ కన్సోల్ ప్రారంభించబడింది"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"పని తీరు ప్రభావితమైంది. నిలిపివేయడానికి, బూట్లోడర్ను చెక్ చేయండి."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"ప్రయోగాత్మక MTE ఎనేబుల్ చేయబడింది"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆన్ చేయబడింది"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆఫ్ చేయబడింది"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"వాల్యూమ్ కీలను రిలీజ్ చేయండి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ను ఆన్ చేయడానికి, రెండు వాల్యూమ్ కీలను మళ్లీ 3 సెకన్ల పాటు నొక్కి పట్టుకోండి."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ఒక ఫీచర్ను ఎంచుకోండి"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ఒక ఫీచర్ను ఎంచుకోండి"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ఒక ఫీచర్ను ఎంచుకోండి"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"తర్వాతిసారి మీరు యాక్సెసిబిలిటీ బటన్ను ట్యాప్ చేసినప్పుడు ఈ ఫీచర్ తెరుచుకుంటుంది"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"తర్వాతిసారి మీరు ఈ షార్ట్కట్ను ఉపయోగించినప్పుడు ఈ ఫీచర్ తెరుచుకుంటుంది. మీ స్క్రీన్ దిగువ నుండి 2 వేళ్లతో పైకి స్వైప్ చేసి, వెంటనే వదలండి."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"తర్వాతిసారి మీరు ఈ షార్ట్కట్ను ఉపయోగించినప్పుడు ఈ ఫీచర్ తెరుచుకుంటుంది. మీ స్క్రీన్ దిగువ నుండి 3 వేళ్లతో పైకి స్వైప్ చేసి, వెంటనే వదలండి."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"పిన్ చాలా చిన్నదిగా ఉంది. తప్పనిసరిగా కనీసం 4 అంకెలు ఉండాలి."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"తర్వాత మళ్లీ ట్రై చేయండి"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"ఫుల్-స్క్రీన్లో వీక్షిస్తున్నారు"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"ఎగ్జిట్ అవ్వడానికి, మీ స్క్రీన్ పై నుండి కిందికి స్వైప్ చేయండి"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"అర్థమైంది"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"మెరుగైన వీక్షణ కోసం తిప్పండి"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"మెరుగైన వీక్షణ కోసం <xliff:g id="NAME">%s</xliff:g>ను ఫుల్ స్క్రీన్లో తెరవండి"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"యూజర్ను మార్చండి"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"మ్యూట్ చేయండి"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"సౌండ్ను మ్యూట్ చేయడానికి ట్యాప్ చేయండి"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 358b38a..b4f3979 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"เลือกเพื่อปิดใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"โหมดโปรแกรมทดสอบอัตโนมัติเปิดใช้อยู่"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"รีเซ็ตเป็นค่าเริ่มต้นเพื่อปิดใช้โหมดโปรแกรมทดสอบอัตโนมัติ"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"การกำหนดค่าบิลด์ HSUM ไม่ถูกต้อง"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"สถานะโหมดผู้ใช้ระบบแบบไม่มีส่วนหัวของอุปกรณ์นี้แตกต่างจากการกำหนดค่าบิลด์ โปรดรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"เปิดใช้คอนโซลการเรียงอันดับแล้ว"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"ประสิทธิภาพได้รับผลกระทบ ตรวจสอบ Bootloader เพื่อปิดใช้งาน"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"เปิดใช้ MTE เชิงทดสอบอยู่"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว เปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว ปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ปล่อยปุ่มปรับระดับเสียง หากต้องการเปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ให้กดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้อีกครั้งเป็นเวลา 3 วินาที"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"เลือกฟีเจอร์"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"เลือกฟีเจอร์"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"เลือกฟีเจอร์"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"ฟีเจอร์นี้จะเปิดขึ้นในครั้งถัดไปที่คุณแตะปุ่มการช่วยเหลือพิเศษ"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ฟีเจอร์นี้จะเปิดขึ้นในครั้งถัดไปที่คุณใช้ทางลัดนี้ ใช้ 2 นิ้วปัดขึ้นจากด้านล่างของหน้าจอและปล่อยอย่างรวดเร็ว"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ฟีเจอร์นี้จะเปิดขึ้นในครั้งถัดไปที่คุณใช้ทางลัดนี้ ใช้ 3 นิ้วปัดขึ้นจากด้านล่างของหน้าจอและปล่อยอย่างรวดเร็ว"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN สั้นเกินไป ต้องมีอย่างน้อย 4 หลัก"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"ลองอีกครั้งในภายหลัง"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"กำลังดูแบบเต็มหน้าจอ"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"หากต้องการออก ให้ปัดลงจากด้านบนของหน้าจอ"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"รับทราบ"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"หมุนเพื่อรับมุมมองที่ดียิ่งขึ้น"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"เปิด <xliff:g id="NAME">%s</xliff:g> ในโหมดเต็มหน้าจอเพื่อรับมุมมองที่ดียิ่งขึ้น"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"สลับผู้ใช้"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"ปิดเสียง"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"แตะเพื่อปิดเสียง"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"เบราว์เซอร์"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"รายชื่อติดต่อ"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"อีเมล"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"เพลง"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"ปฏิทิน"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"เครื่องคิดเลข"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"แผนที่"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"แอปพลิเคชัน"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 2d88801..bebc2b4 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Piliin para i-disable ang wireless na pag-debug."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Naka-enable ang Test Harness Mode"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Mag-factory reset para i-disable ang Test Harness Mode."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Maling configuration ng build ng HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Ang status na Headless System User Mode ng device na ito ay naiiba sa configuration ng build nito. Paki-factory reset ang device."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Naka-enable ang serial console"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Naaapektuhan ang performance. Para i-disable, lagyan ng check ang bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Na-enable ang Pang-eksperimentong MTE"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pinindot nang matagal ang volume keys. Na-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pinindot nang matagal ang volume keys. Na-off ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Bitawan ang mga volume key. Para i-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, muling pindutin nang matagal ang dalawang volume key sa loob ng 3 segundo."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Pumili ng feature"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Pumili ng feature"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Pumili ng feature"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Magbubukas ang feature sa susunod na i-tap mo ang button ng accessibility"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Magbubukas ang feature sa susunod na gamitin mo ang shortcut na ito. Mag-swipe pataas gamit ang 2 daliri mula sa ibaba ng iyong screen at mabilis na i-release."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Magbubukas ang feature sa susunod na gamitin mo ang shortcut na ito. Mag-swipe pataas gamit ang 3 daliri mula sa ibaba ng iyong screen at mabilis na i-release."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Masyadong maikli ang PIN. Hindi dapat mas maikli sa 4 na digit."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Subukang muli sa ibang pagkakataon"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Panonood sa full screen"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Para lumabas, mag-swipe pababa mula sa itaas ng iyong screen"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Nakuha ko"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"I-rotate para sa mas magandang view"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Buksan ang <xliff:g id="NAME">%s</xliff:g> sa full screen para sa mas magandang view"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Magpalit ng user"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"I-mute"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"I-tap para i-mute ang tunog"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"Browser"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"Mga Contact"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"Email"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"Musika"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"Kalendaryo"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"Calculator"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"Mga Mapa"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"Mga Application"</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index d3e61dc..72404af 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Kablosuz hata ayıklamayı devre dışı bırakmak için seçin."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Bandı Modu etkin"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Test Bandı Modu\'nu devre dışı bırakmak için cihazı fabrika ayarlarına sıfırlayın."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Gözetimsiz Sistem Kullanıcı Modu derleme yapılandırması yanlış"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Bu cihazın Gözetimsiz Sistem Kullanıcı Modu durumu, derleme yapılandırmasından farklı. Lütfen cihazı fabrika ayarlarına sıfırlayın."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seri konsol etkinleştirildi"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Performans etkilendi. Devre dışı bırakmak için bootloader\'ı kontrol edin."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Deneysel MTE etkinleştirildi"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> açıldı."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kapatıldı."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Ses seviyesi tuşlarını bırakın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> hizmetini etkinleştirmek için her iki ses seviyesi tuşuna yeniden basıp 3 saniye boyunca basılı tutun."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Özellik seçin"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Özellik seçin"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Özellik seçin"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Özellik, erişilebilirlik düğmesine bir sonraki dokunuşunuzda açılır."</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Özellik, bu kısayolu bir sonraki kullanışınızda açılır. Ekranın alt kısmından 2 parmağınızla yukarı doğru kaydırın ve hızlıca bırakın."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Özellik, bu kısayolu bir sonraki kullanışınızda açılır. Ekranın alt kısmından 3 parmağınızla yukarı doğru kaydırın ve hızlıca bırakın."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN çok kısa. En az 4 basamaklı olmalı."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Daha sonra tekrar deneyin"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Tam ekran olarak görüntüleme"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Çıkmak için ekranın üst kısmından aşağı doğru kaydırın"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Anladım"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Daha iyi bir görünüm elde etmek için ekranı döndürün"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Daha iyi görünüm için <xliff:g id="NAME">%s</xliff:g> uygulamasını açın"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Kullanıcı değiştir"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Sesi kapat"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Sesi kapat düğmesine dokunun"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 81434c2..246cce9 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1413,10 +1413,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Натисніть, щоб вимкнути налагодження."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Увімкнено режим автоматизованого тестування"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Щоб вимкнути режим автоматизованого тестування, відновіть заводські налаштування."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Неправильна конфігурація складання HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Стан пристрою в режимі користувача системи без графічного інтерфейсу (HSUM) відрізняється від його конфігурації складання. Скиньте налаштування пристрою."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Послідовну консоль увімкнено"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Продуктивність зазнала впливу. Щоб вимкнути, перевірте завантажувач операційної системи."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Експериментальний запуск з MTE ввімкнено"</string>
@@ -1761,12 +1759,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> увімкнено."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> вимкнено."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Відпустіть клавіші гучності. Щоб увімкнути сервіс <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, натисніть і втримуйте обидві клавіші гучності протягом 3 секунд."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Виберіть функцію"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Виберіть функцію"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Виберіть функцію"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Функція відкриється, коли ви наступного разу натиснете кнопку функцій доступності"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функція відкриється, коли ви наступного разу скористаєтеся цією швидкою командою. Проведіть двома пальцями вгору від низу екрана й швидко відпустіть."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функція відкриється, коли ви наступного разу скористаєтеся цією швидкою командою. Проведіть трьома пальцями вгору від низу екрана й швидко відпустіть."</string>
@@ -1892,8 +1887,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN-код закороткий. Має бути принаймні 4 цифри."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Спробуйте пізніше"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Перегляд на весь екран"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Щоб вийти, проведіть пальцем униз від верхнього краю екрана"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Оберніть для кращого огляду"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Для кращого огляду відкрийте додаток <xliff:g id="NAME">%s</xliff:g> на весь екран"</string>
@@ -2445,4 +2439,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Змінити користувача"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Вимкнути звук"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Натисніть, щоб вимкнути звук"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 8363933..e613dd7 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"وائرلیس ڈیبگنگ کو غیر فعال کرنے کے ليے منتخب کریں۔"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ٹیسٹ ہارنیس موڈ فعال ہے"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ٹیسٹ ہارنیس موڈ غیر فعال کرنے کے لیے فیکٹری ری سیٹ کریں۔"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM کی غلط بلڈ کنفیگریشن"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"اس آلہ کی ہیڈ لیس سسٹم یوزر موڈ کی حیثیت اس کی بلڈ کنفیگریشن سے مختلف ہوتی ہے۔ براہ کرم آلہ کو فیکٹری ری سیٹ کریں۔"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"شمار کونسول فعال ہے"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"کارکردگی پر اثر پڑا ہے۔ غیر فعال کرنے کے ليے، بوٹ لوڈر چیک کریں۔"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"تجرباتی MTE کو فعال کیا گیا"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آن ہے۔"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آف ہے۔"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"والیوم کی کلیدوں کو ریلیز کریں <xliff:g id="SERVICE_NAME">%1$s</xliff:g> کو آن کرنے کے لیے، والیوم کی دونوں کلیدوں کو دوبارہ 3 سیکنڈ تک چھوئیں اور دبائے رکھیں۔"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"ایک خصوصیت منتخب کریں"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"ایک خصوصیت منتخب کریں"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"ایک خصوصیت منتخب کریں"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"اگلی بار جب آپ ایکسیسبیلٹی بٹن پر تھپتھپائیں گے تو خصوصیت کھل جائے گی"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"اگلی بار جب آپ یہ شارٹ کٹ استعمال کریں گے تو خصوصیت کھل جائے گی۔ اپنی اسکرین کے نیچے سے 2 انگلیوں سے اوپر کی طرف سوائپ کریں اور تیزی سے ریلیز کریں۔"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"اگلی بار جب آپ یہ شارٹ کٹ استعمال کریں گے تو خصوصیت کھل جائے گی۔ اپنی اسکرین کے نیچے سے 3 انگلیوں سے اوپر کی طرف سوائپ کریں اور تیزی سے ریلیز کریں۔"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN کافی چھوٹا ہے۔ کم از کم 4 ہندسے ہونا ضروری ہے۔"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"بعد میں دوبارہ کوشش کریں"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"پوری اسکرین میں دیکھ رہے ہیں"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"باہر نکلنے کے لیے اپنی اسکرین کے اوپری حصے سے نیچے کی طرف سوائپ کریں"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"سمجھ آ گئی"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"بہتر منظر کے لیے گھمائیں"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"بہتر منظر کے لیے <xliff:g id="NAME">%s</xliff:g> کو فُل اسکرین میں کھولیں"</string>
@@ -2443,4 +2437,13 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"صارف سوئچ کریں"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"خاموش کریں"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"آواز کو خاموش کرنے کے لیے تھپتھپائیں"</string>
+ <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"براؤزر"</string>
+ <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"رابطے"</string>
+ <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"ای میل"</string>
+ <string name="keyboard_shortcut_group_applications_sms" msgid="3523799286376321137">"SMS"</string>
+ <string name="keyboard_shortcut_group_applications_music" msgid="2051507523525651067">"موسیقی"</string>
+ <string name="keyboard_shortcut_group_applications_calendar" msgid="3571770335653387606">"کیلنڈر"</string>
+ <string name="keyboard_shortcut_group_applications_calculator" msgid="6753209559716091507">"کیلکولیٹر"</string>
+ <string name="keyboard_shortcut_group_applications_maps" msgid="7950000659522589471">"نقشے"</string>
+ <string name="keyboard_shortcut_group_applications" msgid="3010389163951364798">"ایپلیکیشنز"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 21abada..994950c 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Uni faolsizlantirish uchun bosing."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Xavfsizlik sinovi rejimi yoqildi"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Xavfsizlik sinovi rejimini faolsizlantirish uchun zavod sozlamalariga qaytaring."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM nashr konfiguratsiyasida xato"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Bu qurilmadagi Headless System User Mode holati uning konfiguratsiyasidan farq qiladi. Qurilma sozlamalarini tozalang."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Ketma-ket port konsoli yoqildi"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Qurilma samaradorligi pasaydi. Konsolni faolsizlantirish uchun operatsion tizim yuklagichini oching."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Tajribaviy MTE yoqildi"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> yoqildi."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> faolsizlantirildi."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Tovush tugmalarini qoʻyib yuboring. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> xizmatini yoqish uchun ikkala tovush tugmasini 3 soniya bosib turing."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Funksiyani tanlang"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Funksiyani tanlang"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Funksiyani tanlang"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Keyingi safar qulayliklar tugmasini bosganingizda funksiya ochiladi"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Keyingi safar shu buyruqdan foydalanganingizda funksiya ochiladi. Ekranning pastidan 2 barmoq bilan tepaga suring va darhol qoʻyib yuboring."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Keyingi safar shu buyruqdan foydalanganingizda funksiya ochiladi. Ekranning pastidan 3 barmoq bilan tepaga suring va darhol qoʻyib yuboring."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN kod juda qisqa, kamida 4 ta raqam kiriting."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Keyinroq urinib ko‘ring"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Butun ekranli rejim"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Chiqish uchun ekranning tepasidan pastga suring"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Yaxshiroq koʻrish uchun kamerani buring"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Yaxshiroq koʻrish uchun butun ekranda <xliff:g id="NAME">%s</xliff:g> ilovasini oching"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Foydalanuvchini almashtirish"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Ovozsiz qilish"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Tovushsiz qilish uchun bosing"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 0141d9d..f825f7b 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Chọn để tắt tính năng gỡ lỗi qua Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Đã bật Chế độ khai thác kiểm thử"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Khôi phục cài đặt gốc để tắt Chế độ khai thác kiểm thử."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Cấu hình bản dựng HSUM không chính xác"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Trạng thái Chế độ người dùng hệ thống không có giao diện người dùng (HSUM) của thiết bị này khác với cấu hình bản dựng của thiết bị. Vui lòng đặt lại thiết bị về trạng thái ban đầu."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Đã bật bảng điều khiển cổng nối tiếp"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Hiệu suất sẽ bị ảnh hưởng. Để tắt, hãy chọn trình tải khởi động."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"Đã bật MTE thử nghiệm"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã bật."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã tắt."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Thả phím âm lượng. Để bật <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, hãy nhấn và giữ cả 2 phím âm lượng trong 3 giây một lần nữa."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Chọn một tính năng"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Chọn một tính năng"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Chọn một tính năng"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Tính năng này sẽ được mở vào lần tới bạn nhấn nút hỗ trợ tiếp cận"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Tính năng này sẽ được mở vào lần tới bạn dùng lối tắt này. Hãy dùng 2 ngón tay vuốt từ cuối màn hình lên rồi thả tay nhanh."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Tính năng này sẽ được mở vào lần tới bạn dùng lối tắt này. Hãy dùng 3 ngón tay vuốt từ cuối màn hình lên rồi thả tay nhanh."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"Mã PIN quá ngắn. Phải có ít nhất 4 chữ số."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Hãy thử lại sau"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Xem toàn màn hình"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Để thoát, hãy vuốt xuống từ đầu màn hình"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"OK"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Xoay để xem dễ hơn"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Mở <xliff:g id="NAME">%s</xliff:g> ở chế độ toàn màn hình để xem dễ hơn"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Chuyển đổi người dùng"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Tắt tiếng"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Nhấn để tắt tiếng"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 3a7c906..2d1873d 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"选择即可停用无线调试功能。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"自动化测试框架模式已启用"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"恢复出厂设置以停用自动化测试框架模式。"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM build 配置不正确"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"此设备的无头系统用户模式状态与其 build 配置不同。请将设备恢复出厂设置。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"已启用序列控制台"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"性能受到影响。要停用,请查看引导加载程序。"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"已启用实验性 MTE"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已开启。"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已关闭。"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"松开音量键。如要启用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>,请再次同时按住两个音量键 3 秒。"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"请选择功能"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"请选择功能"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"请选择功能"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"下次点按“无障碍”按钮时,将打开此功能"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"下次使用此快捷手势时,将打开此功能。用 2 根手指从画面底部向上滑动,然后快速松开。"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"下次使用此快捷手势时,将打开此功能。用 3 根手指从画面底部向上滑动,然后快速松开。"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN码太短,至少应包含4位数字。"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"稍后重试"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"目前处于全屏模式"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"若要退出,请从屏幕顶部向下滑动"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"知道了"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"旋转可改善预览效果"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"在全屏模式下打开“<xliff:g id="NAME">%s</xliff:g>”可改善预览效果"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"切换用户"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"静音"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"点按即可设为静音"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index a28efbe..ca88600 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"選取即可停用無線偵錯功能。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"已啟用測試工具模式"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"請將裝置回復原廠設定,以停用測試工具模式。"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM 版本設定錯誤"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"此裝置的無使用者介面系統使用者模式狀態與裝置的版本設定不符。請將裝置回復原廠設定。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"已啟用序列控制器"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"效能受到影響,勾選啟動程式即可停用。"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"實驗版 MTE 已啟用"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已開啟。"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已關閉。"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"鬆開音量鍵。如果要開 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>,請同時㩒住兩個音量鍵 3 秒。"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"選擇功能"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"選擇功能"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"選擇功能"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"下次輕按無障礙功能按鈕時,就會開啟此功能"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"下次使用此快速鍵時,就會開啟此功能。請用 2 隻手指從螢幕底部向上滑動並快速放開。"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"下次使用此快速鍵時,就會開啟此功能。請用 3 隻手指從螢幕底部向上滑動並快速放開。"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN 碼太短,至少必須為 4 位數。"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"稍後再試"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"開啟全螢幕"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"如要離開,請從螢幕頂部向下滑動"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"知道了"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"旋轉以改善預覽效果"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"以全螢幕模式開啟「<xliff:g id="NAME">%s</xliff:g>」,以改善預覽效果"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"切換使用者"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"靜音"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"輕按即可靜音"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index ed49988..b22ad0a 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"選取即可停用無線偵錯功能。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"測試控管工具模式已啟用"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"恢復原廠設定以停用測試控管工具模式。"</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"HSUM 建構設定錯誤"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"這部裝置的無頭系統使用者模式狀態與其建構設定不同,請將裝置恢復原廠設定。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"已啟用序列主控台"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"效能已受到影響。如要停用,請檢查系統啟動載入程式。"</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"已啟用實驗 MTE"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已開啟。"</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已關閉。"</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"放開音量鍵。如要開啟 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>,請同時按住音量調高鍵和調低鍵 3 秒。"</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"選擇功能"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"選擇功能"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"選擇功能"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"下次輕觸無障礙工具按鈕時,就會開啟這項功能"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"下次使用這個捷徑時,就會開啟這項功能。請用 2 指從螢幕底部向上滑動並快速放開。"</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"下次使用這個捷徑時,就會開啟這項功能。請用 3 指從螢幕底部向上滑動並快速放開。"</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN 長度太短,至少必須為 4 位數。"</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"稍後再試"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"以全螢幕檢視"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"如要離開,請從螢幕頂端向下滑動"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"知道了"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"旋轉螢幕以瀏覽完整的檢視畫面"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"如要享有更優質的預覽體驗,可透過全螢幕模式開啟「<xliff:g id="NAME">%s</xliff:g>」"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"切換使用者"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"靜音"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"輕觸即可設為靜音"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index d378b7c5d..f9aa925 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1411,10 +1411,8 @@
<string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Khetha ukukhubaza ukulungisa amaphutha okungenantambo."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Imodi yokuhlola i-harness inikwe amandla"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Yenza ukusetha kabusha kwasekuqaleni ukuze ukhubaze imodi yokuqina yokuhlola."</string>
- <!-- no translation found for wrong_hsum_configuration_notification_title (7212758829332714385) -->
- <skip />
- <!-- no translation found for wrong_hsum_configuration_notification_message (5353475441480684381) -->
- <skip />
+ <string name="wrong_hsum_configuration_notification_title" msgid="7212758829332714385">"Ukulungiselelwa okungalungile kwesakho se-HSUM"</string>
+ <string name="wrong_hsum_configuration_notification_message" msgid="5353475441480684381">"Isimo Semodi Yomsebenzisi Yesistimu Engenakhanda yale divayisi siyahluka ekucushweni kwesakhiwo sayo. Sicela usethe kabusha njengasekuqaleni idivayisi."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"I-serial console inikwe amandla"</string>
<string name="console_running_notification_message" msgid="7892751888125174039">"Ukusebenza kuyathinteka. Ukuze ukhubaze, hlola i-bootloader."</string>
<string name="mte_override_notification_title" msgid="4731115381962792944">"I-Experimental MTE inikwe amandla"</string>
@@ -1759,12 +1757,9 @@
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivuliwe."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivaliwe."</string>
<string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Khipha okhiye bevolumu. Ukuze uvule i-<xliff:g id="SERVICE_NAME">%1$s</xliff:g>, cindezela bese ubamba bobabili okhiye bevolumu futhi imizuzwana emi-3."</string>
- <!-- no translation found for accessibility_button_prompt_text (6105393217162198616) -->
- <skip />
- <!-- no translation found for accessibility_gesture_prompt_text (6452246951969541792) -->
- <skip />
- <!-- no translation found for accessibility_gesture_3finger_prompt_text (77745752309056152) -->
- <skip />
+ <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"Khetha isakhi"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"Khetha isakhi"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"Khetha isakhi"</string>
<string name="accessibility_button_instructional_text" msgid="6831154884557881996">"Isakhi sizovuleka ngokulandelayo uma uthepha inkinobho yokufinyeleleka"</string>
<string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Lesi sakhi sizovuleka ngokulandelayo uma usebenzisa lesi sinqamuleli. Swayiphela phezulu ngeminwe engu-2 kusukela ngaphansi kwesikrini sakho uphinde udedele ngokushesha."</string>
<string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Lesi sakhi sizovuleka ngokulandelayo uma usebenzisa lesi sinqamuleli. Swayiphela phezulu ngeminwe engu-3 kusukela ngaphansi kwesikrini sakho uphinde udedele ngokushesha."</string>
@@ -1890,8 +1885,7 @@
<string name="restr_pin_error_too_short" msgid="1547007808237941065">"I-PIN yimfushane kakhulu. Okungenani kumele ibe namadijithi angu-4."</string>
<string name="restr_pin_try_later" msgid="5897719962541636727">"Zama futhi emva kwesikhathi"</string>
<string name="immersive_cling_title" msgid="2307034298721541791">"Ukubuka isikrini esigcwele"</string>
- <!-- no translation found for immersive_cling_description (2896205051090870978) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2896205051090870978">"Ukuze uphume, swayiphela phansi kusukela phezulu esikrinini sakho"</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"Ngiyitholile"</string>
<string name="display_rotation_camera_compat_toast_after_rotation" msgid="7600891546249829854">"Zungezisa ukuze uthole ukubuka okungcono"</string>
<string name="display_rotation_camera_compat_toast_in_multi_window" msgid="2473122980393502775">"Vula i-<xliff:g id="NAME">%s</xliff:g> kusikrini esigcwele ngokubuka okungcono"</string>
@@ -2443,4 +2437,22 @@
<string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"Shintsha umsebenzisi"</string>
<string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"Thulisa"</string>
<string name="bg_user_sound_notification_message" msgid="8613881975316976673">"Thepha ukuze uthulise umsindo"</string>
+ <!-- no translation found for keyboard_shortcut_group_applications_browser (6535007304687100909) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_contacts (2750702518068326356) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_email (4229037666415353683) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_sms (3523799286376321137) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_music (2051507523525651067) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calendar (3571770335653387606) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_calculator (6753209559716091507) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications_maps (7950000659522589471) -->
+ <skip />
+ <!-- no translation found for keyboard_shortcut_group_applications (3010389163951364798) -->
+ <skip />
</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 0975eda..7cc9e13 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -5243,6 +5243,11 @@
the VISIBLE or INVISIBLE state when measuring. Defaults to false. -->
<attr name="measureAllChildren" format="boolean" />
</declare-styleable>
+ <!-- @hide -->
+ <declare-styleable name="MaxHeightFrameLayout">
+ <!-- An optional argument to supply a maximum height for this view. -->
+ <attr name="maxHeight" format="dimension" />
+ </declare-styleable>
<declare-styleable name="ExpandableListView">
<!-- Indicator shown beside the group View. This can be a stateful Drawable. -->
<attr name="groupIndicator" format="reference" />
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 46b15416..ec865f6 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -3880,6 +3880,8 @@
<!-- Title of the pop-up dialog in which the user switches keyboard, also known as input method. -->
<string name="select_input_method">Choose input method</string>
+ <!-- Button to access the language settings of the current input method. [CHAR LIMIT=50]-->
+ <string name="input_method_language_settings">Language Settings</string>
<!-- Summary text of a toggle switch to enable/disable use of the IME while a physical
keyboard is connected -->
<string name="show_ime">Keep it on screen while physical keyboard is active</string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c50b961..fcafdae 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1577,6 +1577,8 @@
<java-symbol type="layout" name="input_method" />
<java-symbol type="layout" name="input_method_extract_view" />
<java-symbol type="layout" name="input_method_switch_item" />
+ <java-symbol type="layout" name="input_method_switch_item_new" />
+ <java-symbol type="layout" name="input_method_switch_dialog_new" />
<java-symbol type="layout" name="input_method_switch_dialog_title" />
<java-symbol type="layout" name="js_prompt" />
<java-symbol type="layout" name="list_content_simple" />
@@ -2552,6 +2554,7 @@
<java-symbol type="dimen" name="input_method_nav_key_button_ripple_max_width" />
<java-symbol type="drawable" name="ic_ime_nav_back" />
<java-symbol type="drawable" name="ic_ime_switcher" />
+ <java-symbol type="drawable" name="ic_ime_switcher_new" />
<java-symbol type="id" name="input_method_nav_back" />
<java-symbol type="id" name="input_method_nav_buttons" />
<java-symbol type="id" name="input_method_nav_center_group" />
@@ -5400,6 +5403,7 @@
<java-symbol type="style" name="Theme.DeviceDefault.DialogWhenLarge" />
<java-symbol type="style" name="Theme.DeviceDefault.DocumentsUI" />
<java-symbol type="style" name="Theme.DeviceDefault.InputMethod" />
+ <java-symbol type="style" name="Theme.DeviceDefault.InputMethodSwitcherDialog" />
<java-symbol type="style" name="Theme.DeviceDefault.Light.DarkActionBar" />
<java-symbol type="style" name="Theme.DeviceDefault.Light.Dialog.FixedSize" />
<java-symbol type="style" name="Theme.DeviceDefault.Light.Dialog.MinWidth" />
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 382ff04..f5c6738 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -6179,4 +6179,10 @@
<item name="colorListDivider">@color/list_divider_opacity_device_default_light</item>
<item name="opacityListDivider">@color/list_divider_opacity_device_default_light</item>
</style>
+
+ <!-- Device default theme for the Input Method Switcher dialog. -->
+ <style name="Theme.DeviceDefault.InputMethodSwitcherDialog" parent="Theme.DeviceDefault.Dialog.Alert.DayNight">
+ <item name="windowMinWidthMajor">@null</item>
+ <item name="windowMinWidthMinor">@null</item>
+ </style>
</resources>
diff --git a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/Android.bp b/core/tests/batterystatstests/BatteryUsageStatsProtoTests/Android.bp
deleted file mode 100644
index 1fb5f2c..0000000
--- a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/Android.bp
+++ /dev/null
@@ -1,30 +0,0 @@
-package {
- // See: http://go/android-license-faq
- // A large-scale-change added 'default_applicable_licenses' to import
- // all of the 'license_kinds' from "frameworks_base_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: ["frameworks_base_license"],
-}
-
-android_test {
- name: "BatteryUsageStatsProtoTests",
- srcs: ["src/**/*.java"],
-
- static_libs: [
- "androidx.test.rules",
- "junit",
- "mockito-target-minus-junit4",
- "platform-test-annotations",
- "platformprotosnano",
- "statsdprotolite",
- "truth",
- ],
-
- libs: ["android.test.runner"],
-
- platform_apis: true,
- certificate: "platform",
-
- test_suites: ["device-tests"],
-}
diff --git a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/AndroidManifest.xml b/core/tests/batterystatstests/BatteryUsageStatsProtoTests/AndroidManifest.xml
deleted file mode 100644
index 9128dca..0000000
--- a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.frameworks.core.batteryusagestatsprototests">
-
- <uses-permission android:name="android.permission.BATTERY_STATS"/>
-
- <instrumentation
- android:name="androidx.test.runner.AndroidJUnitRunner"
- android:targetPackage="com.android.frameworks.core.batteryusagestatsprototests"
- android:label="BatteryUsageStats Proto Tests" />
-
-</manifest>
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index d277169..41696df 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -63,7 +63,6 @@
"-c fa",
],
static_libs: [
- "A11yChecker",
"collector-device-lib-platform",
"frameworks-base-testutils",
"core-test-rules", // for libcore.dalvik.system.CloseGuardSupport
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index 033ac7c..c5b75ff 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -17,6 +17,7 @@
package android.view;
import static android.util.SequenceUtils.getInitSeq;
+import static android.view.HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING;
import static android.view.Surface.FRAME_RATE_CATEGORY_DEFAULT;
import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH;
import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH_HINT;
@@ -494,8 +495,8 @@
0, displayInfo, new DisplayAdjustments());
ViewRootImpl viewRootImpl = new ViewRootImpl(sContext, display);
- boolean result = viewRootImpl.performHapticFeedback(
- HapticFeedbackConstants.CONTEXT_CLICK, true, false /* fromIme */);
+ boolean result = viewRootImpl.performHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK,
+ FLAG_IGNORE_GLOBAL_SETTING, 0 /* privFlags */);
assertThat(result).isFalse();
}
diff --git a/core/tests/coretests/src/android/view/accessibility/a11ychecker/OWNERS b/core/tests/coretests/src/android/view/accessibility/a11ychecker/OWNERS
deleted file mode 100644
index 872a180..0000000
--- a/core/tests/coretests/src/android/view/accessibility/a11ychecker/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-# Android Accessibility Framework owners
-include /core/java/android/view/accessibility/a11ychecker/OWNERS
-include /services/accessibility/OWNERS
-
-yaraabdullatif@google.com
diff --git a/core/tests/resourceflaggingtests/Android.bp b/core/tests/resourceflaggingtests/Android.bp
new file mode 100644
index 0000000..e8bb710
--- /dev/null
+++ b/core/tests/resourceflaggingtests/Android.bp
@@ -0,0 +1,75 @@
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "frameworks_base_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: ["frameworks_base_license"],
+ default_team: "trendy_team_android_resources",
+}
+
+genrule {
+ name: "resource-flagging-test-app-resources-compile",
+ tools: ["aapt2"],
+ srcs: [
+ "flagged_resources_res/values/bools.xml",
+ ],
+ out: ["values_bools.arsc.flat"],
+ cmd: "$(location aapt2) compile $(in) -o $(genDir) " +
+ "--feature-flags test.package.falseFlag:ro=false,test.package.trueFlag:ro=true",
+}
+
+genrule {
+ name: "resource-flagging-test-app-apk",
+ tools: ["aapt2"],
+ // The first input file in the list must be the manifest
+ srcs: [
+ "TestAppAndroidManifest.xml",
+ ":resource-flagging-test-app-resources-compile",
+ ],
+ out: ["resapp.apk"],
+ cmd: "$(location aapt2) link -o $(out) --manifest $(in)",
+}
+
+java_genrule {
+ name: "resource-flagging-apk-as-resource",
+ srcs: [
+ ":resource-flagging-test-app-apk",
+ ],
+ out: ["apks_as_resources.res.zip"],
+ tools: ["soong_zip"],
+
+ cmd: "mkdir -p $(genDir)/res/raw && " +
+ "cp $(in) $(genDir)/res/raw/$$(basename $(in)) && " +
+ "$(location soong_zip) -o $(out) -C $(genDir)/res -D $(genDir)/res",
+}
+
+android_test {
+ name: "ResourceFlaggingTests",
+ srcs: [
+ "src/**/*.java",
+ ],
+ platform_apis: true,
+ certificate: "platform",
+ static_libs: [
+ "androidx.test.rules",
+ "testng",
+ "compatibility-device-util-axt",
+ ],
+ resource_zips: [":resource-flagging-apk-as-resource"],
+ test_suites: ["device-tests"],
+}
diff --git a/core/tests/resourceflaggingtests/AndroidManifest.xml b/core/tests/resourceflaggingtests/AndroidManifest.xml
new file mode 100644
index 0000000..938463b
--- /dev/null
+++ b/core/tests/resourceflaggingtests/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2024 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.resourceflaggingtests">
+
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+
+ <instrumentation
+ android:name="androidx.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.android.resourceflaggingtests"
+ android:label="Resource Flagging Tests" />
+
+</manifest>
\ No newline at end of file
diff --git a/core/tests/resourceflaggingtests/TestAppAndroidManifest.xml b/core/tests/resourceflaggingtests/TestAppAndroidManifest.xml
new file mode 100644
index 0000000..d6cdeb7
--- /dev/null
+++ b/core/tests/resourceflaggingtests/TestAppAndroidManifest.xml
@@ -0,0 +1,4 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.intenal.flaggedresources">
+ <application/>
+</manifest>
\ No newline at end of file
diff --git a/core/tests/resourceflaggingtests/flagged_resources_res/values/bools.xml b/core/tests/resourceflaggingtests/flagged_resources_res/values/bools.xml
new file mode 100644
index 0000000..f4defd9
--- /dev/null
+++ b/core/tests/resourceflaggingtests/flagged_resources_res/values/bools.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <bool name="res1">true</bool>
+ <bool name="res1" android:featureFlag="test.package.falseFlag">false</bool>
+
+ <bool name="res2">false</bool>
+ <bool name="res2" android:featureFlag="test.package.trueFlag">true</bool>
+</resources>
\ No newline at end of file
diff --git a/core/tests/resourceflaggingtests/src/com/android/resourceflaggingtests/ResourceFlaggingTest.java b/core/tests/resourceflaggingtests/src/com/android/resourceflaggingtests/ResourceFlaggingTest.java
new file mode 100644
index 0000000..a0cbe3c
--- /dev/null
+++ b/core/tests/resourceflaggingtests/src/com/android/resourceflaggingtests/ResourceFlaggingTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.resourceflaggingtests;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.res.AssetManager;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.os.FileUtils;
+import android.util.DisplayMetrics;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.io.InputStream;
+
+@RunWith(JUnit4.class)
+@SmallTest
+public class ResourceFlaggingTest {
+ private Context mContext;
+ private Resources mResources;
+
+ @Before
+ public void setUp() throws Exception {
+ mContext = InstrumentationRegistry.getTargetContext();
+ AssetManager assets = new AssetManager();
+ assertThat(assets.addAssetPath(extractApkAndGetPath(R.raw.resapp))).isNotEqualTo(0);
+
+ final DisplayMetrics dm = new DisplayMetrics();
+ dm.setToDefaults();
+ mResources = new Resources(assets, dm, new Configuration());
+ }
+
+ @Test
+ public void testFlagDisabled() {
+ assertThat(getBoolean("res1")).isTrue();
+ }
+
+ @Test
+ public void testFlagEnabled() {
+ assertThat(getBoolean("res2")).isTrue();
+ }
+
+ private boolean getBoolean(String name) {
+ int resId = mResources.getIdentifier(name, "bool", "com.android.intenal.flaggedresources");
+ assertThat(resId).isNotEqualTo(0);
+ return mResources.getBoolean(resId);
+ }
+
+ private String extractApkAndGetPath(int id) throws Exception {
+ final Resources resources = mContext.getResources();
+ try (InputStream is = resources.openRawResource(id)) {
+ File path = new File(mContext.getFilesDir(), resources.getResourceEntryName(id));
+ path.deleteOnExit();
+ FileUtils.copyToFileOrThrow(is, path);
+ return path.getAbsolutePath();
+ }
+ }
+}
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 65615e6..7b96699 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -325,10 +325,12 @@
<!-- These are the standard packages that are allowed to always have internet
access while in power save mode, even if they aren't in the foreground. -->
<allow-in-power-save package="com.android.providers.downloads" />
+ <allow-in-power-save package="com.android.rkpdapp" />
<!-- These are the standard packages that are allowed to always have internet
access while in data mode, even if they aren't in the foreground. -->
<allow-in-data-usage-save package="com.android.providers.downloads" />
+ <allow-in-data-usage-save package="com.android.rkpdapp" />
<!-- This is a core platform component that needs to freely run in the background -->
<allow-in-power-save package="com.android.cellbroadcastreceiver.module" />
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index 4b367e0..f9fd369 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -66,6 +66,7 @@
import java.util.List;
import java.util.Locale;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import javax.security.auth.x500.X500Principal;
@@ -376,6 +377,8 @@
*/
public static final int KEY_ATTESTATION_FAILURE = 4;
+ private static final int BIND_KEY_CHAIN_SERVICE_TIMEOUT_MS = 30 * 1000;
+
/**
* Used by DPC or delegated app in
* {@link android.app.admin.DeviceAdminReceiver#onChoosePrivateKeyAlias} or
@@ -1120,7 +1123,10 @@
context.unbindService(keyChainServiceConnection);
throw new AssertionError("could not bind to KeyChainService");
}
- countDownLatch.await();
+ if (!countDownLatch.await(BIND_KEY_CHAIN_SERVICE_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+ context.unbindService(keyChainServiceConnection);
+ throw new AssertionError("binding to KeyChainService timeout");
+ }
IKeyChainService service = keyChainService.get();
if (service != null) {
return new KeyChainConnection(context, keyChainServiceConnection, service);
diff --git a/libs/WindowManager/Shell/Android.bp b/libs/WindowManager/Shell/Android.bp
index a00d003..e6cb3a0 100644
--- a/libs/WindowManager/Shell/Android.bp
+++ b/libs/WindowManager/Shell/Android.bp
@@ -235,6 +235,10 @@
// *.kt sources are inside a filegroup.
"kotlin-annotations",
],
+ required: [
+ "wmshell.protolog.json.gz",
+ "wmshell.protolog.pb",
+ ],
kotlincflags: ["-Xjvm-default=all"],
manifest: "AndroidManifest.xml",
plugins: ["dagger2-compiler"],
diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml
index 8b328e2..6e8a679 100644
--- a/libs/WindowManager/Shell/res/values-af/strings.xml
+++ b/libs/WindowManager/Shell/res/values-af/strings.xml
@@ -118,6 +118,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Sweef"</string>
<string name="select_text" msgid="5139083974039906583">"Kies"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Skermskoot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Maak toe"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Maak kieslys toe"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Maak kieslys oop"</string>
diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml
index b005a01..ac7935d 100644
--- a/libs/WindowManager/Shell/res/values-am/strings.xml
+++ b/libs/WindowManager/Shell/res/values-am/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"አረፋ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ያቀናብሩ"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"አረፋ ተሰናብቷል።"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"አረፋዎች"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"አረፋዎችን አሳይ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ለተሻለ ዕይታ ይህን መተግበሪያ እንደገና ለመጀመር መታ ያድርጉ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"የዚህን መተግበሪያ ምጥጥነ ገፅታ በቅንብሮች ውስጥ ይለውጡ"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"የምጥጥነ ገፅታ ለውጥ"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"ተንሳፋፊ"</string>
<string name="select_text" msgid="5139083974039906583">"ምረጥ"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ቅጽበታዊ ገፅ ዕይታ"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"ዝጋ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ምናሌ ዝጋ"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"ምናሌን ክፈት"</string>
diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml
index 8c283d3..53ff6da 100644
--- a/libs/WindowManager/Shell/res/values-ar/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ar/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"فقاعة"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"إدارة"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"تم إغلاق الفقاعة."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"الفقاعات"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"إظهار الفقاعات"</string>
<string name="restart_button_description" msgid="4564728020654658478">"انقر لإعادة تشغيل هذا التطبيق للحصول على تجربة عرض أفضل."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"يمكنك تغيير نسبة العرض إلى الارتفاع لهذا التطبيق من خلال \"الإعدادات\"."</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"تغيير نسبة العرض إلى الارتفاع"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"نافذة عائمة"</string>
<string name="select_text" msgid="5139083974039906583">"اختيار"</string>
<string name="screenshot_text" msgid="1477704010087786671">"لقطة شاشة"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"إغلاق"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"إغلاق القائمة"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"فتح القائمة"</string>
diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml
index ef92587..b94ab2e 100644
--- a/libs/WindowManager/Shell/res/values-as/strings.xml
+++ b/libs/WindowManager/Shell/res/values-as/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"বাবল"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"পৰিচালনা কৰক"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"বাবল অগ্ৰাহ্য কৰা হৈছে"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"বাবল"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"বাবল দেখুৱাওক"</string>
<string name="restart_button_description" msgid="4564728020654658478">"উন্নত ভিউ পোৱাৰ বাবে এপ্টো ৰিষ্টাৰ্ট কৰিবলৈ টিপক"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ছেটিঙলৈ গৈ এই এপ্টোৰ আকাৰৰ অনুপাত সলনি কৰক"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"আকাৰৰ অনুপাত সলনি কৰক"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ওপঙা"</string>
<string name="select_text" msgid="5139083974039906583">"বাছনি কৰক"</string>
<string name="screenshot_text" msgid="1477704010087786671">"স্ক্ৰীনশ্বট"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ব্ৰাউজাৰত খোলক"</string>
<string name="close_text" msgid="4986518933445178928">"বন্ধ কৰক"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"মেনু বন্ধ কৰক"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"মেনু খোলক"</string>
diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml
index 04b2f1c..dd3e0e3 100644
--- a/libs/WindowManager/Shell/res/values-az/strings.xml
+++ b/libs/WindowManager/Shell/res/values-az/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Qabarcıq"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"İdarə edin"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Qabarcıqdan imtina edilib."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Yumrucuq"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Yumrucuqları göstərin"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Yaxşı görünüş üçün toxunaraq bu tətbiqi yenidən başladın"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Ayarlarda bu tətbiqin tərəflər nisbətini dəyişin"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Tərəflər nisbətini dəyişin"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Üzən pəncərə"</string>
<string name="select_text" msgid="5139083974039906583">"Seçin"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Skrinşot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Bağlayın"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menyunu bağlayın"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Menyunu açın"</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 47bc105..af695e7 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Oblačić"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Upravljajte"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Oblačić je odbačen."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Oblačići"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Prikaži oblačiće"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Dodirnite da biste restartovali ovu aplikaciju radi boljeg prikaza"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Promenite razmeru ove aplikacije u Podešavanjima"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Promeni razmeru"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Plutajuće"</string>
<string name="select_text" msgid="5139083974039906583">"Izaberite"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Snimak ekrana"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Otvorite u pregledaču"</string>
<string name="close_text" msgid="4986518933445178928">"Zatvorite"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite meni"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Otvorite meni"</string>
diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml
index 6ad7553..dbbc07f 100644
--- a/libs/WindowManager/Shell/res/values-be/strings.xml
+++ b/libs/WindowManager/Shell/res/values-be/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Усплывальнае апавяшчэнне"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Кіраваць"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Усплывальнае апавяшчэнне адхілена."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Успл. чаты"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Паказ усплывальных чатаў"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Націсніце, каб перазапусціць гэту праграму для зручнейшага прагляду"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Змяніць суадносіны бакоў для гэтай праграмы ў наладах"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Змяніць суадносіны бакоў"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Зрабіць рухомым акном"</string>
<string name="select_text" msgid="5139083974039906583">"Выбраць"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Здымак экрана"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Адкрыць у браўзеры"</string>
<string name="close_text" msgid="4986518933445178928">"Закрыць"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Закрыць меню"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Адкрыць меню"</string>
diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml
index a9e0bce..bba2f99 100644
--- a/libs/WindowManager/Shell/res/values-bg/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bg/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Балонче"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Управление"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Балончето е отхвърлено."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Балончета"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Показване на балончетата"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Докоснете, за да рестартирате това приложение с цел по-добър изглед"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Променете съотношението на това приложение в „Настройки“"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Промяна на съотношението"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Плаващо"</string>
<string name="select_text" msgid="5139083974039906583">"Избиране"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Екранна снимка"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Затваряне"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Затваряне на менюто"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Отваряне на менюто"</string>
diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml
index 29de100..cb08182 100644
--- a/libs/WindowManager/Shell/res/values-bn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bn/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"বাবল"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ম্যানেজ করুন"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"বাবল বাতিল করা হয়েছে।"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"বাবল"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"বাবল দেখুন"</string>
<string name="restart_button_description" msgid="4564728020654658478">"আরও ভাল ভিউয়ের জন্য এই অ্যাপ রিস্টার্ট করতে ট্যাপ করুন"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"সেটিংস থেকে এই অ্যাপের অ্যাস্পেক্ট রেশিও পরিবর্তন করুন"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"অ্যাস্পেক্ট রেশিও পরিবর্তন করুন"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"ফ্লোট"</string>
<string name="select_text" msgid="5139083974039906583">"বেছে নিন"</string>
<string name="screenshot_text" msgid="1477704010087786671">"স্ক্রিনশট"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"বন্ধ করুন"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"\'মেনু\' বন্ধ করুন"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"মেনু খুলুন"</string>
diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml
index 5f1da75..e7505e5 100644
--- a/libs/WindowManager/Shell/res/values-bs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-bs/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Oblačić"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Upravljaj"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Oblačić je odbačen."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Oblačići"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Prikaz oblačića"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Dodirnite da ponovo pokrenete ovu aplikaciju radi boljeg prikaza"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Promijenite format slike aplikacije u Postavkama"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Promijenite format slike"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Lebdeći"</string>
<string name="select_text" msgid="5139083974039906583">"Odabir"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Snimak ekrana"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Otvori u pregledniku"</string>
<string name="close_text" msgid="4986518933445178928">"Zatvaranje"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zatvaranje menija"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Otvaranje menija"</string>
diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml
index d70de79..ce9f547 100644
--- a/libs/WindowManager/Shell/res/values-ca/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ca/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bombolla"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gestiona"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"La bombolla s\'ha ignorat."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bombolles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostra les bombolles"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Toca per reiniciar aquesta aplicació i obtenir una millor visualització"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Canvia la relació d\'aspecte d\'aquesta aplicació a Configuració"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Canvia la relació d\'aspecte"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Flotant"</string>
<string name="select_text" msgid="5139083974039906583">"Selecciona"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de pantalla"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Obre al navegador"</string>
<string name="close_text" msgid="4986518933445178928">"Tanca"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Tanca el menú"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Obre el menú"</string>
diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml
index ca00fec..06941f6 100644
--- a/libs/WindowManager/Shell/res/values-cs/strings.xml
+++ b/libs/WindowManager/Shell/res/values-cs/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bublina"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Spravovat"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bublina byla zavřena."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubliny"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Zobrazovat bubliny"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Klepnutím tuto aplikaci restartujete kvůli lepšímu zobrazení"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Změnit v Nastavení poměr stran této aplikace"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Změnit poměr stran"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Plovoucí"</string>
<string name="select_text" msgid="5139083974039906583">"Vybrat"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Snímek obrazovky"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Zavřít"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zavřít nabídku"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Otevřít nabídku"</string>
diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml
index d50d2f0..7883bb0 100644
--- a/libs/WindowManager/Shell/res/values-da/strings.xml
+++ b/libs/WindowManager/Shell/res/values-da/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Boble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Administrer"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Boblen blev lukket."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bobler"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Vis bobler"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tryk for at genstarte denne app, så visningen forbedres"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Skift denne apps billedformat i Indstillinger"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Skift billedformat"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Svævende"</string>
<string name="select_text" msgid="5139083974039906583">"Vælg"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Luk"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Luk menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Åbn menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml
index 7f44f83..6bb8523 100644
--- a/libs/WindowManager/Shell/res/values-de/strings.xml
+++ b/libs/WindowManager/Shell/res/values-de/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Verwalten"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bubble verworfen."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubbles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Bubbles anzeigen"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tippen, um diese App neu zu starten und die Ansicht zu verbessern"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Seitenverhältnis der App in den Einstellungen ändern"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Seitenverhältnis ändern"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Frei schwebend"</string>
<string name="select_text" msgid="5139083974039906583">"Auswählen"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Schließen"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menü schließen"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Menü öffnen"</string>
diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml
index a3a5ccd..a640b94 100644
--- a/libs/WindowManager/Shell/res/values-el/strings.xml
+++ b/libs/WindowManager/Shell/res/values-el/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Συννεφάκι"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Διαχείριση"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Το συννεφάκι παραβλέφθηκε."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Συννεφάκια"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Εμφάνιση συννεφακίων"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Πατήστε για να επανεκκινήσετε αυτή την εφαρμογή για καλύτερη προβολή"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Αλλάξτε τον λόγο διαστάσεων αυτής της εφαρμογής στις Ρυθμίσεις"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Αλλαγή λόγου διαστάσεων"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Κινούμενο"</string>
<string name="select_text" msgid="5139083974039906583">"Επιλογή"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Στιγμιότυπο οθόνης"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Κλείσιμο"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Κλείσιμο μενού"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Άνοιγμα μενού"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
index edc4f4e..4708d5f 100644
--- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Manage"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bubble dismissed."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubbles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Show bubbles"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tap to restart this app for a better view"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Change this app\'s aspect ratio in Settings"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Change aspect ratio"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
<string name="select_text" msgid="5139083974039906583">"Select"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Open menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
index d7e23fd..bd8a636 100644
--- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml
@@ -116,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
<string name="select_text" msgid="5139083974039906583">"Select"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Open in browser"</string>
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close Menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Open Menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
index edc4f4e..4708d5f 100644
--- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Manage"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bubble dismissed."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubbles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Show bubbles"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tap to restart this app for a better view"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Change this app\'s aspect ratio in Settings"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Change aspect ratio"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
<string name="select_text" msgid="5139083974039906583">"Select"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Open menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
index edc4f4e..4708d5f 100644
--- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Manage"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bubble dismissed."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubbles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Show bubbles"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tap to restart this app for a better view"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Change this app\'s aspect ratio in Settings"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Change aspect ratio"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
<string name="select_text" msgid="5139083974039906583">"Select"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Open menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-en-rXC/strings.xml b/libs/WindowManager/Shell/res/values-en-rXC/strings.xml
index 1da8c27..3503080 100644
--- a/libs/WindowManager/Shell/res/values-en-rXC/strings.xml
+++ b/libs/WindowManager/Shell/res/values-en-rXC/strings.xml
@@ -116,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
<string name="select_text" msgid="5139083974039906583">"Select"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Open in browser"</string>
<string name="close_text" msgid="4986518933445178928">"Close"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Close Menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Open Menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
index 8653e59..72bafcd 100644
--- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Cuadro"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Administrar"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Se descartó el cuadro."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Burbujas"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostrar burbujas"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Presiona para reiniciar esta app y tener una mejor vista"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Cambiar la relación de aspecto de esta app en Configuración"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Cambiar relación de aspecto"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
<string name="select_text" msgid="5139083974039906583">"Seleccionar"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de pantalla"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Cerrar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Abrir el menú"</string>
diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml
index 8f59c9c..d907a56 100644
--- a/libs/WindowManager/Shell/res/values-es/strings.xml
+++ b/libs/WindowManager/Shell/res/values-es/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Burbuja"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gestionar"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Burbuja cerrada."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Burbujas"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostrar burbujas"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Toca para reiniciar esta aplicación y obtener una mejor vista"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Cambiar la relación de aspecto de esta aplicación en Ajustes"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Cambiar relación de aspecto"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
<string name="select_text" msgid="5139083974039906583">"Seleccionar"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de pantalla"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Cerrar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Abrir menú"</string>
diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml
index 3d86eb4..7d8103e 100644
--- a/libs/WindowManager/Shell/res/values-et/strings.xml
+++ b/libs/WindowManager/Shell/res/values-et/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Mull"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Halda"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Mullist loobuti."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Mullid"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Kuva mullid"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Puudutage, et see rakendus parema vaate jaoks taaskäivitada"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Muutke selle rakenduse kuvasuhet jaotises Seaded"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Muutke kuvasuhet"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Hõljuv"</string>
<string name="select_text" msgid="5139083974039906583">"Vali"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Ekraanipilt"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Sule"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Sule menüü"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Ava menüü"</string>
diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml
index 4e7bdd2..19e028f 100644
--- a/libs/WindowManager/Shell/res/values-eu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-eu/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Burbuila"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Kudeatu"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Baztertu da globoa."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Burbuilak"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Erakutsi burbuilak"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Hobeto ikusteko, sakatu hau, eta aplikazioa berrabiarazi egingo da"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Aldatu aplikazioaren aspektu-erlazioa ezarpenetan"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Aldatu aspektu-erlazioa"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Leiho gainerakorra"</string>
<string name="select_text" msgid="5139083974039906583">"Hautatu"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Pantaila-argazkia"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Itxi"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Itxi menua"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Ireki menua"</string>
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index a4711d4..2bb9415 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"حباب"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"مدیریت"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"حبابک رد شد."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"حبابک"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"نمایش حبابک"</string>
<string name="restart_button_description" msgid="4564728020654658478">"برای داشتن نمایی بهتر، تکضرب بزنید تا این برنامه بازراهاندازی شود"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"نسبت ابعادی این برنامه را در «تنظیمات» تغییر دهید"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"تغییر نسبت ابعادی"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"شناور"</string>
<string name="select_text" msgid="5139083974039906583">"انتخاب"</string>
<string name="screenshot_text" msgid="1477704010087786671">"نماگرفت"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"بستن"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"بستن منو"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"باز کردن منو"</string>
diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml
index 577d625..fcc4150 100644
--- a/libs/WindowManager/Shell/res/values-fi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fi/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Kupla"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Ylläpidä"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Kupla ohitettu."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Kuplat"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Näytä kuplat"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Napauta, niin sovellus käynnistyy uudelleen paremmin näytölle sopivana"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Muuta tämän sovelluksen kuvasuhdetta Asetuksissa"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Vaihda kuvasuhdetta"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Kelluva ikkuna"</string>
<string name="select_text" msgid="5139083974039906583">"Valitse"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Kuvakaappaus"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Sulje"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Sulje valikko"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Avaa valikko"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
index 7feb772..268b409 100644
--- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bulle"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gérer"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bulle ignorée."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bulles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Afficher les bulles"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Touchez pour redémarrer cette appli afin d\'obtenir un meilleur affichage"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Changer les proportions de cette appli dans les paramètres"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Modifier les proportions"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Flottant"</string>
<string name="select_text" msgid="5139083974039906583">"Sélectionner"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Capture d\'écran"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Fermer"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fermer le menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Ouvrir le menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml
index 4d14d0b..1762a29 100644
--- a/libs/WindowManager/Shell/res/values-fr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fr/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bulle"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gérer"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bulle fermée."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bulles"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Afficher les bulles"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Appuyez pour redémarrer cette appli et obtenir une meilleure vue."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Modifiez le format de cette appli dans les Paramètres."</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Modifier le format"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Flottante"</string>
<string name="select_text" msgid="5139083974039906583">"Sélectionner"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Capture d\'écran"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Fermer"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fermer le menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Ouvrir le menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml
index e5b67c2..94e7ad5 100644
--- a/libs/WindowManager/Shell/res/values-gl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gl/strings.xml
@@ -118,6 +118,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Flotante"</string>
<string name="select_text" msgid="5139083974039906583">"Seleccionar"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de pantalla"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Abrir no navegador"</string>
<string name="close_text" msgid="4986518933445178928">"Pechar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Pechar o menú"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Abrir menú"</string>
diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml
index e2a52dc..8a03a4d 100644
--- a/libs/WindowManager/Shell/res/values-gu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-gu/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"બબલ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"મેનેજ કરો"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"બબલ છોડી દેવાયો."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"બબલ"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"બબલ બતાવો"</string>
<string name="restart_button_description" msgid="4564728020654658478">"વધુ સારા વ્યૂ માટે, આ ઍપને ફરી શરૂ કરવા ટૅપ કરો"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"સેટિંગમાં આ ઍપનો સાપેક્ષ ગુણોત્તર બદલો"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"સાપેક્ષ ગુણોત્તર બદલો"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"ફ્લોટિંગ વિન્ડો"</string>
<string name="select_text" msgid="5139083974039906583">"પસંદ કરો"</string>
<string name="screenshot_text" msgid="1477704010087786671">"સ્ક્રીનશૉટ"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"બંધ કરો"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"મેનૂ બંધ કરો"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"મેનૂ ખોલો"</string>
diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml
index f75e0e0..b73f449 100644
--- a/libs/WindowManager/Shell/res/values-hi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hi/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"बबल"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"मैनेज करें"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"बबल खारिज किया गया."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"बबल्स"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"बबल्स दिखाएं"</string>
<string name="restart_button_description" msgid="4564728020654658478">"बेहतर व्यू पाने के लिए, टैप करके ऐप्लिकेशन को रीस्टार्ट करें"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"सेटिंग में जाकर इस ऐप्लिकेशन का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बदलें"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बदलें"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"फ़्लोट"</string>
<string name="select_text" msgid="5139083974039906583">"चुनें"</string>
<string name="screenshot_text" msgid="1477704010087786671">"स्क्रीनशॉट"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"बंद करें"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"मेन्यू बंद करें"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"मेन्यू खोलें"</string>
diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml
index ed80c50..000b0e6 100644
--- a/libs/WindowManager/Shell/res/values-hr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hr/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Oblačić"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Upravljanje"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Oblačić odbačen."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Oblačići"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Prikaži oblačiće"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Dodirnite da biste ponovo pokrenuli tu aplikaciju kako biste bolje vidjeli"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Promijeni omjer slike ove aplikacije u postavkama"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Promijeni omjer slike"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Plutajući"</string>
<string name="select_text" msgid="5139083974039906583">"Odaberite"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Snimka zaslona"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Otvori u pregledniku"</string>
<string name="close_text" msgid="4986518933445178928">"Zatvorite"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite izbornik"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Otvaranje izbornika"</string>
diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml
index 32a3106..f4cf754 100644
--- a/libs/WindowManager/Shell/res/values-hu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hu/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Buborék"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Kezelés"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Buborék elvetve."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Buborékok"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Buborékok megjelenítése"</string>
<string name="restart_button_description" msgid="4564728020654658478">"A jobb nézet érdekében koppintson az alkalmazás újraindításához."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Az app méretarányát a Beállításokban módosíthatja"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Méretarány módosítása"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Lebegő"</string>
<string name="select_text" msgid="5139083974039906583">"Kiválasztás"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Képernyőkép"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Bezárás"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menü bezárása"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Menü megnyitása"</string>
diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml
index 65ca704..1d2d2ff 100644
--- a/libs/WindowManager/Shell/res/values-hy/strings.xml
+++ b/libs/WindowManager/Shell/res/values-hy/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Պղպջակ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Կառավարել"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Ամպիկը փակվեց։"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Ամպիկներ"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Ցույց տալ ամպիկներ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Հպեք՝ հավելվածը վերագործարկելու և ավելի հարմար տեսք ընտրելու համար"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Փոխել հավելվածի կողմերի հարաբերակցությունը Կարգավորումներում"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Փոխել չափերի հարաբերակցությունը"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Լողացող պատուհան"</string>
<string name="select_text" msgid="5139083974039906583">"Ընտրել"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Սքրինշոթ"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Բացել դիտարկիչում"</string>
<string name="close_text" msgid="4986518933445178928">"Փակել"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Փակել ընտրացանկը"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Բացել ընտրացանկը"</string>
diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml
index 975dd72..0e662f6 100644
--- a/libs/WindowManager/Shell/res/values-in/strings.xml
+++ b/libs/WindowManager/Shell/res/values-in/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Balon"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Kelola"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Balon ditutup."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Balon"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Tampilkan Balon"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Ketuk untuk memulai ulang aplikasi ini agar mendapatkan tampilan yang lebih baik"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Ubah rasio aspek aplikasi ini di Setelan"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Ubah rasio aspek"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Mengambang"</string>
<string name="select_text" msgid="5139083974039906583">"Pilih"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Tutup"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Tutup Menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Buka Menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml
index 11c4718..fb1df4d 100644
--- a/libs/WindowManager/Shell/res/values-is/strings.xml
+++ b/libs/WindowManager/Shell/res/values-is/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Blaðra"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Stjórna"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Blöðru lokað."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Blöðrur"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Sýna blöðrur"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Ýttu til að endurræsa forritið og fá betri sýn"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Breyta myndhlutfalli þessa forrits í stillingunum"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Breyta myndhlutfalli"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Reikult"</string>
<string name="select_text" msgid="5139083974039906583">"Velja"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Skjámynd"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Loka"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Loka valmynd"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Opna valmynd"</string>
diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml
index 168c8cc..9c825be 100644
--- a/libs/WindowManager/Shell/res/values-it/strings.xml
+++ b/libs/WindowManager/Shell/res/values-it/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Fumetto"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gestisci"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Fumetto ignorato."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bolle"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostra bolle"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tocca per riavviare l\'app e migliorare la visualizzazione"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Cambia le proporzioni dell\'app nelle Impostazioni"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Cambia proporzioni"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Mobile"</string>
<string name="select_text" msgid="5139083974039906583">"Seleziona"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Chiudi"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Chiudi il menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Apri menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml
index fd4cd1a..abd0f6b 100644
--- a/libs/WindowManager/Shell/res/values-iw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-iw/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"בועה"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ניהול"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"הבועה נסגרה."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"בועות"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"הצגת הבועות"</string>
<string name="restart_button_description" msgid="4564728020654658478">"כדי לראות טוב יותר יש להקיש ולהפעיל את האפליקציה הזו מחדש"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"אפשר לשנות את יחס הגובה-רוחב של האפליקציה הזו ב\'הגדרות\'"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"שינוי יחס גובה-רוחב"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"בלונים"</string>
<string name="select_text" msgid="5139083974039906583">"בחירה"</string>
<string name="screenshot_text" msgid="1477704010087786671">"צילום מסך"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"סגירה"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"סגירת התפריט"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"פתיחת התפריט"</string>
diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml
index 64ddec9..55fd8b1 100644
--- a/libs/WindowManager/Shell/res/values-ja/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ja/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"バブル"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"管理"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ふきだしが非表示になっています。"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"バブル"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"バブルを表示"</string>
<string name="restart_button_description" msgid="4564728020654658478">"タップしてこのアプリを再起動すると、表示が適切になります"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"このアプリのアスペクト比を [設定] で変更します"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"アスペクト比を変更"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"フローティング"</string>
<string name="select_text" msgid="5139083974039906583">"選択"</string>
<string name="screenshot_text" msgid="1477704010087786671">"スクリーンショット"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ブラウザで開く"</string>
<string name="close_text" msgid="4986518933445178928">"閉じる"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"メニューを閉じる"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"メニューを開く"</string>
diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml
index cab8807..2354208 100644
--- a/libs/WindowManager/Shell/res/values-ka/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ka/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ბუშტი"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"მართვა"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ბუშტი დაიხურა."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ბუშტები"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ბუშტების ჩვენება"</string>
<string name="restart_button_description" msgid="4564728020654658478">"შეხებით გადატვირთეთ ეს აპი უკეთესი ხედის მისაღებად"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"შეცვალეთ ამ აპის თანაფარდობა პარამეტრებიდან"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"თანაფარდობის შეცვლა"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ფარფატი"</string>
<string name="select_text" msgid="5139083974039906583">"არჩევა"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ეკრანის ანაბეჭდი"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ბრაუზერში გახსნა"</string>
<string name="close_text" msgid="4986518933445178928">"დახურვა"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"მენიუს დახურვა"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"მენიუს გახსნა"</string>
diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml
index 4ff5b85..1818373 100644
--- a/libs/WindowManager/Shell/res/values-kk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kk/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Көпіршік"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Басқару"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Қалқыма хабар жабылды."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Қалқыма хабарлар"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Қалқыма хабарлар көрсету"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Көріністі жақсарту үшін осы қолданбаны түртіп, қайта ашыңыз."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Осы қолданбаның арақатынасын параметрлерден өзгертуге болады."</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Арақатынасты өзгерту"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Қалқыма"</string>
<string name="select_text" msgid="5139083974039906583">"Таңдау"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Скриншот"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Жабу"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Мәзірді жабу"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Мәзірді ашу"</string>
diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml
index ba7a324..69c0e1e 100644
--- a/libs/WindowManager/Shell/res/values-km/strings.xml
+++ b/libs/WindowManager/Shell/res/values-km/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ពពុះ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"គ្រប់គ្រង"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"បានច្រានចោលសារលេចឡើង។"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ផ្ទាំងអណ្ដែត"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"បង្ហាញផ្ទាំងអណ្ដែត"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ចុចដើម្បីចាប់ផ្ដើមកម្មវិធីនេះឡើងវិញសម្រាប់ទិដ្ឋភាពកាន់តែប្រសើរ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ផ្លាស់ប្ដូរសមាមាត្ររបស់កម្មវិធីនេះនៅក្នុងការកំណត់"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"ប្ដូរសមាមាត្រ"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"អណ្ដែត"</string>
<string name="select_text" msgid="5139083974039906583">"ជ្រើសរើស"</string>
<string name="screenshot_text" msgid="1477704010087786671">"រូបថតអេក្រង់"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"បើកក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត"</string>
<string name="close_text" msgid="4986518933445178928">"បិទ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"បិទម៉ឺនុយ"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"បើកម៉ឺនុយ"</string>
diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml
index 423e8d5..88a29df 100644
--- a/libs/WindowManager/Shell/res/values-kn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-kn/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ಬಬಲ್"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ನಿರ್ವಹಿಸಿ"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ಬಬಲ್ ವಜಾಗೊಳಿಸಲಾಗಿದೆ."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ಬಬಲ್ಸ್"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ಬಬಲ್ಸ್ ತೋರಿಸಿ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ಉತ್ತಮ ವೀಕ್ಷಣೆಗಾಗಿ ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಈ ಆ್ಯಪ್ನ ದೃಶ್ಯಾನುಪಾತವನ್ನು ಬದಲಾಯಿಸಿ"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"ದೃಶ್ಯಾನುಪಾತವನ್ನು ಬದಲಾಯಿಸಿ"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ಫ್ಲೋಟ್"</string>
<string name="select_text" msgid="5139083974039906583">"ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ಸ್ಕ್ರೀನ್ಶಾಟ್"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆಯಿರಿ"</string>
<string name="close_text" msgid="4986518933445178928">"ಮುಚ್ಚಿ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ಮೆನು ಮುಚ್ಚಿ"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"ಮೆನು ತೆರೆಯಿರಿ"</string>
diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml
index 0d1c621..a22667d8 100644
--- a/libs/WindowManager/Shell/res/values-ko/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ko/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"버블"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"관리"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"대화창을 닫았습니다."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"대화창"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"대화창 표시"</string>
<string name="restart_button_description" msgid="4564728020654658478">"탭하면 앱을 다시 시작하여 보기를 개선합니다."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"설정에서 앱의 가로세로 비율을 변경합니다."</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"가로세로 비율 변경"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"플로팅"</string>
<string name="select_text" msgid="5139083974039906583">"선택"</string>
<string name="screenshot_text" msgid="1477704010087786671">"스크린샷"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"닫기"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"메뉴 닫기"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"메뉴 열기"</string>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index f17e9ca..289d930 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Көбүк"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Башкаруу"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Калкып чыкма билдирме жабылды."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Калкып чыкма билдирмелер"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Калкып чыкма билдирмелерди көрсөтүү"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Жакшыраак көрүү үчүн бул колдонмону өчүрүп күйгүзүңүз. Ал үчүн таптап коюңуз"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Бул колдонмонун тараптарынын катнашын параметрлерден өзгөртүү"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Тараптардын катнашын өзгөртүү"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Калкыма"</string>
<string name="select_text" msgid="5139083974039906583">"Тандоо"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Скриншот"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Серепчиден ачуу"</string>
<string name="close_text" msgid="4986518933445178928">"Жабуу"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Менюну жабуу"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Менюну ачуу"</string>
diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml
index 195e4d5..0b84d2c 100644
--- a/libs/WindowManager/Shell/res/values-lo/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lo/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ຟອງ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ຈັດການ"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ປິດ Bubble ໄສ້ແລ້ວ."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ຟອງ"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ສະແດງຟອງ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ແຕະເພື່ອຣີສະຕາດແອັບນີ້ເພື່ອມຸມມອງທີ່ດີຂຶ້ນ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ປ່ຽນອັດຕາສ່ວນຂອງແອັບນີ້ໃນການຕັ້ງຄ່າ"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"ປ່ຽນອັດຕາສ່ວນ"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ລອຍ"</string>
<string name="select_text" msgid="5139083974039906583">"ເລືອກ"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ຮູບໜ້າຈໍ"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ເປີດໃນໂປຣແກຣມທ່ອງເວັບ"</string>
<string name="close_text" msgid="4986518933445178928">"ປິດ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ປິດເມນູ"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"ເປີດເມນູ"</string>
diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml
index 63ad580..5b0e6b7 100644
--- a/libs/WindowManager/Shell/res/values-lt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lt/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Debesėlis"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Tvarkyti"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Debesėlio atsisakyta."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Burbulai"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Rodyti burbulus"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Palieskite, kad iš naujo paleistumėte šią programą ir matytumėte aiškiau"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Pakeiskite šios programos kraštinių santykį"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Keisti kraštinių santykį"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Slankusis langas"</string>
<string name="select_text" msgid="5139083974039906583">"Pasirinkti"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Ekrano kopija"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Uždaryti"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Uždaryti meniu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Atidaryti meniu"</string>
diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml
index 268d893..704b2ed 100644
--- a/libs/WindowManager/Shell/res/values-lv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-lv/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Burbulis"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Pārvaldīt"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Burbulis ir noraidīts."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Burbuļi"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Rādīt burbuļus"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Pieskarieties, lai restartētu šo lietotni un uzlabotu attēlojumu."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Iestatījumos mainiet šīs lietotnes malu attiecību."</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Mainīt malu attiecību"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Peldošs"</string>
<string name="select_text" msgid="5139083974039906583">"Atlasīt"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Ekrānuzņēmums"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Aizvērt"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Aizvērt izvēlni"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Atvērt izvēlni"</string>
diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml
index 0a0027f..b257f80 100644
--- a/libs/WindowManager/Shell/res/values-mk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mk/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Балонче"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Управувајте"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Балончето е отфрлено."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Балончиња"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Прикажи „Балончиња“"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Допрете за да ја рестартирате апликацијава за подобар приказ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Промени го соодносот на апликацијава во „Поставки“"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Променување на соодносот"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Лебдечко"</string>
<string name="select_text" msgid="5139083974039906583">"Изберете"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Слика од екранот"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Затворете"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Затворете го менито"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Отвори го менито"</string>
diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml
index 07809e1..2efd983 100644
--- a/libs/WindowManager/Shell/res/values-ml/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ml/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ബബിൾ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"മാനേജ് ചെയ്യുക"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ബബിൾ ഡിസ്മിസ് ചെയ്തു."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ബബിൾ"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ബബിൾ കാണിക്കുക"</string>
<string name="restart_button_description" msgid="4564728020654658478">"മികച്ച കാഴ്ചയ്ക്കായി ഈ ആപ്പ് റീസ്റ്റാർട്ട് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ഈ ആപ്പിന്റെ വീക്ഷണ അനുപാതം, ക്രമീകരണത്തിൽ മാറ്റുക"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"വീക്ഷണ അനുപാതം മാറ്റുക"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ഫ്ലോട്ട്"</string>
<string name="select_text" msgid="5139083974039906583">"തിരഞ്ഞെടുക്കുക"</string>
<string name="screenshot_text" msgid="1477704010087786671">"സ്ക്രീൻഷോട്ട്"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ബ്രൗസറിൽ തുറക്കുക"</string>
<string name="close_text" msgid="4986518933445178928">"അടയ്ക്കുക"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"മെനു അടയ്ക്കുക"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"മെനു തുറക്കുക"</string>
diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml
index 99bd2df..a343065 100644
--- a/libs/WindowManager/Shell/res/values-mn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mn/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Бөмбөлөг"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Удирдах"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Бөмбөлгийг үл хэрэгссэн."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Бөмбөлгүүд"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Бөмбөлгүүдийг харуулах"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Харагдах байдлыг сайжруулахын тулд энэ аппыг товшиж, дахин эхлүүлнэ үү"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Энэ аппын харьцааг Тохиргоонд өөрчилнө үү"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Харьцааг өөрчлөх"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Хөвөгч"</string>
<string name="select_text" msgid="5139083974039906583">"Сонгох"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Дэлгэцийн агшин"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Хаах"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Цэсийг хаах"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Цэс нээх"</string>
diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml
index ac57e0a5..ef71e86 100644
--- a/libs/WindowManager/Shell/res/values-mr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-mr/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"बबल"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"व्यवस्थापित करा"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"बबल डिसमिस केला."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"बबल"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"बबल दाखवा"</string>
<string name="restart_button_description" msgid="4564728020654658478">"अधिक चांगल्या दृश्यासाठी हे अॅप रीस्टार्ट करण्याकरिता टॅप करा"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"सेटिंग्ज मध्ये या ॲपचा आस्पेक्ट रेशो बदला"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"आस्पेक्ट रेशो बदला"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string>
<string name="select_text" msgid="5139083974039906583">"निवडा"</string>
<string name="screenshot_text" msgid="1477704010087786671">"स्क्रीनशॉट"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ब्राउझरमध्ये उघडा"</string>
<string name="close_text" msgid="4986518933445178928">"बंद करा"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"मेनू बंद करा"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"मेनू उघडा"</string>
diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml
index 6bc2fbb..a9a97d8 100644
--- a/libs/WindowManager/Shell/res/values-ms/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ms/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Gelembung"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Urus"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Gelembung diketepikan."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Gelembung"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Tunjukkan Gelembung"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Ketik untuk memulakan semula apl ini untuk mendapatkan paparan yang lebih baik"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Tukar nisbah bidang apl ini dalam Tetapan"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Tukar nisbah bidang"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Terapung"</string>
<string name="select_text" msgid="5139083974039906583">"Pilih"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Tangkapan skrin"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Buka dalam penyemak imbas"</string>
<string name="close_text" msgid="4986518933445178928">"Tutup"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Tutup Menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Buka Menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml
index 12c19ed..781148d 100644
--- a/libs/WindowManager/Shell/res/values-my/strings.xml
+++ b/libs/WindowManager/Shell/res/values-my/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ပူဖောင်းဖောက်သံ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"စီမံရန်"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ပူဖောင်းကွက် ဖယ်လိုက်သည်။"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ပူဖောင်းကွက်"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ပူဖောင်းကွက်များ ပြပါ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ပိုကောင်းသောမြင်ကွင်းအတွက် ဤအက်ပ်ပြန်စရန် တို့ပါ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ဆက်တင်များတွင် ဤအက်ပ်၏အချိုးအစားကို ပြောင်းရန်"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"အချိုးစား ပြောင်းရန်"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"မျှောရန်"</string>
<string name="select_text" msgid="5139083974039906583">"ရွေးရန်"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"ပိတ်ရန်"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"မီနူး ပိတ်ရန်"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"မီနူး ဖွင့်ရန်"</string>
diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml
index 27b7901..9dc8501 100644
--- a/libs/WindowManager/Shell/res/values-nb/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nb/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Boble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Administrer"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Boblen er avvist."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bobler"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Vis bobler"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Trykk for å starte denne appen på nytt og få en bedre visning"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Endre høyde/bredde-forholdet for denne appen i Innstillinger"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Endre høyde/bredde-forholdet"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Svevende"</string>
<string name="select_text" msgid="5139083974039906583">"Velg"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Skjermbilde"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Lukk"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Lukk menyen"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Åpne menyen"</string>
diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml
index 25d0337..7cc4a43 100644
--- a/libs/WindowManager/Shell/res/values-ne/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ne/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"बबल"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"व्यवस्थापन गर्नुहोस्"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"बबल हटाइयो।"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"बबलहरू"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"बबलहरू देखाउनुहोस्"</string>
<string name="restart_button_description" msgid="4564728020654658478">"अझ राम्रो भ्यू प्राप्त गर्नका लागि यो एप रिस्टार्ट गर्न ट्याप गर्नुहोस्"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"सेटिङमा गई यो एपको एस्पेक्ट रेसियो परिवर्तन गर्नुहोस्"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"एस्पेक्ट रेसियो परिवर्तन गर्नुहोस्"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string>
<string name="select_text" msgid="5139083974039906583">"चयन गर्नुहोस्"</string>
<string name="screenshot_text" msgid="1477704010087786671">"स्क्रिनसट"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"ब्राउजरमा खोल्नुहोस्"</string>
<string name="close_text" msgid="4986518933445178928">"बन्द गर्नुहोस्"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"मेनु बन्द गर्नुहोस्"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"मेनु खोल्नुहोस्"</string>
diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml
index 4ad343c..7480add 100644
--- a/libs/WindowManager/Shell/res/values-nl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-nl/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubbel"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Beheren"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bubbel gesloten."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubbels"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Bubbels tonen"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tik om deze app opnieuw op te starten voor een betere weergave"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Wijzig de beeldverhouding van deze app in Instellingen"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Beeldverhouding wijzigen"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Zwevend"</string>
<string name="select_text" msgid="5139083974039906583">"Selecteren"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Openen in browser"</string>
<string name="close_text" msgid="4986518933445178928">"Sluiten"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menu sluiten"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Menu openen"</string>
diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml
index 966d404..5412bb8 100644
--- a/libs/WindowManager/Shell/res/values-or/strings.xml
+++ b/libs/WindowManager/Shell/res/values-or/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ବବଲ୍"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ବବଲ୍ ଖାରଜ କରାଯାଇଛି।"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ବବଲ"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ବବଲ ଦେଖାନ୍ତୁ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ଏକ ଆହୁରି ଭଲ ଭ୍ୟୁ ପାଇଁ ଏହି ଆପ ରିଷ୍ଟାର୍ଟ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ସେଟିଂସରେ ଏହି ଆପର ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"ଚଉଡ଼ା ଓ ଉଚ୍ଚତାର ଅନୁପାତ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"ଫ୍ଲୋଟ"</string>
<string name="select_text" msgid="5139083974039906583">"ଚୟନ କରନ୍ତୁ"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ସ୍କ୍ରିନସଟ"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ମେନୁ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"ମେନୁ ଖୋଲନ୍ତୁ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml
index 9feaf41..abff90d 100644
--- a/libs/WindowManager/Shell/res/values-pa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pa/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"ਬੁਲਬੁਲਾ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ਬਬਲ ਨੂੰ ਖਾਰਜ ਕੀਤਾ ਗਿਆ।"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"ਬਬਲ"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"ਬਬਲ ਦਿਖਾਓ"</string>
<string name="restart_button_description" msgid="4564728020654658478">"ਬਿਹਤਰ ਦ੍ਰਿਸ਼ ਵਾਸਤੇ ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ ਇਸ ਐਪ ਦੇ ਆਕਾਰ ਅਨੁਪਾਤ ਨੂੰ ਬਦਲੋ"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"ਆਕਾਰ ਅਨੁਪਾਤ ਬਦਲੋ"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"ਫ਼ਲੋਟ"</string>
<string name="select_text" msgid="5139083974039906583">"ਚੁਣੋ"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"ਬੰਦ ਕਰੋ"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ਮੀਨੂ ਬੰਦ ਕਰੋ"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"ਮੀਨੂ ਖੋਲ੍ਹੋ"</string>
diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml
index 1c7fbf8..1c268bd 100644
--- a/libs/WindowManager/Shell/res/values-pl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pl/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Dymek"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Zarządzaj"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Zamknięto dymek"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Dymki"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Pokaż dymki"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Kliknij w celu zrestartowania aplikacji, aby lepiej się wyświetlała."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Zmień proporcje obrazu aplikacji w Ustawieniach"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Zmień proporcje obrazu"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Pływające"</string>
<string name="select_text" msgid="5139083974039906583">"Wybierz"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Zrzut ekranu"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Otwórz w przeglądarce"</string>
<string name="close_text" msgid="4986518933445178928">"Zamknij"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zamknij menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Otwórz menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
index 5c2de2a..82566fe 100644
--- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bolha"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gerenciar"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Balão dispensado."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Balões"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostrar balões"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Toque para reiniciar o app e atualizar a visualização"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Mude o tamanho da janela deste app nas Configurações"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Mudar a proporção"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Ponto flutuante"</string>
<string name="select_text" msgid="5139083974039906583">"Selecionar"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de tela"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Abrir no navegador"</string>
<string name="close_text" msgid="4986518933445178928">"Fechar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Abrir o menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
index 6f76525..b2e8918 100644
--- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Balão"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gerir"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Balão ignorado."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Balões"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostrar balões"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Toque para reiniciar esta app e ficar com uma melhor visão"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Altere o formato desta app nas Definições"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Altere o formato"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Flutuar"</string>
<string name="select_text" msgid="5139083974039906583">"Selecionar"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de ecrã"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Abrir no navegador"</string>
<string name="close_text" msgid="4986518933445178928">"Fechar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Abrir menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml
index 5c2de2a..82566fe 100644
--- a/libs/WindowManager/Shell/res/values-pt/strings.xml
+++ b/libs/WindowManager/Shell/res/values-pt/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bolha"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gerenciar"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Balão dispensado."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Balões"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Mostrar balões"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Toque para reiniciar o app e atualizar a visualização"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Mude o tamanho da janela deste app nas Configurações"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Mudar a proporção"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Ponto flutuante"</string>
<string name="select_text" msgid="5139083974039906583">"Selecionar"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captura de tela"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Abrir no navegador"</string>
<string name="close_text" msgid="4986518933445178928">"Fechar"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Abrir o menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml
index 6e85e78..67dc389 100644
--- a/libs/WindowManager/Shell/res/values-ro/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ro/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Balon"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Gestionează"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Balonul a fost respins."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Baloane"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Afișează Baloane"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Atinge ca să repornești aplicația pentru o vizualizare mai bună"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Schimbă raportul de dimensiuni al aplicației din Setări"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Schimbă raportul de dimensiuni"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Flotantă"</string>
<string name="select_text" msgid="5139083974039906583">"Selectează"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Captură de ecran"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Închide"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Închide meniul"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Deschide meniul"</string>
diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml
index 1b41983..b2a6030 100644
--- a/libs/WindowManager/Shell/res/values-ru/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ru/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Всплывающая подсказка"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Настроить"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Всплывающий чат закрыт."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Чаты"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Всплывающие чаты"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Нажмите, чтобы перезапустить приложение и оптимизировать размер"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Изменить соотношение сторон приложения в настройках"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Изменить соотношение сторон"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Плавающее окно"</string>
<string name="select_text" msgid="5139083974039906583">"Выбрать"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Скриншот"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Открыть в браузере"</string>
<string name="close_text" msgid="4986518933445178928">"Закрыть"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Закрыть меню"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Открыть меню"</string>
diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml
index 6fd37e9..34eaad0 100644
--- a/libs/WindowManager/Shell/res/values-si/strings.xml
+++ b/libs/WindowManager/Shell/res/values-si/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"බුබුළු"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"කළමනා කරන්න"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"බුබුල ඉවත දමා ඇත."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"බුබුළු"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"බුබුළු පෙන්වන්න"</string>
<string name="restart_button_description" msgid="4564728020654658478">"වඩා හොඳ දසුනක් සඳහා මෙම යෙදුම යළි ඇරඹීමට තට්ටු කරන්න"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"සැකසීම් තුළ මෙම යෙදුමේ දර්ශන අනුපාතය වෙනස් කරන්න"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"දර්ශන අනුපාතය වෙනස් කරන්න"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"පාවෙන"</string>
<string name="select_text" msgid="5139083974039906583">"තෝරන්න"</string>
<string name="screenshot_text" msgid="1477704010087786671">"තිර රුව"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"වසන්න"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"මෙනුව වසන්න"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"මෙනුව විවෘත කරන්න"</string>
diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml
index dabbf39..4687f39 100644
--- a/libs/WindowManager/Shell/res/values-sk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sk/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bublina"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Spravovať"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bublina bola zavretá."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubliny"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Zobraziť bubliny"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Ak chcete zlepšiť zobrazenie, klepnutím túto aplikáciu reštartujte"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Zmeniť pomer strán tejto aplikácie v Nastaveniach"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Zmeniť pomer strán"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Plávajúce"</string>
<string name="select_text" msgid="5139083974039906583">"Vybrať"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Snímka obrazovky"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Zavrieť"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zavrieť ponuku"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Otvoriť ponuku"</string>
diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml
index 3ade338..5848f92 100644
--- a/libs/WindowManager/Shell/res/values-sl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sl/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Mehurček"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Upravljanje"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Oblaček je bil opuščen."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Oblački"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Prikaži oblačke"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Če želite boljši prikaz, se dotaknite za vnovični zagon te aplikacije."</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Razmerje stranic te aplikacije spremenite v nastavitvah."</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Sprememba razmerja stranic"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Lebdeče"</string>
<string name="select_text" msgid="5139083974039906583">"Izberi"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Posnetek zaslona"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Odpri v brskalniku"</string>
<string name="close_text" msgid="4986518933445178928">"Zapri"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Zapri meni"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Odpri meni"</string>
diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml
index ee1aa00..5f8f97e 100644
--- a/libs/WindowManager/Shell/res/values-sq/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sq/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Flluskë"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Menaxho"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Flluska u hoq."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Flluskat"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Shfaq \"Flluskat\""</string>
<string name="restart_button_description" msgid="4564728020654658478">"Trokit për ta rinisur këtë aplikacion për një pamje më të mirë"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Ndrysho raportin e pamjes së këtij aplikacioni te \"Cilësimet\""</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Ndrysho raportin e pamjes"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Pluskuese"</string>
<string name="select_text" msgid="5139083974039906583">"Zgjidh"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Pamja e ekranit"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Mbyll"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Mbyll menynë"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Hap menynë"</string>
diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml
index b2868ca..8402eef 100644
--- a/libs/WindowManager/Shell/res/values-sr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sr/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Облачић"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Управљајте"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Облачић је одбачен."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Облачићи"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Прикажи облачиће"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Додирните да бисте рестартовали ову апликацију ради бољег приказа"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Промените размеру ове апликације у Подешавањима"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Промени размеру"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Плутајуће"</string>
<string name="select_text" msgid="5139083974039906583">"Изаберите"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Снимак екрана"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Отворите у прегледачу"</string>
<string name="close_text" msgid="4986518933445178928">"Затворите"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Затворите мени"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Отворите мени"</string>
diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml
index 66118ef..a991152 100644
--- a/libs/WindowManager/Shell/res/values-sv/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sv/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubbla"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Hantera"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bubblan ignorerades."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bubblor"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Visa bubblor"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Tryck för att starta om appen och få en bättre vy"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Ändra appens bildformat i inställningarna"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Ändra bildformat"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Svävande"</string>
<string name="select_text" msgid="5139083974039906583">"Välj"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Skärmbild"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Stäng"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Stäng menyn"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Öppna menyn"</string>
diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml
index 863b49b..94ea2f2 100644
--- a/libs/WindowManager/Shell/res/values-sw/strings.xml
+++ b/libs/WindowManager/Shell/res/values-sw/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Kiputo"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Dhibiti"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Umeondoa kiputo."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Viputo"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Onyesha Viputo"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Gusa ili uzime kisha uwashe programu hii, ili upate mwonekano bora"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Badilisha uwiano wa programu hii katika Mipangilio"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Badilisha uwiano wa kipengele"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Inayoelea"</string>
<string name="select_text" msgid="5139083974039906583">"Chagua"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Picha ya skrini"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Funga"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Funga Menyu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Fungua Menyu"</string>
diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml
index 74e0207..866fe56 100644
--- a/libs/WindowManager/Shell/res/values-ta/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ta/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"பபிள்"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"நிர்வகி"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"குமிழ் நிராகரிக்கப்பட்டது."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"குமிழ்கள்"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"குமிழ்களைக் காட்டு"</string>
<string name="restart_button_description" msgid="4564728020654658478">"இங்கு தட்டுவதன் மூலம் இந்த ஆப்ஸை மீண்டும் தொடங்கி, ஆப்ஸ் காட்டப்படும் விதத்தை இன்னும் சிறப்பாக்கலாம்"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"அமைப்புகளில் இந்த ஆப்ஸின் தோற்ற விகிதத்தை மாற்றும்"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"தோற்ற விகிதத்தை மாற்றும்"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"மிதக்கும் சாளரம்"</string>
<string name="select_text" msgid="5139083974039906583">"தேர்ந்தெடுக்கும்"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ஸ்கிரீன்ஷாட்"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"மூடும்"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"மெனுவை மூடும்"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"மெனுவைத் திற"</string>
diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml
index 3571156..ef094fc 100644
--- a/libs/WindowManager/Shell/res/values-te/strings.xml
+++ b/libs/WindowManager/Shell/res/values-te/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"బబుల్"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"మేనేజ్ చేయండి"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"బబుల్ విస్మరించబడింది."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"బబుల్స్"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"బబుల్స్ చూడండి"</string>
<string name="restart_button_description" msgid="4564728020654658478">"మెరుగైన వీక్షణ కోసం ఈ యాప్ను రీస్టార్ట్ చేయడానికి ట్యాప్ చేయండి"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"సెట్టింగ్లలో ఈ యాప్ ఆకార నిష్పత్తిని మార్చండి"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"ఆకార నిష్పత్తిని మార్చండి"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ఫ్లోట్"</string>
<string name="select_text" msgid="5139083974039906583">"ఎంచుకోండి"</string>
<string name="screenshot_text" msgid="1477704010087786671">"స్క్రీన్షాట్"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"బ్రౌజర్లో తెరవండి"</string>
<string name="close_text" msgid="4986518933445178928">"మూసివేయండి"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"మెనూను మూసివేయండి"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"మెనూను తెరవండి"</string>
diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml
index 4769416..762a81a 100644
--- a/libs/WindowManager/Shell/res/values-th/strings.xml
+++ b/libs/WindowManager/Shell/res/values-th/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"บับเบิล"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"จัดการ"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"ปิดบับเบิลแล้ว"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"บับเบิล"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"แสดงบับเบิล"</string>
<string name="restart_button_description" msgid="4564728020654658478">"แตะเพื่อรีสตาร์ทแอปนี้และรับมุมมองที่ดียิ่งขึ้น"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"เปลี่ยนสัดส่วนภาพของแอปนี้ในการตั้งค่า"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"เปลี่ยนอัตราส่วนกว้างยาว"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"ล่องลอย"</string>
<string name="select_text" msgid="5139083974039906583">"เลือก"</string>
<string name="screenshot_text" msgid="1477704010087786671">"ภาพหน้าจอ"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"เปิดในเบราว์เซอร์"</string>
<string name="close_text" msgid="4986518933445178928">"ปิด"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"ปิดเมนู"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"เปิดเมนู"</string>
diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml
index be18d88..418f500 100644
--- a/libs/WindowManager/Shell/res/values-tl/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tl/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bubble"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Pamahalaan"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Na-dismiss na ang bubble."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Mga Bubble"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Ipakita ang Mga Bubble"</string>
<string name="restart_button_description" msgid="4564728020654658478">"I-tap para i-restart ang app na ito para sa mas magandang view"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Baguhin ang aspect ratio ng app na ito sa Mga Setting"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Baguhin ang aspect ratio"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Float"</string>
<string name="select_text" msgid="5139083974039906583">"Piliin"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Buksan sa browser"</string>
<string name="close_text" msgid="4986518933445178928">"Isara"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Isara ang Menu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Buksan ang Menu"</string>
diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml
index 4c8c536..e70f170 100644
--- a/libs/WindowManager/Shell/res/values-tr/strings.xml
+++ b/libs/WindowManager/Shell/res/values-tr/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Baloncuk"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Yönet"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Balon kapatıldı."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Baloncuklar"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Baloncukları göster"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Bu uygulamayı yeniden başlatarak daha iyi bir görünüm elde etmek için dokunun"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Bu uygulamanın en boy oranını Ayarlar\'dan değiştirin"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"En boy oranını değiştir"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Havada Süzülen"</string>
<string name="select_text" msgid="5139083974039906583">"Seç"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Ekran görüntüsü"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Kapat"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menüyü kapat"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Menüyü Aç"</string>
diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml
index 7cc1a04..b243a15 100644
--- a/libs/WindowManager/Shell/res/values-uk/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uk/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Спливаюче сповіщення"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Налаштувати"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Спливаюче сповіщення закрито."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Спл. чати"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Показувати спливаючі чати"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Натисніть, щоб перезапустити цей додаток для зручнішого перегляду"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Змінити формат для цього додатка в налаштуваннях"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Змінити формат"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Плаваюче вікно"</string>
<string name="select_text" msgid="5139083974039906583">"Вибрати"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Знімок екрана"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Закрити"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Закрити меню"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Відкрити меню"</string>
diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml
index 8b9f299..2cf9f32 100644
--- a/libs/WindowManager/Shell/res/values-ur/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ur/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"بلبلہ"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"نظم کریں"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"بلبلہ برخاست کر دیا گیا۔"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"بلبلے"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"بلبلے دکھائیں"</string>
<string name="restart_button_description" msgid="4564728020654658478">"بہتر منظر کے لیے اس ایپ کو ری اسٹارٹ کرنے کی خاطر تھپتھپائیں"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"ترتیبات میں اس ایپ کی تناسبی شرح کو تبدیل کریں"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"تناسبی شرح کو تبدیل کریں"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"فلوٹ"</string>
<string name="select_text" msgid="5139083974039906583">"منتخب کریں"</string>
<string name="screenshot_text" msgid="1477704010087786671">"اسکرین شاٹ"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"براؤزر میں کھولیں"</string>
<string name="close_text" msgid="4986518933445178928">"بند کریں"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"مینیو بند کریں"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"مینو کھولیں"</string>
diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml
index 55c6b32..f8cd43f 100644
--- a/libs/WindowManager/Shell/res/values-uz/strings.xml
+++ b/libs/WindowManager/Shell/res/values-uz/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Pufaklar"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Boshqarish"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Bulutcha yopildi."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bulutchalar"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Bulutchalarni chiqarish"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Yaxshiroq koʻrish maqsadida bu ilovani qayta ishga tushirish uchun bosing"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Sozlamalar orqali bu ilovaning tomonlar nisbatini oʻzgartiring"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Tomonlar nisbatini oʻzgartirish"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Pufakli"</string>
<string name="select_text" msgid="5139083974039906583">"Tanlash"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Skrinshot"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Brauzerda ochish"</string>
<string name="close_text" msgid="4986518933445178928">"Yopish"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Menyuni yopish"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Menyuni ochish"</string>
diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml
index 07a6b6f..a813b26 100644
--- a/libs/WindowManager/Shell/res/values-vi/strings.xml
+++ b/libs/WindowManager/Shell/res/values-vi/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Bong bóng"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Quản lý"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Đã đóng bong bóng."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Bong bóng"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Hiện bong bóng"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Nhấn nút khởi động lại ứng dụng này để xem dễ hơn"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Thay đổi tỷ lệ khung hình của ứng dụng này thông qua phần Cài đặt"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Thay đổi tỷ lệ khung hình"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"Nổi"</string>
<string name="select_text" msgid="5139083974039906583">"Chọn"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Ảnh chụp màn hình"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"Đóng"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Đóng trình đơn"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Mở Trình đơn"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
index 908095a..6f21fdf 100644
--- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"气泡"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"管理"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"已关闭消息气泡。"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"消息气泡"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"显示消息气泡"</string>
<string name="restart_button_description" msgid="4564728020654658478">"点按即可重启此应用,获得更好的视觉体验"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"在“设置”中更改此应用的宽高比"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"更改高宽比"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"悬浮"</string>
<string name="select_text" msgid="5139083974039906583">"选择"</string>
<string name="screenshot_text" msgid="1477704010087786671">"屏幕截图"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"关闭"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"关闭菜单"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"打开菜单"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
index c8550b4..159db8f 100644
--- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"氣泡"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"管理"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"對話氣泡已關閉。"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"對話氣泡"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"顯示對話氣泡"</string>
<string name="restart_button_description" msgid="4564728020654658478">"輕按並重新啟動此應用程式,以取得更佳的觀看體驗"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"前往「設定」變更此應用程式的長寬比"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"變更長寬比"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"浮動"</string>
<string name="select_text" msgid="5139083974039906583">"選取"</string>
<string name="screenshot_text" msgid="1477704010087786671">"螢幕截圖"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"關閉"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"關閉選單"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"打開選單"</string>
diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
index 6704833..8a1b2bf 100644
--- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"泡泡"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"管理"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"已關閉泡泡。"</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"對話框"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"顯示對話框"</string>
<string name="restart_button_description" msgid="4564728020654658478">"輕觸此按鈕重新啟動這個應用程式,即可獲得更良好的觀看體驗"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"前往「設定」變更這個應用程式的顯示比例"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"變更顯示比例"</string>
@@ -118,6 +116,8 @@
<string name="float_button_text" msgid="9221657008391364581">"浮動"</string>
<string name="select_text" msgid="5139083974039906583">"選取"</string>
<string name="screenshot_text" msgid="1477704010087786671">"螢幕截圖"</string>
+ <!-- no translation found for open_in_browser_text (9181692926376072904) -->
+ <skip />
<string name="close_text" msgid="4986518933445178928">"關閉"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"關閉選單"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"開啟選單"</string>
diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml
index 96b4faec..ba3df30 100644
--- a/libs/WindowManager/Shell/res/values-zu/strings.xml
+++ b/libs/WindowManager/Shell/res/values-zu/strings.xml
@@ -84,10 +84,8 @@
<string name="notification_bubble_title" msgid="6082910224488253378">"Ibhamuza"</string>
<string name="manage_bubbles_text" msgid="7730624269650594419">"Phatha"</string>
<string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Ibhamuza licashisiwe."</string>
- <!-- no translation found for bubble_shortcut_label (666269077944378311) -->
- <skip />
- <!-- no translation found for bubble_shortcut_long_label (6088437544312894043) -->
- <skip />
+ <string name="bubble_shortcut_label" msgid="666269077944378311">"Amabhamuza"</string>
+ <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"Bonisa Amabhamuza"</string>
<string name="restart_button_description" msgid="4564728020654658478">"Thepha ukuze uqale kabusha le app ukuze ibonakale kangcono"</string>
<string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"Shintsha ukubukeka kwesilinganiselo kwe-app kuMasethingi"</string>
<string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"Shintsha ukubukeka kwesilinganiselo"</string>
@@ -118,6 +116,7 @@
<string name="float_button_text" msgid="9221657008391364581">"Iflowuthi"</string>
<string name="select_text" msgid="5139083974039906583">"Khetha"</string>
<string name="screenshot_text" msgid="1477704010087786671">"Isithombe-skrini"</string>
+ <string name="open_in_browser_text" msgid="9181692926376072904">"Vula kubhrawuza"</string>
<string name="close_text" msgid="4986518933445178928">"Vala"</string>
<string name="collapse_menu_text" msgid="7515008122450342029">"Vala Imenyu"</string>
<string name="expand_menu_text" msgid="3847736164494181168">"Vula Imenyu"</string>
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/PhysicsAnimatorTestUtils.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/PhysicsAnimatorTestUtils.kt
index 235b9bf..fc3dc14 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/PhysicsAnimatorTestUtils.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/animation/PhysicsAnimatorTestUtils.kt
@@ -168,6 +168,16 @@
}
}
+ /** Whether any animation is currently running. */
+ @JvmStatic
+ fun isAnyAnimationRunning(): Boolean {
+ for (target in allAnimatedObjects) {
+ val animator = PhysicsAnimator.getInstance(target)
+ if (animator.isRunning()) return true
+ }
+ return false
+ }
+
/**
* Blocks the calling thread until the first animation frame in which predicate returns true. If
* the given object isn't animating, returns without blocking.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java
index 196f89d..df80946 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimation.java
@@ -107,4 +107,24 @@
* @param pilferCallback the callback to pilfer pointers.
*/
void setPilferPointerCallback(Runnable pilferCallback);
+
+ /**
+ * Set a callback to requestTopUi.
+ * @param topUiRequest the callback to requestTopUi.
+ */
+ void setTopUiRequestCallback(TopUiRequest topUiRequest);
+
+ /**
+ * Callback to request SysUi to call
+ * {@link android.app.IActivityManager#setHasTopUi(boolean)}.
+ */
+ interface TopUiRequest {
+
+ /**
+ * Request {@link android.app.IActivityManager#setHasTopUi(boolean)} to be called.
+ * @param requestTopUi whether topUi should be requested or not
+ * @param tag tag of the request-source
+ */
+ void requestTopUi(boolean requestTopUi, String tag);
+ }
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
index 8467e97..a9fdea3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
@@ -114,6 +114,7 @@
@Nullable
private BackNavigationInfo mBackNavigationInfo;
+ private boolean mReceivedNullNavigationInfo = false;
private final IActivityTaskManager mActivityTaskManager;
private final Context mContext;
private final ContentResolver mContentResolver;
@@ -179,6 +180,7 @@
@BackNavigationInfo.BackTargetType
private int mPreviousNavigationType;
private Runnable mPilferPointerCallback;
+ private BackAnimation.TopUiRequest mRequestTopUiCallback;
public BackAnimationController(
@NonNull ShellInit shellInit,
@@ -357,6 +359,11 @@
mPilferPointerCallback = callback;
});
}
+
+ @Override
+ public void setTopUiRequestCallback(TopUiRequest topUiRequest) {
+ mShellExecutor.execute(() -> mRequestTopUiCallback = topUiRequest);
+ }
}
private static class IBackAnimationImpl extends IBackAnimation.Stub
@@ -424,7 +431,7 @@
mThresholdCrossed = true;
// There was no focus window when calling startBackNavigation, still pilfer pointers so
// the next focus window won't receive motion events.
- if (mBackNavigationInfo == null) {
+ if (mBackNavigationInfo == null && mReceivedNullNavigationInfo) {
tryPilferPointers();
return;
}
@@ -547,6 +554,7 @@
ProtoLog.d(WM_SHELL_BACK_PREVIEW, "Received backNavigationInfo:%s", backNavigationInfo);
if (backNavigationInfo == null) {
ProtoLog.e(WM_SHELL_BACK_PREVIEW, "Received BackNavigationInfo is null.");
+ mReceivedNullNavigationInfo = true;
cancelLatencyTracking();
tryPilferPointers();
return;
@@ -557,6 +565,7 @@
if (!mShellBackAnimationRegistry.startGesture(backType)) {
mActiveCallback = null;
}
+ requestTopUi(true, backType);
tryPilferPointers();
} else {
mActiveCallback = mBackNavigationInfo.getOnBackInvokedCallback();
@@ -902,10 +911,12 @@
mPointersPilfered = false;
mShellBackAnimationRegistry.resetDefaultCrossActivity();
cancelLatencyTracking();
+ mReceivedNullNavigationInfo = false;
if (mBackNavigationInfo != null) {
mPreviousNavigationType = mBackNavigationInfo.getType();
mBackNavigationInfo.onBackNavigationFinished(triggerBack);
mBackNavigationInfo = null;
+ requestTopUi(false, mPreviousNavigationType);
}
}
@@ -969,6 +980,13 @@
}
}
+ private void requestTopUi(boolean hasTopUi, int backType) {
+ if (mRequestTopUiCallback != null && (backType == BackNavigationInfo.TYPE_CROSS_TASK
+ || backType == BackNavigationInfo.TYPE_CROSS_ACTIVITY)) {
+ mRequestTopUiCallback.requestTopUi(hasTopUi, TAG);
+ }
+ }
+
/**
* Validate animation targets.
*/
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.kt
index 4f04c5c..4e0c82b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityBackAnimation.kt
@@ -61,8 +61,7 @@
private val context: Context,
private val background: BackAnimationBackground,
private val rootTaskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer,
- protected val transaction: SurfaceControl.Transaction,
- private val choreographer: Choreographer
+ protected val transaction: SurfaceControl.Transaction
) : ShellBackAnimation() {
protected val startClosingRect = RectF()
@@ -269,7 +268,9 @@
.setSpring(postCommitFlingSpring)
flingAnimation.start()
// do an animation-frame immediately to prevent idle frame
- flingAnimation.doAnimationFrame(choreographer.lastFrameTimeNanos / TimeUtils.NANOS_PER_MS)
+ flingAnimation.doAnimationFrame(
+ Choreographer.getInstance().lastFrameTimeNanos / TimeUtils.NANOS_PER_MS
+ )
val valueAnimator =
ValueAnimator.ofFloat(1f, 0f).setDuration(getPostCommitAnimationDuration())
@@ -362,7 +363,7 @@
}
protected fun applyTransaction() {
- transaction.setFrameTimelineVsync(choreographer.vsyncId)
+ transaction.setFrameTimelineVsync(Choreographer.getInstance().vsyncId)
transaction.apply()
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
index 103a654..e2b0513 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
@@ -52,7 +52,6 @@
import com.android.internal.protolog.ProtoLog;
import com.android.wm.shell.R;
import com.android.wm.shell.animation.Interpolators;
-import com.android.wm.shell.shared.annotations.ShellMainThread;
import javax.inject.Inject;
@@ -69,7 +68,6 @@
* IOnBackInvokedCallback} with WM Shell and receives back dispatches when a back navigation to
* launcher starts.
*/
-@ShellMainThread
public class CrossTaskBackAnimation extends ShellBackAnimation {
private static final int BACKGROUNDCOLOR = 0x43433A;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomCrossActivityBackAnimation.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomCrossActivityBackAnimation.kt
index e266e2c..b02f97b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomCrossActivityBackAnimation.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CustomCrossActivityBackAnimation.kt
@@ -19,7 +19,6 @@
import android.graphics.Rect
import android.graphics.RectF
import android.util.MathUtils
-import android.view.Choreographer
import android.view.SurfaceControl
import android.view.animation.Animation
import android.view.animation.Transformation
@@ -31,27 +30,23 @@
import com.android.internal.protolog.ProtoLog
import com.android.wm.shell.RootTaskDisplayAreaOrganizer
import com.android.wm.shell.protolog.ShellProtoLogGroup
-import com.android.wm.shell.shared.annotations.ShellMainThread
import javax.inject.Inject
import kotlin.math.max
import kotlin.math.min
/** Class that handles customized predictive cross activity back animations. */
-@ShellMainThread
class CustomCrossActivityBackAnimation(
context: Context,
background: BackAnimationBackground,
rootTaskDisplayAreaOrganizer: RootTaskDisplayAreaOrganizer,
transaction: SurfaceControl.Transaction,
- choreographer: Choreographer,
private val customAnimationLoader: CustomAnimationLoader
) :
CrossActivityBackAnimation(
context,
background,
rootTaskDisplayAreaOrganizer,
- transaction,
- choreographer
+ transaction
) {
private var enterAnimation: Animation? = null
@@ -70,7 +65,6 @@
background,
rootTaskDisplayAreaOrganizer,
SurfaceControl.Transaction(),
- Choreographer.getInstance(),
CustomAnimationLoader(
TransitionAnimation(context, false /* debug */, "CustomCrossActivityBackAnimation")
)
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/DefaultCrossActivityBackAnimation.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/back/DefaultCrossActivityBackAnimation.kt
index 3b5eb36..c747e1e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/DefaultCrossActivityBackAnimation.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/DefaultCrossActivityBackAnimation.kt
@@ -16,18 +16,15 @@
package com.android.wm.shell.back
import android.content.Context
-import android.view.Choreographer
import android.view.SurfaceControl
import android.window.BackEvent
import com.android.wm.shell.R
import com.android.wm.shell.RootTaskDisplayAreaOrganizer
import com.android.wm.shell.animation.Interpolators
-import com.android.wm.shell.shared.annotations.ShellMainThread
import javax.inject.Inject
import kotlin.math.max
/** Class that defines cross-activity animation. */
-@ShellMainThread
class DefaultCrossActivityBackAnimation
@Inject
constructor(
@@ -39,8 +36,7 @@
context,
background,
rootTaskDisplayAreaOrganizer,
- SurfaceControl.Transaction(),
- Choreographer.getInstance()
+ SurfaceControl.Transaction()
) {
private val postCommitInterpolator = Interpolators.EMPHASIZED
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 e36f6e6..fca8a62 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
@@ -1230,10 +1230,14 @@
* A bubble was dragged and is released in dismiss target in Launcher.
*
* @param bubbleKey key of the bubble being dragged to dismiss target
+ * @param timestamp the timestamp of the removal
*/
- public void dragBubbleToDismiss(String bubbleKey) {
+ public void dragBubbleToDismiss(String bubbleKey, long timestamp) {
String selectedBubbleKey = mBubbleData.getSelectedBubbleKey();
- removeBubble(bubbleKey, Bubbles.DISMISS_USER_GESTURE);
+ if (mBubbleData.hasAnyBubbleWithKey(bubbleKey)) {
+ mBubbleData.dismissBubbleWithKey(
+ bubbleKey, Bubbles.DISMISS_USER_GESTURE_FROM_LAUNCHER, timestamp);
+ }
if (selectedBubbleKey != null && !selectedBubbleKey.equals(bubbleKey)) {
// We did not remove the selected bubble. Expand it again
mBubbleBarViewCallback.expansionChanged(/* isExpanded = */ true);
@@ -2458,8 +2462,8 @@
}
@Override
- public void dragBubbleToDismiss(String key) {
- mMainExecutor.execute(() -> mController.dragBubbleToDismiss(key));
+ public void dragBubbleToDismiss(String key, long timestamp) {
+ mMainExecutor.execute(() -> mController.dragBubbleToDismiss(key, timestamp));
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
index 4e6c517..434b512 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
@@ -150,8 +150,11 @@
: null;
for (int i = 0; i < removedBubbles.size(); i++) {
Pair<Bubble, Integer> pair = removedBubbles.get(i);
- bubbleBarUpdate.removedBubbles.add(
- new RemovedBubble(pair.first.getKey(), pair.second));
+ // if the removal happened in launcher, don't send it back
+ if (pair.second != Bubbles.DISMISS_USER_GESTURE_FROM_LAUNCHER) {
+ bubbleBarUpdate.removedBubbles.add(
+ new RemovedBubble(pair.first.getKey(), pair.second));
+ }
}
if (orderChanged) {
// Include the new order
@@ -502,12 +505,34 @@
dispatchPendingChanges();
}
+ /** Dismisses the bubble with the matching key, if it exists. */
+ public void dismissBubbleWithKey(String key, @DismissReason int reason) {
+ dismissBubbleWithKey(key, reason, mTimeSource.currentTimeMillis());
+ }
+
/**
* Dismisses the bubble with the matching key, if it exists.
+ *
+ * <p>This is used when the bubble was dismissed in launcher, where the {@code removalTimestamp}
+ * represents when the removal happened and can be used to check whether or not the bubble has
+ * been updated after the removal. If no updates, it's safe to remove the bubble, otherwise the
+ * removal is ignored.
*/
- public void dismissBubbleWithKey(String key, @DismissReason int reason) {
- doRemove(key, reason);
- dispatchPendingChanges();
+ public void dismissBubbleWithKey(String key, @DismissReason int reason, long removalTimestamp) {
+ boolean shouldRemove = true;
+ // if the bubble was removed from launcher, verify that the removal happened after the last
+ // time it was updated
+ if (reason == Bubbles.DISMISS_USER_GESTURE_FROM_LAUNCHER) {
+ // if the bubble was removed from launcher it must be active.
+ Bubble bubble = getBubbleInStackWithKey(key);
+ if (bubble != null && bubble.getLastActivity() > removalTimestamp) {
+ shouldRemove = false;
+ }
+ }
+ if (shouldRemove) {
+ doRemove(key, reason);
+ dispatchPendingChanges();
+ }
}
/**
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 82af88d..589dfd2 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
@@ -62,7 +62,7 @@
DISMISS_USER_CHANGED, DISMISS_GROUP_CANCELLED, DISMISS_INVALID_INTENT,
DISMISS_OVERFLOW_MAX_REACHED, DISMISS_SHORTCUT_REMOVED, DISMISS_PACKAGE_REMOVED,
DISMISS_NO_BUBBLE_UP, DISMISS_RELOAD_FROM_DISK, DISMISS_USER_ACCOUNT_REMOVED,
- DISMISS_SWITCH_TO_STACK})
+ DISMISS_SWITCH_TO_STACK, DISMISS_USER_GESTURE_FROM_LAUNCHER})
@Target({FIELD, LOCAL_VARIABLE, PARAMETER})
@interface DismissReason {
}
@@ -84,6 +84,7 @@
int DISMISS_RELOAD_FROM_DISK = 15;
int DISMISS_USER_ACCOUNT_REMOVED = 16;
int DISMISS_SWITCH_TO_STACK = 17;
+ int DISMISS_USER_GESTURE_FROM_LAUNCHER = 18;
/** Returns a binder that can be passed to an external process to manipulate Bubbles. */
default IBubbles createExternalInterface() {
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 1db556c..0907ddd 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
@@ -33,7 +33,7 @@
oneway void showBubble(in String key, in int topOnScreen) = 3;
- oneway void dragBubbleToDismiss(in String key) = 4;
+ oneway void dragBubbleToDismiss(in String key, in long timestamp) = 4;
oneway void removeAllBubbles() = 5;
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 45feff5..e713af6 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
@@ -573,8 +573,9 @@
@Provides
static EnterDesktopTaskTransitionHandler provideEnterDesktopModeTaskTransitionHandler(
Transitions transitions,
- Optional<DesktopTasksLimiter> desktopTasksLimiter) {
- return new EnterDesktopTaskTransitionHandler(transitions);
+ Optional<DesktopTasksLimiter> desktopTasksLimiter,
+ InteractionJankMonitor interactionJankMonitor) {
+ return new EnterDesktopTaskTransitionHandler(transitions, interactionJankMonitor);
}
@WMSingleton
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt
index ca05864..247cc42 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt
@@ -88,14 +88,17 @@
/** Add a [VisibleTasksListener] to be notified when freeform tasks are visible or not. */
fun addVisibleTasksListener(visibleTasksListener: VisibleTasksListener, executor: Executor) {
visibleTasksListeners[visibleTasksListener] = executor
- displayData.keyIterator().forEach { displayId ->
- val visibleTasksCount = getVisibleTaskCount(displayId)
+ displayData.keyIterator().forEach {
executor.execute {
- visibleTasksListener.onTasksVisibilityChanged(displayId, visibleTasksCount)
+ visibleTasksListener.onTasksVisibilityChanged(it, visibleTaskCount(it))
}
}
}
+ /** Returns a list of all [DisplayData]. */
+ private fun displayDataList(): Sequence<DisplayData> =
+ displayData.valueIterator().asSequence()
+
/**
* Add a Consumer which will inform other classes of changes to exclusion regions for all
* Desktop tasks.
@@ -208,37 +211,17 @@
return removed
}
- /** Check if a task with the given [taskId] was marked as an active task */
- fun isActiveTask(taskId: Int): Boolean {
- return displayData.valueIterator().asSequence().any { data ->
- data.activeTasks.contains(taskId)
- }
- }
-
- /** Check if a task with the given [taskId] was marked as a closing task */
- fun isClosingTask(taskId: Int): Boolean =
- displayData.valueIterator().asSequence().any { data -> taskId in data.closingTasks }
-
- /** Whether a task is visible. */
- fun isVisibleTask(taskId: Int): Boolean {
- return displayData.valueIterator().asSequence().any { data ->
- data.visibleTasks.contains(taskId)
- }
- }
-
- /** Return whether the given Task is minimized. */
- fun isMinimizedTask(taskId: Int): Boolean {
- return displayData.valueIterator().asSequence().any { data ->
- data.minimizedTasks.contains(taskId)
- }
- }
+ fun isActiveTask(taskId: Int) = displayDataList().any { taskId in it.activeTasks }
+ fun isClosingTask(taskId: Int) = displayDataList().any { taskId in it.closingTasks }
+ fun isVisibleTask(taskId: Int) = displayDataList().any { taskId in it.visibleTasks }
+ fun isMinimizedTask(taskId: Int) = displayDataList().any { taskId in it.minimizedTasks }
/**
* Check if a task with the given [taskId] is the only visible, non-closing, not-minimized task
* on its display
*/
fun isOnlyVisibleNonClosingTask(taskId: Int): Boolean =
- displayData.valueIterator().asSequence().any { data ->
+ displayDataList().any { data ->
data.visibleTasks
.subtract(data.closingTasks)
.subtract(data.minimizedTasks)
@@ -255,12 +238,6 @@
ArraySet(displayData[displayId]?.minimizedTasks)
/**
- * Returns whether Desktop Mode is currently showing any tasks, i.e. whether any Desktop Tasks
- * are visible.
- */
- fun isDesktopModeShowing(displayId: Int): Boolean = getVisibleTaskCount(displayId) > 0
-
- /**
* Returns a list of Tasks IDs representing all active non-minimized Tasks on the given display,
* ordered from front to back.
*/
@@ -305,14 +282,14 @@
return
}
- val prevCount = getVisibleTaskCount(displayId)
+ val prevCount = visibleTaskCount(displayId)
if (visible) {
displayData.getOrCreate(displayId).visibleTasks.add(taskId)
unminimizeTask(displayId, taskId)
} else {
displayData[displayId]?.visibleTasks?.remove(taskId)
}
- val newCount = getVisibleTaskCount(displayId)
+ val newCount = visibleTaskCount(displayId)
// Check if count changed
if (prevCount != newCount) {
@@ -340,7 +317,7 @@
}
/** Get number of tasks that are marked as visible on given [displayId] */
- fun getVisibleTaskCount(displayId: Int): Int {
+ fun visibleTaskCount(displayId: Int): Int {
ProtoLog.d(
WM_SHELL_DESKTOP_MODE,
"DesktopTaskRepo: visibleTaskCount= %d",
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 d46b2d6..9e6099f 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
@@ -246,10 +246,12 @@
}
}
- /** Get number of tasks that are marked as visible */
- fun getVisibleTaskCount(displayId: Int): Int {
- return desktopModeTaskRepository.getVisibleTaskCount(displayId)
- }
+ /** Gets number of visible tasks in [displayId]. */
+ fun visibleTaskCount(displayId: Int): Int =
+ desktopModeTaskRepository.visibleTaskCount(displayId)
+
+ /** Returns true if any tasks are visible in Desktop Mode. */
+ fun isDesktopModeShowing(displayId: Int): Boolean = visibleTaskCount(displayId) > 0
/** Enter desktop by using the focused task in given `displayId` */
fun moveFocusedTaskToDesktop(displayId: Int, transitionSource: DesktopModeTransitionSource) {
@@ -981,19 +983,25 @@
ProtoLog.v(WM_SHELL_DESKTOP_MODE, "DesktopTasksController: skip keyguard is locked")
return null
}
- if (!desktopModeTaskRepository.isDesktopModeShowing(task.displayId)) {
+ val wct = WindowContainerTransaction()
+ if (!isDesktopModeShowing(task.displayId)) {
ProtoLog.d(
WM_SHELL_DESKTOP_MODE,
"DesktopTasksController: bring desktop tasks to front on transition" +
" taskId=%d",
task.taskId
)
- return WindowContainerTransaction().also { wct ->
- bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, task.taskId)
- wct.reorder(task.token, true)
+ // We are outside of desktop mode and already existing desktop task is being 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.
+ if (desktopModeTaskRepository.isActiveTask(task.taskId)) {
+ addMoveToFullscreenChanges(wct, task)
+ return wct
}
+ bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, task.taskId)
+ wct.reorder(task.token, true)
+ return wct
}
- val wct = WindowContainerTransaction()
if (useDesktopOverrideDensity()) {
wct.setDensityDpi(task.token, DESKTOP_DENSITY_OVERRIDE)
}
@@ -1012,7 +1020,7 @@
transition: IBinder
): WindowContainerTransaction? {
ProtoLog.v(WM_SHELL_DESKTOP_MODE, "DesktopTasksController: handleFullscreenTaskLaunch")
- if (desktopModeTaskRepository.isDesktopModeShowing(task.displayId)) {
+ if (isDesktopModeShowing(task.displayId)) {
ProtoLog.d(
WM_SHELL_DESKTOP_MODE,
"DesktopTasksController: switch fullscreen task to freeform on transition" +
@@ -1396,8 +1404,7 @@
onFinishCallback: Consumer<Boolean>
): Boolean {
// TODO(b/320797628): Pass through which display we are dropping onto
- val activeTasks = desktopModeTaskRepository.getActiveTasks(DEFAULT_DISPLAY)
- if (!activeTasks.any { desktopModeTaskRepository.isVisibleTask(it) }) {
+ if (!isDesktopModeShowing(DEFAULT_DISPLAY)) {
// Not currently in desktop mode, ignore the drop
return false
}
@@ -1556,8 +1563,8 @@
val result = IntArray(1)
executeRemoteCallWithTaskPermission(
controller,
- "getVisibleTaskCount",
- { controller -> result[0] = controller.getVisibleTaskCount(displayId) },
+ "visibleTaskCount",
+ { controller -> result[0] = controller.visibleTaskCount(displayId) },
true /* blocking */
)
return result[0]
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
index e5b624f..04506c1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
@@ -18,6 +18,7 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_MODE_APP_HANDLE_MENU;
import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.getEnterTransitionType;
import static com.android.wm.shell.desktopmode.DesktopModeTransitionTypes.isEnterDesktopModeTransition;
@@ -39,6 +40,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import com.android.internal.jank.InteractionJankMonitor;
import com.android.wm.shell.common.desktopmode.DesktopModeTransitionSource;
import com.android.wm.shell.transition.Transitions;
import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener;
@@ -60,18 +62,21 @@
public static final int FREEFORM_ANIMATION_DURATION = 336;
private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
+ private final InteractionJankMonitor mInteractionJankMonitor;
private OnTaskResizeAnimationListener mOnTaskResizeAnimationListener;
public EnterDesktopTaskTransitionHandler(
- Transitions transitions) {
- this(transitions, SurfaceControl.Transaction::new);
+ Transitions transitions, InteractionJankMonitor interactionJankMonitor) {
+ this(transitions, interactionJankMonitor, SurfaceControl.Transaction::new);
}
public EnterDesktopTaskTransitionHandler(
Transitions transitions,
+ InteractionJankMonitor interactionJankMonitor,
Supplier<SurfaceControl.Transaction> supplier) {
mTransitions = transitions;
+ mInteractionJankMonitor = interactionJankMonitor;
mTransactionSupplier = supplier;
}
@@ -175,6 +180,7 @@
mOnTaskResizeAnimationListener.onAnimationEnd(taskInfo.taskId);
mTransitions.getMainExecutor().execute(
() -> finishCallback.onTransitionFinished(null));
+ mInteractionJankMonitor.end(CUJ_DESKTOP_MODE_ENTER_MODE_APP_HANDLE_MENU);
}
});
animator.start();
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 ff40d4c..8d63ff2 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
@@ -1980,12 +1980,6 @@
}
clearContentOverlay();
}
- if (mPipTransitionState.getTransitionState() == PipTransitionState.UNDEFINED) {
- // Avoid double removal, which is fatal.
- ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
- "%s: trying to remove overlay (%s) while in UNDEFINED state", TAG, surface);
- return;
- }
if (surface == null || !surface.isValid()) {
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
"%s: trying to remove invalid content overlay (%s)", TAG, surface);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
index 9539a45..d001b2c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
@@ -466,7 +466,7 @@
@Nullable WindowContainerToken ignoreTaskToken) {
List<ActivityManager.RunningTaskInfo> tasks = mActivityTaskManager.getTasks(2,
false /* filterOnlyVisibleRecents */);
- for (int i = tasks.size() - 1; i >= 0; i--) {
+ for (int i = 0; i < tasks.size(); i++) {
final ActivityManager.RunningTaskInfo task = tasks.get(i);
if (task.token.equals(ignoreTaskToken)) {
continue;
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 4104234..9bcd9b0 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
@@ -3573,7 +3573,8 @@
pw.println(innerPrefix + "mDividerVisible=" + mDividerVisible);
pw.println(innerPrefix + "isSplitActive=" + isSplitActive());
pw.println(innerPrefix + "isSplitVisible=" + isSplitScreenVisible());
- pw.println(innerPrefix + "isLeftRightSplit=" + mSplitLayout.isLeftRightSplit());
+ pw.println(innerPrefix + "isLeftRightSplit="
+ + (mSplitLayout != null ? mSplitLayout.isLeftRightSplit() : "null"));
pw.println(innerPrefix + "MainStage");
pw.println(childPrefix + "stagePosition=" + splitPositionToString(getMainStagePosition()));
pw.println(childPrefix + "isActive=" + mMainStage.isActive());
@@ -3585,7 +3586,9 @@
mSideStage.dump(pw, childPrefix);
pw.println(innerPrefix + "SideStageListener");
mSideStageListener.dump(pw, childPrefix);
- mSplitLayout.dump(pw, childPrefix);
+ if (mSplitLayout != null) {
+ mSplitLayout.dump(pw, childPrefix);
+ }
if (!mPausingTasks.isEmpty()) {
pw.println(childPrefix + "mPausingTasks=" + mPausingTasks);
}
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 4f4b809..766a6b3 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
@@ -353,7 +353,7 @@
return this::setRecentsTransitionDuringKeyguard;
} else if (mDesktopTasksController != null
// Check on the default display. Recents/gesture nav is only available there
- && mDesktopTasksController.getVisibleTaskCount(DEFAULT_DISPLAY) > 0) {
+ && mDesktopTasksController.visibleTaskCount(DEFAULT_DISPLAY) > 0) {
return this::setRecentsTransitionDuringDesktop;
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
index 8d53beb..fc8b1d2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
@@ -79,7 +79,6 @@
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.protolog.ProtoLog;
-import com.android.window.flags.Flags;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
@@ -582,14 +581,6 @@
final boolean isOpening = isOpeningType(transitType);
final boolean isClosing = isClosingType(transitType);
final int mode = change.getMode();
- // Ensure wallpapers stay in the back
- if (change.hasFlags(FLAG_IS_WALLPAPER) && Flags.ensureWallpaperInTransitions()) {
- if (mode == TRANSIT_OPEN || mode == TRANSIT_TO_FRONT) {
- return -zSplitLine + numChanges - i;
- } else {
- return -zSplitLine - i;
- }
- }
// Put all the OPEN/SHOW on top
if (mode == TRANSIT_OPEN || mode == TRANSIT_TO_FRONT) {
if (isOpening) {
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 d12b906..5397625 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
@@ -31,6 +31,7 @@
import static android.view.MotionEvent.ACTION_UP;
import static android.view.WindowInsets.Type.statusBars;
+import static com.android.internal.jank.Cuj.CUJ_DESKTOP_MODE_ENTER_MODE_APP_HANDLE_MENU;
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT;
import static com.android.wm.shell.compatui.AppCompatUtils.isTopActivityExemptFromDesktopWindowing;
@@ -499,6 +500,8 @@
final WindowContainerTransaction wct = new WindowContainerTransaction();
// App sometimes draws before the insets from WindowDecoration#relayout have
// been added, so they must be added here
+ mInteractionJankMonitor.begin(decoration.mTaskSurface, mContext,
+ CUJ_DESKTOP_MODE_ENTER_MODE_APP_HANDLE_MENU);
mWindowDecorByTaskId.get(mTaskId).addCaptionInset(wct);
mDesktopTasksController.moveToDesktop(mTaskId, wct,
DesktopModeTransitionSource.APP_HANDLE_MENU_BUTTON);
diff --git a/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/desktopmode/scenarios/EnterDesktopWithAppHandleMenu.kt b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/desktopmode/scenarios/EnterDesktopWithAppHandleMenu.kt
new file mode 100644
index 0000000..47a215a
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/flicker/service/src/com/android/wm/shell/flicker/service/desktopmode/scenarios/EnterDesktopWithAppHandleMenu.kt
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.flicker.service.desktopmode.scenarios
+
+import android.app.Instrumentation
+import android.tools.traces.parsers.WindowManagerStateHelper
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.launcher3.tapl.LauncherInstrumentation
+import com.android.server.wm.flicker.helpers.DesktopModeAppHelper
+import com.android.server.wm.flicker.helpers.SimpleAppHelper
+import com.android.window.flags.Flags
+import org.junit.After
+import org.junit.Assume
+import org.junit.Before
+import org.junit.Ignore
+import org.junit.Test
+
+/** Base test class for enter desktop with app handle menu CUJ. */
+@Ignore("Base Test Class")
+abstract class EnterDesktopWithAppHandleMenu {
+
+ private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
+ private val tapl = LauncherInstrumentation()
+ private val wmHelper = WindowManagerStateHelper(instrumentation)
+ private val device = UiDevice.getInstance(instrumentation)
+ private val simpleAppHelper = SimpleAppHelper(instrumentation)
+ private val testApp = DesktopModeAppHelper(simpleAppHelper)
+
+ @Before
+ fun setup() {
+ Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet)
+ }
+
+ @Test
+ open fun enterDesktopWithAppHandleMenu() {
+ simpleAppHelper.launchViaIntent(wmHelper)
+ testApp.enterDesktopModeFromAppHandleMenu(wmHelper, device)
+ }
+
+ @After
+ fun teardown() {
+ testApp.exit(wmHelper)
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/CustomCrossActivityBackAnimationTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/CustomCrossActivityBackAnimationTest.kt
index 8bf0111..080ad90 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/CustomCrossActivityBackAnimationTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/CustomCrossActivityBackAnimationTest.kt
@@ -25,7 +25,6 @@
import android.os.RemoteException
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
-import android.view.Choreographer
import android.view.RemoteAnimationTarget
import android.view.SurfaceControl
import android.view.SurfaceControl.Transaction
@@ -37,8 +36,6 @@
import com.android.internal.policy.TransitionAnimation
import com.android.wm.shell.RootTaskDisplayAreaOrganizer
import com.android.wm.shell.ShellTestCase
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
import junit.framework.TestCase.assertEquals
import org.junit.Assert
import org.junit.Before
@@ -50,12 +47,13 @@
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
-import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.times
import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
@SmallTest
@TestableLooper.RunWithLooper
@@ -82,7 +80,6 @@
backAnimationBackground,
rootTaskDisplayAreaOrganizer,
transaction,
- mock(Choreographer::class.java),
customAnimationLoader
)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java
index 93e4051..c138a24 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/BubbleDataTest.java
@@ -27,6 +27,7 @@
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
@@ -255,6 +256,45 @@
}
@Test
+ public void testRemoveBubbleInLauncher_beforeBubbleUpdate_processedAfter_shouldNotBeRemoved() {
+ sendUpdatedEntryAtTime(mEntryA1, 1000);
+ sendUpdatedEntryAtTime(mEntryA2, 2000);
+ mBubbleData.setListener(mListener);
+
+ sendUpdatedEntryAtTime(mEntryA2, 3000);
+
+ verifyUpdateReceived();
+ assertThat(mBubbleData.hasBubbleInStackWithKey(mEntryA2.getKey())).isTrue();
+ assertThat(mBubbleData.getBubbleInStackWithKey(mEntryA2.getKey()).getLastActivity())
+ .isEqualTo(3000);
+
+ // dismiss the bubble with a timestamp in the past
+ mBubbleData.dismissBubbleWithKey(
+ mEntryA2.getKey(), Bubbles.DISMISS_USER_GESTURE_FROM_LAUNCHER, 2500);
+
+ verifyNoMoreInteractions(mListener);
+ assertThat(mBubbleData.hasBubbleInStackWithKey(mEntryA2.getKey())).isTrue();
+ }
+
+ @Test
+ public void testRemoveBubbleInLauncher_isNotSentBackToLauncher() {
+ sendUpdatedEntryAtTime(mEntryA1, 1000);
+ sendUpdatedEntryAtTime(mEntryA2, 2000);
+ mBubbleData.setListener(mListener);
+
+ mBubbleData.dismissBubbleWithKey(
+ mEntryA2.getKey(), Bubbles.DISMISS_USER_GESTURE_FROM_LAUNCHER, 4000);
+ verifyUpdateReceived();
+
+ BubbleData.Update update = mUpdateCaptor.getValue();
+ assertThat(update.removedBubbles).hasSize(1);
+ assertThat(update.removedBubbles.getFirst().first.getKey()).isEqualTo(mBubbleA2.getKey());
+
+ BubbleBarUpdate bubbleBarUpdate = update.toBubbleBarUpdate();
+ assertThat(bubbleBarUpdate.removedBubbles).isEmpty();
+ }
+
+ @Test
public void ifSuppress_hideFlyout() {
// Setup
mBubbleData.setListener(mListener);
@@ -1415,15 +1455,13 @@
sendUpdatedEntryAtTime(entry, postTime, true /* isTextChanged */);
}
- private void sendUpdatedEntryAtTime(BubbleEntry entry, long postTime,
- boolean textChanged) {
+ private void sendUpdatedEntryAtTime(BubbleEntry entry, long postTime, boolean textChanged) {
setPostTime(entry, postTime);
// BubbleController calls this:
Bubble b = mBubbleData.getOrCreateBubble(entry, null /* persistedBubble */);
b.setTextChangedForTest(textChanged);
// And then this
- mBubbleData.notificationEntryUpdated(b, false /* suppressFlyout*/,
- true /* showInShade */);
+ mBubbleData.notificationEntryUpdated(b, false /* suppressFlyout*/, true /* showInShade */);
}
private void changeExpandedStateAtTime(boolean shouldBeExpanded, long time) {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt
index 6612aee..18b08bf 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepositoryTest.kt
@@ -337,65 +337,65 @@
}
@Test
- fun getVisibleTaskCount() {
+ fun visibleTaskCount_defaultDisplay_returnsCorrectCount() {
// No tasks, count is 0
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
// New task increments count to 1
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = true)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
// Visibility update to same task does not increase count
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = true)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
// Second task visible increments count
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 2, visible = true)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2)
// Hiding a task decrements count
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = false)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
// Hiding all tasks leaves count at 0
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 2, visible = false)
- assertThat(repo.getVisibleTaskCount(displayId = 9)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(displayId = 9)).isEqualTo(0)
// Hiding a not existing task, count remains at 0
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 999, visible = false)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
}
@Test
- fun getVisibleTaskCount_multipleDisplays() {
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
- assertThat(repo.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(0)
+ fun visibleTaskCount_multipleDisplays_returnsCorrectCount() {
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(0)
// New task on default display increments count for that display only
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = true)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
- assertThat(repo.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(0)
// New task on secondary display, increments count for that display only
repo.updateVisibleFreeformTasks(SECOND_DISPLAY, taskId = 2, visible = true)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
- assertThat(repo.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
// Marking task visible on another display, updates counts for both displays
repo.updateVisibleFreeformTasks(SECOND_DISPLAY, taskId = 1, visible = true)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
- assertThat(repo.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(2)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(2)
// Marking task that is on secondary display, hidden on default display, does not affect
// secondary display
repo.updateVisibleFreeformTasks(DEFAULT_DISPLAY, taskId = 1, visible = false)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
- assertThat(repo.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(2)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(2)
// Hiding a task on that display, decrements count
repo.updateVisibleFreeformTasks(SECOND_DISPLAY, taskId = 1, visible = false)
- assertThat(repo.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
- assertThat(repo.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
+ assertThat(repo.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ assertThat(repo.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
}
@Test
@@ -494,28 +494,6 @@
}
@Test
- fun isDesktopModeShowing_noActiveTasks_returnsFalse() {
- assertThat(repo.isDesktopModeShowing(displayId = 0)).isFalse()
- }
-
- @Test
- fun isDesktopModeShowing_noTasksVisible_returnsFalse() {
- repo.addActiveTask(displayId = 0, taskId = 1)
- repo.addActiveTask(displayId = 0, taskId = 2)
-
- assertThat(repo.isDesktopModeShowing(displayId = 0)).isFalse()
- }
-
- @Test
- fun isDesktopModeShowing_tasksActiveAndVisible_returnsTrue() {
- repo.addActiveTask(displayId = 0, taskId = 1)
- repo.addActiveTask(displayId = 0, taskId = 2)
- repo.updateVisibleFreeformTasks(displayId = 0, taskId = 1, visible = true)
-
- assertThat(repo.isDesktopModeShowing(displayId = 0)).isTrue()
- }
-
- @Test
fun getActiveNonMinimizedTasksOrderedFrontToBack_returnsFreeformTasksInCorrectOrder() {
repo.addActiveTask(displayId = DEFAULT_DISPLAY, taskId = 1)
repo.addActiveTask(displayId = DEFAULT_DISPLAY, taskId = 2)
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 c56671a..6002c21 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
@@ -311,6 +311,31 @@
}
@Test
+ fun isDesktopModeShowing_noTasks_returnsFalse() {
+ assertThat(controller.isDesktopModeShowing(displayId = 0)).isFalse()
+ }
+
+ @Test
+ fun isDesktopModeShowing_noTasksVisible_returnsFalse() {
+ val task1 = setUpFreeformTask()
+ val task2 = setUpFreeformTask()
+ markTaskHidden(task1)
+ markTaskHidden(task2)
+
+ assertThat(controller.isDesktopModeShowing(displayId = 0)).isFalse()
+ }
+
+ @Test
+ fun isDesktopModeShowing_tasksActiveAndVisible_returnsTrue() {
+ val task1 = setUpFreeformTask()
+ val task2 = setUpFreeformTask()
+ markTaskVisible(task1)
+ markTaskHidden(task2)
+
+ assertThat(controller.isDesktopModeShowing(displayId = 0)).isTrue()
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun showDesktopApps_onSecondaryDisplay_desktopWallpaperEnabled_shouldNotShowWallpaper() {
val homeTask = setUpHomeTask(SECOND_DISPLAY)
@@ -526,32 +551,32 @@
}
@Test
- fun getVisibleTaskCount_noTasks_returnsZero() {
- assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
+ fun visibleTaskCount_noTasks_returnsZero() {
+ assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0)
}
@Test
- fun getVisibleTaskCount_twoTasks_bothVisible_returnsTwo() {
+ fun visibleTaskCount_twoTasks_bothVisible_returnsTwo() {
setUpHomeTask()
setUpFreeformTask().also(::markTaskVisible)
setUpFreeformTask().also(::markTaskVisible)
- assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2)
+ assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2)
}
@Test
- fun getVisibleTaskCount_twoTasks_oneVisible_returnsOne() {
+ fun visibleTaskCount_twoTasks_oneVisible_returnsOne() {
setUpHomeTask()
setUpFreeformTask().also(::markTaskVisible)
setUpFreeformTask().also(::markTaskHidden)
- assertThat(controller.getVisibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
+ assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1)
}
@Test
- fun getVisibleTaskCount_twoTasksVisibleOnDifferentDisplays_returnsOne() {
+ fun visibleTaskCount_twoTasksVisibleOnDifferentDisplays_returnsOne() {
setUpHomeTask()
setUpFreeformTask(DEFAULT_DISPLAY).also(::markTaskVisible)
setUpFreeformTask(SECOND_DISPLAY).also(::markTaskVisible)
- assertThat(controller.getVisibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
+ assertThat(controller.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(1)
}
@Test
@@ -1301,6 +1326,22 @@
}
@Test
+ fun handleRequest_freeformTask_relaunchActiveTask_taskBecomesUndefined() {
+ assumeTrue(ENABLE_SHELL_TRANSITIONS)
+
+ val freeformTask = setUpFreeformTask()
+ markTaskHidden(freeformTask)
+
+ val wct =
+ controller.handleRequest(Binder(), createTransition(freeformTask))
+
+ // Should become undefined as the TDA is set to fullscreen. It will inherit from the TDA.
+ assertNotNull(wct, "should handle request")
+ assertThat(wct.changes[freeformTask.token.asBinder()]?.windowingMode)
+ .isEqualTo(WINDOWING_MODE_UNDEFINED)
+ }
+
+ @Test
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
fun handleRequest_freeformTask_desktopWallpaperDisabled_freeformNotVisible_reorderedToTop() {
assumeTrue(ENABLE_SHELL_TRANSITIONS)
@@ -1549,7 +1590,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION,
)
- fun handleRequest_backTransition_singleActiveTaskNoToken_wallpaperDisabled_backNavDisabled_doesNotHandle() {
+ fun handleRequest_backTransition_singleTaskNoToken_noWallpaper_noBackNav_doesNotHandle() {
val task = setUpFreeformTask()
val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
@@ -1562,7 +1603,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_singleActiveTaskNoToken_wallpaperEnabled_backNavEnabled_removesTask() {
+ fun handleRequest_backTransition_singleTaskNoToken_withWallpaper_withBackNav_removesTask() {
val task = setUpFreeformTask()
val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
@@ -1573,7 +1614,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_backTransition_singleActiveTaskNoToken_backNavigationDisabled_doesNotHandle() {
+ fun handleRequest_backTransition_singleTaskNoToken_noBackNav_doesNotHandle() {
val task = setUpFreeformTask()
val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_TO_BACK))
@@ -1586,7 +1627,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_singleActiveTaskWithToken_wallpaperDisabled_backNavDisabled_doesNotHandle() {
+ fun handleRequest_backTransition_singleTaskWithToken_noWallpaper_noBackNav_doesNotHandle() {
val task = setUpFreeformTask()
desktopModeTaskRepository.wallpaperActivityToken = MockToken().token()
@@ -1600,7 +1641,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_singleActiveTaskWithToken_wallpaperEnabled_backNavEnabled_removesWallpaperAndTask() {
+ fun handleRequest_backTransition_singleTask_withWallpaper_withBackNav_removesWallpaperAndTask() {
val task = setUpFreeformTask()
val wallpaperToken = MockToken().token()
@@ -1615,7 +1656,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_backTransition_singleActiveTaskWithToken_backNavigationDisabled_removesWallpaper() {
+ fun handleRequest_backTransition_singleTaskWithToken_noBackNav_removesWallpaper() {
val task = setUpFreeformTask()
val wallpaperToken = MockToken().token()
@@ -1631,7 +1672,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_multipleTasks_wallpaperDisabled_backNavDisabled_doesNotHandle() {
+ fun handleRequest_backTransition_multipleTasks_noWallpaper_noBackNav_doesNotHandle() {
val task1 = setUpFreeformTask()
setUpFreeformTask()
@@ -1646,7 +1687,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_multipleTasks_wallpaperEnabled_backNavEnabled_removesTask() {
+ fun handleRequest_backTransition_multipleTasks_withWallpaper_withBackNav_removesTask() {
val task1 = setUpFreeformTask()
setUpFreeformTask()
@@ -1659,7 +1700,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_backTransition_multipleTasks_backNavigationDisabled_doesNotHandle() {
+ fun handleRequest_backTransition_multipleTasks_noBackNav_doesNotHandle() {
val task1 = setUpFreeformTask()
setUpFreeformTask()
@@ -1674,7 +1715,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_multipleTasksSingleNonClosing_wallpaperEnabled_backNavEnabled_removesWallpaperAndTask() {
+ fun handleRequest_backTransition_multipleTasksSingleNonClosing_removesWallpaperAndTask() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1691,7 +1732,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_backTransition_multipleTasksSingleNonClosing_backNavigationDisabled_removesWallpaper() {
+ fun handleRequest_backTransition_multipleTasksSingleNonClosing_noBackNav_removesWallpaper() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1709,7 +1750,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_multipleTasksSingleNonMinimized_wallpaperEnabled_backNavEnabled_removesWallpaperAndTask() {
+ fun handleRequest_backTransition_multipleTasksSingleNonMinimized_removesWallpaperAndTask() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1726,7 +1767,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_backTransition_multipleTasksSingleNonMinimized_backNavigationDisabled_removesWallpaper() {
+ fun handleRequest_backTransition_multipleTasksSingleNonMinimized_noBackNav_removesWallpaper() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1744,7 +1785,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_backTransition_nonMinimizadTask_wallpaperEnabled_backNavEnabled_removesWallpaper() {
+ fun handleRequest_backTransition_nonMinimizadTask_withWallpaper_withBackNav_removesWallpaper() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1764,7 +1805,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_singleActiveTaskNoToken_wallpaperDisabled_backNavDisabled_doesNotHandle() {
+ fun handleRequest_closeTransition_singleTaskNoToken_noWallpaper_noBackNav_doesNotHandle() {
val task = setUpFreeformTask()
val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_CLOSE))
@@ -1777,7 +1818,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_singleActiveTaskNoToken_wallpaperEnabled_backNavEnabled_removesTask() {
+ fun handleRequest_closeTransition_singleTaskNoToken_withWallpaper_withBackNav_removesTask() {
val task = setUpFreeformTask()
val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_CLOSE))
@@ -1788,7 +1829,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_closeTransition_singleActiveTaskNoToken_backNavigationDisabled_doesNotHandle() {
+ fun handleRequest_closeTransition_singleTaskNoToken_noBackNav_doesNotHandle() {
val task = setUpFreeformTask()
val result = controller.handleRequest(Binder(), createTransition(task, type = TRANSIT_CLOSE))
@@ -1801,7 +1842,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_singleActiveTaskWithToken_wallpaperDisabled_backNavDisabled_doesNotHandle() {
+ fun handleRequest_closeTransition_singleTaskWithToken_noWallpaper_noBackNav_doesNotHandle() {
val task = setUpFreeformTask()
desktopModeTaskRepository.wallpaperActivityToken = MockToken().token()
@@ -1815,7 +1856,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_singleActiveTaskWithToken_wallpaperEnabled_backNavEnabled_removesWallpaperAndTask() {
+ fun handleRequest_closeTransition_singleTaskWithToken_removesWallpaperAndTask() {
val task = setUpFreeformTask()
val wallpaperToken = MockToken().token()
@@ -1830,7 +1871,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_closeTransition_singleActiveTaskWithToken_backNavigationDisabled_removesWallpaper() {
+ fun handleRequest_closeTransition_singleTaskWithToken_withWallpaper_noBackNav_removesWallpaper() {
val task = setUpFreeformTask()
val wallpaperToken = MockToken().token()
@@ -1846,7 +1887,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_multipleTasks_wallpaperDisabled_backNavDisabled_doesNotHandle() {
+ fun handleRequest_closeTransition_multipleTasks_noWallpaper_noBackNav_doesNotHandle() {
val task1 = setUpFreeformTask()
setUpFreeformTask()
@@ -1861,7 +1902,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_multipleTasks_wallpaperEnabled_backNavEnabled_removesTask() {
+ fun handleRequest_closeTransition_multipleTasks_withWallpaper_withBackNav_removesTask() {
val task1 = setUpFreeformTask()
setUpFreeformTask()
@@ -1875,7 +1916,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_closeTransition_multipleTasksFlagEnabled_backNavigationDisabled_doesNotHandle() {
+ fun handleRequest_closeTransition_multipleTasksFlagEnabled_noBackNav_doesNotHandle() {
val task1 = setUpFreeformTask()
setUpFreeformTask()
@@ -1890,7 +1931,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_multipleTasksSingleNonClosing_wallpaperEnabled_backNavEnabled_removesWallpaperAndTask() {
+ fun handleRequest_closeTransition_multipleTasksSingleNonClosing_removesWallpaperAndTask() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1907,7 +1948,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_closeTransition_multipleTasksSingleNonClosing_backNavigationDisabled_removesWallpaper() {
+ fun handleRequest_closeTransition_multipleTasksSingleNonClosing_noBackNav_removesWallpaper() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1925,7 +1966,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_multipleTasksOneNonMinimized_wallpaperEnabled_backNavEnabled_removesWallpaperAndTask() {
+ fun handleRequest_closeTransition_multipleTasksOneNonMinimized_removesWallpaperAndTask() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1942,7 +1983,7 @@
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY)
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION)
- fun handleRequest_closeTransition_multipleTasksSingleNonMinimized_backNavigationDisabled_removesWallpaper() {
+ fun handleRequest_closeTransition_multipleTasksSingleNonMinimized_noBackNav_removesWallpaper() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
@@ -1960,7 +2001,7 @@
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,
Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION
)
- fun handleRequest_closeTransition_minimizadTask_wallpaperEnabled_backNavEnabled_removesWallpaper() {
+ fun handleRequest_closeTransition_minimizadTask_withWallpaper_withBackNav_removesWallpaper() {
val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY)
val wallpaperToken = MockToken().token()
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 52b5ff7..2d0e7ab 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -1636,7 +1636,8 @@
/** @hide */ public static final int FORCE_ENCODED_SURROUND_NEVER = 13;
/** @hide */ public static final int FORCE_ENCODED_SURROUND_ALWAYS = 14;
/** @hide */ public static final int FORCE_ENCODED_SURROUND_MANUAL = 15;
- /** @hide */ public static final int NUM_FORCE_CONFIG = 16;
+ /** @hide */ public static final int FORCE_BT_BLE = 16;
+ /** @hide */ public static final int NUM_FORCE_CONFIG = 17;
/** @hide */ public static final int FORCE_DEFAULT = FORCE_NONE;
/** @hide */
@@ -1658,6 +1659,7 @@
case FORCE_ENCODED_SURROUND_NEVER: return "FORCE_ENCODED_SURROUND_NEVER";
case FORCE_ENCODED_SURROUND_ALWAYS: return "FORCE_ENCODED_SURROUND_ALWAYS";
case FORCE_ENCODED_SURROUND_MANUAL: return "FORCE_ENCODED_SURROUND_MANUAL";
+ case FORCE_BT_BLE: return "FORCE_BT_BLE";
default: return "unknown config (" + config + ")" ;
}
}
@@ -2649,11 +2651,4 @@
* @hide
*/
public static native boolean isBluetoothVariableLatencyEnabled();
-
- /**
- * Register a native listener for system property sysprop
- * @param callback the listener which fires when the property changes
- * @hide
- */
- public static native void listenForSystemPropertyChange(String sysprop, Runnable callback);
}
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index d42b256..d20b7f0 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -762,14 +762,14 @@
void unregisterLoudnessCodecUpdatesDispatcher(in ILoudnessCodecUpdatesDispatcher dispatcher);
- oneway void startLoudnessCodecUpdates(int sessionId);
+ void startLoudnessCodecUpdates(int sessionId);
- oneway void stopLoudnessCodecUpdates(int sessionId);
+ void stopLoudnessCodecUpdates(int sessionId);
- oneway void addLoudnessCodecInfo(int sessionId, int mediaCodecHash,
+ void addLoudnessCodecInfo(int sessionId, int mediaCodecHash,
in LoudnessCodecInfo codecInfo);
- oneway void removeLoudnessCodecInfo(int sessionId, in LoudnessCodecInfo codecInfo);
+ void removeLoudnessCodecInfo(int sessionId, in LoudnessCodecInfo codecInfo);
PersistableBundle getLoudnessParams(in LoudnessCodecInfo codecInfo);
diff --git a/media/java/android/media/projection/MediaProjectionManager.java b/media/java/android/media/projection/MediaProjectionManager.java
index 4013d84..7a7137a 100644
--- a/media/java/android/media/projection/MediaProjectionManager.java
+++ b/media/java/android/media/projection/MediaProjectionManager.java
@@ -263,6 +263,7 @@
* @see <a href="/guide/topics/large-screens/media-projection">
* Media projection developer guide</a>
*/
+ @Nullable
public MediaProjection getMediaProjection(int resultCode, @NonNull Intent resultData) {
if (resultCode != Activity.RESULT_OK || resultData == null) {
return null;
diff --git a/nfc/java/android/nfc/AvailableNfcAntenna.java b/nfc/java/android/nfc/AvailableNfcAntenna.java
index 6e6512a..e76aeb0 100644
--- a/nfc/java/android/nfc/AvailableNfcAntenna.java
+++ b/nfc/java/android/nfc/AvailableNfcAntenna.java
@@ -28,13 +28,13 @@
public final class AvailableNfcAntenna implements Parcelable {
/**
* Location of the antenna on the Y axis in millimeters.
- * 0 is the bottom-left when the user is facing the screen
+ * 0 is the top-left when the user is facing the screen
* and the device orientation is Portrait.
*/
private final int mLocationX;
/**
* Location of the antenna on the Y axis in millimeters.
- * 0 is the bottom-left when the user is facing the screen
+ * 0 is the top-left when the user is facing the screen
* and the device orientation is Portrait.
*/
private final int mLocationY;
@@ -46,7 +46,7 @@
/**
* Location of the antenna on the X axis in millimeters.
- * 0 is the bottom-left when the user is facing the screen
+ * 0 is the top-left when the user is facing the screen
* and the device orientation is Portrait.
*/
public int getLocationX() {
@@ -55,7 +55,7 @@
/**
* Location of the antenna on the Y axis in millimeters.
- * 0 is the bottom-left when the user is facing the screen
+ * 0 is the top-left when the user is facing the screen
* and the device orientation is Portrait.
*/
public int getLocationY() {
diff --git a/nfc/java/android/nfc/NfcAntennaInfo.java b/nfc/java/android/nfc/NfcAntennaInfo.java
index b002ca2..c57b2e0 100644
--- a/nfc/java/android/nfc/NfcAntennaInfo.java
+++ b/nfc/java/android/nfc/NfcAntennaInfo.java
@@ -64,9 +64,9 @@
/**
* Whether the device is foldable. When the device is foldable,
- * the 0, 0 is considered to be bottom-left when the device is unfolded and
+ * the 0, 0 is considered to be top-left when the device is unfolded and
* the screens are facing the user. For non-foldable devices 0, 0
- * is bottom-left when the user is facing the screen.
+ * is top-left when the user is facing the screen.
*/
public boolean isDeviceFoldable() {
return mDeviceFoldable;
diff --git a/packages/BackupRestoreConfirmation/res/values-el/strings.xml b/packages/BackupRestoreConfirmation/res/values-el/strings.xml
index 0223499..7142edf 100644
--- a/packages/BackupRestoreConfirmation/res/values-el/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-el/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="backup_confirm_title" msgid="827563724209303345">"Πλήρης δημιουργία αντιγράφων ασφαλείας"</string>
+ <string name="backup_confirm_title" msgid="827563724209303345">"Πλήρης δημιουργία αντιγράφου ασφαλείας"</string>
<string name="restore_confirm_title" msgid="5469365809567486602">"Πλήρης επαναφορά"</string>
<string name="backup_confirm_text" msgid="1878021282758896593">"Έχει ζητηθεί ένα πλήρες αντίγραφο ασφαλείας όλων των δεδομένων σε έναν συνδεδεμένο επιτραπέζιο υπολογιστή. Θέλετε να επιτραπεί αυτή η ενέργεια;\n\nΑν δεν έχετε ζητήσει οι ίδιοι αυτό το αντίγραφο ασφαλείας, μην επιτρέψετε την ενέργεια."</string>
<string name="allow_backup_button_label" msgid="4217228747769644068">"Δημιουργία αντιγράφων ασφαλείας για τα δεδομένα μου"</string>
diff --git a/packages/CredentialManager/res/values-iw/strings.xml b/packages/CredentialManager/res/values-iw/strings.xml
index 46ad865..51f1639 100644
--- a/packages/CredentialManager/res/values-iw/strings.xml
+++ b/packages/CredentialManager/res/values-iw/strings.xml
@@ -80,7 +80,7 @@
<string name="get_dialog_title_choose_option_for" msgid="4976380044745029107">"רוצה לבחור אפשרות עבור <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_info_on" msgid="8863708099535435146">"להשתמש במידע הזה בשביל <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"כניסה בדרך אחרת"</string>
- <string name="snackbar_action" msgid="37373514216505085">"הצגת האפשרויות"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"עיון באפשרויות"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"המשך"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"אפשרויות כניסה לחשבון"</string>
<string name="button_label_view_more" msgid="3429098227286495651">"עוד מידע"</string>
diff --git a/packages/CredentialManager/wear/res/values-af/strings.xml b/packages/CredentialManager/wear/res/values-af/strings.xml
new file mode 100644
index 0000000..44e46f4
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-af/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Eiebewysbestuurder"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Gebruik toegangsleutel?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Gebruik wagwoord?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Maak toe"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Gaan voort"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Aanmeldopsies"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Aanmeldopsies"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Bestuur aanmeldings"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Kies ’n aanmelding"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Kies toegangsleutel"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Kies wagwoord"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Meld aan op foon"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Geen aanmeldinligting nie"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Tik om te ontsluit"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-ar/strings.xml b/packages/CredentialManager/wear/res/values-ar/strings.xml
new file mode 100644
index 0000000..43a651e
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-ar/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"هل تريد استخدام مفتاح المرور؟"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"هل تريد استخدام كلمة المرور؟"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"إغلاق"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"متابعة"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"خيارات تسجيل الدخول"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"خيارات تسجيل الدخول"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"إداراة عمليات تسجيل الدخول"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"اختيار معلومات تسجيل الدخول"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"اختيار مفتاح المرور"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"اختيار كلمة المرور"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"تسجيل الدخول على الهاتف"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"لا تتوفّر معلومات تسجيل دخول"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"انقر لفتح القفل"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-az/strings.xml b/packages/CredentialManager/wear/res/values-az/strings.xml
new file mode 100644
index 0000000..3f27002
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-az/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Giriş Məlumatları Meneceri"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Giriş açarı istifadə edilsin?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Parol istifadə edilsin?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Ləğv edin"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Davam edin"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Giriş seçimləri"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Giriş seçimləri"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Girişləri idarə edin"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Giriş seçin"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Giriş açarı seçin"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Parol seçin"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Telefonda daxil olun"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Giriş məlumatı yoxdur"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Kiliddən çıxarmaq üçün toxunun"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-b+sr+Latn/strings.xml b/packages/CredentialManager/wear/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..fd5a59a
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Menadžer akreditiva"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Želite da koristite pristupni ključ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Želite da koristite lozinku?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Odbaci"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Nastavi"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opcije za prijavljivanje"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opcije za prijavljivanje"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Upravljajte prijavljivanjima"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Odaberite prijavljivanje"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Odaberite pristupni ključ"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Odaberite lozinku"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Prijavite se na telefonu"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nema podataka za prijavljivanje"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Dodirnite da biste otključali"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-be/strings.xml b/packages/CredentialManager/wear/res/values-be/strings.xml
new file mode 100644
index 0000000..2759247
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-be/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Выкарыстаць ключ доступу?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Выкарыстаць пароль?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Закрыць"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Працягнуць"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Спосабы ўваходу"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Спосабы ўваходу"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Кіраванне спосабамі ўваходу"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Выберыце спосаб уваходу"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Выберыце ключ доступу"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Выберыце пароль"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Увайсці на тэлефоне"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Няма даных для ўваходу"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Націсніце, каб разблакіраваць"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-bg/strings.xml b/packages/CredentialManager/wear/res/values-bg/strings.xml
new file mode 100644
index 0000000..0b6b8d5
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-bg/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Мениджър на идентификационни данни"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Искате ли да използвате ключ за достъп?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Искате ли да използвате парола?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Отхвърляне"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Напред"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Опции за влизане в профила"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Опции за влизане в профила"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Управление на данните за вход"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Избиране на данни за вход"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Избиране на ключ за достъп"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Избиране на парола"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Вход в профила на телефона"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Няма данни за вход"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Докоснете, за да отключите"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-bn/strings.xml b/packages/CredentialManager/wear/res/values-bn/strings.xml
new file mode 100644
index 0000000..a28da2d
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-bn/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"ক্রেডেনশিয়াল ম্যানেজার"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"পাসকী ব্যবহার করতে চান?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"পাসওয়ার্ড ব্যবহার করতে চান?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"বাতিল করুন"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"চালিয়ে যান"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"সাইন-ইন করার বিকল্প"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"সাইন-ইন করার বিকল্প"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"সাইন-ইন সংক্রান্ত ক্রেডেনশিয়াল ম্যানেজ করুন"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"সাইন-ইন করার বিকল্প বেছে নিন"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"পাসকী বেছে নিন"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"পাসওয়ার্ড বেছে নিন"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"ফোনে সাইন-ইন করুন"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"সাইন-ইন সংক্রান্ত তথ্য দেওয়া নেই"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"আনলক করতে ট্যাপ করুন"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-bs/strings.xml b/packages/CredentialManager/wear/res/values-bs/strings.xml
new file mode 100644
index 0000000..da71c46
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-bs/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Upravitelj akreditiva"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Koristiti pristupni ključ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Koristiti lozinku?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Odbaci"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Nastavi"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Načini prijave"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Načini prijave"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Upravljajte prijavama"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Odaberite prijavu"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Odaberite pristupni ključ"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Odaberite lozinku"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Prijavite se na telefonu"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nema podataka za prijavu"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Dodirnite da otključate"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-ca/strings.xml b/packages/CredentialManager/wear/res/values-ca/strings.xml
new file mode 100644
index 0000000..6bb5854
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-ca/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Gestor de credencials"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Vols utilitzar la clau d\'accés?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Vols utilitzar la contrasenya?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Ignora"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continua"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opcions d\'inici de sessió"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opcions d\'inici de sessió"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gestiona els inicis de sessió"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Tria un inici de sessió"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Tria una clau d\'accés"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Tria una contrasenya"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Inicia la sessió al telèfon"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Sense informació d\'inici de sessió"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Toca per desbloquejar"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-da/strings.xml b/packages/CredentialManager/wear/res/values-da/strings.xml
new file mode 100644
index 0000000..d445067
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-da/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Loginadministrator"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Vil du bruge en adgangsnøgle?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Vil du bruge en adgangskode?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Luk"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Fortsæt"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Loginmetoder"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Loginmetoder"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Administrer loginmetoder"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Vælg et login"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Vælg adgangsnøgle"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Vælg adgangskode"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Log ind via telefonen"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Ingen loginoplysninger"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Tryk for at låse op"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-de/strings.xml b/packages/CredentialManager/wear/res/values-de/strings.xml
new file mode 100644
index 0000000..b5107c5
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-de/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Passkey verwenden?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Passwort verwenden?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Schließen"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Weiter"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Anmeldeoptionen"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Anmeldeoptionen"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Anmeldungen verwalten"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Anmeldung auswählen"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Passkey auswählen"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Passwort auswählen"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Auf dem Smartphone anmelden"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Keine Anmeldedaten"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Zum Entsperren tippen"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-el/strings.xml b/packages/CredentialManager/wear/res/values-el/strings.xml
index 1c9d49b..ca24127 100644
--- a/packages/CredentialManager/wear/res/values-el/strings.xml
+++ b/packages/CredentialManager/wear/res/values-el/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="7384524142163511792">"Διαχειριστής διαπιστευτηρίων"</string>
+ <string name="app_name" msgid="7384524142163511792">"Διαχείριση διαπιστευτηρίων"</string>
<string name="use_passkey_title" msgid="716598039340757817">"Χρήση κλειδιού πρόσβασης;"</string>
<string name="use_password_title" msgid="4655101984031246476">"Χρήση κωδικού πρόσβασης;"</string>
<string name="dialog_dismiss_button" msgid="989567669882005067">"Παράβλεψη"</string>
diff --git a/packages/CredentialManager/wear/res/values-es/strings.xml b/packages/CredentialManager/wear/res/values-es/strings.xml
new file mode 100644
index 0000000..275ac14
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-es/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Gestor de credenciales"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"¿Usar llave de acceso?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"¿Usar contraseña?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Cerrar"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continuar"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opciones de inicio de sesión"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opciones de inicio de sesión"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gestionar inicios de sesión"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Elige un inicio de sesión"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Elige una llave de acceso"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Elige una contraseña"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Iniciar sesión en el teléfono"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"No hay información de inicio de sesión"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Toca para desbloquear"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-et/strings.xml b/packages/CredentialManager/wear/res/values-et/strings.xml
new file mode 100644
index 0000000..c1fdc61
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-et/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Mandaatide haldur"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Kas kasutada pääsuvõtit?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Kas kasutada parooli?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Loobu"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Jätka"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Sisselogimise valikud"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Sisselogimise valikud"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Sisselogimisteabe haldamine"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Valige sisselogimisteave"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Valige pääsuvõti"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Valige parool"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Logi telefonis sisse"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Sisselogimisteave puudub"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Avamiseks puudutage"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-eu/strings.xml b/packages/CredentialManager/wear/res/values-eu/strings.xml
new file mode 100644
index 0000000..352164b
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-eu/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Sarbide-gako bat erabili nahi duzu?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Pasahitz bat erabili nahi duzu?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Baztertu"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Egin aurrera"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Saioa hasteko moduak"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Saioa hasteko moduak"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Kudeatu saioa hasteko moduak"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Aukeratu saioa hasteko modu bat"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Aukeratu sarbide-gako bat"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Aukeratu pasahitz bat"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Hasi saioa telefonoan"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Ez dago saioa hasteko informaziorik"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Desblokeatzeko, sakatu hau"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-fa/strings.xml b/packages/CredentialManager/wear/res/values-fa/strings.xml
new file mode 100644
index 0000000..8053769
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-fa/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"از گذرکلید استفاده میکنید؟"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"از گذرواژه استفاده میکنید؟"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"رد کردن"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"ادامه"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"گزینههای ورود به سیستم"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"گزینههای ورود به سیستم"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"مدیریت ورود به سیستم"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"ورود به سیستم را انتخاب کنید"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"گذرکلید را انتخاب کنید"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"گذرواژه را انتخاب کنید"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"ورود به سیستم در تلفن"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"اطلاعات ورود به سیستم موجود نیست"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"برای باز کردن قفل، تکضرب بزنید"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-fr-rCA/strings.xml b/packages/CredentialManager/wear/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..6a04cbb
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-fr-rCA/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Gestionnaire d\'authentifiants"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Utiliser la clé d\'accès?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Utiliser le mot de passe?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Fermer"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continuer"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Options de connexion"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Options de connexion"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gérer les identifiants de connexion"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Choisir un identifiant de connexion"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Choisir la clé d\'accès"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Choisir le mot de passe"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Se connecter sur le téléphone"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Aucun renseignement de connexion"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Toucher pour déverrouiller"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-fr/strings.xml b/packages/CredentialManager/wear/res/values-fr/strings.xml
new file mode 100644
index 0000000..fbecd31
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-fr/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Utiliser la clé d\'accès ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Utiliser le mot de passe ?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Ignorer"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continuer"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Options de connexion"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Options de connexion"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gérer les connexions"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Choisir une connexion"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Choisir une clé d\'accès"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Choisir un mot de passe"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Se connecter sur le téléphone"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Aucune information de connexion"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Appuyer pour déverrouiller"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-gl/strings.xml b/packages/CredentialManager/wear/res/values-gl/strings.xml
new file mode 100644
index 0000000..376b08f
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-gl/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Queres usar a clave de acceso?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Queres usar o contrasinal?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Pechar"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continuar"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opcións de inicio de sesión"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opcións de inicio de sesión"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Xestionar os métodos de inicio de sesión"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Seleccionar un método de inicio de sesión"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Seleccionar unha clave de acceso"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Seleccionar un contrasinal"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Iniciar sesión no teléfono"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Sen información de inicio de sesión"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Toca para desbloquear"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-hr/strings.xml b/packages/CredentialManager/wear/res/values-hr/strings.xml
new file mode 100644
index 0000000..2adcad5
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-hr/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Upravitelj vjerodajnicama"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Želite li upotrijebiti pristupni ključ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Želite li upotrijebiti zaporku?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Odbaci"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Nastavi"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opcije prijave"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opcije prijave"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Upravljanje prijavama"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Odaberite prijavu"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Odaberite pristupni ključ"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Odaberite zaporku"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Prijavite se na telefonu"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nema podataka o prijavi"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Dodirnite za otključavanje"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-hu/strings.xml b/packages/CredentialManager/wear/res/values-hu/strings.xml
new file mode 100644
index 0000000..f2cb497
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-hu/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Tanúsítványkezelő"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Azonosítókulcsot szeretne használni?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Jelszót szeretne használni?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Elvetés"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Tovább"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Bejelentkezési lehetőségek"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Bejelentkezési lehetőségek"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Bejelentkezési adatok kezelése"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Bejelentkezési mód kiválasztása"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Azonosítókulcs kiválasztása"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Jelszó kiválasztása"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Bejelentkezés telefonon"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nincsenek bejelentkezési adatok"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Koppintson ide a feloldáshoz"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-in/strings.xml b/packages/CredentialManager/wear/res/values-in/strings.xml
new file mode 100644
index 0000000..2e527e2
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-in/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Gunakan kunci sandi?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Gunakan sandi?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Tutup"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Lanjutkan"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opsi Login"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opsi Login"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Kelola login"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Pilih login"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Pilih kunci sandi"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Pilih sandi"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Login di ponsel"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Tidak ada info login"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Ketuk untuk membuka kunci"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-it/strings.xml b/packages/CredentialManager/wear/res/values-it/strings.xml
new file mode 100644
index 0000000..0b398fd
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-it/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Gestore delle credenziali"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Vuoi utilizzare la passkey?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Vuoi utilizzare la password?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Ignora"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continua"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opzioni di accesso"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opzioni di accesso"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gestisci gli accessi"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Scegli un accesso"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Scegli passkey"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Scegli password"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Accedi dallo smartphone"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nessun dato di accesso"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Tocca per sbloccare"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-iw/strings.xml b/packages/CredentialManager/wear/res/values-iw/strings.xml
new file mode 100644
index 0000000..4fb203d
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-iw/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"להשתמש במפתח גישה?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"להשתמש בסיסמה?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"סגירה"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"המשך"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"אמצעי כניסה"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"אמצעי כניסה"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"ניהול הכניסות"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"בחירת אמצעי כניסה"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"בחירת מפתח גישה"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"בחירת סיסמה"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"כניסה לחשבון בטלפון"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"אין פרטי כניסה"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"צריך להקיש כדי לבטל את הנעילה"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-kk/strings.xml b/packages/CredentialManager/wear/res/values-kk/strings.xml
new file mode 100644
index 0000000..ca6cd7d
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-kk/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Тіркелу деректері менеджері"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Кіру кілтін пайдалану керек пе?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Құпия сөзін пайдалану керек пе?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Жабу"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Жалғастыру"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Аккаунтқа кіру әдістері"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Аккаунтқа кіру әдістері"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Аккаунтқа кіру әрекеттерін басқару"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Аккаунтқа кіру жолын таңдаңыз"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Кіру кілтін таңдаңыз"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Құпия сөз таңдаңыз"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Аккаунтқа телефон арқылы кіру"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Аккаунтқа кіру ақпараты жоқ."</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Құлыпты ашу үшін түртіңіз."</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-ky/strings.xml b/packages/CredentialManager/wear/res/values-ky/strings.xml
new file mode 100644
index 0000000..418d2f1
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-ky/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Киргизүүчү ачкычты колдоносузбу?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Сырсөздү колдоносузбу?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Жабуу"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Улантуу"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Аккаунтка кирүү параметрлери"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Аккаунтка кирүү параметрлери"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Кирүү параметрлерин тескөө"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Кирүүнү тандаңыз"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Киргизүүчү ачкычты тандаңыз"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Сырсөздү тандаңыз"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Аккаунтка телефондон кирүү"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Аккаунтка кирүү маалыматы жок"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Кулпусун ачуу үчүн таптаңыз"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-lt/strings.xml b/packages/CredentialManager/wear/res/values-lt/strings.xml
new file mode 100644
index 0000000..b313e87
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-lt/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Prisijungimo duomenų tvarkytuvė"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Naudoti prieigos raktą?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Naudoti slaptažodį?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Atsisakyti"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Tęsti"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Prisijungimo parinktys"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Prisijungimo parinktys"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Prisijungimo informacijos tvarkymas"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Pasirinkti prisijungimą"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Pasirinkite prieigos raktus"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Pasirinkite slaptažodį"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Prisijungti telefone"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Prisijungimo informacijos nėra"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Palieskite, kad atrakintumėte"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-lv/strings.xml b/packages/CredentialManager/wear/res/values-lv/strings.xml
new file mode 100644
index 0000000..efeedec
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-lv/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Akreditācijas datu pārvaldnieks"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Vai izmantot piekļuves atslēgu?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Vai izmantot paroli?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Nerādīt"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Turpināt"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Pierakstīšanās opcijas"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Pierakstīšanās opcijas"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Pierakstīšanās informācijas pārvaldība"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Izvēlieties pierakstīšanās veidu"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Izvēlieties piekļuves atslēgu"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Izvēlieties paroli"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Pierakstīties tālrunī"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nav pierakstīšanās informācijas"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Pieskarieties, lai atbloķētu"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-mk/strings.xml b/packages/CredentialManager/wear/res/values-mk/strings.xml
new file mode 100644
index 0000000..a4d8073
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-mk/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Управување со акредитиви"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Да се користи криптографски клуч?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Да се користи лозинка?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Отфрли"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Продолжи"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Опции за најавување"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Опции за најавување"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Управувајте со најавувањата"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Изберете најавување"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Изберете криптографски клуч"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Изберете лозинка"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Најавете се на телефонот"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Нема податоци за најавување"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Допрете за да отклучите"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-mn/strings.xml b/packages/CredentialManager/wear/res/values-mn/strings.xml
new file mode 100644
index 0000000..b577268
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-mn/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Мандат үнэмлэхийн менежер"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Нэвтрэх түлхүүр ашиглах уу?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Нууц үг ашиглах уу?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Хаах"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Үргэлжлүүлэх"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Нэвтрэх сонголт"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Нэвтрэх сонголт"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Нэвтрэх сонголтыг удирдах"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Нэвтрэх сонголт хийх"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Нэвтрэх түлхүүр сонгох"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Нууц үг сонгох"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Утсан дээр нэвтрэх"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Ямар ч нэвтрэх мэдээлэл байхгүй"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Түгжээг тайлахын тулд товшино уу"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-ne/strings.xml b/packages/CredentialManager/wear/res/values-ne/strings.xml
new file mode 100644
index 0000000..de92acd
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-ne/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"क्रिडेन्सियल म्यानेजर"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"पासकी प्रयोग गर्ने हो?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"पासवर्ड प्रयोग गर्ने हो?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"खारेज गर्नुहोस्"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"जारी राख्नुहोस्"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"साइन इनसम्बन्धी विकल्पहरू"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"साइन इनसम्बन्धी विकल्पहरू"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"साइन इनसम्बन्धी जानकारी व्यवस्थापन गर्नुहोस्"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"साइन इन गर्ने तरिका छनौट गर्नुहोस्"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"पासकी छनौट गर्नुहोस्"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"पासवर्ड छनौट गर्नुहोस्"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"फोनमा साइन इन गर्नुहोस्"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"साइन इनसम्बन्धी जानकारी उपलब्ध छैन"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"अनलक गर्न ट्याप गर्नुहोस्"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-or/strings.xml b/packages/CredentialManager/wear/res/values-or/strings.xml
new file mode 100644
index 0000000..00270de
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-or/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"କ୍ରେଡେନସିଆଲ ମେନେଜର"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"ପାସକୀ ବ୍ୟବହାର କରିବେ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"ପାସୱାର୍ଡ ବ୍ୟବହାର କରିବେ?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"ଖାରଜ କରନ୍ତୁ"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"ଜାରି ରଖନ୍ତୁ"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"ସାଇନ-ଇନ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"ସାଇନ-ଇନ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"ସାଇନ-ଇନ ପରିଚାଳନା କରନ୍ତୁ"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"ଏକ ସାଇନ ଇନ ବାଛନ୍ତୁ"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"ପାସକୀ ବାଛନ୍ତୁ"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"ପାସୱାର୍ଡ ବାଛନ୍ତୁ"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"ଫୋନରେ ସାଇନ ଇନ କରନ୍ତୁ"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"କୌଣସି ସାଇନ-ଇନ ସୂଚନା ନାହିଁ"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"ଅନଲକ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-pa/strings.xml b/packages/CredentialManager/wear/res/values-pa/strings.xml
new file mode 100644
index 0000000..a1ba4fd
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-pa/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ ਪ੍ਰਬੰਧਕ"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"ਕੀ ਪਾਸਕੀ ਨੂੰ ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"ਕੀ ਪਾਸਵਰਡ ਨੂੰ ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"ਖਾਰਜ ਕਰੋ"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"ਜਾਰੀ ਰੱਖੋ"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"ਸਾਈਨ-ਇਨ ਵਿਕਲਪ"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"ਸਾਈਨ-ਇਨ ਵਿਕਲਪ"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"ਸਾਈਨ-ਇਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"ਸਾਈਨ-ਇਨ ਕਰਨ ਦਾ ਵਿਕਲਪ ਚੁਣੋ"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"ਪਾਸਕੀ ਚੁਣੋ"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"ਪਾਸਵਰਡ ਚੁਣੋ"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"ਫ਼ੋਨ \'ਤੇ ਸਾਈਨ-ਇਨ ਕਰੋ"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"ਕੋਈ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"ਅਣਲਾਕ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-pl/strings.xml b/packages/CredentialManager/wear/res/values-pl/strings.xml
new file mode 100644
index 0000000..345a24a
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-pl/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Użyć klucza dostępu?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Użyć hasła?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Zamknij"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Dalej"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opcje logowania"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opcje logowania"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Zarządzanie danymi logowania"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Wybierz dane logowania"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Wybierz klucz dostępu"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Wybierz hasło"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Zaloguj się na telefonie"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Brak danych logowania"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Dotknij, aby odblokować"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-pt/strings.xml b/packages/CredentialManager/wear/res/values-pt/strings.xml
new file mode 100644
index 0000000..c451b25
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-pt/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Usar chave de acesso?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Usar senha?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Dispensar"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continuar"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opções de login"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opções de login"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gerenciar logins"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Escolher opção de login"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Escolher chave de acesso"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Escolher senha"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Fazer login no smartphone"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nenhuma informação de login"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Toque para desbloquear"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-ro/strings.xml b/packages/CredentialManager/wear/res/values-ro/strings.xml
new file mode 100644
index 0000000..adb45ec
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-ro/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Folosești cheia de acces?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Folosești parola?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Închide"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Continuă"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opțiuni de conectare"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opțiuni de conectare"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Gestionează datele de conectare"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Alege setul de date de conectare"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Alege cheia de acces"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Alege parola"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Conectează-te pe telefon"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Fără informații de conectare"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Atinge pentru a debloca"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-ru/strings.xml b/packages/CredentialManager/wear/res/values-ru/strings.xml
new file mode 100644
index 0000000..692e7a7
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-ru/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Менеджер учетных данных"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Использовать ключ доступа?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Использовать пароль?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Закрыть"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Продолжить"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Способы входа"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Способы входа"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Управление входом"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Выберите способ входа"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Выберите ключ доступа"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Выберите пароль"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Войти в аккаунт на телефоне"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Нет данных для входа"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Разблокировать"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-si/strings.xml b/packages/CredentialManager/wear/res/values-si/strings.xml
new file mode 100644
index 0000000..0849e8e
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-si/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"අක්තපත්ර කළමනාකරු"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"මුරයතුර භාවිත කරන්න ද?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"මුරපදය භාවිත කරන්න ද?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"අස් කරන්න"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"ඉදිරියට යන්න"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"පුරනය වීමේ විකල්ප"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"පුරනය වීමේ විකල්ප"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"පුරනය වීම් කළමනාකරණය කරන්න"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"පුරනය වීමක් තෝරා ගන්න"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"මුරයතුර තෝරා ගන්න"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"මුරපදය තෝරා ගන්න"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"දුරකථනයෙන් පුරන්න"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"පුරනය වීමේ තතු නැත"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"අගුළු හැරීමට තට්ටු කරන්න"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-sk/strings.xml b/packages/CredentialManager/wear/res/values-sk/strings.xml
new file mode 100644
index 0000000..fa40ec6
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-sk/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Správca prihlasovacích údajov"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Chcete použiť prístupový kľúč?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Chcete použiť heslo?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Zavrieť"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Pokračovať"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Možnosti prihlásenia"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Možnosti prihlásenia"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Správa prihlasovacích údajov"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Vyberte prihlásenie"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Vyberte prístupový kľúč"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Vyberte heslo"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Prihlásiť sa v telefóne"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Žiadne prihlasovacie údaje"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Odomknite klepnutím"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-sq/strings.xml b/packages/CredentialManager/wear/res/values-sq/strings.xml
new file mode 100644
index 0000000..246cd0b
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-sq/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Menaxheri i kredencialeve"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Të përdoret çelësi i kalimit?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Të përdoret fjalëkalimi?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Hiq"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Vazhdo"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Opsionet për identifikimin"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Opsionet për identifikimin"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Menaxho identifikimet"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Zgjidh një identifikim"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Zgjidh çelësin e kalimit"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Zgjidh fjalëkalimin"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Identifikohu në telefon"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Nuk ka informacione për identifikimin"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Trokit për të shkyçur"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-sr/strings.xml b/packages/CredentialManager/wear/res/values-sr/strings.xml
new file mode 100644
index 0000000..97cdcbc
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-sr/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Менаџер акредитива"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Желите да користите приступни кључ?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Желите да користите лозинку?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Одбаци"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Настави"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Опције за пријављивање"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Опције за пријављивање"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Управљајте пријављивањима"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Одаберите пријављивање"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Одаберите приступни кључ"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Одаберите лозинку"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Пријавите се на телефону"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Нема података за пријављивање"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Додирните да бисте откључали"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-sv/strings.xml b/packages/CredentialManager/wear/res/values-sv/strings.xml
new file mode 100644
index 0000000..2d0254a6
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-sv/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Vill du använda nyckeln?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Vill du använda lösenordet?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Stäng"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Fortsätt"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Inloggningsalternativ"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Inloggningsalternativ"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Hantera inloggningar"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Välj en inloggning"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Välj nyckel"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Välj lösenord"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Logga in på telefon"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Inga inloggningsuppgifter"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Tryck för att låsa upp"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-tr/strings.xml b/packages/CredentialManager/wear/res/values-tr/strings.xml
new file mode 100644
index 0000000..a4f512b
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-tr/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Kimlik Bilgisi Yöneticisi"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Geçiş anahtarı kullanılsın mı?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Şifre kullanılsın mı?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Kapat"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Devam"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Oturum açma seçenekleri"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Oturum açma seçenekleri"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Oturum açma bilgilerini yönetin"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Oturum açma bilgilerini seçin"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Geçiş anahtarı seçin"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Şifre seçin"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Telefonda oturum açın"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Oturum açma bilgisi yok"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Kilidi açmak için dokunun"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-uk/strings.xml b/packages/CredentialManager/wear/res/values-uk/strings.xml
new file mode 100644
index 0000000..78b4db3
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-uk/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Менеджер облікових даних"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Використати ключ доступу?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Використати пароль?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Закрити"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Продовжити"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Способи входу"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Способи входу"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Керування даними для входу"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Виберіть спосіб входу"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Виберіть ключ доступу"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Виберіть пароль"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Увійти на телефоні"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Немає даних для входу"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Натисніть, щоб розблокувати"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-zh-rCN/strings.xml b/packages/CredentialManager/wear/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..15f0de6
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-zh-rCN/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"要使用通行密钥吗?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"要使用密码吗?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"关闭"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"继续"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"登录方式"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"登录方式"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"管理登录方式"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"选择登录方式"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"选择通行密钥"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"选择密码"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"在手机上登录"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"无登录信息"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"点按即可解锁"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-zh-rTW/strings.xml b/packages/CredentialManager/wear/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..82149e3
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-zh-rTW/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Credential Manager"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"要使用密碼金鑰嗎?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"要使用密碼嗎?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"關閉"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"繼續"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"登入選項"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"登入選項"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"管理登入憑證"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"選擇登入憑證"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"選擇密碼金鑰"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"選擇密碼"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"在手機上登入"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"沒有登入資訊"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"輕觸即可解鎖"</string>
+</resources>
diff --git a/packages/CredentialManager/wear/res/values-zu/strings.xml b/packages/CredentialManager/wear/res/values-zu/strings.xml
new file mode 100644
index 0000000..c7fd5a8
--- /dev/null
+++ b/packages/CredentialManager/wear/res/values-zu/strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="7384524142163511792">"Umphathi wokuqinisekisa"</string>
+ <string name="use_passkey_title" msgid="716598039340757817">"Sebenzisa ukhiye wokudlula?"</string>
+ <string name="use_password_title" msgid="4655101984031246476">"Sebenzisa iphasiwedi?"</string>
+ <string name="dialog_dismiss_button" msgid="989567669882005067">"Cashisa"</string>
+ <string name="dialog_continue_button" msgid="8630290044077052145">"Qhubeka"</string>
+ <string name="dialog_sign_in_options_button" msgid="448002958902615054">"Okungakhethwa kukho kokungena ngemvume"</string>
+ <string name="sign_in_options_title" msgid="6720572645638986680">"Okungakhethwa kukho kokungena ngemvume"</string>
+ <string name="provider_list_title" msgid="6803918216129492212">"Phatha ukungena ngemvume"</string>
+ <string name="choose_sign_in_title" msgid="3616025924746872202">"Khetha ukungena ngemvume"</string>
+ <string name="choose_passkey_title" msgid="8459270617632817465">"Khetha ukhiye wokudlula"</string>
+ <string name="choose_password_title" msgid="7610721820858017214">"Khetha iphasiwedi"</string>
+ <string name="sign_in_on_phone_button" msgid="7618621977586522403">"Ngena ngemvume kufoni"</string>
+ <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"Alukho ulwazi lokungena ngemvume"</string>
+ <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"Thepha ukuze uvule"</string>
+</resources>
diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml
index fd50761..a6f5f3a 100644
--- a/packages/InputDevices/res/values-am/strings.xml
+++ b/packages/InputDevices/res/values-am/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ታይላንድኛ (ፓታሾት)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ሰርቢያኛ (ላቲን)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ሞንቴኔግሮኛ (ላቲን)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ሰርቢያኛ (ሲሪሊክኛ)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ሞንቴኔግሮኛ (ሲሪሊክኛ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml
index ac73038..f92d0de 100644
--- a/packages/InputDevices/res/values-ar/strings.xml
+++ b/packages/InputDevices/res/values-ar/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"التايلاندية (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"الصربية (اللاتينية)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"لغة الجبل الأسود (اللاتينية)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"الصربية (السيريلية)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"لغة الجبل الأسود (السيريلية)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml
index 1162c72..8084da3 100644
--- a/packages/InputDevices/res/values-as/strings.xml
+++ b/packages/InputDevices/res/values-as/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"থাই (পাটাচ’টে)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ছাৰ্বিয়ান (লেটিন)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"মণ্টেনেগ্ৰিণ (লেটিন)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ছাৰ্বিয়ান (চিৰিলিক)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মণ্টেনেগ্ৰিণ (চিৰিলিক)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml
index 6a6a99d..068a771 100644
--- a/packages/InputDevices/res/values-az/strings.xml
+++ b/packages/InputDevices/res/values-az/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tay (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serb dili (Latın)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monteneqro dili (Latın)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb dili (Kiril)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monteneqro dili (Kiril)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
index 96ac10cb..334b032 100644
--- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml
+++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajski (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srpski (latinica)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml
index e8341a1..c112665 100644
--- a/packages/InputDevices/res/values-be/strings.xml
+++ b/packages/InputDevices/res/values-be/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайская (Патачотэ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербская (лацініца)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Чарнагорская (лацініца)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербская (кірыліца)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чарнагорская (кірыліца)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml
index b6a5b00..8a650b2 100644
--- a/packages/InputDevices/res/values-bg/strings.xml
+++ b/packages/InputDevices/res/values-bg/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"тайландски (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"сръбски (латиница)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"черногорски (латиница)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"сръбски (кирилица)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"черногорски (кирилица)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml
index 353b6dc..02ab507 100644
--- a/packages/InputDevices/res/values-bn/strings.xml
+++ b/packages/InputDevices/res/values-bn/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"থাই (পাট্টাচোটে)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"সার্বিয়ান (ল্যাটিন)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"মন্টেনেগ্রিন (ল্যাটিন)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"সার্বিয়ান (সিরিলিক)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মন্টেনেগ্রিন (সিরিলিক)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml
index 0145b0a..e1aef5d 100644
--- a/packages/InputDevices/res/values-bs/strings.xml
+++ b/packages/InputDevices/res/values-bs/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajlandski (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srpski (latinica)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml
index d729c91..f9b2e5e 100644
--- a/packages/InputDevices/res/values-ca/strings.xml
+++ b/packages/InputDevices/res/values-ca/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbi (llatí)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrí (llatí)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbi (ciríl·lic)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrí (ciríl·lic)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml
index 170fa58..72efbc4 100644
--- a/packages/InputDevices/res/values-cs/strings.xml
+++ b/packages/InputDevices/res/values-cs/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thajština (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srbština (latinka)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"černohorština (latinka)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbština (cyrilice)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"černohorština (cyrilice)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml
index 47fcfb1..6ce0b8b 100644
--- a/packages/InputDevices/res/values-da/strings.xml
+++ b/packages/InputDevices/res/values-da/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisk (latinsk)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrinsk (latinsk)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinsk (kyrillisk)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml
index 1f6b65d..0dc4e2a 100644
--- a/packages/InputDevices/res/values-de/strings.xml
+++ b/packages/InputDevices/res/values-de/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thailändisch (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisch (lat. Alphabet)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrinisch (lat. Alphabet)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisch (kyrillisch)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinisch (kyrillisch)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml
index 2a9dd8c..08357db 100644
--- a/packages/InputDevices/res/values-el/strings.xml
+++ b/packages/InputDevices/res/values-el/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Ταϊλανδικά (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Σερβικά (Λατινικά)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Μαυροβουνιακά (Λατινικά)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Σερβικά (Κυριλλικά)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Μαυροβουνιακά (Κυριλλικά)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml
index e27fb64..0e9e6eb 100644
--- a/packages/InputDevices/res/values-en-rAU/strings.xml
+++ b/packages/InputDevices/res/values-en-rAU/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml
index e27fb64..0e9e6eb 100644
--- a/packages/InputDevices/res/values-en-rGB/strings.xml
+++ b/packages/InputDevices/res/values-en-rGB/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml
index e27fb64..0e9e6eb 100644
--- a/packages/InputDevices/res/values-en-rIN/strings.xml
+++ b/packages/InputDevices/res/values-en-rIN/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml
index 049edf4..321b9a5 100644
--- a/packages/InputDevices/res/values-es-rUS/strings.xml
+++ b/packages/InputDevices/res/values-es-rUS/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandés (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbio (latino)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml
index b6e27c5..9807652 100644
--- a/packages/InputDevices/res/values-es/strings.xml
+++ b/packages/InputDevices/res/values-es/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandés (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbio (latino)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml
index cecf304d..eb7ea9f 100644
--- a/packages/InputDevices/res/values-et/strings.xml
+++ b/packages/InputDevices/res/values-et/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbia (ladina)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegro (ladina)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kirillitsa)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kirillitsa)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml
index 481b315..5370759 100644
--- a/packages/InputDevices/res/values-eu/strings.xml
+++ b/packages/InputDevices/res/values-eu/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thailandiarra (pattachote-a)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbiarra (latindarra)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegroarra (latindarra)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbiarra (zirilikoa)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegroarra (zirilikoa)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml
index 9614fef..9bbf4e3 100644
--- a/packages/InputDevices/res/values-fa/strings.xml
+++ b/packages/InputDevices/res/values-fa/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"تایلندی (پاتاچوته)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"صربی (لاتین)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"مونتهنگرویی (لاتین)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"صربی (سیریلیک)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونتهنگرویی (سیریلیک)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml
index afae51b..3e88c20 100644
--- a/packages/InputDevices/res/values-fi/strings.xml
+++ b/packages/InputDevices/res/values-fi/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thai (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"serbia (latinalainen)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegro (latinalainen)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kyrillinen)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kyrillinen)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml
index f2d79df..690fbad 100644
--- a/packages/InputDevices/res/values-fr-rCA/strings.xml
+++ b/packages/InputDevices/res/values-fr-rCA/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thaï (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbe (latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monténégrin (latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml
index 61891c3..70bd250 100644
--- a/packages/InputDevices/res/values-fr/strings.xml
+++ b/packages/InputDevices/res/values-fr/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thaï (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbe (latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monténégrin (latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml
index f04b2d2..3f1b31a 100644
--- a/packages/InputDevices/res/values-gu/strings.xml
+++ b/packages/InputDevices/res/values-gu/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"થાઇ (પટ્ટાશોટે)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"સર્બિયન (લેટિન)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"મોંટેનેગ્રીન (લેટિન)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"સર્બિયન (સિરિલિક)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"મોંટેનેગ્રીન (સિરિલિક)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml
index 1017ef1..db59eba 100644
--- a/packages/InputDevices/res/values-hi/strings.xml
+++ b/packages/InputDevices/res/values-hi/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"थाई (पटैचोटे)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"सर्बियन (लैटिन)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मॉन्टेनीग्रिन (लैटिन)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोंटेनेग्रिन (सिरिलिक)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml
index bc630bc..905dce2 100644
--- a/packages/InputDevices/res/values-hr/strings.xml
+++ b/packages/InputDevices/res/values-hr/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajski (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srpski (latinica)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml
index 5155543..4c8e7b8 100644
--- a/packages/InputDevices/res/values-hu/strings.xml
+++ b/packages/InputDevices/res/values-hu/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thai (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"szerb (latin betűs)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegrói (latin betűs)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"szerb (cirill betűs)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrói (cirill betűs)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml
index 8097438..ae56fc5 100644
--- a/packages/InputDevices/res/values-hy/strings.xml
+++ b/packages/InputDevices/res/values-hy/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"թայերեն (պատաչոտ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"սերբերեն (լատինատառ)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"չեռնոգորերեն (լատինատառ)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"սերբերեն (կյուրեղատառ)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"չեռնոգորերեն (կյուրեղատառ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml
index 1c52e9c..52bc039 100644
--- a/packages/InputDevices/res/values-in/strings.xml
+++ b/packages/InputDevices/res/values-in/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbia (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegro (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Sirilik)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegro (Sirilik)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml
index bf428ba..0f516ce 100644
--- a/packages/InputDevices/res/values-is/strings.xml
+++ b/packages/InputDevices/res/values-is/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Taílenskt (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbneska (latneskt)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Svartfellska (latneskt)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbneska (kyrillískt)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Svartfellska (kyrillískt)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml
index bb3b12c..f77b87c 100644
--- a/packages/InputDevices/res/values-it/strings.xml
+++ b/packages/InputDevices/res/values-it/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbo (latino)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbo (cirillico)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirillico)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml
index f44235a..0e400e2 100644
--- a/packages/InputDevices/res/values-iw/strings.xml
+++ b/packages/InputDevices/res/values-iw/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"תאית (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"סרבית (לטינית)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"מונטנגרית (לטינית)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"סרבית (אותיות קיריליות)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"מונטנגרית (אותיות קיריליות)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml
index 55b9642..b1830eb 100644
--- a/packages/InputDevices/res/values-ja/strings.xml
+++ b/packages/InputDevices/res/values-ja/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"タイ語(Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"セルビア語(ラテン文字)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"モンテネグロ語(ラテン)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"セルビア語(キリル)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"モンテネグロ語(キリル)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml
index 8696fb2..75c72b9 100644
--- a/packages/InputDevices/res/values-ka/strings.xml
+++ b/packages/InputDevices/res/values-ka/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ტაილანდური (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"სერბული (ლათინური)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"მონტენეგრული (ლათინური)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"სერბული (კირილიცა)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"მონტენეგრული (კირილიცა)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml
index 2e7236c..c0a5868 100644
--- a/packages/InputDevices/res/values-kk/strings.xml
+++ b/packages/InputDevices/res/values-kk/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тай (паттачот)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Серб (латын жазуы)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Черногор (латын жазуы)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербия (кириллица)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногория (кириллица)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml
index 2689258..6c3db64 100644
--- a/packages/InputDevices/res/values-km/strings.xml
+++ b/packages/InputDevices/res/values-km/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ថៃ (ប៉ាតាឈោត)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ស៊ែប៊ី (ឡាតាំង)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ម៉ុងតេណេហ្គ្រោ (ឡាតាំង)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"សែប៊ី (ស៊ីរីលីក)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ម៉ុងតេណេហ្គ្រោ (ស៊ីរីលីក)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml
index 34d9053..0f4c522 100644
--- a/packages/InputDevices/res/values-kn/strings.xml
+++ b/packages/InputDevices/res/values-kn/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ಥಾಯ್ (ಪಟ್ಟಚೋಟ್)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ಸೆರ್ಬಿಯನ್ (ಲ್ಯಾಟಿನ್)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಲ್ಯಾಟಿನ್)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ಸೆರ್ಬಿಯನ್ (ಸಿರಿಲಿಕ್)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಸಿರಿಲಿಕ್)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml
index ad99961..dcfb3b4 100644
--- a/packages/InputDevices/res/values-ko/strings.xml
+++ b/packages/InputDevices/res/values-ko/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"태국어(Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"세르비아어(로마자)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"몬테네그로어(로마자)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"세르비아어(키릴 자모)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"몬테네그로어(키릴)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml
index 79ff71e..c0b3d3a 100644
--- a/packages/InputDevices/res/values-ky/strings.xml
+++ b/packages/InputDevices/res/values-ky/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайча (Pattachote баскычтобу)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербче (Латын)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Монтенегрочо (Латын)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербче (Кирилл)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногориялыкча (Кирилл)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml
index 2427d1c..c2e5a2b 100644
--- a/packages/InputDevices/res/values-lo/strings.xml
+++ b/packages/InputDevices/res/values-lo/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ໄທ (ປັດຕະໂຊຕິ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ເຊີບຽນ (ລາຕິນ)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ມອນເທເນກຣິນ (ລາຕິນ)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ເຊີບຽນ (ຊີຣິວລິກ)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ມອນເທເນກຣິນ (ຊີຣິວລິກ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml
index 48010bc..9a98e8e 100644
--- a/packages/InputDevices/res/values-lt/strings.xml
+++ b/packages/InputDevices/res/values-lt/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tajų („Pattachote“)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbų (lotynų rašmenys)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Juodkalniečių (lotynų rašmenys)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbų (kirilica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Juodkalniečių (kirilica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml
index a2e8f8f..d3422b2 100644
--- a/packages/InputDevices/res/values-lv/strings.xml
+++ b/packages/InputDevices/res/values-lv/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Taju (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbu (latīņu)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Melnkalniešu (latīņu)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbu (kirilica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Melnkalniešu (kirilica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml
index 13cc8e1..ccb0939 100644
--- a/packages/InputDevices/res/values-mk/strings.xml
+++ b/packages/InputDevices/res/values-mk/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"тајландски (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"српски (латиница)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"црногорски (латиница)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (кирилица)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (кирилица)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml
index fda477b..5a7b601 100644
--- a/packages/InputDevices/res/values-ml/strings.xml
+++ b/packages/InputDevices/res/values-ml/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"തായ് (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"സെർബിയൻ (ലാറ്റിൻ)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"മോണ്ടിനെഗ്രിൻ (ലാറ്റിൻ)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"സെർബിയൻ (സിറിലിക്)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"മോണ്ടിനെഗ്രിൻ (സിറിലിക്)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml
index a6d3320..0044eb2 100644
--- a/packages/InputDevices/res/values-mn/strings.xml
+++ b/packages/InputDevices/res/values-mn/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тай (паттачоте)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Серби (латин)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Монтенегро (латин)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Серби (кирилл)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Монтенегро (кирилл)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml
index faae021..d306dda 100644
--- a/packages/InputDevices/res/values-mr/strings.xml
+++ b/packages/InputDevices/res/values-mr/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"थाई (पट्टाचोटे)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"सर्बियन (लॅटिन)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मॉन्टेनेग्रिन (लॅटिन)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मॉन्टेनेग्रिन (सिरिलिक)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml
index 9f14260..d1b1654 100644
--- a/packages/InputDevices/res/values-ms/strings.xml
+++ b/packages/InputDevices/res/values-ms/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbia (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Cyril)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyril)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml
index bb26027..fb55344 100644
--- a/packages/InputDevices/res/values-my/strings.xml
+++ b/packages/InputDevices/res/values-my/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ထိုင်း (ပတ်တာချုတ်)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ဆားဘီးယား (လက်တင်)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"မွန်တီနီဂရင်း (လက်တင်)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ဆားဘီးယား (စီရီလစ်)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"မွန်တီနီဂရင်း (စီရီလစ်)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
index 402d7ee..7ac2a82 100644
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ b/packages/InputDevices/res/values-nb/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisk (latinsk)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrisk (latinsk)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrisk (kyrillisk)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml
index a60cf36..113489d 100644
--- a/packages/InputDevices/res/values-ne/strings.xml
+++ b/packages/InputDevices/res/values-ne/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"थाई (पत्ताचोते)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"सर्बियाली (ल्याटिन)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मोन्टेनिग्रिन (ल्याटिन)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियाली (सिरिलिक)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोन्टेनिग्रिन (सिरिलिक)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml
index bb0c945..0e954e9 100644
--- a/packages/InputDevices/res/values-nl/strings.xml
+++ b/packages/InputDevices/res/values-nl/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Servisch (Latijns)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrijns (Latijns)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Servisch (Cyrillisch)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrijns (Cyrillisch)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml
index 2bf862b..d9d8520 100644
--- a/packages/InputDevices/res/values-or/strings.xml
+++ b/packages/InputDevices/res/values-or/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ଥାଇ (ପାଟ୍ଟାଚୋଟେ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ସର୍ବିଆନ (ଲାଟିନ)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ମଣ୍ଟେନେଗ୍ରିନ (ଲାଟିନ)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ସର୍ବିଆନ (ସିରିଲିକ)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ମଣ୍ଟେନେଗ୍ରିନ (ସିରିଲିକ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml
index c1fee5f..85b0d19 100644
--- a/packages/InputDevices/res/values-pa/strings.xml
+++ b/packages/InputDevices/res/values-pa/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ਥਾਈ (ਪੈਟਾਸ਼ੋਟੇ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"ਸਰਬੀਆਈ (ਲਾਤੀਨੀ)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ਮਾਂਟੇਨੀਗਰਿਨ (ਲਾਤੀਨੀ)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ਸਰਬੀਆਈ (ਸਿਰਿਲਿਕ)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ਮਾਂਟੇਨੀਗਰਿਨ (ਸਿਰਿਲਿਕ)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml
index d3e4a3a..7fb90d2 100644
--- a/packages/InputDevices/res/values-pl/strings.xml
+++ b/packages/InputDevices/res/values-pl/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajski (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"serbski (alfabet łaciński)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"czarnogórski (alfabet łaciński)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbski (cyrylica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"czarnogórski (cyrylica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml
index 94a10c5..2b92c81 100644
--- a/packages/InputDevices/res/values-pt-rBR/strings.xml
+++ b/packages/InputDevices/res/values-pt-rBR/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandês (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sérvio (latim)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml
index 8c22776..98cf7e2 100644
--- a/packages/InputDevices/res/values-pt-rPT/strings.xml
+++ b/packages/InputDevices/res/values-pt-rPT/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandês (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sérvio (latim)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml
index 94a10c5..2b92c81 100644
--- a/packages/InputDevices/res/values-pt/strings.xml
+++ b/packages/InputDevices/res/values-pt/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tailandês (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sérvio (latim)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml
index 654f168..71d1995 100644
--- a/packages/InputDevices/res/values-ro/strings.xml
+++ b/packages/InputDevices/res/values-ro/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thailandeză (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sârbă (caractere latine)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Muntenegreană (caractere latine)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sârbă (caractere chirilice)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Muntenegreană (Chirilică)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml
index 05b1b25..13130fc 100644
--- a/packages/InputDevices/res/values-ru/strings.xml
+++ b/packages/InputDevices/res/values-ru/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайский (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербский (латиница)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Черногорский (латиница)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербский (кириллица)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногорский (кириллица)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml
index 8d36553..80c674d 100644
--- a/packages/InputDevices/res/values-si/strings.xml
+++ b/packages/InputDevices/res/values-si/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"තායි (පට්ටචෝටේ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"සර්බියානු (ලතින්)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"මොන්ටෙනේග්රීන් (ලතින්)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"සර්බියානු (සිරිලික්)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"මොන්ටෙනේග්රීන් (සිරිලික්)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml
index 33e1651..6ce98cc 100644
--- a/packages/InputDevices/res/values-sk/strings.xml
+++ b/packages/InputDevices/res/values-sk/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thajčina (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srbčina (latinka)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"čiernohorčina (latinka)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbčina (cyrilika)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"čiernohorčina (cyrilika)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml
index e40cca7..2926423 100644
--- a/packages/InputDevices/res/values-sl/strings.xml
+++ b/packages/InputDevices/res/values-sl/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"tajščina (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"srbščina (latinica)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"črnogorščina (latinica)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbščina (cirilica)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"črnogorščina (cirilica)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml
index 46405ba..06f76f3 100644
--- a/packages/InputDevices/res/values-sq/strings.xml
+++ b/packages/InputDevices/res/values-sq/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tajlandisht (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbisht (latine)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Malazisht (latine)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisht (cirilike)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Malazisht (cirilike)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml
index 5642040..1172fef2 100644
--- a/packages/InputDevices/res/values-sr/strings.xml
+++ b/packages/InputDevices/res/values-sr/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"тајски (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"српски (латиница)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"црногорски (латиница)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (ћирилица)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (ћирилица)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml
index 9ba1227..946854c 100644
--- a/packages/InputDevices/res/values-sv/strings.xml
+++ b/packages/InputDevices/res/values-sv/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"thailändska (pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"serbiska (latinskt)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegrinska (latinskt)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbiska (kyrilliskt)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrinska (kyrilliskt)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml
index 5da8542..c3578d8 100644
--- a/packages/InputDevices/res/values-sw/strings.xml
+++ b/packages/InputDevices/res/values-sw/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Kitai (Kipatachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Kiserbia (Kilatini)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Kimontenegri (Kilatini)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Kiserbia (Kisiriliki)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Kimontenegri (Kisiriliki)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml
index becffd3..5c3f57e 100644
--- a/packages/InputDevices/res/values-ta/strings.xml
+++ b/packages/InputDevices/res/values-ta/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"தாய் (பட்டாசொட்டே)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"செர்பியன் (லத்தீன்)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"மாண்டினெக்ரன் (லத்தீன்)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"செர்பியன் (சிரிலிக்)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"மாண்டினெக்ரன் (சிரிலிக்)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml
index 1d2fcb4..a0674d6 100644
--- a/packages/InputDevices/res/values-te/strings.xml
+++ b/packages/InputDevices/res/values-te/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"థాయ్ (పత్తచోత్)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"సెర్బియన్ (లాటిన్)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"మాంటెనెగ్రిన్ (లాటిన్)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"సెర్బియన్ (సిరిలిక్)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"మాంటెనెగ్రిన్ (సిరిలిక్)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml
index 318a3bb..a946596 100644
--- a/packages/InputDevices/res/values-th/strings.xml
+++ b/packages/InputDevices/res/values-th/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"ไทย (ปัตตะโชติ)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"เซอร์เบีย (ละติน)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"มอนเตเนโกร (ละติน)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"เซอร์เบีย (ซีริลลิก)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"มอนเตเนโกร (ซีริลลิก)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml
index 062dff0..0a5d3cc 100644
--- a/packages/InputDevices/res/values-tl/strings.xml
+++ b/packages/InputDevices/res/values-tl/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serbian (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml
index c6d38f4..f37a098 100644
--- a/packages/InputDevices/res/values-tr/strings.xml
+++ b/packages/InputDevices/res/values-tr/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tayca (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Sırpça (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Karadağca (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sırpça (Kiril)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Karadağca (Kiril)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml
index 357747b..d496dfa 100644
--- a/packages/InputDevices/res/values-uk/strings.xml
+++ b/packages/InputDevices/res/values-uk/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Тайська (паттачоте)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Сербська (латиниця)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Чорногорська (латиниця)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербська (кирилиця)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чорногорська (кирилиця)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml
index 7b4c104..7293858 100644
--- a/packages/InputDevices/res/values-ur/strings.xml
+++ b/packages/InputDevices/res/values-ur/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"تھائی (پٹاچوٹے)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"سربیائی (لاطینی)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"مونٹے نیگریائی (لاطینی)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"سربیائی (سیریلک)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونٹے نیگریائی (سیریلک)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml
index 60e7405..f212e2c 100644
--- a/packages/InputDevices/res/values-uz/strings.xml
+++ b/packages/InputDevices/res/values-uz/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tay (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Serb (lotin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Chernogor (lotin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb (kirill)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Chernogor (kirill)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml
index 6fe39d2..f3d2cc4 100644
--- a/packages/InputDevices/res/values-vi/strings.xml
+++ b/packages/InputDevices/res/values-vi/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Tiếng Thái (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"Tiếng Serbia (Latinh)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Tiếng Montenegro (Latinh)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Tiếng Serbia (Chữ Kirin)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Tiếng Montenegro (Chữ Kirin)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml
index 6e96e5d..1f74d34 100644
--- a/packages/InputDevices/res/values-zh-rCN/strings.xml
+++ b/packages/InputDevices/res/values-zh-rCN/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"泰语 (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"塞尔维亚语(拉丁字母)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"黑山语(拉丁字母)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞尔维亚语(西里尔字母)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"黑山语(西里尔字母)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml
index 3d1a895..9c6864a 100644
--- a/packages/InputDevices/res/values-zh-rHK/strings.xml
+++ b/packages/InputDevices/res/values-zh-rHK/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"泰文 (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"塞爾維亞文 (拉丁)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"蒙特內哥羅文 (拉丁)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml
index 26be41b..f4159c9 100644
--- a/packages/InputDevices/res/values-zh-rTW/strings.xml
+++ b/packages/InputDevices/res/values-zh-rTW/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"泰文 (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"塞爾維亞文 (拉丁字母)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"蒙特內哥羅文 (拉丁字母)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string>
</resources>
diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml
index f6f6a77..ead5a45 100644
--- a/packages/InputDevices/res/values-zu/strings.xml
+++ b/packages/InputDevices/res/values-zu/strings.xml
@@ -54,8 +54,6 @@
<string name="keyboard_layout_thai_pattachote" msgid="2547992342794252205">"Isi-Thai (Pattachote)"</string>
<string name="keyboard_layout_serbian_latin" msgid="3128791759390046571">"IsiSerbian (Latin)"</string>
<string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"IsiMontenegrin (Latin)"</string>
- <!-- no translation found for keyboard_layout_serbian_cyrillic (7013541044323542196) -->
- <skip />
- <!-- no translation found for keyboard_layout_montenegrin_cyrillic (2391253952894077421) -->
- <skip />
+ <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string>
+ <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string>
</resources>
diff --git a/packages/SettingsLib/LayoutPreference/res/layout/settings_entity_header.xml b/packages/SettingsLib/LayoutPreference/res/layout/settings_entity_header.xml
index c629d96..b967405 100644
--- a/packages/SettingsLib/LayoutPreference/res/layout/settings_entity_header.xml
+++ b/packages/SettingsLib/LayoutPreference/res/layout/settings_entity_header.xml
@@ -18,38 +18,19 @@
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/entity_header"
- style="@style/EntityHeader"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
- android:orientation="horizontal">
+ style="@style/SettingsLibEntityHeader">
<LinearLayout
android:id="@+id/entity_header_content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:gravity="center_horizontal"
- android:orientation="vertical">
+ style="@style/SettingsLibEntityHeaderContent">
<ImageView
android:id="@+id/entity_header_icon"
- android:layout_width="48dp"
- android:layout_height="48dp"
- android:scaleType="fitCenter"
- android:antialias="true"/>
+ style="@style/SettingsLibEntityHeaderIcon"/>
<TextView
android:id="@+id/entity_header_title"
- style="@style/TextAppearance.EntityHeaderTitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="false"
- android:gravity="center"
- android:ellipsize="marquee"
- android:textDirection="locale"
- android:layout_marginTop="8dp"/>
+ style="@style/SettingsLibEntityHeaderTitle"/>
<TextView
android:id="@+id/install_type"
diff --git a/packages/SettingsLib/LayoutPreference/res/values/styles.xml b/packages/SettingsLib/LayoutPreference/res/values/styles.xml
index f958037..c9d3597 100644
--- a/packages/SettingsLib/LayoutPreference/res/values/styles.xml
+++ b/packages/SettingsLib/LayoutPreference/res/values/styles.xml
@@ -22,6 +22,39 @@
<item name="android:paddingEnd">16dp</item>
</style>
+ <style name="SettingsLibEntityHeader" parent="EntityHeader">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:paddingStart">?android:attr/listPreferredItemPaddingStart</item>
+ <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingEnd</item>
+ </style>
+
+ <style name="SettingsLibEntityHeaderContent">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_centerHorizontal">true</item>
+ <item name="android:orientation">vertical</item>
+ <item name="android:gravity">center_horizontal</item>
+ </style>
+
+ <style name="SettingsLibEntityHeaderIcon">
+ <item name="android:layout_width">48dp</item>
+ <item name="android:layout_height">48dp</item>
+ <item name="android:scaleType">fitCenter</item>
+ <item name="android:antialias">true</item>
+ </style>
+
+ <style name="SettingsLibEntityHeaderTitle">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginTop">8dp</item>
+ <item name="android:singleLine">false</item>
+ <item name="android:gravity">center</item>
+ <item name="android:ellipsize">marquee</item>
+ <item name="android:textDirection">locale</item>
+ <item name="android:textAppearance">@style/TextAppearance.EntityHeaderTitle</item>
+ </style>
+
<style name="CrossProfileEntityHeaderIcon">
<item name="android:layout_width">48dp</item>
<item name="android:layout_height">48dp</item>
@@ -52,4 +85,4 @@
<item name="android:fontFamily">google-sans-medium</item>
<item name="android:layout_marginTop">8dp</item>
</style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/EntrySliceData.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/EntrySliceData.kt
deleted file mode 100644
index fc551a8..0000000
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/EntrySliceData.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settingslib.spa.framework.common
-
-import androidx.lifecycle.LiveData
-import androidx.slice.Slice
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.launch
-
-open class EntrySliceData : LiveData<Slice?>() {
- private val asyncRunnerScope = CoroutineScope(Dispatchers.IO)
- private var asyncRunnerJob: Job? = null
- private var asyncActionJob: Job? = null
- private var isActive = false
-
- open suspend fun asyncRunner() {}
-
- open suspend fun asyncAction() {}
-
- override fun onActive() {
- asyncRunnerJob?.cancel()
- asyncRunnerJob = asyncRunnerScope.launch { asyncRunner() }
- isActive = true
- }
-
- override fun onInactive() {
- asyncRunnerJob?.cancel()
- asyncRunnerJob = null
- asyncActionJob?.cancel()
- asyncActionJob = null
- isActive = false
- }
-
- fun isActive(): Boolean {
- return isActive
- }
-
- fun doAction() {
- asyncActionJob?.cancel()
- asyncActionJob = asyncRunnerScope.launch { asyncAction() }
- }
-}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntry.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntry.kt
index 90581b9..3f53091 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntry.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntry.kt
@@ -16,7 +16,6 @@
package com.android.settingslib.spa.framework.common
-import android.net.Uri
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
@@ -42,7 +41,6 @@
typealias UiLayerRenderer = @Composable (arguments: Bundle?) -> Unit
typealias StatusDataGetter = (arguments: Bundle?) -> EntryStatusData?
typealias SearchDataGetter = (arguments: Bundle?) -> EntrySearchData?
-typealias SliceDataGetter = (sliceUri: Uri, arguments: Bundle?) -> EntrySliceData?
/**
* Defines data of a Settings entry.
@@ -80,9 +78,6 @@
// If so, for instance, we'll reindex its status for search.
val hasMutableStatus: Boolean = false,
- // Indicate whether the entry has SliceProvider support.
- val hasSliceSupport: Boolean = false,
-
/**
* ========================================
* Defines entry APIs to get data here.
@@ -102,12 +97,6 @@
private val searchDataImpl: SearchDataGetter = { null },
/**
- * API to get Slice data of this entry. The Slice data is implemented as a LiveData,
- * and is associated with the Slice's lifecycle (pin / unpin) by the framework.
- */
- private val sliceDataImpl: SliceDataGetter = { _: Uri, _: Bundle? -> null },
-
- /**
* API to Render UI of this entry directly. For now, we use it in the internal injection, to
* support the case that the injection page owner wants to maintain both data and UI of the
* injected entry. In the long term, we may deprecate the @Composable Page() API in SPP, and
@@ -137,10 +126,6 @@
return searchDataImpl(fullArgument(runtimeArguments))
}
- fun getSliceData(sliceUri: Uri, runtimeArguments: Bundle? = null): EntrySliceData? {
- return sliceDataImpl(sliceUri, fullArgument(runtimeArguments))
- }
-
@Composable
fun UiLayout(runtimeArguments: Bundle? = null) {
val arguments = remember { fullArgument(runtimeArguments) }
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntryBuilder.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntryBuilder.kt
index 0d489e8..085c3c6 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntryBuilder.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SettingsEntryBuilder.kt
@@ -16,7 +16,6 @@
package com.android.settingslib.spa.framework.common
-import android.net.Uri
import android.os.Bundle
import androidx.compose.runtime.remember
import com.android.settingslib.spa.framework.util.genEntryId
@@ -36,13 +35,11 @@
private var isAllowSearch: Boolean = false
private var isSearchDataDynamic: Boolean = false
private var hasMutableStatus: Boolean = false
- private var hasSliceSupport: Boolean = false
// Functions
private var uiLayoutFn: UiLayerRenderer = { }
private var statusDataFn: StatusDataGetter = { null }
private var searchDataFn: SearchDataGetter = { null }
- private var sliceDataFn: SliceDataGetter = { _: Uri, _: Bundle? -> null }
fun build(): SettingsEntry {
val page = fromPage ?: owner
@@ -62,12 +59,10 @@
isAllowSearch = isEnabled && isAllowSearch,
isSearchDataDynamic = isSearchDataDynamic,
hasMutableStatus = hasMutableStatus,
- hasSliceSupport = isEnabled && hasSliceSupport,
// functions
statusDataImpl = statusDataFn,
searchDataImpl = searchDataFn,
- sliceDataImpl = sliceDataFn,
uiLayoutImpl = uiLayoutFn,
)
}
@@ -123,12 +118,6 @@
return this
}
- fun setSliceDataFn(fn: SliceDataGetter): SettingsEntryBuilder {
- this.sliceDataFn = fn
- this.hasSliceSupport = true
- return this
- }
-
fun setUiLayoutFn(fn: UiLayerRenderer): SettingsEntryBuilder {
this.uiLayoutFn = fn
return this
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaEnvironment.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaEnvironment.kt
index 6e5132b..11ae9e9 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaEnvironment.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaEnvironment.kt
@@ -74,7 +74,7 @@
// Set your SpaLogger implementation, for any SPA events logging.
open val logger: SpaLogger = object : SpaLogger {}
- // Specify class name of browse activity and slice broadcast receiver, which is used to
+ // Specify class name of browse activity, which is used to
// generate the necessary intents.
open val browseActivityClass: Class<out Activity>? = null
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/slice/SliceUtil.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/slice/SliceUtil.kt
deleted file mode 100644
index ec89c7c..0000000
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/slice/SliceUtil.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settingslib.spa.slice
-
-import android.net.Uri
-import android.os.Bundle
-import com.android.settingslib.spa.framework.util.KEY_DESTINATION
-import com.android.settingslib.spa.framework.util.KEY_HIGHLIGHT_ENTRY
-
-// Defines SliceUri, which contains special query parameters:
-// -- KEY_DESTINATION: The route that this slice is navigated to.
-// -- KEY_HIGHLIGHT_ENTRY: The entry id of this slice
-// Other parameters can considered as runtime parameters.
-// Use {entryId, runtimeParams} as the unique Id of this Slice.
-typealias SliceUri = Uri
-
-fun SliceUri.getEntryId(): String? {
- return getQueryParameter(KEY_HIGHLIGHT_ENTRY)
-}
-
-fun Uri.Builder.appendSpaParams(
- destination: String? = null,
- entryId: String? = null,
- runtimeArguments: Bundle? = null
-): Uri.Builder {
- if (destination != null) appendQueryParameter(KEY_DESTINATION, destination)
- if (entryId != null) appendQueryParameter(KEY_HIGHLIGHT_ENTRY, entryId)
- if (runtimeArguments != null) {
- for (key in runtimeArguments.keySet()) {
- appendQueryParameter(key, runtimeArguments.getString(key, ""))
- }
- }
- return this
-}
-
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsEntryTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsEntryTest.kt
index ce34979..d0a040c 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsEntryTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/framework/common/SettingsEntryTest.kt
@@ -17,7 +17,6 @@
package com.android.settingslib.spa.framework.common
import android.content.Context
-import android.net.Uri
import androidx.compose.runtime.Composable
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.core.os.bundleOf
@@ -25,8 +24,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.spa.framework.util.genEntryId
import com.android.settingslib.spa.framework.util.genPageId
-import com.android.settingslib.spa.slice.appendSpaParams
-import com.android.settingslib.spa.slice.getEntryId
import com.android.settingslib.spa.tests.testutils.SpaEnvironmentForTest
import com.android.settingslib.spa.tests.testutils.createSettingsPage
import com.google.common.truth.Truth.assertThat
@@ -76,7 +73,6 @@
assertThat(entry.isAllowSearch).isFalse()
assertThat(entry.isSearchDataDynamic).isFalse()
assertThat(entry.hasMutableStatus).isFalse()
- assertThat(entry.hasSliceSupport).isFalse()
}
@Test
@@ -137,7 +133,6 @@
.setIsSearchDataDynamic(false)
.setHasMutableStatus(true)
.setSearchDataFn { null }
- .setSliceDataFn { _, _ -> null }
val entry = entryBuilder.build()
assertThat(entry.id).isEqualTo(genEntryId("myEntry", owner))
assertThat(entry.label).isEqualTo("myEntryDisplay")
@@ -146,7 +141,6 @@
assertThat(entry.isAllowSearch).isTrue()
assertThat(entry.isSearchDataDynamic).isFalse()
assertThat(entry.hasMutableStatus).isTrue()
- assertThat(entry.hasSliceSupport).isTrue()
// Test disabled Spp
val ownerDisabled = createSettingsPage("SppDisabled")
@@ -156,7 +150,6 @@
.setIsSearchDataDynamic(false)
.setHasMutableStatus(true)
.setSearchDataFn { null }
- .setSliceDataFn { _, _ -> null }
val entryDisabled = entryBuilderDisabled.build()
assertThat(entryDisabled.id).isEqualTo(genEntryId("myEntry", ownerDisabled))
assertThat(entryDisabled.label).isEqualTo("myEntryDisplay")
@@ -165,7 +158,6 @@
assertThat(entryDisabled.isAllowSearch).isFalse()
assertThat(entryDisabled.isSearchDataDynamic).isFalse()
assertThat(entryDisabled.hasMutableStatus).isTrue()
- assertThat(entryDisabled.hasSliceSupport).isFalse()
// Clear search data fn
val entry2 = entryBuilder.clearSearchDataFn().build()
@@ -181,7 +173,6 @@
assertThat(entry3.isAllowSearch).isFalse()
assertThat(entry3.isSearchDataDynamic).isFalse()
assertThat(entry3.hasMutableStatus).isTrue()
- assertThat(entry3.hasSliceSupport).isFalse()
}
@Test
@@ -200,7 +191,6 @@
assertThat(entry.isAllowSearch).isTrue()
assertThat(entry.isSearchDataDynamic).isFalse()
assertThat(entry.hasMutableStatus).isFalse()
- assertThat(entry.hasSliceSupport).isFalse()
val searchData = entry.getSearchData(rtArguments)
val statusData = entry.getStatusData(rtArguments)
assertThat(searchData?.title).isEqualTo("myTitle")
@@ -208,25 +198,4 @@
assertThat(statusData?.isDisabled).isTrue()
assertThat(statusData?.isSwitchOff).isTrue()
}
-
- @Test
- fun testSetSliceDataFn() {
- SpaEnvironmentFactory.reset(spaEnvironment)
- val owner = createSettingsPage("SppHome")
- val entryId = genEntryId("myEntry", owner)
- val emptySliceData = EntrySliceData()
-
- val entryBuilder = SettingsEntryBuilder.create(owner, "myEntry").setSliceDataFn { uri, _ ->
- return@setSliceDataFn if (uri.getEntryId() == entryId) emptySliceData else null
- }
- val entry = entryBuilder.build()
- assertThat(entry.id).isEqualTo(entryId)
- assertThat(entry.hasSliceSupport).isTrue()
- assertThat(entry.getSliceData(Uri.EMPTY)).isNull()
- assertThat(
- entry.getSliceData(
- Uri.Builder().scheme("content").appendSpaParams(entryId = entryId).build()
- )
- ).isEqualTo(emptySliceData)
- }
}
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/slice/SliceUtilTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/slice/SliceUtilTest.kt
deleted file mode 100644
index b489afd..0000000
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/slice/SliceUtilTest.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settingslib.spa.slice
-
-import android.net.Uri
-import androidx.core.os.bundleOf
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@RunWith(AndroidJUnit4::class)
-class SliceUtilTest {
- @Test
- fun sliceUriTest() {
- assertThat(Uri.EMPTY.getEntryId()).isNull()
-
- // valid slice uri
- val dest = "myRoute"
- val entryId = "myEntry"
- val sliceUriWithoutParams = Uri.Builder().appendSpaParams(dest, entryId).build()
- assertThat(sliceUriWithoutParams.getEntryId()).isEqualTo(entryId)
-
- val sliceUriWithParams =
- Uri.Builder().appendSpaParams(dest, entryId, bundleOf("p1" to "v1")).build()
- assertThat(sliceUriWithParams.getEntryId()).isEqualTo(entryId)
- }
-}
\ No newline at end of file
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt
index 4f8fd79..9fcf886 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt
@@ -17,9 +17,7 @@
package com.android.settingslib.spa.tests.testutils
import android.app.Activity
-import android.content.BroadcastReceiver
import android.content.Context
-import android.content.Intent
import android.os.Bundle
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -27,7 +25,6 @@
import androidx.navigation.navArgument
import com.android.settingslib.spa.framework.BrowseActivity
import com.android.settingslib.spa.framework.common.EntrySearchData
-import com.android.settingslib.spa.framework.common.EntrySliceData
import com.android.settingslib.spa.framework.common.EntryStatusData
import com.android.settingslib.spa.framework.common.LogCategory
import com.android.settingslib.spa.framework.common.LogEvent
@@ -75,9 +72,6 @@
}
class BlankActivity : BrowseActivity()
-class BlankSliceBroadcastReceiver : BroadcastReceiver() {
- override fun onReceive(p0: Context?, p1: Intent?) {}
-}
object SppHome : SettingsPageProvider {
override val name = "SppHome"
@@ -149,15 +143,7 @@
override fun buildEntry(arguments: Bundle?): List<SettingsEntry> {
val owner = this.createSettingsPage()
return listOf(
- SettingsEntryBuilder.create(owner, "Layer2Entry1")
- .setSliceDataFn { _, _ ->
- return@setSliceDataFn object : EntrySliceData() {
- init {
- postValue(null)
- }
- }
- }
- .build(),
+ SettingsEntryBuilder.create(owner, "Layer2Entry1").build(),
SettingsEntryBuilder.create(owner, "Layer2Entry2").build(),
)
}
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 5632fbd..193d0bc 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Laat laai van GPU-ontfoutlae vir ontfoutapps toe"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktiveer woordryke verkoperloginskrywing"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sluit bykomende toestelspesifieke verkoperloglêers by foutverslae in, wat privaat inligting kan bevat, meer batterykrag kan gebruik, en/of meer berging kan gebruik."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Deaktiveer ná een dag"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Breedsprakige verkoperloginskrywing het geëindig"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Geaktiveer vir een dag"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktiveer vir nog een dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Deaktiveer ná een dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Geaktiveer vir ’n onbepaalde tyd"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Vensteranimasieskaal"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Oorganganimasieskaal"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator-tydsduurskaal"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 4c79154..606a01c 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ለስህተት ማረሚያ መተግበሪያዎች የጂፒዩ ንብርብሮችን መስቀልን ፍቀድ"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"የዝርክርክ ቃላት አቅራቢ ምዝግብ ማስታወሻን መያዝ አንቃ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"በሳንካ ሪፖርቶች ውስጥ ተጨማሪ መሣሪያ-ተኮር የአቅራቢ ምዝግብ ማስታወሻዎችን ያካትቱ፣ ይህም የግል መረጃን ሊይዝ፣ ተጨማሪ ባትሪ ሊፈጅ እና/ወይም ተጨማሪ ማከማቻ ሊጠቀም ይችላል።"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ከአንድ ቀን በኋላ አሰናክል"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"የብዙ ቃላት አቅራቢ መግቢያ አብቅቷል"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ለአንድ ቀን ነቅቷል"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ለአንድ ተጨማሪ ቀን አንቃ"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ከአንድ ቀን በኋላ ይሰናከላል"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"ያለገደብ ነቅቷል"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"የ Window እነማ ልኬት ለውጥ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"የእነማ ልኬት ለውጥ ሽግግር"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"እነማ አድራጊ ቆይታ መለኪያ"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index b4f6c45..da17f80 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ডিবাগ এপসমূহৰ বাবে জিপিইউ ডিবাগ তৰপ ল\'ড কৰিবলৈ অনুমতি দিয়ক"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"বিক্ৰেতাৰ ভাৰ্ব’ছ লগিং সক্ষম কৰক"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"বাগ ৰিপ’ৰ্টসমূহত অতিৰিক্ত ডিভাইচ নিৰ্দিষ্ট বিক্ৰেতাৰ লগসমূহ অন্তৰ্ভুক্ত কৰক, য’ত ব্যক্তিগত তথ্য থাকিব পাৰে, যি অধিক বেটাৰী আৰু/অথবা ষ্ট’ৰেজ ব্যৱহাৰ কৰিব পাৰে।"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"এদিনৰ পাছত অক্ষম কৰক"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ভাৰ্ব’ছ বিক্ৰেতাৰ লগ ইন সমাপ্ত হৈছে"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"এদিনৰ বাবে সক্ষম কৰক"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"আৰু এদিনৰ বাবে সক্ষম কৰক"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"এদিনৰ পাছত অক্ষম কৰে"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"অনিৰ্দিষ্ট কালৰ বাবে সক্ষম কৰা আছে"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ৱিণ্ড\' এনিমেশ্বন স্কেল"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ট্ৰাঞ্জিশ্বন এনিমেশ্বন স্কেল"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"এনিমেটৰ কালদৈৰ্ঘ্য স্কেল"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 77bfd57..5ae1c6e 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Qrafik prosessor qatları sazlanmasının yüklənməsinə icazə verilsin"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Təfsilatlı təchizatçı jurnalı"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Xəta hesabatına təchizatçının cihaz haqqında əlavə qeydləri daxil edilsin. Qeydlərdə şəxsi məlumatlar ola, onlar artıq yer tuta və enerji sərfiyyatını artıra bilər."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Bir gündən sonra deaktiv edin"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Təchizatçının çox sözlülüyə girişi bitib"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Birgünlük aktivləşdirilib"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Daha bir gün üçün aktivləşdirin"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Bir gün sonra deaktiv olur"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Qeyri-müəyyən müddətə aktivləşdirilib"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Pəncərə animasiyası"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Keçid animasiyası"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animasiya müddəti"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 99e3150..2b92c52 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Učitava otklanjanje grešaka GPU-a u apl. za otklanjanje grešaka"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Opširne evidencije prodavca"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uvrštava u izveštaje o greškama dodatne posebne evidencije prodavca za uređaje, koje mogu da sadrže privatne podatke, da troše više baterije i/ili da koriste više memorije."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Onemogući posle jednog dana"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Detaljno evidentiranje prodavca je završeno"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Omogućeno na jedan dan"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Omogući još jedan dan"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Onemogućeno posle jednog dana"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Omogućeno neograničeno"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Razmera animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Razmera animacije prelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorova razmera trajanja"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index d66250d..e676fdf 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Загружаць слаі адладкі GPU для праграм адладкі"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Уключыць падрабязны журнал пастаўшчыка"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Дадаваць у справаздачы пра памылкі дадатковыя журналы пастаўшчыка для пэўнай прылады (могуць утрымлівацца прыватныя даныя, можа павышацца выкарыстанне акумулятара і/ці памяці)."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Адключыць праз адзін дзень"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Вядзенне дэталёвага журнала пастаўшчыка завершана"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Уключана на адзін дзень"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Уключыць яшчэ на адзін дзень"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Будзе адключана праз адзін дзень"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Уключана без абмежавання па часе"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Маштаб анімацыі акна"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Маштаб перадачы анімацыі"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Працягласць анімацыі"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 706db07..c64e2ea 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Разреш. на зарежд. на слоевете за отстр. на грешки в ГП за съотв. прилож."</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Активиране на подробно регистр. на файлове за доставчиците"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включване на допълнителни регистрационни файлове за доставчиците на конкретни устройства в сигналите за програмни грешки, които може да съдържат поверителна информация, да изразходват батерията в по-голяма степен и/или да използват повече място в хранилището."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Да се деактивира след един ден"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Подробното регистриране на файлове за доставчиците приключи"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Активирано за един ден"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Да се активира за още един ден"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Ще се деактивира след един ден"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Активирано за неопределено време"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Скала на прозореца на аним."</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Скала на преходната анимация"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Скала за Animator"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 0e83ff2..531795a 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ডিবাগ অ্যাপের জন্য GPU ডিবাগ স্তর লোড হতে দিন"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ভারবোস ভেন্ডর লগ-ইন চালু করুন"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"সমস্যা সংক্রান্ত রিপোর্টগুলিতে অতিরিক্ত ডিভাইস-নির্দিষ্ট ভেন্ডরের লগগুলি অন্তর্ভুক্ত করুন, যার মধ্যে ব্যক্তিগত তথ্য থাকতে পারে, আরও বেশি ব্যাটারি ব্যবহার করতে পারে, এবং/অথবা আরও স্টোরেজ ব্যবহার করতে পারে।"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"এক দিন পরে বন্ধ করুন"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ভারবোস ভেন্ডর লগিংয়ের সুবিধা বন্ধ হয়ে গেছে"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"এক দিনের জন্য চালু করা হয়েছে"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"আরও এক দিনের জন্য চালু করুন"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"এক দিন পরে বন্ধ হয়ে যায়"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"অনির্দিষ্টকালের জন্য চালু করা হয়েছে"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"উইন্ডো অ্যানিমেশন স্কেল"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ট্র্যানজিশন অ্যানিমেশন স্কেল"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"অ্যানিমেটর সময়কাল স্কেল"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index fd2b121..93b4ffb 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Omogućite slojeve za otkl. grešaka na GPU-u za apl. za otkl. grešaka"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogući opširni zapisnik"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"U izvještaje o greškama uključite dodatne zapisnike dobavljača specifične za uređaj, koji mogu sadržavati lične informacije, povećati potrošnju baterije i/ili koristiti više prostora za pohranu."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Onemogući nakon jednog dana"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Opširno zapisivanje dobavljača je završeno"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Omogućeno je na jedan dan"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Omogući još jedan dan"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Onemogućava se nakon jednog dana"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Omogućeno je na neograničeno vrijeme"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animacije prijelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala trajanja animatora"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index e685afc..0e6b3d8 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permet carregar capes de depuració de GPU en aplicacions de depuració"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activa el registre detallat del proveïdor"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclou altres registres de proveïdor específics del dispositiu als informes d’errors; és possible que continguin informació privada, consumeixin més bateria o utilitzin més espai d\'emmagatzematge"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Desactiva passat un dia"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"El registre del proveïdor detallat ha finalitzat"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"S\'ha activat durant un dia"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Activa durant un dia més"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Es desactiva passat un dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"S\'ha activat indefinidament"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala d\'animació de la finestra"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala d\'animació de la transició"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de durada de l\'animació"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index c8c4869..b04c908 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Povolit načítání vrstev ladění GPU pro ladicí aplikace"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Povolit podrobné protokolování dodavatele"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Zahrnovat do zpráv o chybách dodatečné protokoly dodavatelů specifické pro zařízení, které mohou obsahovat soukromé údaje, více vybíjet baterii nebo využívat více místa v úložišti."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Po jednom dni vypnout"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Podrobné protokolování dodavatele bylo ukončeno"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Zapnuto na jeden den"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Ponechat zapnuté ještě jeden den"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Po jednom dni se vypne"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Zapnuto na neomezenou dobu"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Měřítko animace okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Měřítko animace přeměny"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Měřítko délky animace"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index a7cbcd4..6e526db 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillad, at fejlretningslag indlæses for grafikprocessor i apps til fejlretning"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivér detaljeret leverandørlogging"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Medtag yderligere enhedsspecifikke leverandørlogfiler i fejlrapporter, som muligvis indeholder personlige oplysninger. Dette bruger muligvis mere batteri og/eller lagerplads."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Deaktiver efter én dag"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Detaljeret leverandørlogging er slut"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Aktiveret i én dag"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktivér i én dag mere"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Deaktiveres efter én dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Aktiveret på ubestemt tid"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Animationsskala for vindue"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimationsskala"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorvarighedsskala"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 946159d..504a9da 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Debug-Apps das Laden von GPU-Debug-Ebenen erlauben"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ausführliche Protokollierung aktivieren"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Schließt zusätzliche gerätespezifische Anbieterprotokolle in Fehlerberichten ein, die private Informationen enthalten, den Akkuverbrauch erhöhen und/oder zusätzlichen Speicher benötigen können."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Nach einem Tag deaktivieren"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Ausführliche Vendoren-Protokollierung beendet"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Für einen Tag aktiviert"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Für einen weiteren Tag aktivieren"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Wird nach einem Tag deaktiviert"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Auf unbestimmte Zeit aktiviert"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Fensteranimationsfaktor"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Übergangsanimationsfaktor"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animationsdauerfaktor"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 5b156bf..cad445f 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Φόρτωση επιπ. εντοπ. σφ. GPU για εφαρμ. αντιμ. σφ."</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ενεργ. λεπτ. καταγραφής προμ."</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Συμπερίληψη πρόσθετων αρχείων καταγραφής προμηθευτή για συγκεκριμένες συσκευές στις αναφορές σφαλμάτων, τα οποία ενδέχεται να περιέχουν ιδιωτικές πληροφορίες, να χρησιμοποιούν περισσότερη μπαταρία ή/και να χρησιμοποιούν περισσότερο αποθηκευτικό χώρο."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Απενεργοποίηση μετά από μία ημέρα"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Η λεπτομερής καταγραφή προμηθευτή έχει λήξει"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Έχει ενεργοποιηθεί για μία ημέρα"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Ενεργοποίηση για μία ακόμα ημέρα"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Απενεργοποιείται μετά από μία ημέρα"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Έχει ενεργοποιηθεί επ\' αόριστον"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Κλίμακα κίνησης παραθύρου"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Κλίμακα κίνησης μετάβασης"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Κλίμ. διάρ. Animator"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index b0b3de1..ad43664 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Disable after one day"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Verbose vendor logging has ended"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Enabled for one day"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Enable for one more day"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Disables after one day"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Enabled indefinitely"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index b0b3de1..ad43664 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Disable after one day"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Verbose vendor logging has ended"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Enabled for one day"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Enable for one more day"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Disables after one day"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Enabled indefinitely"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index b0b3de1..ad43664 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Disable after one day"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Verbose vendor logging has ended"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Enabled for one day"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Enable for one more day"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Disables after one day"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Enabled indefinitely"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 5f9edd6..2cf0fe3 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite cargar capas de depuración de GPU para apps de depuración"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Habilitar registro detallado"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluye otros registros de proveedor específicos del dispositivo en los informes de errores, que podrían contener información privada, consumir más batería o usar más espacio de almacenamiento."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Inhabilitar luego de un día"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Finalizó el registro de verbosidad del proveedor"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Habilitado por un día"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Habilitar por un día más"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Se inhabilita luego de un día"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Habilitado por tiempo indefinido"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación de ventana"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animador"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index fdba8c4..e012a418 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite cargar capas de depuración de GPU en aplicaciones de depuración"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Habilitar registro de proveedor detallado"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluye otros registros de proveedor específicos del dispositivo en informes de errores, lo que puede añadir información privada, usar más batería u ocupar más espacio de almacenamiento."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Inhabilitar después de un día"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"El registro de proveedor detallado ha finalizado"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Habilitado durante un día"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Habilitar durante un día más"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Se inhabilita después de un día"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Habilitado indefinidamente"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación de ventana"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animación"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index feca80f..70b436c 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU silumise kihtide laadimise lubamine silumisrakendustele"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Luba paljusõnaline logimine"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Veaaruannetesse kaasatakse täiendavad seadmepõhised teenusepakkuja logid, mis võivad sisaldada privaatset teavet, kasutada rohkem akut ja/või salvestusruumi."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Keela ühe päeva pärast"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Tootja paljusõnaline logimine on lõppenud"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Lubatud üheks päevaks"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Luba veel üheks päevaks"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Keelatakse ühe päeva pärast"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Lubatud määramata ajaks"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Akna animatsioonimastaap"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Ülemineku animatsioonimastaap"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaatori kestuse mastaap"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index ae783f2..1c80af8 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Eman GPUaren arazketa-geruzak kargatzeko baimena arazketa-aplikazioei"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Gaitu saltzaileen erregistro xehatuak"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sartu gailuaren berariazko saltzaileen erregistro gehigarriak akatsen txostenetan; baliteke haiek informazio pribatua izatea, bateria gehiago erabiltzea eta/edo biltegiratzeko toki gehiago hartzea."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Desgaitu egun baten buruan"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Saltzailearen erregistro xehatua amaitu da"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Egun baterako gaituta"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Gaitu beste egun batez"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Egun baten buruan desgaituko da"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Mugarik gabe gaituta"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Leihoen animazio-eskala"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Trantsizioen animazio-eskala"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatzailearen iraupen-eskala"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 7a296f2..5e4d29a 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -406,20 +406,14 @@
<string name="track_frame_time" msgid="522674651937771106">"پرداز زدن HWUI نمایه"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"فعال کردن لایههای اشکالزدایی GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"مجاز کردن بارگیری لایههای اشکالزدایی GPU برای برنامههای اشکالزدایی"</string>
- <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"فعال کردن گزارشگیری مفصل فروشنده"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"فعال کردن ثبت گزارش مفصل فروشنده"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"شامل گزارشات اشکال تکمیلی ورود به سیستم فروشنده ویژه دستگاه میشود که ممکن است دربرگیرنده اطلاعات خصوصی، استفاده بیشتر از باتری، و/یا استفاده بیشتر از فضای ذخیرهسازی باشد."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"غیرفعال کردن پساز یک روز"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ثبت گزارش مفصل فروشنده پایان یافته است"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"برای یک روز فعال شد"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"فعال کردن برای یک روز دیگر"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"پساز یک روز غیرفعال میشود"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"بهطور نامحدود فعال شد"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"مقیاس پویانمایی پنجره"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"مقیاس پویانمایی انتقالی"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"مقیاس طول مدت انیماتور"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 978b128..ad0cab3 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Salli GPU:n virheenkorjauskerrosten lataus"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Käytä laajennettua kirjausta"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sisällytä virheraportteihin muita laitekohtaisia myyjälokeja, jotka voivat sisältää yksityisiä tietoja, käyttää enemmän akkua ja/tai käyttää enemmän tallennustilaa"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Poista käytöstä yhden päivän jälkeen"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Tarjoajien laajennettu kirjaus on päättynyt"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Käytössä päivän ajan"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Pidä käytössä vielä yhden päivän ajan"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Poistuu käytöstä yhden päivän jälkeen"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Käytössä toistaiseksi"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Ikkuna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Siirtymä"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaattori"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index b620649..45e70f8 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Autoriser couches débogage GPU pour applis de débogage"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activer le journal détaillé des fournisseurs"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluez les journaux supplémentaires du fournisseur propres à l\'appareil dans les rapports de bogue. Ils peuvent contenir des données personnelles, épuiser la pile plus rapidement et/ou utiliser plus d\'espace de stockage."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Désactiver après une journée"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Le journal détaillé des fournisseurs est terminé"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Activé pour une journée"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Activer pour une journée de plus"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Se désactive après une journée"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Activé indéfiniment"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Échelle animation fenêtres"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Éch. d\'animation des transitions"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle durée animation"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 51b0bf0..c60e8ce 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Autoriser le chargement de couches de débogage GPU"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activer la journalisation détaillée du fournisseur"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclure les journaux supplémentaires du fournisseur, spécifiques à l\'appareil, dans les rapports de bug. Ils peuvent contenir des informations personnelles, solliciter davantage la batterie et/ou utiliser plus d\'espace de stockage."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Désactiver après un jour"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"La journalisation détaillée du fournisseur est terminée"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Activée pour un jour"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Activer pour un jour de plus"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Désactivation après un jour"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Activée indéfiniment"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Échelle d\'animation des fenêtres"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Échelle d\'animation des transitions"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle de durée d\'animation"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 9ea6f46..b44f0c7 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ડિબગ ઍપ માટે GPU ડિબગ સ્તરો લોડ કરવાની મંજૂરી આપો"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"વર્બોઝ વેન્ડર લૉગિંગ ચાલુ કરો"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ખામીની જાણકારીમાં ડિવાઇસથી જોડાયેલા ચોક્કસ વેન્ડર લૉગ શામેલ કરો, જેમાં ખાનગી માહિતી શામેલ હોઈ શકે છે, તે વધુ બૅટરીનો ઉપયોગ કરી શકે છે અને/અથવા વધુ સ્ટોરેજનો ઉપયોગ કરી શકે છે."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"એક દિવસ પછી બંધ કરો"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"શબ્દબહુલ વિક્રેતા લૉગિંગ સમાપ્ત થયું"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"એક દિવસ માટે ચાલુ કર્યું"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"વધુ એક દિવસ માટે ચાલુ કરો"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"એક દિવસ પછી બંધ કરે છે"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"અનિશ્ચિત સમય માટે ચાલુ કર્યું"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"વિન્ડો ઍનિમેશન સ્કેલ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ટ્રાન્ઝિશન ઍનિમેશન સ્કેલ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ઍનિમેટર અવધિ સ્કેલ"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 6a7179f..246f66e 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डीबग ऐप के लिए जीपीयू डीबग लेयर लोड करने दें"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"वर्बोस वेंडर लॉगिंग चालू करें"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"गड़बड़ियों की रिपोर्ट में डिवाइस से जुड़े अतिरिक्त वेंडर लॉग शामिल करें. इन लॉग में निजी जानकारी, बैटरी का ज़्यादा इस्तेमाल, और/या डिवाइस का स्टोरेज ज़्यादा इस्तेमाल करने की जानकारी हो सकती है."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"एक दिन बाद बंद करें"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"वर्बोस वेंडर लॉगिंग खत्म हो चुका है"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"एक दिन के लिए चालू किया गया"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"एक और दिन के लिए चालू करें"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"एक दिन के बाद बंद होगा"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"अनिश्चित समय के लिए चालू किया गया"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"विंडो ऐनिमेशन स्केल"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ट्रांज़िशन ऐनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ऐनिमेटर ड्यूरेशन स्केल"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 9f88c22..f4bb6ea 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Omogućuje učitavanje slojeva za otklanjanje pogrešaka GPU-a za aplikacije za otklanjanje pogrešaka"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogući opširni zapisnik"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uključite dodatne zapisnike dobavljača pojedinog uređaja u izvješća o programskim pogreškama koja mogu sadržavati privatne podatke, trošiti više baterije i/ili zauzeti više prostora za pohranu."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Onemogući nakon jednog dana"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Opširno bilježenje dobavljača je završilo"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Omogućeno na jedan dan"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Omogući još jedan dan"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Onemogućuje se nakon jednog dana"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Omogućeno na neograničeno vrijeme"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Brzina animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Brzina animacije prijelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Razmjer duljine animatora"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 7a8d26f..db739d5 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU-hibakeresési rétegek betöltésének engedélyezése"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Részletes szolgáltatói naplózás engedélyezése"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"További eszközspecifikus szolgáltatói naplók felvétele a hibajelentésekbe. Ezek a naplók tartalmazhatnak privát információkat, ezenkívül előfordulhat, hogy jobban merítik az akkumulátort, illetve nagyobb tárhelyet foglalnak el."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Letiltás egy nap után"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"A részletes szolgáltatói naplózás lezárult"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Egy napra engedélyezve"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Engedélyezés még egy napra"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Letilt egy nap után"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Határozatlan időre engedélyezve"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Ablakanimáció tempója"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Áttűnési animáció tempója"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animáció tempója"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 15ea272..717313fb 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Թույլատրել GPU վրիպազերծման շերտերի բեռնումը վրիպազերծման հավելվածների համար"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Մատակարարի մանրամասն գրանցամատյան"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Վրիպակների հաշվետվություններում ներառել կոնկրետ սարքի վերաբերյալ մատակարարի լրացուցիչ մատյանները։ Դա կարող է պարունակել խիստ անձնական տեղեկություններ, ավելի արագ սպառել մարտկոցի լիցքը և/կամ ավելի շատ տարածք օգտագործել։"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Անջատել մեկ օր հետո"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Մատակարարի մանրամասն մատյանի վարումն ավարտված է"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Միացնել մեկ օրով"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Միացնել ևս մեկ օրով"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Կանջատվի մեկ օր հետո"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Միացված է առանց ժամանակային սահմանափակման"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Պատուհանի շարժապատկեր"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Անցումների շարժապատկեր"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Շարժանկարի տևողության սանդղակ"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 2c36cf1..748d5ed 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Izinkan lapisan debug GPU dimuat di aplikasi debug"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktifkan logging vendor panjang"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sertakan log vendor tambahan khusus perangkat dalam laporan bug, yang mungkin berisi informasi pribadi. Meningkatkan penggunaan baterai dan/atau ruang penyimpanan."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Nonaktifkan setelah satu hari"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Logging panjang untuk vendor telah berakhir"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Diaktifkan selama satu hari"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktifkan selama satu hari lagi"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Dinonaktifkan setelah satu hari"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Diaktifkan tanpa batas waktu"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animasi jendela"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi transisi"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala durasi animator"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 793663a..7871cb2 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Leyfa villuleit skjákorts fyrir villuleit forrita"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Nákvæm skráning söluaðila"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Taka með viðbótarannála söluaðila fyrir tiltekin tæki í villutilkynningum, sem gætu innihaldið viðkvæmar upplýsingar, notað meiri rafhlöðuorku og/eða þurft meira geymslupláss."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Slökkva eftir einn dag"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Nákvæmri skráningu söluaðila er lokið"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Kveikt í einn dag"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Kveikja eftir einn dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Slokknar eftir einn dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Kveikt án tímamarka"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Kvarði gluggahreyfinga"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Lengd hreyfiumbreytinga"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Tímalengd hreyfiáhrifa"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index e88977e..26b67b4 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Consenti caricamento livelli debug GPU per app di debug"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Attiva log dettagliati fornitori"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Includi log aggiuntivi di fornitori relativi a un dispositivo specifico nelle segnalazioni di bug che potrebbero contenere informazioni private, causare un maggior consumo della batteria e/o utilizzare più spazio di archiviazione"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Disattiva dopo un giorno"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Log dettagliati fornitori terminati"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Impostazione attivata per un giorno"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Attiva per un altro giorno"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Impostazione disattivata dopo un giorno"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Impostazione attivata a tempo indeterminato"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Scala animazione finestra"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scala animazione transizione"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scala durata animatore"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 8b08e4f..f7c9684 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"טעינת שכבות לניפוי באגים ב-GPU לאפליקציות ניפוי באגים"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"הפעלת רישום ספקים מפורט ביומן"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"הוספת רישומי יומן של יצרנים למכשירים ספציפיים בדוחות על באגים. דוחות אלה עשויים להכיל מידע פרטי, להגביר את צריכת הסוללה ולצרוך נפח אחסון גדול יותר."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"השבתה אחרי יום אחד"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"רישום הספקים המפורט ביומן הסתיים"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"בוצעה הפעלה ליום אחד"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"הפעלה ליום אחד נוסף"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"מתבצעת השבתה אחרי יום אחד"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"בוצעה הפעלה ללא הגבלת זמן"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"קנה מידה לאנימציה של חלון"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"קנה מידה לאנימציית מעבר"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"קנה מידה למשך זמן אנימציה"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 6cd7505..cafa95d 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"デバッグアプリに GPU デバッグレイヤの読み込みを許可"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ベンダーの詳細なロギングを有効にする"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"バグレポートには、その他のデバイス固有のベンダーログが含まれます。これには、非公開の情報が含まれることがあります。また、バッテリーやストレージの使用量が増えることもあります。"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"1 日後に無効にする"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ベンダーの詳細なロギングが終了しました"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"1 日間有効にしました"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"あと 1 日有効にする"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"1 日後に無効にします"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"期限なしで有効にしました"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ウィンドウ アニメ スケール"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"トランジション アニメ スケール"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 再生時間スケール"</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 4da0f5f..10a660b 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -412,18 +412,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"გასამართი აპებისთვის GPU-ს შეცდომების გამართვის შრეების გაშვების დაშვება"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ჟურნალებში მომწოდებელთა დაწვრილებითი აღრიცხვის ჩართვა"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"გამყიდველის მოწყობილობისთვის სპეციფიკური დამატებითი ჟურნალები შევიდეს სისტემის ხარვეზის ანგარიშებში, რომლებიც შეიძლება შეიცავდეს პირად ინფორმაციას, ხარჯავდეს ბატარეის მეტ მუხტს და/ან იყენებდეს მეტ მეხსიერებას."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ერთი დღის შემდეგ გათიშვა"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"მომწოდებელთა დეტალური აღრიცხვა დასრულდა"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ჩართულია ერთი დღით"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"კიდევ ერთი დღით ჩართვა"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"გაითიშება ერთი დღის შემდეგ"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"ჩართულია განუსაზღვრელი დროით"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ფანჯარა: მასშტაბი"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"გადასვლის მასშტაბი"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ანიმაციების ხანგრძლივობის მასშტაბი"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 07f34e2..536b624 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU түзету қабаттарының жүктелуіне рұқсат ету"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Жеткізуші туралы толық мәліметті тіркеу"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Қате туралы есепте жеткізушінің құрылғыға қатысты қосымша ақпараты қамтылады. Мұнда жеке ақпарат көрсетілуі, батарея шығыны артуы және/немесе қосымша жад пайдаланылуы мүмкін."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Бір күннен кейін өшіру"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Жеткізушінің сөз мөлшерін тіркеуі аяқталды"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Тағы бір күнге қосылды."</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Тағы бір күнге қосу"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Бір күннен кейін өшіріледі."</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Белгісіз уақытқа қосылды."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Терезе анимациясының өлшемі"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Ауысу анимациясының өлшемі"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматор ұзақтығы"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index ff594e3..baef5d8 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"អនុញ្ញាតឱ្យផ្ទុកស្រទាប់ជួសជុល GPU សម្រាប់កម្មវិធីជួសជុល"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"បើកការកត់ត្រាអ្នកផ្គត់ផ្គង់ឥតសំចៃ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"រួមបញ្ចូលកំណត់ហេតុអ្នកផ្គត់ផ្គង់ពាក់ព័ន្ធនឹងឧបករណ៍បន្ថែមទៀតនៅក្នុងរបាយការណ៍អំពីបញ្ហា ដែលអាចមានផ្ទុកព័ត៌មានឯកជន ប្រើប្រាស់ថ្មច្រើនជាង និង/ឬប្រើប្រាស់ទំហំផ្ទុកច្រើនជាង។"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"បិទក្រោយពេលមួយថ្ងៃ"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ការចុះកំណត់ហេតុអ្នកផ្គត់ផ្គង់លម្អិតបានចប់"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"បានបើករយៈពេលមួយថ្ងៃ"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"បើករយៈពេលលើសពីមួយថ្ងៃ"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"បិទក្រោយពេលមួយថ្ងៃ"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"បានបើកដោយគ្មានពេលកំណត់"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"មាត្រដ្ឋានចលនាវិនដូ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"មាត្រដ្ឋានដំណើរផ្លាស់ប្ដូរចលនា"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"មាត្រដ្ឋានរយៈពេលនៃកម្មវិធីចលនា"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index afea19f..a203ea7 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ಡೀಬಗ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ GPU ಡೀಬಗ್ ಲೇಯರ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸಿ"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ವರ್ಬೋಸ್ ವೆಂಡರ್ ಲಾಗಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ಬಗ್ ವರದಿಗಳಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಸಾಧನ ನಿರ್ದಿಷ್ಟ ವೆಂಡರ್ ಲಾಗ್ಗಳು ಒಳಗೊಂಡಿದೆ, ಇದು ಖಾಸಗಿ ಮಾಹಿತಿ, ಹೆಚ್ಚಿನ ಬ್ಯಾಟರಿ ಬಳಕೆ ಮತ್ತು/ಅಥವಾ ಹೆಚ್ಚಿನ ಸಂಗ್ರಹಣೆಯ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿರಬಹುದು."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ಒಂದು ದಿನದ ನಂತರ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ಶಬ್ದ ಬಾಹುಳ್ಯ ಲಾಗಿಂಗ್ ಕೊನೆಗೊಂಡಿದೆ"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ಒಂದು ದಿನಕ್ಕೆ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ಇನ್ನೂ ಒಂದು ದಿನದವರೆಗೆ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ಒಂದು ದಿನದ ನಂತರ ನಿಷ್ಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"ಅನಿರ್ದಿಷ್ಟವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window ಅನಿಮೇಶನ್ ಸ್ಕೇಲ್"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ಪರಿವರ್ತನೆ ಅನಿಮೇಶನ್ ಸ್ಕೇಲ್"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ಅನಿಮೇಟರ್ ಅವಧಿಯ ಪ್ರಮಾಣ"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index e88fc04..67f1ecd 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"디버그 앱에 GPU 디버그 레이어 로드 허용"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"상세 공급업체 로깅 사용 설정"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"버그 신고에 추가적인 기기별 공급업체 로그를 포함합니다. 여기에는 개인정보가 포함될 수 있으며, 배터리 또는 저장공간 사용량이 늘어날 수 있습니다."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"1일 후 사용 중지"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"상세 공급업체 로깅 종료됨"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"1일간 사용 설정됨"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"1일 더 사용 설정"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"1일 후 사용 중지"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"무기한 사용 설정됨"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"창 애니메이션 배율"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"전환 애니메이션 배율"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 길이 배율"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 16f2ddb..7353264 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU мүчүлүштүктөрдү оңдоо катмарларын иштетет"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Кызмат көрсөтүүчүнүн журналы"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Кызмат көрсөтүүчүнүн түзмөккө байланыштуу кошумча жазуулары мүчүлүштүк тууралуу кабарларга кошулат. Анда купуя маалымат камтылып, батарея тезирээк отуруп жана/же сактагычтан көбүрөөк орун ээлеши мүмкүн."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Бир күндөн кийин өчүрүү"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Кепти дааналатуучунун журналынын аягына чыкты"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Бир күнгө иштетилди"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Дагы бир күнгө иштетүү"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Бир күндөн кийин өчүрүлөт"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Белгисиз убакытка иштетилди"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Терезелердин анимациясы"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Өткөрүү анимацснн шкаласы"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Анимациянын узактыгы"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 1eec5a7..3680e8d 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ອະນຸຍາດການໂຫລດຊັ້ນຂໍ້ມູນດີບັກ GPU ສຳລັບແອັບດີບັກ"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ເປີດໃຊ້ການບັນທຶກຜູ້ຂາຍແບບລະອຽດ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ຮວມທັງການລາຍງານຂໍ້ຜິດພາດການເຂົ້າສູ່ລະບົບຂອງຜູ້ຂາຍສະເພາະອຸປະກອນເພີ່ມເຕີມ, ເຊິ່ງອາດມີຂໍ້ມູນສ່ວນຕົວ, ໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ ແລະ/ຫຼື ໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ປິດການນຳໃຊ້ຫຼັງຈາກ 1 ມື້"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ການບັນທຶກຜູ້ຂາຍແບບລະອຽດສິ້ນສຸດແລ້ວ"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ເປີດການນຳໃຊ້ອີກ 1 ມື້ແລ້ວ"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ເປີດການນຳໃຊ້ອີກ 1 ມື້"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ປິດການນຳໃຊ້ຫຼັງຈາກ 1 ມື້"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"ເປີດການນຳໃຊ້ແບບບໍ່ມີກຳນົດສິ້ນສຸດແລ້ວ"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ຂະໜາດໜ້າຈໍຂອງອະນິເມຊັນ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ຂະໜາດສະຫຼັບອະນິເມຊັນ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ໄລຍະເວລາອະນິເມຊັນ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index d879c9d..4f0d6b0 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Leisti įkelti graf. proc. der. sluoks. der. progr."</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Įg. daugiaž. pasl. teik. reg."</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Į pranešimus apie riktą įtraukiami papildomi konkretaus įrenginio paslaugų teikėjo žurnalai, kuriuose gali būti privačios informacijos, kurie gali naudoti daugiau akumuliatoriaus energijos ir (arba) daugiau vietos saugykloje."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Išjungti po vienos dienos"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Išsamus paslaugų teikėjo registravimas žurnale baigtas"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Įgalinta vienai dienai"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Įgalinti dar vienai dienai"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Bus išjungta po vienos dienos"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Įgalinta neribotam laikui"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Lango animacijos mast."</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animuoto perėjimo mast."</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator. trukmės skalė"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index ac00d05..e571b84 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Atļaut GPU atkļūd. slāņu ielādi atkļūd. lietotnēm"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Iespējot izvērsto reģistrēšanu"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Iekļaut kļūdu pārskatos konkrētas ierīces papildu nodrošinātāju žurnālus (var iekļaut privātu informāciju, patērēt vairāk akumulatora enerģijas un/vai aizņemt vairāk vietas krātuvē)."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Atspējot pēc vienas dienas"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Detalizētā nodrošinātāju reģistrēšana ir beigusies"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Iespējota uz vienu dienu"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Iespējot uz vēl vienu dienu"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Tiek atspējota pēc vienas dienas"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Iespējota uz nenoteiktu laiku"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Loga animācijas mērogs"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Pārejas animācijas mērogs"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animācijas ilguma mērogs"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index b9fabe6..ab30556 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дозволи вчитување GPU-слоеви за отстранув. грешки"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Опширна евиденција на продавачи"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Вклучува дополнителна евиденција на продавачи во извештаите за грешки за конкретен уред, којашто може да содржи приватни податоци, повеќе да ја користи батеријата и/или да користи повеќе капацитет."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Оневозможи по еден ден"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Опширната евиденција на продавачи заврши"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Овозможено за еден ден"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Овозможи за уште еден ден"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Се оневозможува по еден ден"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Овозможено на неодредено време"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Брзина на анимации за прозорци"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Брзина на преодни анимации"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Брзина на општи анимации"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 331b0a8..d190691 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ഡീബഗ് ആപ്പുകൾക്കായി GPU ഡീബഗ് ലെയറുകൾ ലോഡ് ചെയ്യാൻ അനുവദിക്കുക"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"വെർബോസ് വെണ്ടർ ലോഗ് ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കൂ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ബഗ് റിപ്പോർട്ടുകളിൽ ഉപകരണ-നിർദ്ദിഷ്ട വെണ്ടർ അധിക ലോഗുകൾ ഉൾപ്പെടുത്തുക, അതിൽ സ്വകാര്യ വിവരങ്ങൾ അടങ്ങിയിരിക്കാം, കൂടുതൽ ബാറ്ററി ഉപയോഗിക്കാം കൂടാതെ/അല്ലെങ്കിൽ കൂടുതൽ സ്റ്റോറേജ് ഇടം ഉപയോഗിക്കാം."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ഒരു ദിവസത്തിന് ശേഷം പ്രവർത്തനരഹിതമാക്കുക"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"വെർബോസ് വെണ്ടർ ലോഗിംഗ് അവസാനിച്ചു"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ഒരു ദിവസത്തേക്ക് പ്രവർത്തനക്ഷമമാക്കി"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ഒരു ദിവസത്തേക്ക് കൂടി പ്രവർത്തനക്ഷമമാക്കുക"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ഒരു ദിവസത്തിന് ശേഷം പ്രവർത്തനരഹിതമാക്കും"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"അനിശ്ചിതകാലത്തേക്ക് പ്രവർത്തനക്ഷമമാക്കി"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"വിൻഡോ ആനിമേഷൻ സ്കെയിൽ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ട്രാൻസിഷൻ ആനിമേഷൻ സ്കെയിൽ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ആനിമേറ്റർ ദൈർഘ്യ സ്കെയിൽ"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 3c0a5d85..c0a7939 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дебаг хийх аппад GPU дебаг хийх давхарга ачаалахыг зөвшөөрөх"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Нийлүүлэгчийн дэлгэрэнгүй логийг идэвхжүүлэх"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Төхөөрөмжийн тодорхойлсон нийлүүлэгчийн нэвтрэх үеийн алдааны нэмэлт мэдээг оруулах бөгөөд энэ нь хувийн мэдээлэл агуулж, батарейг илүү ашиглах болон/эсвэл хадгалах сан илүү ашиглаж болзошгүй."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Нэг хоногийн дараа идэвхгүй болгох"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Нийлүүлэгчийн нуршсан дэлгэрэнгүй байдлын лог дууссан"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Нэг хоногийн турш идэвхжүүлсэн"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Дахин нэг хоногийн турш идэвхжүүлэх"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Нэг хоногийн дараа идэвхгүй болгоно"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Тодорхойгүй хугацаанд идэвхжүүлсэн"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Цонхны анимацийн масштаб"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Шилжилтийн анимацийн масштаб"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Анимацийн хугацааны масштаб"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 93613f9..4842a99 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डीबग अॅप्ससाठी GPU डीबग स्तर लोड करण्याची अनुमती द्या"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"व्हर्बोझ विक्रेता लॉगिंग सुरू करा"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"बग रिपोर्टमध्ये अतिरिक्त डिव्हाइस-विशिष्ट विक्रेता लॉगचा समावेश करा ज्यामध्ये खाजगी माहिती असू शकते, अधिक बॅटरी आणि/किंवा अधिक स्टोरेज वापरले जाईल."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"एका दिवसानंतर बंद करा"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"व्हर्बाेस विक्रेता लॉगिंग संपले आहे"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"एका दिवसासाठी सुरू केले आहे"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"आणखी एका दिवसासाठी सुरू करा"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"एका दिवसानंतर बंद करते"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"अनिश्चितपणे सुरू केले आहे"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"विंडो ॲनिमेशन स्केल"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ट्रांझिशन ॲनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ॲनिमेटर कालावधी स्केल"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 1a93025..01d6409 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Benarkan pemuatan lapisan nyahpepijat GPU untuk apl penyahpepijatan"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Dayakan pengelogan vendor berjela"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sertakan log tambahan vendor khusus peranti dalam laporan pepijat, yang mungkin mengandungi maklumat peribadi, menggunakan lebih banyak kuasa bateri dan/atau menggunakan lebih banyak storan."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Lumpuhkan selepas satu hari"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Pengelogan vendor berjela telah tamat"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Didayakan untuk satu hari"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Dayakan untuk satu hari lagi"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Dilumpuhkan selepas satu hari"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Didayakan selama-lamanya"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animasi tetingkap"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi peralihan"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala tempoh juruanimasi"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 548358f..92b630d 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"အမှားရှာအက်ပ်များအတွက် GPU အမှားရှာအလွှာများ ဖွင့်ခွင့်ပြုသည်"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"အကျယ်ရှင်းလင်းချက်ပံ့ပိုးသူ မှတ်တမ်းဖွင့်ရန်"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ချွတ်ယွင်းမှု အစီရင်ခံချက်တွင် စက်ပစ္စည်းအလိုက် ထုတ်လုပ်သူမှတ်တမ်းများကို ထည့်သွင်းခြင်းဖြင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ ပါဝင်ခြင်း၊ ဘက်ထရီပိုသုံးခြင်း နှင့်/သို့မဟုတ် သိုလှောင်ခန်းပိုသုံးခြင်းတို့ ဖြစ်စေနိုင်သည်။"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"တစ်ရက်ကြာပြီးနောက် ပိတ်ရန်"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"အကျယ်ချဲ့ရှင်းပြသည့် ထုတ်လုပ်သူမှတ်တမ်း ပြီးသွားပါပြီ"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"တစ်ရက်စာ ဖွင့်ထားသည်"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"နောက်ထပ်တစ်ရက် ဖွင့်ရန်"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"တစ်ရက်ကြာပြီးနောက် ပိတ်မည်"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"အကန့်အသတ်မရှိ ဖွင့်ထားသည်"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"လှုပ်ရှားသက်ဝင်ပုံစကေး"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"သက်ဝင်အသွင်ပြောင်းခြင်း"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"လှုပ်ရှားမှုကြာချိန်စကေး"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 691dd3b..75b04ad 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillat GPU-feilsøkingslag for feilsøkingsapper"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Detaljert leverandørlogging"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inkluder flere enhetsspesifikke leverandørlogger i feilrapporter, som kan inneholde privat informasjon, bruke mer batteri og/eller bruke mer lagringsplass."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Deaktiver etter én dag"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Detaljert leverandørloggføring er avsluttet"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Aktivert i én dag"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktiver i én dag til"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Deaktiveres etter én dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Aktivert på ubestemt tid"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Animasjonsskala for vindu"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animasjonsskala for overgang"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Varighetsskala for animasjoner"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index 0607194..b252854 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डिबग एपका लागि GPU का डिबग लेयर लोड गर्नुहोस्"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"भर्बोज भेन्डर लगिङ अन गर्नुहोस्"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"बग रिपोर्टहरूमा डिभाइस विशेषका विक्रेताका अतिरिक्त लगहरू समावेश गर्नुहोस्। यी लगमा निजी जानकारी समावेश हुन सक्छन्, यिनले ब्याट्रीको खपत बढाउन र/वा थप भण्डारण प्रयोग गर्न सक्छन्।"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"एक दिनपछि अफ गर्नुहोस्"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Verbose भेन्डर लगिङ अन्त्य भएको छ"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"एक दिनका लागि अन गरियो"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"थप एक दिनका लागि अन गर्नुहोस्"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"एक दिनपछि अफ हुन्छ"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"अनिश्चितकालीन रूपमा अन गरियो"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"विन्डो एनिमेसन स्केल"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"संक्रमण एनिमेसन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"एनिमेसनको अवधि मापन"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index c7047a6..8577f48 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Sta laden van GPU-foutopsporingslagen toe voor foutopsporingsapps"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Uitgebreide leverancierslogboeken aanzetten"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Neem aanvullende apparaatspecifieke leverancierslogboeken op in bugrapporten. Deze kunnen privégegevens bevatten, meer batterijlading gebruiken en/of meer opslagruimte gebruiken"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Uitzetten na één dag"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Uitgebreide leverancierslogboekregistratie is beëindigd"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Aangezet voor één dag"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aanzetten voor nog één dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Wordt uitgezet na één dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Aangezet voor onbepaalde tijd"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Vensteranimatieschaal"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimatieschaal"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Duur van animatieschaal"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 54ad13e..9fdb99b 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ଡିବଗ୍ ଆପ୍ଗୁଡ଼ିକ ପାଇଁ GPU ଡିବଗ୍ ଲେୟର୍ ଲୋଡ୍ କରିବାର ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ଭର୍ବୋସ ଭେଣ୍ଡର୍ ଲଗିଂ ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ବଗ୍ ରିପୋର୍ଟଗୁଡ଼ିକରେ ଅତିରିକ୍ତ ଡିଭାଇସ୍-ନିର୍ଦ୍ଦିଷ୍ଟ ଲଗଗୁଡ଼ିକ ସାମିଲ କରନ୍ତୁ, ଯେଉଁଥିରେ ବ୍ୟକ୍ତିଗତ ସୂଚନା ଥାଇପାରେ, ଯାହା ଅଧିକ ବ୍ୟାଟେରୀ ଏବଂ/କିମ୍ବା ଅଧିକ ଷ୍ଟୋରେଜ୍ ବ୍ୟବହାର କରିପାରେ।"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ଗୋଟିଏ ଦିନ ପରେ ଅକ୍ଷମ କରନ୍ତୁ"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ଭର୍ବୋସ ଭେଣ୍ଡର ଲଗିଂ ସମାପ୍ତ ହୋଇଯାଇଛି"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ଗୋଟିଏ ଦିନ ପାଇଁ ସକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ଆଉ ଗୋଟିଏ ଦିନ ପାଇଁ ସକ୍ଷମ କରନ୍ତୁ"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ଗୋଟିଏ ଦିନ ପରେ ଅକ୍ଷମ ହେବ"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"ଅନିର୍ଦ୍ଦିଷ୍ଟ ସମୟ ପାଇଁ ସକ୍ଷମ କରାଯାଇଛି"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ୱିଣ୍ଡୋ ଆନିମେସନ୍ ସ୍କେଲ୍"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ଟ୍ରାଞ୍ଜିସନ୍ ଆନିମେସନ୍ ସ୍କେଲ୍"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ଆନିମେଟର୍ ଅବଧି ସ୍କେଲ୍"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 80d9081..64981a7 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ਡੀਬੱਗ ਐਪਾਂ ਲਈ GPU ਡੀਬੱਗ ਤਹਿਆਂ ਨੂੰ ਲੋਡ ਹੋਣ ਦਿਓ"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ਵਰਬੋਸ ਵਿਕਰੇਤਾ ਲੌਗਿੰਗ ਚਾਲੂ ਕਰੋ"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ਬੱਗ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਵਧੀਕ ਡੀਵਾਈਸ ਮੁਤਾਬਕ ਵਿਕਰੇਤਾ ਲੌਗ ਸ਼ਾਮਲ ਕਰੋ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਪ੍ਰਾਈਵੇਟ ਜਾਣਕਾਰੀ, ਬੈਟਰੀ ਦੀ ਵਧੇਰੇ ਵਰਤੋਂ ਅਤੇ/ਜਾਂ ਜ਼ਿਆਦਾ ਸਟੋਰੇਜ ਸ਼ਾਮਲ ਹੋ ਸਕਦੀ ਹੈ।"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ਇੱਕ ਦਿਨ ਬਾਅਦ ਬੰਦ ਕਰੋ"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"ਵਰਬੋਸ ਵਿਕਰੇਤਾ ਲੌਗਿੰਗ ਸਮਾਪਤ ਹੋ ਗਈ ਹੈ"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ਇੱਕ ਦਿਨ ਲਈ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ਇੱਕ ਹੋਰ ਦਿਨ ਲਈ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ਇੱਕ ਦਿਨ ਬਾਅਦ ਬੰਦ ਹੋ ਜਾਵੇਗਾ"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"ਅਣਮਿੱਥੇ ਸਮੇਂ ਲਈ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ਵਿੰਡੋ ਐਨੀਮੇਸ਼ਨ ਸਕੇਲ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ਟ੍ਰਾਂਜ਼ਿਸ਼ਨ ਐਨੀਮੇਸ਼ਨ ਸਕੇਲ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ਐਨੀਮੇਟਰ ਮਿਆਦ ਸਕੇਲ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index e816e9d..a1ca4a6 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Zezwalaj na ładowanie warstw debugowania GPU"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Włącz szczegółowe rejestrowanie dostawcy"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Dołączaj do raportów o błędach dodatkowe dane dostawcy dotyczące konkretnego urządzenia, które mogą zawierać dane prywatne oraz wykorzystywać więcej baterii lub pamięci"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Wyłącz po 1 dniu"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Szczegółowe rejestrowanie dostawcy zostało zakończone"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Włączone na 1 dzień"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Włącz na jeszcze 1 dzień"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Wyłączy się po 1 dniu"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Włączone bez ograniczeń czasowych"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animacji okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animacji przejścia"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala długości animacji"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index db8aac9a..13f9c40 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativar registro detalhado de fornecedor"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluir mais registros de fornecedores específicos do dispositivo em relatórios de bugs. Isso pode aumentar o uso da bateria e/ou do armazenamento, e os relatórios podem conter informações particulares."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Desativar depois de 1 dia"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"O registro detalhado de fornecedor foi encerrado"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Ativado por 1 dia"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Ativar por mais 1 dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"É desativado depois de 1 dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Ativado indefinidamente"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação da janela"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração do Animator"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 3f253c7..260e58e 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite carregamento de camadas de depuração de GPU para apps de depuração"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. registo do fornecedor"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclua registos adicionais de fornecedores específicos de dispositivos em relatórios de erros, que podem conter informações privadas, utilizar mais bateria e/ou utilizar mais armazenamento."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Desativar após um dia"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"O registo verboso de fornecedor terminou"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Ativado durante um dia"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Ativar durante mais um dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"É desativado após um dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Ativado indefinidamente"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação de transição"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração de animação"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index db8aac9a..13f9c40 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativar registro detalhado de fornecedor"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluir mais registros de fornecedores específicos do dispositivo em relatórios de bugs. Isso pode aumentar o uso da bateria e/ou do armazenamento, e os relatórios podem conter informações particulares."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Desativar depois de 1 dia"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"O registro detalhado de fornecedor foi encerrado"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Ativado por 1 dia"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Ativar por mais 1 dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"É desativado depois de 1 dia"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Ativado indefinidamente"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação da janela"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração do Animator"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 726e264..5f8f367 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite încărcarea nivelurilor de depanare GPU pentru aplicațiile de depanare"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activează înregistrarea detaliată a furnizorilor"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include alte jurnale ale furnizorilor de dispozitive în rapoartele de eroare, care pot conține informații private, folosește mai multă baterie și/sau mai mult spațiu de stocare."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Dezactivează după o zi"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Înregistrarea detaliată a furnizorilor s-a încheiat"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Activată timp de o zi"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Activează timp de încă o zi"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Se dezactivează după o zi"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Activată pe termen nedefinit"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Scară animație fereastră"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scară tranziție animații"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scară durată Animator"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index f412fed..f492b65 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Включить загрузку слоев отладки графического процессора"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Подробный журнал поставщика"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включать в информацию об ошибках дополнительные записи поставщика об устройстве, которые могут содержать личные данные и занимать больше места. Также это может увеличить расход заряда батареи."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Отключить через день"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Ведение подробного журнала поставщика завершено"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Включено на один день"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Включить ещё на один день"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Отключится через один день"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Включено без ограничения по времени"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Анимация окон"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Анимация переходов"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Длительность анимации"</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 9e28d7ca..42cde8b 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"නිදොසීමේ යෙදුම්වලට GPU නිදොසීමේ ස්තර පූරණයට ඉඩ දෙ."</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"verbose vendor පිරීම සබල කරන්න"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"පුද්ගලික තොරතුරු අන්තර්ගත විය හැකි, වැඩි බැටරි බලයක් භාවිත කිරීමට සහ/හෝ වැඩි ගබඩා ඉඩක් භාවිත කිරීමට හැකි අමතර උපාංග නිශ්චිත විකුණුම්කරු ලොග, දෝෂ වාර්තාවල අඩංගු වේ."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"එක දිනකට පසු අබල කරන්න"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"වචන බහුලකමේ විකුණුම්කරු ලොග් කිරීම නිමා වී ඇත"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"එක් දිනක් සඳහා සබල කර ඇත"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"තවත් එක් දිනක් සඳහා සබල කරන්න"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"දිනකට පසු අබල කරයි"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"දින නියමයක් නොමැතිව සබල කර ඇත"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"කවුළු සජීවිකරණ පරිමාණය"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"සංක්රමණ සජීවන පරිමාණය"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"සජීවක කාල පරාස පරිමාණය"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 97bf279..6bf0cdb 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Povoliť načítanie vrstiev ladenia grafického procesora na ladenie aplikácií"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivovať podrobný zápis dodávateľov do denníka"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Zahŕňať do hlásení chýb ďalšie denníky dodávateľa pre konkrétne zariadenie, ktoré môžu obsahovať osobné údaje, zvýšiť spotrebu batérie alebo zabrať viac ukladacieho priestoru"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Deaktivovať po jednom dni"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Podrobné zapisovanie do denníka dodávateľa bolo ukončené"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Aktivované na jeden deň"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktivovať ešte na deň"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Deaktivuje sa po jednom dni"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Aktivované na neurčito"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Mierka animácie okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Mierka animácie premeny"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Mierka dĺžky animácie"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 67aeace..869958f 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Aplikacijam za odpravljanje napak dovoli nalaganje slojev za odpravljanje napak GPE."</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogoči podrobno beleženje za ponudnika"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Vključi dodatne dnevnike ponudnika, odvisne od posamezne naprave, v poročila o napakah. Takšno poročilo lahko vsebuje zasebne podatke, porabi več energije baterije in/ali več shrambe."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Onemogoči čez en dan"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Podrobno beleženje za ponudnika je končano"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Omogočeno za en dan"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Omogoči za še en dan"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Onemogočeno bo čez en dan"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Omogočeno brez časovne omejitve"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Merilo animacije okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Merilo animacije prehoda"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Merilo trajanja animacije"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 4aa6a8d..0c1bf6c 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Lejo ngarkimin e shtresave të korrigjimit të GPU-së për aplikacionet e korrigjimit"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivizo evidencat e tregtuesit me shumë fjalë"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Përfshi evidenca shtesë të treguesve specifike për pajisjen në raportet e defekteve, që mund të përfshijnë informacion privat, mund të përdorin më shumë bateri dhe/ose të përdorin më shumë hapësirë ruajtëse."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Çaktivizo pas një dite"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Evidencat e detajuara të shitësit janë mbyllur"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Aktivizuar për një ditë"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktivizo për një ditë më shumë"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Çaktivizohet pas një dite"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Aktivizuar për një kohë të papërcaktuar"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Animacioni i dritares"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animacioni kalimtar"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Kohëzgjatja e animatorit"</string>
@@ -436,10 +430,8 @@
<string name="force_allow_on_external_summary" msgid="8525425782530728238">"Bën që çdo aplikacion të jetë i përshtatshëm për t\'u shkruar në hapësirën ruajtëse të jashtme, pavarësisht nga vlerat e manifestit"</string>
<string name="force_resizable_activities" msgid="7143612144399959606">"Detyro madhësinë e ndryshueshme për aktivitetet"</string>
<string name="force_resizable_activities_summary" msgid="2490382056981583062">"Bëj që të gjitha aktivitetet të kenë madhësi të ndryshueshme për përdorimin me shumë dritare, pavarësisht vlerave të manifestit."</string>
- <!-- no translation found for enable_freeform_support (8409932201445109106) -->
- <skip />
- <!-- no translation found for enable_freeform_support_summary (2242481082356957934) -->
- <skip />
+ <string name="enable_freeform_support" msgid="8409932201445109106">"Aktivizo dritaret me formë të lirë (të vjetra)"</string>
+ <string name="enable_freeform_support_summary" msgid="2242481082356957934">"Aktivizo mbështetjen për dritaret eksperimentale me formë të lirë të versionit të vjetër."</string>
<string name="local_backup_password_title" msgid="4631017948933578709">"Fjalëkalimi i rezervimit të desktopit"</string>
<string name="local_backup_password_summary_none" msgid="7646898032616361714">"Rezervimet e plota të desktopit nuk janë të mbrojtura aktualisht"</string>
<string name="local_backup_password_summary_change" msgid="1707357670383995567">"Trokit për të ndryshuar ose hequr fjalëkalimin për rezervime të plota të desktopit"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index a67c71a..2b004cb 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Учитава отклањање грешака GPU-a у апл. за отклањање грешака"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Опширне евиденције продавца"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Уврштава у извештаје о грешкама додатне посебне евиденције продавца за уређаје, које могу да садрже приватне податке, да троше више батерије и/или да користе више меморије."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Онемогући после једног дана"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Детаљно евидентирање продавца је завршено"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Омогућено на један дан"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Омогући још један дан"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Онемогућено после једног дана"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Омогућено неограничено"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Размера анимације прозора"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Размера анимације прелаза"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматорова размера трајања"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 7add088..06ed90e 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillåt att felsökningsappar läser in GPU-felsökningslager"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivera utförlig loggning för leverantörer"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Ta med ytterligare enhetsspecifika leverantörsloggar i felrapporter. Dessa kan innehålla privata uppgifter samt använda mer batteri och/eller mer lagringsutrymme."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Inaktivera efter en dag"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Utförlig leverantörsloggning har avslutats"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Aktiverat i en dag"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Aktivera i en dag till"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Inaktiveras efter en dag"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Aktiverat tills vidare"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala – fönsteranimering"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala – övergångsanimering"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Längdskala för Animator"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 818db3f..08aa784 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Ruhusu upakiaji wa safu za utatuzi wa GPU za programu za utatuzi"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Washa uwekaji kumbukumbu za muuzaji kwa kutumia sauti"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Jumuisha kumbukumbu zaidi za muuzaji ambazo ni mahususi kwa kifaa kwenye ripoti za hitilafu, ambazo huenda zikawa na maelezo ya faragha, zikatumia chaji nyingi ya betri na/au zikatumia nafasi kubwa ya hifadhi."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Zima baada ya siku moja"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Mchakato wa kuweka kumbukumbu ya kina ya muuzaji umekamilika"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Umewasha kwa siku moja"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Washa kwa siku moja zaidi"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Utazima baada ya siku moja"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Umewasha kwa muda usiojulikana"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Uhuishaji kwenye dirisha"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Mageuzi ya kipimo cha uhuishaji"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Mizani ya muda wa uhuishaji"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 47a65f6..5972756 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"பிழைத்திருத்த ஆப்ஸிற்கு, GPU பிழைத்திருத்த லேயர்களை ஏற்றுவதற்கு அனுமதி"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"வெர்போஸ் வெண்டார் பதிவை இயக்கு"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"பிழை அறிக்கைகளில் சாதனம் சார்ந்த கூடுதல் வெண்டார் பதிவுகளைச் சேர்க்கவும். அவற்றில் தனிப்பட்ட தகவல்கள், அதிக பேட்டரி உபயோகம் மற்றும்/அல்லது அதிக சேமிப்பிட உபயோகம் குறித்த தகவல்கள் இருக்கக்கூடும்."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ஒரு நாளுக்குப் பிறகு முடக்கு"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"விற்பனையாளரின் அதிவிவரப் பதிவு முடிந்துவிட்டது"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ஒரு நாளுக்கு இயக்கப்பட்டுள்ளது"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"இன்னும் ஒரு நாள் இயக்கு"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ஒரு நாளுக்குப் பிறகு முடக்கப்படும்"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"காலவரம்பின்றி இயக்கப்பட்டுள்ளது"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"சாளர அனிமேஷன் வேகம்"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"அனிமேஷன் மாற்றத்தின் வேகம்"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"அனிமேட்டர் கால அளவு"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 11cbf25..1df1823 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"డీబగ్ యాప్ల కోసం GPU డీబగ్ లేయర్లను లోడ్ చేయడాన్ని అనుమతించండి"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"వివరణాత్మక వెండార్ లాగింగ్ను ఎనేబుల్ చేయండి"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"బగ్ రిపోర్ట్లలో అదనపు పరికర-నిర్దిష్ట వెండార్ లాగ్లను చేర్చండి, అవి ప్రైవేట్ సమాచారాన్ని కలిగి ఉండవచ్చు, మరింత బ్యాటరీని, మరియు/లేదా మరింత స్టోరేజ్ను ఉపయోగించవచ్చు."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ఒక రోజు తర్వాత డిజేబుల్ చేయండి"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"వెర్బోస్ వెండర్ లాగింగ్ ముగిసింది"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ఒక రోజు పాటు ఎనేబుల్ చేసి ఉంది"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ఇంకొక రోజు ఎనేబుల్ చేసి ఉంచండి"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ఒక రోజు తర్వాత డిజేబుల్ అవుతుంది"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"నిరవధికంగా ఎనేబుల్ చేయబడింది"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"విండో యానిమేషన్ స్కేల్"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ట్రాన్సిషన్ యానిమేషన్ స్కేల్"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"యానిమేటర్ వ్యవధి స్కేల్"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 40dbcad..c26f02d 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"อนุญาตให้โหลดเลเยอร์การแก้ไขข้อบกพร่อง GPU สำหรับแอปแก้ไขข้อบกพร่อง"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"เปิดการบันทึกเวนเดอร์แบบละเอียด"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"รวมบันทึกเวนเดอร์เพิ่มเติมเฉพาะอุปกรณ์ไว้ในรายงานข้อบกพร่อง ซึ่งอาจมีข้อมูลส่วนตัว ใช้แบตเตอรี่มากขึ้น และ/หรือใช้พื้นที่เก็บข้อมูลมากขึ้น"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ปิดใช้หลังจากผ่านไป 1 วัน"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"การบันทึกข้อมูลเวนเดอร์แบบละเอียดสิ้นสุดแล้ว"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"เปิดใช้อีก 1 วันแล้ว"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"เปิดใช้อีก 1 วัน"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ปิดใช้หลังจากผ่านไป 1 วัน"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"เปิดใช้แบบไม่มีกำหนดสิ้นสุดแล้ว"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"อัตราการเคลื่อนไหวของหน้าต่าง"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"อัตราการเคลื่อนไหวของการเปลี่ยนภาพ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"อัตราความเร็วตามตัวสร้างภาพเคลื่อนไหว"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 221e634..1c038f6 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Payagang i-load ang GPU debug layer sa debug app"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"I-enable ang verbose vendor logging"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Magsama sa mga ulat ng bug ng mga karagdagang log ng vendor na partikular sa device, na posibleng may pribadong impormasyon, gumamit ng mas maraming baterya, at/o gumamit ng mas malaking storage."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"I-disable pagkalipas ng isang araw"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Tapos na ang verbose vendor logging"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Naka-enable para sa isang araw"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"I-enable para sa isa pang araw"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Magdi-disable pagkalipas ng isang araw"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Naka-enable nang walang katapusan"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Scale ng window animation"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scale ng transition animation"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scale ng tagal ng animator"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 33c4b3a..79ace3f 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Hata ayıklama uygulamaları için GPU hata ayıklama katmanlarının yüklenmesine izin ver"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ayrıntılı satıcı günlüğünü etkinleştir"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Hata raporlarına cihaza özgü ek satıcı günlükleri ekle. Bu günlükler gizli bilgiler içerebilir, daha fazla pil ve/veya daha fazla depolama alanı kullanabilir."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"1 gün sonra devre dışı bırak"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Ayrıntılı satıcı günlüğü sona erdi"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"1 günlüğüne etkinleştirildi"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"1 gün daha etkinleştir"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"1 gün sonra devre dışı bırakılır"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Süresiz olarak etkinleştirildi"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Pencere animasyonu ölçeği"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Geçiş animasyonu ölçeği"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatör süre ölçeği"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index ce4536f..de416d2 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дозволити завантажувати шари налагодження ГП для додатків налагодження"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Увімкнути докладний журнал постачальника"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включати у звіти про помилки додаткові записи постачальника про пристрій, які можуть містити особисті дані, призводити до надмірного споживання заряду акумулятора та/або використовувати більший обсяг пам\'яті."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Вимкнути через один день"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Ведення детального журналу постачальника завершено"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Увімкнено на один день"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Увімкнути ще на один день"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Вимикається через один день"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Увімкнено на необмежений час"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Анімація вікон"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Анімація переходів"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Тривалість анімації"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index d7f4561..3092832 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ڈیبگ ایپس کیلئے GPU ڈیبگ پرتوں کو لوڈ کرنے دیں"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"وربوس وینڈر لاگنگ فعال کریں"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"اضافی آلہ کے مخصوص وینڈر لاگز کو بگ رپورٹس میں شامل کریں، جن میں نجی معلومات، بیٹری کا زیادہ استعمال اور/یا اسٹوریج کا زیادہ استعمال شامل ہوسکتے ہیں۔"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"ایک دن کے بعد غیر فعال کریں"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"وربوس وینڈر لاگنگ بند ہو گیا ہے"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"ایک دن کے لئے فعال ہو گیا"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"ایک اور دن کے لئے فعال کریں"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"ایک دن کے بعد غیر فعال ہو جائے گا"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"غیر معینہ مدت کے لئے فعال کر دیا گیا"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ونڈو اینیمیشن اسکیل"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ٹرانزیشن اینیمیشن اسکیل"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"اینیمیٹر دورانیے کا اسکیل"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 774dfc4..7502412 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Grafik protsessorni tuzatish qatlamlarini yuklashni yoqish"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Taʼminotchining batafsil jurnali"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Xatoliklar hisobotiga shaxsiy maʼlumotlari bor va koʻp joy olishi mumkin boʻlgan qurilma haqida taʼminotchining qoʻshimcha yozuvlari kiradi. Bunda batareya quvvati tezroq sarflanishi mumkin."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Bir kundan keyin faolsizlantirish"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Taʼminotchi tafsilotlarini qayd qilish tugadi"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Bir kunga yoqilgan"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Yana bir kunga yoqish"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Bir kundan keyin faolsizlantiriladi"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Oʻchirilmaguncha yoqilgan"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Oynalar animatsiyasi"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"O‘tish animatsiyasi"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatsiya tezligi"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index f66b137..02f0aa1 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Cho phép tải lớp gỡ lỗi GPU cho ứng dụng gỡ lỗi"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Bật tùy chọn ghi nhật ký chi tiết của nhà cung cấp"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Đưa thêm nhật ký của nhà cung cấp dành riêng cho thiết bị vào các báo cáo lỗi. Nhật ký này có thể chứa thông tin cá nhân, dùng nhiều pin hơn và/hoặc chiếm nhiều dung lượng lưu trữ hơn."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Tắt sau một ngày"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Quá trình ghi nhật ký chi tiết của nhà cung cấp đã kết thúc"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Đã bật trong một ngày"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Bật thêm một ngày nữa"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Tắt sau một ngày"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Đã bật vô thời hạn"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Tỷ lệ hình động của cửa sổ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Tỷ lệ hình động chuyển tiếp"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Tỷ lệ thời lượng của trình tạo hình động"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 2b6e8f8..a551121 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"允许为调试应用加载 GPU 调试层"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"启用详细供应商日志记录"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"在 bug 报告中包含其他设备特定的供应商日志,这些日志可能会含有隐私信息、消耗更多电量和/或使用更多存储空间。"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"一天后停用"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"详细供应商日志记录已结束"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"已启用一天"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"再启用一天"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"一天后停用"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"已无限期启用"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"窗口动画缩放"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"过渡动画缩放"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 时长缩放"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 97b6f66..6f8c537 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"允許為偵錯應用程式載入 GPU 偵錯圖層"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"啟用詳細供應商記錄"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"在錯誤報告中加入其他裝置專屬供應商記錄,其中可能包含私人資料,並會耗用更多電量及/或儲存空間。"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"在一天後停用"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"詳細供應商記錄已結束"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"已啟用一天"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"啟用多一天"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"在一天後停用"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"已無限期啟用"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"視窗動畫比例"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 片長比例"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 348b1f6..2806b02 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"允許載入 GPU 偵錯圖層為應用程式偵錯"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"啟用詳細供應商記錄功能"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"在錯誤報告中附上其他的裝置專屬供應商記錄。如果你這麼做,可能會增加電池用量及/或占用較多儲存空間,報告中可能也會包含私人資訊。"</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"一天後停用"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"已停用詳細供應商記錄功能"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"已啟用一天"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"再啟用一天"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"一天後停用"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"已無限期啟用"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"視窗動畫比例"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"動畫影片長度比例"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 9cc474c..570c424 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -408,18 +408,12 @@
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Vumela izendlalelo zokususa amaphutha ze-GPU ngezinhlelo zokusebenza zokususa amaphutha"</string>
<string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Nika amandla ilogu yomthengisi we-verbose"</string>
<string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Faka phakathi amalogu athize womthengisi wedivayisi angeziwe, angase afake phakathi ulwazi oluyimfihlo, kusebenzisa ibhethri eningi, futhi/noma kusebenzisa isitoreji esiningi."</string>
- <!-- no translation found for enable_verbose_vendor_logging_checkbox (3864578373293835530) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_title (6811217272559843592) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_summary (5226524769774370942) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_notification_action (1190831050259046071) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_will_disable (6175431593394522553) -->
- <skip />
- <!-- no translation found for verbose_vendor_logging_preference_summary_on (9017757242481762036) -->
- <skip />
+ <string name="enable_verbose_vendor_logging_checkbox" msgid="3864578373293835530">"Khubaza ngemva kosuku olulodwa"</string>
+ <string name="verbose_vendor_logging_notification_title" msgid="6811217272559843592">"Ukungena komthengisi weverbose kuphelile"</string>
+ <string name="verbose_vendor_logging_notification_summary" msgid="5226524769774370942">"Nika amandla usuku olulodwa"</string>
+ <string name="verbose_vendor_logging_notification_action" msgid="1190831050259046071">"Nika amandla usuku olulodwa olwengeziwe"</string>
+ <string name="verbose_vendor_logging_preference_summary_will_disable" msgid="6175431593394522553">"Khubaza ngemva kosuku olulodwa"</string>
+ <string name="verbose_vendor_logging_preference_summary_on" msgid="9017757242481762036">"Kunikwe amandla isikhathi esinganqunyiwe"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Iwindi yesilinganisi sesithombe esinyakazayo"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Isilinganiso sesithombe soku"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Isilinganiso sobude besikhathi somenzi womfanekiso onyakazayo"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManagerExt.kt b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManagerExt.kt
new file mode 100644
index 0000000..2eaa804
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManagerExt.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.bluetooth
+
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.launch
+
+/** [Flow] for [BluetoothCallback] device profile connection state change events */
+val BluetoothEventManager.onProfileConnectionStateChanged: Flow<ProfileConnectionState>
+ get() = callbackFlow {
+ val callback =
+ object : BluetoothCallback {
+ override fun onProfileConnectionStateChanged(
+ cachedDevice: CachedBluetoothDevice,
+ @BluetoothCallback.ConnectionState state: Int,
+ bluetoothProfile: Int
+ ) {
+ launch { send(ProfileConnectionState(cachedDevice, state, bluetoothProfile)) }
+ }
+ }
+ registerCallback(callback)
+ awaitClose { unregisterCallback(callback) }
+ }
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastAssistantCallbackExt.kt b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastAssistantCallbackExt.kt
new file mode 100644
index 0000000..91a99ae
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastAssistantCallbackExt.kt
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.bluetooth
+
+import android.bluetooth.BluetoothDevice
+import android.bluetooth.BluetoothLeBroadcastAssistant
+import android.bluetooth.BluetoothLeBroadcastMetadata
+import android.bluetooth.BluetoothLeBroadcastReceiveState
+import com.android.internal.util.ConcurrentUtils
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.launch
+
+/** [Flow] for [BluetoothLeBroadcastAssistant.Callback] source connected/removed events */
+val LocalBluetoothLeBroadcastAssistant.onSourceConnectedOrRemoved: Flow<Unit>
+ get() = callbackFlow {
+ val callback =
+ object : BluetoothLeBroadcastAssistant.Callback {
+ override fun onReceiveStateChanged(
+ sink: BluetoothDevice,
+ sourceId: Int,
+ state: BluetoothLeBroadcastReceiveState
+ ) {
+ if (BluetoothUtils.isConnected(state)) {
+ launch { send(Unit) }
+ }
+ }
+
+ override fun onSourceRemoved(sink: BluetoothDevice, sourceId: Int, reason: Int) {
+ launch { send(Unit) }
+ }
+
+ override fun onSearchStarted(reason: Int) {}
+
+ override fun onSearchStartFailed(reason: Int) {}
+
+ override fun onSearchStopped(reason: Int) {}
+
+ override fun onSearchStopFailed(reason: Int) {}
+
+ override fun onSourceFound(source: BluetoothLeBroadcastMetadata) {}
+
+ override fun onSourceAdded(sink: BluetoothDevice, sourceId: Int, reason: Int) {}
+
+ override fun onSourceAddFailed(
+ sink: BluetoothDevice,
+ source: BluetoothLeBroadcastMetadata,
+ reason: Int
+ ) {}
+
+ override fun onSourceModified(sink: BluetoothDevice, sourceId: Int, reason: Int) {}
+
+ override fun onSourceModifyFailed(
+ sink: BluetoothDevice,
+ sourceId: Int,
+ reason: Int
+ ) {}
+
+ override fun onSourceRemoveFailed(
+ sink: BluetoothDevice,
+ sourceId: Int,
+ reason: Int
+ ) {}
+ }
+ registerServiceCallBack(
+ ConcurrentUtils.DIRECT_EXECUTOR,
+ callback,
+ )
+ awaitClose { unregisterServiceCallBack(callback) }
+ }
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/ProfileConnectionState.kt b/packages/SettingsLib/src/com/android/settingslib/bluetooth/ProfileConnectionState.kt
new file mode 100644
index 0000000..45aaa66
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/ProfileConnectionState.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.bluetooth
+
+data class ProfileConnectionState(
+ val cachedDevice: CachedBluetoothDevice,
+ @BluetoothCallback.ConnectionState val state: Int,
+ val bluetoothProfile: Int,
+)
\ No newline at end of file
diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryUtils.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryUtils.java
index ca3af53..8571360 100644
--- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryUtils.java
@@ -83,6 +83,12 @@
return userManager.isManagedProfile() && !userManager.isSystemUser();
}
+ /** Returns true if current user is a private profile user. */
+ public static boolean isPrivateProfile(Context context) {
+ final UserManager userManager = context.getSystemService(UserManager.class);
+ return userManager.isPrivateProfile();
+ }
+
private static Boolean sChargingStringV2Enabled = null;
/** Returns {@code true} if the charging string v2 is enabled. */
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/ZenModeRepository.kt b/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/ZenModeRepository.kt
index 26b5741..b2fcb5f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/ZenModeRepository.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/ZenModeRepository.kt
@@ -16,6 +16,7 @@
package com.android.settingslib.notification.data.repository
+import android.annotation.SuppressLint
import android.app.NotificationManager
import android.app.NotificationManager.EXTRA_NOTIFICATION_POLICY
import android.content.BroadcastReceiver
@@ -58,6 +59,7 @@
val modes: Flow<List<ZenMode>>
}
+@SuppressLint("SharedFlowCreation")
class ZenModeRepositoryImpl(
private val context: Context,
private val notificationManager: NotificationManager,
@@ -100,12 +102,11 @@
}
.let {
if (Flags.volumePanelBroadcastFix()) {
+ // Share the flow to avoid having multiple broadcasts.
it.flowOn(backgroundCoroutineContext)
+ .shareIn(started = SharingStarted.WhileSubscribed(), scope = scope)
} else {
- it.shareIn(
- started = SharingStarted.WhileSubscribed(),
- scope = scope,
- )
+ it.shareIn(started = SharingStarted.WhileSubscribed(), scope = scope)
}
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt
index 9dbf23e..eb33a7a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt
@@ -16,33 +16,84 @@
package com.android.settingslib.volume.data.repository
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothCsipSetCoordinator
+import android.bluetooth.BluetoothDevice
import android.bluetooth.BluetoothLeBroadcast
import android.bluetooth.BluetoothLeBroadcastMetadata
+import android.bluetooth.BluetoothProfile
+import android.bluetooth.BluetoothVolumeControl
+import android.content.ContentResolver
+import android.content.Context
+import android.database.ContentObserver
+import android.provider.Settings
+import androidx.annotation.IntRange
import com.android.internal.util.ConcurrentUtils
+import com.android.settingslib.bluetooth.BluetoothUtils
import com.android.settingslib.bluetooth.LocalBluetoothManager
+import com.android.settingslib.bluetooth.onProfileConnectionStateChanged
+import com.android.settingslib.bluetooth.onSourceConnectedOrRemoved
import com.android.settingslib.flags.Flags
+import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MAX
+import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MIN
import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.emptyFlow
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onStart
+import kotlinx.coroutines.flow.runningFold
+import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
+typealias GroupIdToVolumes = Map<Int, Int>
/** Provides audio sharing functionality. */
interface AudioSharingRepository {
/** Whether the device is in audio sharing. */
val inAudioSharing: Flow<Boolean>
+
+ /** The secondary headset groupId in audio sharing. */
+ val secondaryGroupId: StateFlow<Int>
+
+ /** The headset groupId to volume map during audio sharing. */
+ val volumeMap: StateFlow<GroupIdToVolumes>
+
+ /** Set the volume of secondary headset during audio sharing. */
+ suspend fun setSecondaryVolume(
+ @IntRange(from = AUDIO_SHARING_VOLUME_MIN.toLong(), to = AUDIO_SHARING_VOLUME_MAX.toLong())
+ volume: Int
+ )
+
+ companion object {
+ const val AUDIO_SHARING_VOLUME_MIN = 0
+ const val AUDIO_SHARING_VOLUME_MAX = 255
+ }
}
+@OptIn(ExperimentalCoroutinesApi::class)
class AudioSharingRepositoryImpl(
- private val localBluetoothManager: LocalBluetoothManager?,
- backgroundCoroutineContext: CoroutineContext,
+ private val context: Context,
+ private val contentResolver: ContentResolver,
+ private val btManager: LocalBluetoothManager?,
+ private val coroutineScope: CoroutineScope,
+ private val backgroundCoroutineContext: CoroutineContext,
) : AudioSharingRepository {
override val inAudioSharing: Flow<Boolean> =
if (Flags.enableLeAudioSharing()) {
- localBluetoothManager?.profileManager?.leAudioBroadcastProfile?.let { leBroadcast ->
+ btManager?.profileManager?.leAudioBroadcastProfile?.let { leBroadcast ->
callbackFlow {
val listener =
object : BluetoothLeBroadcast.Callback {
@@ -92,9 +143,117 @@
flowOf(false)
}
+ private val primaryChange: Flow<Unit> = callbackFlow {
+ val callback =
+ object : ContentObserver(null) {
+ override fun onChange(selfChange: Boolean) {
+ launch { send(Unit) }
+ }
+ }
+ contentResolver.registerContentObserver(
+ Settings.Secure.getUriFor(BluetoothUtils.getPrimaryGroupIdUriForBroadcast()),
+ false,
+ callback)
+ awaitClose { contentResolver.unregisterContentObserver(callback) }
+ }
+
+ override val secondaryGroupId: StateFlow<Int> =
+ if (Flags.volumeDialogAudioSharingFix()) {
+ merge(
+ btManager
+ ?.profileManager
+ ?.leAudioBroadcastAssistantProfile
+ ?.onSourceConnectedOrRemoved
+ ?.map { getSecondaryGroupId() } ?: emptyFlow(),
+ btManager
+ ?.eventManager
+ ?.onProfileConnectionStateChanged
+ ?.filter { profileConnection ->
+ profileConnection.state == BluetoothAdapter.STATE_DISCONNECTED &&
+ profileConnection.bluetoothProfile ==
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ }
+ ?.map { getSecondaryGroupId() } ?: emptyFlow(),
+ primaryChange.map { getSecondaryGroupId() })
+ .onStart { emit(getSecondaryGroupId()) }
+ .distinctUntilChanged()
+ .flowOn(backgroundCoroutineContext)
+ } else {
+ emptyFlow()
+ }
+ .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), getSecondaryGroupId())
+
+ override val volumeMap: StateFlow<GroupIdToVolumes> =
+ if (Flags.volumeDialogAudioSharingFix()) {
+ btManager?.profileManager?.volumeControlProfile?.let { volumeControl ->
+ inAudioSharing.flatMapLatest { isSharing ->
+ if (isSharing) {
+ callbackFlow {
+ val callback =
+ object : BluetoothVolumeControl.Callback {
+ override fun onDeviceVolumeChanged(
+ device: BluetoothDevice,
+ @IntRange(
+ from = AUDIO_SHARING_VOLUME_MIN.toLong(),
+ to = AUDIO_SHARING_VOLUME_MAX.toLong())
+ volume: Int
+ ) {
+ launch { send(Pair(device, volume)) }
+ }
+ }
+ // Once registered, we will receive the initial volume of all
+ // connected BT devices on VolumeControlProfile via callbacks
+ volumeControl.registerCallback(
+ ConcurrentUtils.DIRECT_EXECUTOR, callback)
+ awaitClose { volumeControl.unregisterCallback(callback) }
+ }
+ .runningFold(emptyMap<Int, Int>()) { acc, value ->
+ val groupId =
+ BluetoothUtils.getGroupId(
+ btManager.cachedDeviceManager?.findDevice(value.first))
+ if (groupId != BluetoothCsipSetCoordinator.GROUP_ID_INVALID) {
+ acc + Pair(groupId, value.second)
+ } else {
+ acc
+ }
+ }
+ .distinctUntilChanged()
+ .flowOn(backgroundCoroutineContext)
+ } else {
+ emptyFlow()
+ }
+ }
+ } ?: emptyFlow()
+ } else {
+ emptyFlow()
+ }
+ .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), emptyMap())
+
+ override suspend fun setSecondaryVolume(
+ @IntRange(from = AUDIO_SHARING_VOLUME_MIN.toLong(), to = AUDIO_SHARING_VOLUME_MAX.toLong())
+ volume: Int
+ ) {
+ withContext(backgroundCoroutineContext) {
+ if (Flags.volumeDialogAudioSharingFix()) {
+ btManager?.profileManager?.volumeControlProfile?.let {
+ // Find secondary headset and set volume.
+ val cachedDevice =
+ BluetoothUtils.getSecondaryDeviceForBroadcast(context, btManager)
+ if (cachedDevice != null) {
+ it.setDeviceVolume(cachedDevice.device, volume, /* isGroupOp= */ true)
+ }
+ }
+ }
+ }
+ }
+
private fun isBroadcasting(): Boolean {
return Flags.enableLeAudioSharing() &&
- (localBluetoothManager?.profileManager?.leAudioBroadcastProfile?.isEnabled(null)
- ?: false)
+ (btManager?.profileManager?.leAudioBroadcastProfile?.isEnabled(null) ?: false)
+ }
+
+ private fun getSecondaryGroupId(): Int {
+ return BluetoothUtils.getGroupId(
+ BluetoothUtils.getSecondaryDeviceForBroadcast(context, btManager))
}
}
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt
index 1c80ef4..000664d 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt
@@ -16,15 +16,33 @@
package com.android.settingslib.volume.data.repository
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
import android.bluetooth.BluetoothLeBroadcast
+import android.bluetooth.BluetoothLeBroadcastAssistant
+import android.bluetooth.BluetoothLeBroadcastReceiveState
+import android.bluetooth.BluetoothProfile
+import android.bluetooth.BluetoothVolumeControl
+import android.content.ContentResolver
+import android.content.Context
+import android.database.ContentObserver
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.SetFlagsRule
+import android.provider.Settings
+import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.settingslib.bluetooth.BluetoothCallback
+import com.android.settingslib.bluetooth.BluetoothEventManager
+import com.android.settingslib.bluetooth.BluetoothUtils
+import com.android.settingslib.bluetooth.CachedBluetoothDevice
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant
import com.android.settingslib.bluetooth.LocalBluetoothManager
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager
+import com.android.settingslib.bluetooth.VolumeControlProfile
import com.android.settingslib.flags.Flags
import com.google.common.truth.Truth
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -39,6 +57,9 @@
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.any
+import org.mockito.ArgumentMatchers.anyBoolean
+import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.ArgumentMatchers.eq
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito.never
@@ -52,27 +73,76 @@
@RunWith(AndroidJUnit4::class)
class AudioSharingRepositoryTest {
@get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
+
@get:Rule val setFlagsRule: SetFlagsRule = SetFlagsRule()
- @Mock private lateinit var localBluetoothManager: LocalBluetoothManager
- @Mock private lateinit var localBluetoothProfileManager: LocalBluetoothProfileManager
- @Mock private lateinit var localBluetoothLeBroadcast: LocalBluetoothLeBroadcast
+ @Mock private lateinit var btManager: LocalBluetoothManager
+
+ @Mock private lateinit var profileManager: LocalBluetoothProfileManager
+
+ @Mock private lateinit var broadcast: LocalBluetoothLeBroadcast
+
+ @Mock private lateinit var assistant: LocalBluetoothLeBroadcastAssistant
+
+ @Mock private lateinit var volumeControl: VolumeControlProfile
+
+ @Mock private lateinit var eventManager: BluetoothEventManager
+
+ @Mock private lateinit var deviceManager: CachedBluetoothDeviceManager
+
+ @Mock private lateinit var device1: BluetoothDevice
+
+ @Mock private lateinit var device2: BluetoothDevice
+
+ @Mock private lateinit var cachedDevice1: CachedBluetoothDevice
+
+ @Mock private lateinit var cachedDevice2: CachedBluetoothDevice
+
+ @Mock private lateinit var receiveState: BluetoothLeBroadcastReceiveState
+
+ @Mock private lateinit var contentResolver: ContentResolver
@Captor
- private lateinit var leBroadcastCallbackCaptor: ArgumentCaptor<BluetoothLeBroadcast.Callback>
- private val testScope = TestScope()
+ private lateinit var broadcastCallbackCaptor: ArgumentCaptor<BluetoothLeBroadcast.Callback>
+ @Captor
+ private lateinit var assistantCallbackCaptor:
+ ArgumentCaptor<BluetoothLeBroadcastAssistant.Callback>
+
+ @Captor private lateinit var btCallbackCaptor: ArgumentCaptor<BluetoothCallback>
+
+ @Captor private lateinit var contentObserverCaptor: ArgumentCaptor<ContentObserver>
+
+ @Captor
+ private lateinit var volumeCallbackCaptor: ArgumentCaptor<BluetoothVolumeControl.Callback>
+
+ private val testScope = TestScope()
+ private val context: Context = ApplicationProvider.getApplicationContext()
private lateinit var underTest: AudioSharingRepository
@Before
fun setup() {
- `when`(localBluetoothManager.profileManager).thenReturn(localBluetoothProfileManager)
- `when`(localBluetoothProfileManager.leAudioBroadcastProfile)
- .thenReturn(localBluetoothLeBroadcast)
- `when`(localBluetoothLeBroadcast.isEnabled(null)).thenReturn(true)
+ `when`(btManager.profileManager).thenReturn(profileManager)
+ `when`(profileManager.leAudioBroadcastProfile).thenReturn(broadcast)
+ `when`(profileManager.leAudioBroadcastAssistantProfile).thenReturn(assistant)
+ `when`(profileManager.volumeControlProfile).thenReturn(volumeControl)
+ `when`(btManager.eventManager).thenReturn(eventManager)
+ `when`(btManager.cachedDeviceManager).thenReturn(deviceManager)
+ `when`(broadcast.isEnabled(null)).thenReturn(true)
+ `when`(cachedDevice1.groupId).thenReturn(TEST_GROUP_ID1)
+ `when`(cachedDevice1.device).thenReturn(device1)
+ `when`(deviceManager.findDevice(device1)).thenReturn(cachedDevice1)
+ `when`(cachedDevice2.groupId).thenReturn(TEST_GROUP_ID2)
+ `when`(cachedDevice2.device).thenReturn(device2)
+ `when`(deviceManager.findDevice(device2)).thenReturn(cachedDevice2)
+ `when`(receiveState.bisSyncState).thenReturn(arrayListOf(TEST_RECEIVE_STATE_CONTENT))
+ `when`(assistant.getAllSources(any())).thenReturn(listOf(receiveState))
underTest =
AudioSharingRepositoryImpl(
- localBluetoothManager,
+ context,
+ contentResolver,
+ btManager,
+ testScope.backgroundScope,
testScope.testScheduler,
)
}
@@ -84,9 +154,9 @@
val states = mutableListOf<Boolean?>()
underTest.inAudioSharing.onEach { states.add(it) }.launchIn(backgroundScope)
runCurrent()
- triggerAudioSharingStateChange(false)
+ triggerAudioSharingStateChange(TriggerType.BROADCAST_STOP, broadcastStopped)
runCurrent()
- triggerAudioSharingStateChange(true)
+ triggerAudioSharingStateChange(TriggerType.BROADCAST_START, broadcastStarted)
runCurrent()
Truth.assertThat(states).containsExactly(true, false, true)
@@ -102,19 +172,229 @@
runCurrent()
Truth.assertThat(states).containsExactly(false)
- verify(localBluetoothLeBroadcast, never()).registerServiceCallBack(any(), any())
- verify(localBluetoothLeBroadcast, never()).isEnabled(any())
+ verify(broadcast, never()).registerServiceCallBack(any(), any())
+ verify(broadcast, never()).isEnabled(any())
}
}
- private fun triggerAudioSharingStateChange(inAudioSharing: Boolean) {
- verify(localBluetoothLeBroadcast)
- .registerServiceCallBack(any(), leBroadcastCallbackCaptor.capture())
- `when`(localBluetoothLeBroadcast.isEnabled(null)).thenReturn(inAudioSharing)
- if (inAudioSharing) {
- leBroadcastCallbackCaptor.value.onBroadcastStarted(0, 0)
- } else {
- leBroadcastCallbackCaptor.value.onBroadcastStopped(0, 0)
+ @Test
+ @EnableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX)
+ fun secondaryGroupIdChange_emitValues() {
+ testScope.runTest {
+ val groupIds = mutableListOf<Int?>()
+ underTest.secondaryGroupId.onEach { groupIds.add(it) }.launchIn(backgroundScope)
+ runCurrent()
+ triggerSourceAdded()
+ runCurrent()
+ triggerContentObserverChange()
+ runCurrent()
+ triggerSourceRemoved()
+ runCurrent()
+ triggerSourceAdded()
+ runCurrent()
+ triggerProfileConnectionChange(
+ BluetoothAdapter.STATE_CONNECTING, BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT)
+ runCurrent()
+ triggerProfileConnectionChange(
+ BluetoothAdapter.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO)
+ runCurrent()
+ triggerProfileConnectionChange(
+ BluetoothAdapter.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT)
+ runCurrent()
+
+ Truth.assertThat(groupIds)
+ .containsExactly(
+ TEST_GROUP_ID_INVALID,
+ TEST_GROUP_ID2,
+ TEST_GROUP_ID1,
+ TEST_GROUP_ID_INVALID,
+ TEST_GROUP_ID2,
+ TEST_GROUP_ID_INVALID)
}
}
+
+ @Test
+ @DisableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX)
+ fun secondaryGroupIdChange_audioSharingFlagOff_returnFalse() {
+ testScope.runTest {
+ val groupIds = mutableListOf<Int?>()
+ underTest.secondaryGroupId.onEach { groupIds.add(it) }.launchIn(backgroundScope)
+ runCurrent()
+
+ Truth.assertThat(groupIds).containsExactly(TEST_GROUP_ID_INVALID)
+ verify(assistant, never()).registerServiceCallBack(any(), any())
+ verify(eventManager, never()).registerCallback(any())
+ }
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX)
+ fun volumeMapChange_emitValues() {
+ testScope.runTest {
+ val volumeMaps = mutableListOf<GroupIdToVolumes?>()
+ underTest.volumeMap.onEach { volumeMaps.add(it) }.launchIn(backgroundScope)
+ runCurrent()
+ triggerVolumeMapChange(Pair(device1, TEST_VOLUME1))
+ runCurrent()
+ triggerVolumeMapChange(Pair(device1, TEST_VOLUME2))
+ runCurrent()
+ triggerAudioSharingStateChange(TriggerType.BROADCAST_STOP, broadcastStopped)
+ runCurrent()
+ verify(volumeControl).unregisterCallback(any())
+ runCurrent()
+
+ Truth.assertThat(volumeMaps)
+ .containsExactly(
+ emptyMap<Int, Int>(),
+ mapOf(TEST_GROUP_ID1 to TEST_VOLUME1),
+ mapOf(TEST_GROUP_ID1 to TEST_VOLUME2))
+ }
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX)
+ fun volumeMapChange_audioSharingFlagOff_returnFalse() {
+ testScope.runTest {
+ val volumeMaps = mutableListOf<GroupIdToVolumes?>()
+ underTest.volumeMap.onEach { volumeMaps.add(it) }.launchIn(backgroundScope)
+ runCurrent()
+
+ Truth.assertThat(volumeMaps).isEmpty()
+ verify(broadcast, never()).registerServiceCallBack(any(), any())
+ verify(volumeControl, never()).registerCallback(any(), any())
+ }
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX)
+ fun setSecondaryVolume_setValue() {
+ testScope.runTest {
+ Settings.Secure.putInt(
+ context.contentResolver,
+ BluetoothUtils.getPrimaryGroupIdUriForBroadcast(),
+ TEST_GROUP_ID2)
+ `when`(assistant.allConnectedDevices).thenReturn(listOf(device1, device2))
+ underTest.setSecondaryVolume(TEST_VOLUME1)
+
+ runCurrent()
+ verify(volumeControl).setDeviceVolume(device1, TEST_VOLUME1, true)
+ }
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX)
+ fun setSecondaryVolume_audioSharingFlagOff_doNothing() {
+ testScope.runTest {
+ Settings.Secure.putInt(
+ context.contentResolver,
+ BluetoothUtils.getPrimaryGroupIdUriForBroadcast(),
+ TEST_GROUP_ID2)
+ `when`(assistant.allConnectedDevices).thenReturn(listOf(device1, device2))
+ underTest.setSecondaryVolume(TEST_VOLUME1)
+
+ runCurrent()
+ verify(volumeControl, never()).setDeviceVolume(any(), anyInt(), anyBoolean())
+ }
+ }
+
+ private fun triggerAudioSharingStateChange(
+ type: TriggerType,
+ broadcastAction: BluetoothLeBroadcast.Callback.() -> Unit
+ ) {
+ verify(broadcast).registerServiceCallBack(any(), broadcastCallbackCaptor.capture())
+ when (type) {
+ TriggerType.BROADCAST_START -> {
+ `when`(broadcast.isEnabled(null)).thenReturn(true)
+ broadcastCallbackCaptor.value.broadcastAction()
+ }
+ TriggerType.BROADCAST_STOP -> {
+ `when`(broadcast.isEnabled(null)).thenReturn(false)
+ broadcastCallbackCaptor.value.broadcastAction()
+ }
+ }
+ }
+
+ private fun triggerSourceAdded() {
+ verify(assistant).registerServiceCallBack(any(), assistantCallbackCaptor.capture())
+ Settings.Secure.putInt(
+ context.contentResolver,
+ BluetoothUtils.getPrimaryGroupIdUriForBroadcast(),
+ TEST_GROUP_ID1)
+ `when`(assistant.allConnectedDevices).thenReturn(listOf(device1, device2))
+ assistantCallbackCaptor.value.sourceAdded(device1, receiveState)
+ }
+
+ private fun triggerSourceRemoved() {
+ verify(assistant).registerServiceCallBack(any(), assistantCallbackCaptor.capture())
+ `when`(assistant.allConnectedDevices).thenReturn(listOf(device1))
+ Settings.Secure.putInt(
+ context.contentResolver,
+ BluetoothUtils.getPrimaryGroupIdUriForBroadcast(),
+ TEST_GROUP_ID1)
+ assistantCallbackCaptor.value.sourceRemoved(device2)
+ }
+
+ private fun triggerProfileConnectionChange(state: Int, profile: Int) {
+ verify(eventManager).registerCallback(btCallbackCaptor.capture())
+ `when`(assistant.allConnectedDevices).thenReturn(listOf(device1))
+ Settings.Secure.putInt(
+ context.contentResolver,
+ BluetoothUtils.getPrimaryGroupIdUriForBroadcast(),
+ TEST_GROUP_ID1)
+ btCallbackCaptor.value.onProfileConnectionStateChanged(cachedDevice2, state, profile)
+ }
+
+ private fun triggerContentObserverChange() {
+ verify(contentResolver)
+ .registerContentObserver(
+ eq(Settings.Secure.getUriFor(BluetoothUtils.getPrimaryGroupIdUriForBroadcast())),
+ eq(false),
+ contentObserverCaptor.capture())
+ `when`(assistant.allConnectedDevices).thenReturn(listOf(device1, device2))
+ Settings.Secure.putInt(
+ context.contentResolver,
+ BluetoothUtils.getPrimaryGroupIdUriForBroadcast(),
+ TEST_GROUP_ID2)
+ contentObserverCaptor.value.primaryChanged()
+ }
+
+ private fun triggerVolumeMapChange(change: Pair<BluetoothDevice, Int>) {
+ verify(volumeControl).registerCallback(any(), volumeCallbackCaptor.capture())
+ volumeCallbackCaptor.value.onDeviceVolumeChanged(change.first, change.second)
+ }
+
+ private enum class TriggerType {
+ BROADCAST_START,
+ BROADCAST_STOP
+ }
+
+ private companion object {
+ const val TEST_GROUP_ID_INVALID = -1
+ const val TEST_GROUP_ID1 = 1
+ const val TEST_GROUP_ID2 = 2
+ const val TEST_SOURCE_ID = 1
+ const val TEST_BROADCAST_ID = 1
+ const val TEST_REASON = 1
+ const val TEST_RECEIVE_STATE_CONTENT = 1L
+ const val TEST_VOLUME1 = 10
+ const val TEST_VOLUME2 = 20
+
+ val broadcastStarted: BluetoothLeBroadcast.Callback.() -> Unit = {
+ onBroadcastStarted(TEST_REASON, TEST_BROADCAST_ID)
+ }
+ val broadcastStopped: BluetoothLeBroadcast.Callback.() -> Unit = {
+ onBroadcastStopped(TEST_REASON, TEST_BROADCAST_ID)
+ }
+ val sourceAdded:
+ BluetoothLeBroadcastAssistant.Callback.(
+ sink: BluetoothDevice, state: BluetoothLeBroadcastReceiveState) -> Unit =
+ { sink, state ->
+ onReceiveStateChanged(sink, TEST_SOURCE_ID, state)
+ }
+ val sourceRemoved: BluetoothLeBroadcastAssistant.Callback.(sink: BluetoothDevice) -> Unit =
+ { sink ->
+ onSourceRemoved(sink, TEST_SOURCE_ID, TEST_REASON)
+ }
+ val primaryChanged: ContentObserver.() -> Unit = { onChange(false) }
+ }
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatteryUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatteryUtilsTest.java
index 6424352..465798c 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatteryUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatteryUtilsTest.java
@@ -23,11 +23,11 @@
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.Context;
-import android.content.Intent;
import android.content.IntentFilter;
import android.os.UserManager;
import android.provider.Settings;
@@ -41,7 +41,6 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowAccessibilityManager;
import java.util.Arrays;
@@ -59,12 +58,15 @@
private AccessibilityServiceInfo mAccessibilityServiceInfo1;
@Mock
private AccessibilityServiceInfo mAccessibilityServiceInfo2;
+ @Mock
+ private UserManager mUserManager;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
doReturn(mContext).when(mContext).getApplicationContext();
+ when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
mAccessibilityManager = spy(mContext.getSystemService(AccessibilityManager.class));
mShadowAccessibilityManager = shadowOf(mAccessibilityManager);
doReturn(mAccessibilityManager).when(mContext)
@@ -108,13 +110,23 @@
@Test
public void isWorkProfile_workProfileMode_returnTrue() {
- final UserManager userManager = mContext.getSystemService(UserManager.class);
- Shadows.shadowOf(userManager).setManagedProfile(true);
- Shadows.shadowOf(userManager).setIsSystemUser(false);
+ doReturn(true).when(mUserManager).isManagedProfile();
assertThat(BatteryUtils.isWorkProfile(mContext)).isTrue();
}
+ @Test
+ public void isPrivateProfile_defaultValue_returnFalse() {
+ assertThat(BatteryUtils.isPrivateProfile(mContext)).isFalse();
+ }
+
+ @Test
+ public void isPrivateProfile_privateProfileMode_returnTrue() {
+ doReturn(true).when(mUserManager).isPrivateProfile();
+
+ assertThat(BatteryUtils.isPrivateProfile(mContext)).isTrue();
+ }
+
private void setTtsPackageName(String defaultTtsPackageName) {
Settings.Secure.putString(mContext.getContentResolver(),
Settings.Secure.TTS_DEFAULT_SYNTH, defaultTtsPackageName);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/data/repository/ZenModeRepositoryTest.kt b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/data/repository/ZenModeRepositoryTest.kt
index 4bd5cc4..67c73b1 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/data/repository/ZenModeRepositoryTest.kt
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/data/repository/ZenModeRepositoryTest.kt
@@ -25,6 +25,7 @@
import android.os.Parcelable
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
+import android.platform.test.flag.junit.SetFlagsRule
import android.provider.Settings.Global
import androidx.test.filters.SmallTest
import com.android.settingslib.flags.Flags
@@ -39,6 +40,7 @@
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
@@ -55,6 +57,8 @@
@RunWith(RobolectricTestRunner::class)
@SmallTest
class ZenModeRepositoryTest {
+ @get:Rule val setFlagsRule = SetFlagsRule()
+
@Mock private lateinit var context: Context
@Mock private lateinit var notificationManager: NotificationManager
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 1871873..a17076b 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -1025,7 +1025,5 @@
},
required: [
"privapp_whitelist_com.android.systemui",
- "wmshell.protolog.json.gz",
- "wmshell.protolog.pb",
],
}
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 71f5511..97a45fb 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -1186,4 +1186,24 @@
namespace: "systemui"
description: "Enables MSDL feedback in SysUI surfaces."
bug: "352600066"
+}
+
+flag {
+ name: "sim_pin_race_condition_on_restart"
+ namespace: "systemui"
+ description: "The SIM PIN screen may be shown incorrectly on reboot"
+ bug: "351426938"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
+ name: "sim_pin_talkback_fix_for_double_submit"
+ namespace: "systemui"
+ description: "The SIM PIN entry screens show the wrong message due"
+ bug: "346932439"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
}
\ No newline at end of file
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
index 43d51c3..92f03d7 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
@@ -45,7 +45,7 @@
import com.android.systemui.communal.shared.model.CommunalBackgroundType
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalTransitionKeys
-import com.android.systemui.communal.ui.compose.Dimensions.SlideOffsetY
+import com.android.systemui.communal.ui.compose.Dimensions.Companion.SlideOffsetY
import com.android.systemui.communal.ui.compose.extensions.allowGestures
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.communal.util.CommunalColors
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt
index bd4710b..768e653 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt
@@ -16,6 +16,8 @@
package com.android.systemui.communal.ui.compose
+import android.content.Context
+import android.content.res.Configuration
import android.graphics.drawable.Icon
import android.os.Bundle
import android.util.SizeF
@@ -116,6 +118,7 @@
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.layout.positionInWindow
+import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
@@ -129,6 +132,7 @@
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTagsAsResourceId
import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.LayoutDirection
@@ -388,6 +392,10 @@
}
}
+val hubDimensions: Dimensions
+ @Composable
+ get() = Dimensions(LocalContext.current, LocalConfiguration.current, LocalDensity.current)
+
@Composable
private fun DisclaimerBottomSheetContent(onButtonClicked: () -> Unit) {
val colors = LocalAndroidColorScheme.current
@@ -509,7 +517,6 @@
gridState = gridState,
contentListState = contentListState,
contentOffset = contentOffset,
- updateDragPositionForRemove = updateDragPositionForRemove
)
// A full size box in background that listens to widget drops from the picker.
@@ -517,7 +524,7 @@
// for android drag events.
Box(Modifier.fillMaxSize().dragAndDropTarget(dragAndDropTargetState)) {}
} else {
- gridModifier = gridModifier.height(Dimensions.GridHeight)
+ gridModifier = gridModifier.height(hubDimensions.GridHeight)
}
LazyHorizontalGrid(
@@ -595,7 +602,7 @@
) {
val colors = LocalAndroidColorScheme.current
Card(
- modifier = Modifier.height(Dimensions.GridHeight).padding(contentPadding),
+ modifier = Modifier.height(hubDimensions.GridHeight).padding(contentPadding),
colors = CardDefaults.cardColors(containerColor = Color.Transparent),
border = BorderStroke(3.dp, colors.secondary),
shape = RoundedCornerShape(size = 80.dp)
@@ -996,7 +1003,6 @@
.thenIf(viewModel.isEditMode) {
Modifier.semantics {
contentDescription = accessibilityLabel
- onClick(label = clickActionLabel, action = null)
val deleteAction =
CustomAccessibilityAction(removeWidgetActionLabel) {
contentListState.onRemove(index)
@@ -1013,7 +1019,7 @@
true
}
- val actions = mutableListOf(deleteAction, selectWidgetAction)
+ val actions = mutableListOf(selectWidgetAction, deleteAction)
if (selectedIndex != null && selectedIndex != index) {
actions.add(
@@ -1280,7 +1286,7 @@
return PaddingValues(
start = Dimensions.ItemSpacing,
end = Dimensions.ItemSpacing,
- top = Dimensions.GridTopSpacing,
+ top = hubDimensions.GridTopSpacing,
)
}
val context = LocalContext.current
@@ -1289,7 +1295,8 @@
val screenHeight = with(density) { windowMetrics.bounds.height().toDp() }
val toolbarHeight = with(density) { Dimensions.ToolbarPaddingTop + toolbarSize.height.toDp() }
val verticalPadding =
- ((screenHeight - toolbarHeight - Dimensions.GridHeight + Dimensions.GridTopSpacing) / 2)
+ ((screenHeight - toolbarHeight - hubDimensions.GridHeight + hubDimensions.GridTopSpacing) /
+ 2)
.coerceAtLeast(Dimensions.Spacing)
return PaddingValues(
start = Dimensions.ToolbarPaddingHorizontal,
@@ -1345,29 +1352,44 @@
fun toOffset(): Offset = Offset(start, top)
}
-object Dimensions {
- val CardHeightFull = 530.dp
- val GridTopSpacing = 114.dp
- val GridHeight = CardHeightFull + GridTopSpacing
- val ItemSpacing = 50.dp
- val CardHeightHalf = (CardHeightFull - ItemSpacing) / 2
- val CardHeightThird = (CardHeightFull - (2 * ItemSpacing)) / 3
- val CardWidth = 360.dp
- val CardOutlineWidth = 3.dp
- val Spacing = ItemSpacing / 2
+class Dimensions(val context: Context, val config: Configuration, val density: Density) {
+ val GridTopSpacing: Dp
+ get() {
+ if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ return 114.dp
+ } else {
+ val windowMetrics =
+ WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(context)
+ val screenHeight = with(density) { windowMetrics.bounds.height().toDp() }
- // The sizing/padding of the toolbar in glanceable hub edit mode
- val ToolbarPaddingTop = 27.dp
- val ToolbarPaddingHorizontal = ItemSpacing
- val ToolbarButtonPaddingHorizontal = 24.dp
- val ToolbarButtonPaddingVertical = 16.dp
- val ButtonPadding =
- PaddingValues(
- vertical = ToolbarButtonPaddingVertical,
- horizontal = ToolbarButtonPaddingHorizontal,
- )
- val IconSize = 40.dp
- val SlideOffsetY = 30.dp
+ return (screenHeight - CardHeightFull) / 2
+ }
+ }
+
+ val GridHeight = CardHeightFull + GridTopSpacing
+
+ companion object {
+ val CardHeightFull = 530.dp
+ val ItemSpacing = 50.dp
+ val CardHeightHalf = (CardHeightFull - ItemSpacing) / 2
+ val CardHeightThird = (CardHeightFull - (2 * ItemSpacing)) / 3
+ val CardWidth = 360.dp
+ val CardOutlineWidth = 3.dp
+ val Spacing = ItemSpacing / 2
+
+ // The sizing/padding of the toolbar in glanceable hub edit mode
+ val ToolbarPaddingTop = 27.dp
+ val ToolbarPaddingHorizontal = ItemSpacing
+ val ToolbarButtonPaddingHorizontal = 24.dp
+ val ToolbarButtonPaddingVertical = 16.dp
+ val ButtonPadding =
+ PaddingValues(
+ vertical = ToolbarButtonPaddingVertical,
+ horizontal = ToolbarButtonPaddingHorizontal,
+ )
+ val IconSize = 40.dp
+ val SlideOffsetY = 30.dp
+ }
}
private object Colors {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/DragAndDropTargetState.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/DragAndDropTargetState.kt
index 9e6f22a..0c29394 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/DragAndDropTargetState.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/DragAndDropTargetState.kt
@@ -18,17 +18,13 @@
import android.content.ClipDescription
import android.view.DragEvent
-import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.draganddrop.dragAndDropTarget
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.scrollBy
-import androidx.compose.foundation.lazy.grid.LazyGridItemInfo
import androidx.compose.foundation.lazy.grid.LazyGridState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.rememberUpdatedState
@@ -45,8 +41,7 @@
import com.android.systemui.communal.util.WidgetPickerIntentUtils
import com.android.systemui.communal.util.WidgetPickerIntentUtils.getWidgetExtraFromIntent
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.isActive
+import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.launch
/**
@@ -59,32 +54,22 @@
gridState: LazyGridState,
contentOffset: Offset,
contentListState: ContentListState,
- updateDragPositionForRemove: (offset: Offset) -> Boolean,
): DragAndDropTargetState {
val scope = rememberCoroutineScope()
- val autoScrollSpeed = remember { mutableFloatStateOf(0f) }
- // Threshold of distance from edges that should start auto-scroll - chosen to be a narrow value
- // that allows differentiating intention of scrolling from intention of dragging over the first
- // visible item.
val autoScrollThreshold = with(LocalDensity.current) { 60.dp.toPx() }
val state =
- remember(gridState, contentListState) {
+ remember(gridState, contentOffset, contentListState, autoScrollThreshold, scope) {
DragAndDropTargetState(
state = gridState,
contentOffset = contentOffset,
contentListState = contentListState,
- scope = scope,
- autoScrollSpeed = autoScrollSpeed,
autoScrollThreshold = autoScrollThreshold,
- updateDragPositionForRemove = updateDragPositionForRemove,
+ scope = scope,
)
}
- LaunchedEffect(autoScrollSpeed.floatValue) {
- if (autoScrollSpeed.floatValue != 0f) {
- while (isActive) {
- gridState.scrollBy(autoScrollSpeed.floatValue)
- delay(10)
- }
+ LaunchedEffect(state) {
+ for (diff in state.scrollChannel) {
+ gridState.scrollBy(diff)
}
}
return state
@@ -96,7 +81,6 @@
* @see androidx.compose.foundation.draganddrop.dragAndDropTarget
* @see DragEvent
*/
-@OptIn(ExperimentalFoundationApi::class)
@Composable
internal fun Modifier.dragAndDropTarget(
dragDropTargetState: DragAndDropTargetState,
@@ -122,6 +106,10 @@
return state.onDrop(event)
}
+ override fun onExited(event: DragAndDropEvent) {
+ state.onExited()
+ }
+
override fun onEnded(event: DragAndDropEvent) {
state.onEnded()
}
@@ -149,19 +137,17 @@
private val state: LazyGridState,
private val contentOffset: Offset,
private val contentListState: ContentListState,
- private val scope: CoroutineScope,
- private val autoScrollSpeed: MutableState<Float>,
private val autoScrollThreshold: Float,
- private val updateDragPositionForRemove: (offset: Offset) -> Boolean,
+ private val scope: CoroutineScope,
) {
/**
* The placeholder item that is treated as if it is being dragged across the grid. It is added
* to grid once drag and drop event is started and removed when event ends.
*/
private var placeHolder = CommunalContentModel.WidgetPlaceholder()
-
private var placeHolderIndex: Int? = null
- private var isOnRemoveButton = false
+
+ internal val scrollChannel = Channel<Float>()
fun onStarted() {
// assume item will be added to the end.
@@ -170,39 +156,39 @@
}
fun onMoved(event: DragAndDropEvent) {
- val dragEvent = event.toAndroidDragEvent()
- isOnRemoveButton = updateDragPositionForRemove(Offset(dragEvent.x, dragEvent.y))
- if (!isOnRemoveButton) {
- findTargetItem(dragEvent)?.apply {
- var scrollIndex: Int? = null
- var scrollOffset: Int? = null
- if (placeHolderIndex == state.firstVisibleItemIndex) {
- // Save info about the first item before the move, to neutralize the automatic
- // keeping first item first.
- scrollIndex = placeHolderIndex
- scrollOffset = state.firstVisibleItemScrollOffset
- }
+ val dragOffset = event.toOffset()
- autoScrollIfNearEdges(dragEvent)
+ val targetItem =
+ state.layoutInfo.visibleItemsInfo
+ .asSequence()
+ .filter { item -> contentListState.isItemEditable(item.index) }
+ .firstItemAtOffset(dragOffset - contentOffset)
- if (contentListState.isItemEditable(this.index)) {
- movePlaceholderTo(this.index)
- placeHolderIndex = this.index
- }
-
- if (scrollIndex != null && scrollOffset != null) {
- // this is needed to neutralize automatic keeping the first item first.
- scope.launch { state.scrollToItem(scrollIndex, scrollOffset) }
- }
+ if (targetItem != null) {
+ var scrollIndex: Int? = null
+ var scrollOffset: Int? = null
+ if (placeHolderIndex == state.firstVisibleItemIndex) {
+ // Save info about the first item before the move, to neutralize the automatic
+ // keeping first item first.
+ scrollIndex = placeHolderIndex
+ scrollOffset = state.firstVisibleItemScrollOffset
}
+
+ if (contentListState.isItemEditable(targetItem.index)) {
+ movePlaceholderTo(targetItem.index)
+ placeHolderIndex = targetItem.index
+ }
+
+ if (scrollIndex != null && scrollOffset != null) {
+ // this is needed to neutralize automatic keeping the first item first.
+ scope.launch { state.scrollToItem(scrollIndex, scrollOffset) }
+ }
+ } else {
+ computeAutoscroll(dragOffset).takeIf { it != 0f }?.let { scrollChannel.trySend(it) }
}
}
fun onDrop(event: DragAndDropEvent): Boolean {
- autoScrollSpeed.value = 0f
- if (isOnRemoveButton) {
- return false
- }
return placeHolderIndex?.let { dropIndex ->
val widgetExtra = event.maybeWidgetExtra() ?: return false
val (componentName, user) = widgetExtra
@@ -221,39 +207,35 @@
}
fun onEnded() {
- autoScrollSpeed.value = 0f
placeHolderIndex = null
contentListState.list.remove(placeHolder)
- isOnRemoveButton = updateDragPositionForRemove(Offset.Zero)
}
- private fun autoScrollIfNearEdges(dragEvent: DragEvent) {
+ fun onExited() {
+ onEnded()
+ }
+
+ private fun computeAutoscroll(dragOffset: Offset): Float {
val orientation = state.layoutInfo.orientation
val distanceFromStart =
if (orientation == Orientation.Horizontal) {
- dragEvent.x
+ dragOffset.x
} else {
- dragEvent.y
+ dragOffset.y
}
val distanceFromEnd =
if (orientation == Orientation.Horizontal) {
- state.layoutInfo.viewportSize.width - dragEvent.x
+ state.layoutInfo.viewportEndOffset - dragOffset.x
} else {
- state.layoutInfo.viewportSize.height - dragEvent.y
+ state.layoutInfo.viewportEndOffset - dragOffset.y
}
- autoScrollSpeed.value =
- when {
- distanceFromEnd < autoScrollThreshold -> autoScrollThreshold - distanceFromEnd
- distanceFromStart < autoScrollThreshold ->
- -(autoScrollThreshold - distanceFromStart)
- else -> 0f
- }
- }
- private fun findTargetItem(dragEvent: DragEvent): LazyGridItemInfo? =
- state.layoutInfo.visibleItemsInfo.firstItemAtOffset(
- Offset(dragEvent.x, dragEvent.y) - contentOffset
- )
+ return when {
+ distanceFromEnd < autoScrollThreshold -> autoScrollThreshold - distanceFromEnd
+ distanceFromStart < autoScrollThreshold -> distanceFromStart - autoScrollThreshold
+ else -> 0f
+ }
+ }
private fun movePlaceholderTo(index: Int) {
val currentIndex = contentListState.list.indexOf(placeHolder)
@@ -271,4 +253,6 @@
val clipData = this.toAndroidDragEvent().clipData.takeIf { it.itemCount != 0 }
return clipData?.getItemAt(0)?.intent?.let { intent -> getWidgetExtraFromIntent(intent) }
}
+
+ private fun DragAndDropEvent.toOffset() = this.toAndroidDragEvent().run { Offset(x, y) }
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
index a184cf3..c4970c5 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt
@@ -145,6 +145,7 @@
}
// Note: boundsInWindow doesn't scroll off the screen
stackScrollView.setHeadsUpTop(boundsInWindow.top)
+ stackScrollView.setHeadsUpBottom(boundsInWindow.bottom)
}
)
}
@@ -198,6 +199,7 @@
LaunchedEffect(scrollableState.isScrollInProgress) {
if (!scrollableState.isScrollInProgress && scrollOffset <= minScrollOffset) {
+ viewModel.setHeadsUpAnimatingAway(false)
viewModel.snoozeHun()
}
}
@@ -470,7 +472,11 @@
)
}
if (shouldIncludeHeadsUpSpace) {
- HeadsUpNotificationSpace(stackScrollView = stackScrollView, viewModel = viewModel)
+ HeadsUpNotificationSpace(
+ stackScrollView = stackScrollView,
+ viewModel = viewModel,
+ modifier = Modifier.padding(top = topPadding)
+ )
}
}
}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
index 2d5d259..42ec2d2 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
@@ -408,7 +408,7 @@
HeadsUpNotificationSpace(
stackScrollView = notificationStackScrollView,
viewModel = notificationsPlaceholderViewModel,
- modifier = Modifier.align(Alignment.BottomCenter),
+ modifier = Modifier.align(Alignment.BottomCenter).navigationBarsPadding(),
isPeekFromBottom = true,
)
NotificationScrollingStack(
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
index 20b1303..78ba7de 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
@@ -64,6 +64,7 @@
internal val orientation: Orientation,
internal val coroutineScope: CoroutineScope,
) : DraggableHandler {
+ internal val nestedScrollKey = Any()
/** The [DraggableHandler] can only have one active [DragController] at a time. */
private var dragController: DragControllerImpl? = null
@@ -912,9 +913,9 @@
internal class NestedScrollHandlerImpl(
private val layoutImpl: SceneTransitionLayoutImpl,
private val orientation: Orientation,
- private val topOrLeftBehavior: NestedScrollBehavior,
- private val bottomOrRightBehavior: NestedScrollBehavior,
- private val isExternalOverscrollGesture: () -> Boolean,
+ internal var topOrLeftBehavior: NestedScrollBehavior,
+ internal var bottomOrRightBehavior: NestedScrollBehavior,
+ internal var isExternalOverscrollGesture: () -> Boolean,
private val pointersInfoOwner: PointersInfoOwner,
) {
private val layoutState = layoutImpl.state
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MultiPointerDraggable.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MultiPointerDraggable.kt
index 615d393..2b78b5a 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MultiPointerDraggable.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MultiPointerDraggable.kt
@@ -41,7 +41,6 @@
import androidx.compose.ui.node.ModifierNodeElement
import androidx.compose.ui.node.ObserverModifierNode
import androidx.compose.ui.node.PointerInputModifierNode
-import androidx.compose.ui.node.TraversableNode
import androidx.compose.ui.node.currentValueOf
import androidx.compose.ui.node.findNearestAncestor
import androidx.compose.ui.node.observeReads
@@ -139,16 +138,12 @@
DelegatingNode(),
PointerInputModifierNode,
CompositionLocalConsumerModifierNode,
- TraversableNode,
- PointersInfoOwner,
ObserverModifierNode {
private val pointerInputHandler: suspend PointerInputScope.() -> Unit = { pointerInput() }
private val delegate = delegate(SuspendingPointerInputModifierNode(pointerInputHandler))
private val velocityTracker = VelocityTracker()
private var previousEnabled: Boolean = false
- override val traverseKey: Any = TRAVERSE_KEY
-
var enabled: () -> Boolean = enabled
set(value) {
// Reset the pointer input whenever enabled changed.
@@ -208,7 +203,7 @@
private var startedPosition: Offset? = null
private var pointersDown: Int = 0
- override fun pointersInfo(): PointersInfo {
+ internal fun pointersInfo(): PointersInfo {
return PointersInfo(
startedPosition = startedPosition,
// Note: We could have 0 pointers during fling or for other reasons.
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt
index ddff2f7..945043d 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/NestedScrollToScene.kt
@@ -18,12 +18,13 @@
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
+import androidx.compose.ui.input.nestedscroll.NestedScrollSource
import androidx.compose.ui.input.nestedscroll.nestedScrollModifierNode
-import androidx.compose.ui.node.DelegatableNode
import androidx.compose.ui.node.DelegatingNode
import androidx.compose.ui.node.ModifierNodeElement
import androidx.compose.ui.platform.InspectorInfo
-import com.android.compose.nestedscroll.PriorityNestedScrollConnection
/**
* Defines the behavior of the [SceneTransitionLayout] when a scrollable component is scrolled.
@@ -67,7 +68,11 @@
* In addition, during scene transitions, scroll events are consumed by the
* [SceneTransitionLayout] instead of the scrollable component.
*/
- EdgeAlways(canStartOnPostFling = true),
+ EdgeAlways(canStartOnPostFling = true);
+
+ companion object {
+ val Default = EdgeNoPreview
+ }
}
internal fun Modifier.nestedScrollToScene(
@@ -122,37 +127,60 @@
}
private class NestedScrollToSceneNode(
- layoutImpl: SceneTransitionLayoutImpl,
- orientation: Orientation,
- topOrLeftBehavior: NestedScrollBehavior,
- bottomOrRightBehavior: NestedScrollBehavior,
- isExternalOverscrollGesture: () -> Boolean,
+ private var layoutImpl: SceneTransitionLayoutImpl,
+ private var orientation: Orientation,
+ private var topOrLeftBehavior: NestedScrollBehavior,
+ private var bottomOrRightBehavior: NestedScrollBehavior,
+ private var isExternalOverscrollGesture: () -> Boolean,
) : DelegatingNode() {
- lateinit var pointersInfoOwner: PointersInfoOwner
- private var priorityNestedScrollConnection: PriorityNestedScrollConnection =
- scenePriorityNestedScrollConnection(
- layoutImpl = layoutImpl,
- orientation = orientation,
- topOrLeftBehavior = topOrLeftBehavior,
- bottomOrRightBehavior = bottomOrRightBehavior,
- isExternalOverscrollGesture = isExternalOverscrollGesture,
- pointersInfoOwner = { pointersInfoOwner.pointersInfo() }
- )
+ private var scrollBehaviorOwner: ScrollBehaviorOwner? = null
- private var nestedScrollNode: DelegatableNode =
- nestedScrollModifierNode(
- connection = priorityNestedScrollConnection,
- dispatcher = null,
- )
+ private fun requireScrollBehaviorOwner(): ScrollBehaviorOwner {
+ var behaviorOwner = scrollBehaviorOwner
+ if (behaviorOwner == null) {
+ behaviorOwner = requireScrollBehaviorOwner(layoutImpl.draggableHandler(orientation))
+ scrollBehaviorOwner = behaviorOwner
+ }
+ return behaviorOwner
+ }
- override fun onAttach() {
- pointersInfoOwner = requireAncestorPointersInfoOwner()
- delegate(nestedScrollNode)
+ private val updateScrollBehaviorsConnection =
+ object : NestedScrollConnection {
+ /**
+ * When using [NestedScrollConnection.onPostScroll], we can specify the desired behavior
+ * before our parent components. This gives them the option to override our behavior if
+ * they choose.
+ *
+ * The behavior can be communicated at every scroll gesture to ensure that the hierarchy
+ * is respected, even if one of our descendant nodes changes behavior after we set it.
+ */
+ override fun onPostScroll(
+ consumed: Offset,
+ available: Offset,
+ source: NestedScrollSource,
+ ): Offset {
+ // If we have some remaining scroll, that scroll can be used to initiate a
+ // transition between scenes. We can assume that the behavior is only needed if
+ // there is some remaining amount.
+ if (available != Offset.Zero) {
+ requireScrollBehaviorOwner()
+ .updateScrollBehaviors(
+ topOrLeftBehavior = topOrLeftBehavior,
+ bottomOrRightBehavior = bottomOrRightBehavior,
+ isExternalOverscrollGesture = isExternalOverscrollGesture,
+ )
+ }
+
+ return Offset.Zero
+ }
+ }
+
+ init {
+ delegate(nestedScrollModifierNode(updateScrollBehaviorsConnection, dispatcher = null))
}
override fun onDetach() {
- // Make sure we reset the scroll connection when this modifier is removed from composition
- priorityNestedScrollConnection.reset()
+ scrollBehaviorOwner = null
}
fun update(
@@ -162,43 +190,10 @@
bottomOrRightBehavior: NestedScrollBehavior,
isExternalOverscrollGesture: () -> Boolean,
) {
- // Clean up the old nested scroll connection
- priorityNestedScrollConnection.reset()
- undelegate(nestedScrollNode)
-
- // Create a new nested scroll connection
- priorityNestedScrollConnection =
- scenePriorityNestedScrollConnection(
- layoutImpl = layoutImpl,
- orientation = orientation,
- topOrLeftBehavior = topOrLeftBehavior,
- bottomOrRightBehavior = bottomOrRightBehavior,
- isExternalOverscrollGesture = isExternalOverscrollGesture,
- pointersInfoOwner = pointersInfoOwner,
- )
- nestedScrollNode =
- nestedScrollModifierNode(
- connection = priorityNestedScrollConnection,
- dispatcher = null,
- )
- delegate(nestedScrollNode)
+ this.layoutImpl = layoutImpl
+ this.orientation = orientation
+ this.topOrLeftBehavior = topOrLeftBehavior
+ this.bottomOrRightBehavior = bottomOrRightBehavior
+ this.isExternalOverscrollGesture = isExternalOverscrollGesture
}
}
-
-private fun scenePriorityNestedScrollConnection(
- layoutImpl: SceneTransitionLayoutImpl,
- orientation: Orientation,
- topOrLeftBehavior: NestedScrollBehavior,
- bottomOrRightBehavior: NestedScrollBehavior,
- isExternalOverscrollGesture: () -> Boolean,
- pointersInfoOwner: PointersInfoOwner,
-) =
- NestedScrollHandlerImpl(
- layoutImpl = layoutImpl,
- orientation = orientation,
- topOrLeftBehavior = topOrLeftBehavior,
- bottomOrRightBehavior = bottomOrRightBehavior,
- isExternalOverscrollGesture = isExternalOverscrollGesture,
- pointersInfoOwner = pointersInfoOwner,
- )
- .connection
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
index 0c467b1..82275a9 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
@@ -207,8 +207,8 @@
* @param rightBehavior when we should perform the overscroll animation at the right.
*/
fun Modifier.horizontalNestedScrollToScene(
- leftBehavior: NestedScrollBehavior = NestedScrollBehavior.EdgeNoPreview,
- rightBehavior: NestedScrollBehavior = NestedScrollBehavior.EdgeNoPreview,
+ leftBehavior: NestedScrollBehavior = NestedScrollBehavior.Default,
+ rightBehavior: NestedScrollBehavior = NestedScrollBehavior.Default,
isExternalOverscrollGesture: () -> Boolean = { false },
): Modifier
@@ -220,8 +220,8 @@
* @param bottomBehavior when we should perform the overscroll animation at the bottom.
*/
fun Modifier.verticalNestedScrollToScene(
- topBehavior: NestedScrollBehavior = NestedScrollBehavior.EdgeNoPreview,
- bottomBehavior: NestedScrollBehavior = NestedScrollBehavior.EdgeNoPreview,
+ topBehavior: NestedScrollBehavior = NestedScrollBehavior.Default,
+ bottomBehavior: NestedScrollBehavior = NestedScrollBehavior.Default,
isExternalOverscrollGesture: () -> Boolean = { false },
): Modifier
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt
index aeb6262..b8010f2 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeToScene.kt
@@ -20,11 +20,15 @@
import androidx.compose.runtime.Stable
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.nestedscroll.nestedScrollModifierNode
import androidx.compose.ui.input.pointer.PointerEvent
import androidx.compose.ui.input.pointer.PointerEventPass
+import androidx.compose.ui.node.DelegatableNode
import androidx.compose.ui.node.DelegatingNode
import androidx.compose.ui.node.ModifierNodeElement
import androidx.compose.ui.node.PointerInputModifierNode
+import androidx.compose.ui.node.TraversableNode
+import androidx.compose.ui.node.findNearestAncestor
import androidx.compose.ui.unit.IntSize
/**
@@ -53,7 +57,7 @@
draggableHandler: DraggableHandlerImpl,
swipeDetector: SwipeDetector,
) : DelegatingNode(), PointerInputModifierNode {
- private val delegate =
+ private val multiPointerDraggableNode =
delegate(
MultiPointerDraggableNode(
orientation = draggableHandler.orientation,
@@ -74,21 +78,41 @@
// Make sure to update the delegate orientation. Note that this will automatically
// reset the underlying pointer input handler, so previous gestures will be
// cancelled.
- delegate.orientation = value.orientation
+ multiPointerDraggableNode.orientation = value.orientation
}
}
+ private val nestedScrollHandlerImpl =
+ NestedScrollHandlerImpl(
+ layoutImpl = draggableHandler.layoutImpl,
+ orientation = draggableHandler.orientation,
+ topOrLeftBehavior = NestedScrollBehavior.Default,
+ bottomOrRightBehavior = NestedScrollBehavior.Default,
+ isExternalOverscrollGesture = { false },
+ pointersInfoOwner = { multiPointerDraggableNode.pointersInfo() },
+ )
+
+ init {
+ delegate(nestedScrollModifierNode(nestedScrollHandlerImpl.connection, dispatcher = null))
+ delegate(ScrollBehaviorOwnerNode(draggableHandler.nestedScrollKey, nestedScrollHandlerImpl))
+ }
+
+ override fun onDetach() {
+ // Make sure we reset the scroll connection when this modifier is removed from composition
+ nestedScrollHandlerImpl.connection.reset()
+ }
+
override fun onPointerEvent(
pointerEvent: PointerEvent,
pass: PointerEventPass,
bounds: IntSize,
- ) = delegate.onPointerEvent(pointerEvent, pass, bounds)
+ ) = multiPointerDraggableNode.onPointerEvent(pointerEvent, pass, bounds)
- override fun onCancelPointerInput() = delegate.onCancelPointerInput()
+ override fun onCancelPointerInput() = multiPointerDraggableNode.onCancelPointerInput()
private fun enabled(): Boolean {
return draggableHandler.isDrivingTransition ||
- currentScene().shouldEnableSwipes(delegate.orientation)
+ currentScene().shouldEnableSwipes(multiPointerDraggableNode.orientation)
}
private fun currentScene(): Scene {
@@ -118,3 +142,43 @@
return currentScene().shouldEnableSwipes(oppositeOrientation)
}
}
+
+/** Find the [ScrollBehaviorOwner] for the current orientation. */
+internal fun DelegatableNode.requireScrollBehaviorOwner(
+ draggableHandler: DraggableHandlerImpl
+): ScrollBehaviorOwner {
+ val ancestorNode =
+ checkNotNull(findNearestAncestor(draggableHandler.nestedScrollKey)) {
+ "This should never happen! Couldn't find a ScrollBehaviorOwner. " +
+ "Are we inside an SceneTransitionLayout?"
+ }
+ return ancestorNode as ScrollBehaviorOwner
+}
+
+internal fun interface ScrollBehaviorOwner {
+ fun updateScrollBehaviors(
+ topOrLeftBehavior: NestedScrollBehavior,
+ bottomOrRightBehavior: NestedScrollBehavior,
+ isExternalOverscrollGesture: () -> Boolean,
+ )
+}
+
+/**
+ * We need a node that receives the desired behavior.
+ *
+ * TODO(b/353234530) move this logic into [SwipeToSceneNode]
+ */
+private class ScrollBehaviorOwnerNode(
+ override val traverseKey: Any,
+ val nestedScrollHandlerImpl: NestedScrollHandlerImpl
+) : Modifier.Node(), TraversableNode, ScrollBehaviorOwner {
+ override fun updateScrollBehaviors(
+ topOrLeftBehavior: NestedScrollBehavior,
+ bottomOrRightBehavior: NestedScrollBehavior,
+ isExternalOverscrollGesture: () -> Boolean
+ ) {
+ nestedScrollHandlerImpl.topOrLeftBehavior = topOrLeftBehavior
+ nestedScrollHandlerImpl.bottomOrRightBehavior = bottomOrRightBehavior
+ nestedScrollHandlerImpl.isExternalOverscrollGesture = isExternalOverscrollGesture
+ }
+}
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
index 7988e0e..c91151e 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt
@@ -797,8 +797,6 @@
scene(SceneB, userActions = mapOf(Swipe.Up to SceneA)) {
Box(
Modifier
- // Unconsumed scroll gesture will be intercepted by STL
- .verticalNestedScrollToScene()
// A scrollable that does not consume the scroll gesture
.scrollable(
rememberScrollableState(consumeScrollDelta = { 0f }),
@@ -875,8 +873,6 @@
) {
Box(
Modifier
- // Unconsumed scroll gesture will be intercepted by STL
- .verticalNestedScrollToScene()
// A scrollable that does not consume the scroll gesture
.scrollable(
rememberScrollableState(consumeScrollDelta = { 0f }),
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/NestedScrollToSceneTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/NestedScrollToSceneTest.kt
new file mode 100644
index 0000000..311a580
--- /dev/null
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/NestedScrollToSceneTest.kt
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.compose.animation.scene
+
+import androidx.compose.foundation.gestures.Orientation.Vertical
+import androidx.compose.foundation.gestures.rememberScrollableState
+import androidx.compose.foundation.gestures.scrollable
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.platform.LocalViewConfiguration
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onRoot
+import androidx.compose.ui.test.performTouchInput
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.compose.animation.scene.TestScenes.SceneA
+import com.android.compose.animation.scene.TestScenes.SceneB
+import com.android.compose.animation.scene.subjects.assertThat
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class NestedScrollToSceneTest {
+ @get:Rule val rule = createComposeRule()
+
+ private var touchSlop = 0f
+ private val layoutWidth: Dp = 200.dp
+ private val layoutHeight = 400.dp
+
+ private fun setup2ScenesAndScrollTouchSlop(
+ modifierSceneA: @Composable SceneScope.() -> Modifier = { Modifier },
+ ): MutableSceneTransitionLayoutState {
+ val state =
+ rule.runOnUiThread {
+ MutableSceneTransitionLayoutState(SceneA, transitions = EmptyTestTransitions)
+ }
+
+ rule.setContent {
+ touchSlop = LocalViewConfiguration.current.touchSlop
+ SceneTransitionLayout(
+ state = state,
+ modifier = Modifier.size(layoutWidth, layoutHeight)
+ ) {
+ scene(SceneA, userActions = mapOf(Swipe.Up to SceneB)) {
+ Spacer(modifierSceneA().fillMaxSize())
+ }
+ scene(SceneB, userActions = mapOf(Swipe.Down to SceneA)) {
+ Spacer(Modifier.fillMaxSize())
+ }
+ }
+ }
+
+ pointerDownAndScrollTouchSlop()
+
+ assertThat(state.transitionState).isIdle()
+
+ return state
+ }
+
+ private fun pointerDownAndScrollTouchSlop() {
+ rule.onRoot().performTouchInput {
+ val middleTop = Offset((layoutWidth / 2).toPx(), 0f)
+ down(middleTop)
+ // Scroll touchSlop
+ moveBy(Offset(0f, touchSlop), delayMillis = 1_000)
+ }
+ }
+
+ private fun scrollDown(percent: Float = 1f) {
+ rule.onRoot().performTouchInput {
+ moveBy(Offset(0f, layoutHeight.toPx() * percent), delayMillis = 1_000)
+ }
+ }
+
+ private fun scrollUp(percent: Float = 1f) = scrollDown(-percent)
+
+ private fun pointerUp() {
+ rule.onRoot().performTouchInput { up() }
+ }
+
+ @Test
+ fun scrollableElementsInSTL_shouldHavePriority() {
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier
+ // A scrollable that consumes the scroll gesture
+ .scrollable(rememberScrollableState { it }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+
+ // Consumed by the scrollable element
+ assertThat(state.transitionState).isIdle()
+ }
+
+ @Test
+ fun unconsumedScrollEvents_canBeConsumedBySTLByDefault() {
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier
+ // A scrollable that does not consume the scroll gesture
+ .scrollable(rememberScrollableState { 0f }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+ // STL will start a transition with the remaining scroll
+ val transition = assertThat(state.transitionState).isTransition()
+ assertThat(transition).hasProgress(0.5f)
+
+ scrollUp(percent = 1f)
+ assertThat(transition).hasProgress(1.5f)
+ }
+
+ @Test
+ fun customizeStlNestedScrollBehavior_DuringTransitionBetweenScenes() {
+ var canScroll = true
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier.verticalNestedScrollToScene(
+ bottomBehavior = NestedScrollBehavior.DuringTransitionBetweenScenes
+ )
+ .scrollable(rememberScrollableState { if (canScroll) it else 0f }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+
+ // Reach the end of the scrollable element
+ canScroll = false
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+
+ pointerUp()
+ assertThat(state.transitionState).isIdle()
+
+ // Start a new gesture
+ pointerDownAndScrollTouchSlop()
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+ }
+
+ @Test
+ fun customizeStlNestedScrollBehavior_EdgeNoPreview() {
+ var canScroll = true
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier.verticalNestedScrollToScene(
+ bottomBehavior = NestedScrollBehavior.EdgeNoPreview
+ )
+ .scrollable(rememberScrollableState { if (canScroll) it else 0f }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+
+ // Reach the end of the scrollable element
+ canScroll = false
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+
+ pointerUp()
+ assertThat(state.transitionState).isIdle()
+
+ // Start a new gesture
+ pointerDownAndScrollTouchSlop()
+ scrollUp(percent = 0.5f)
+ val transition = assertThat(state.transitionState).isTransition()
+ assertThat(transition).hasProgress(0.5f)
+
+ pointerUp()
+ rule.waitForIdle()
+ assertThat(state.transitionState).isIdle()
+ assertThat(state.transitionState).hasCurrentScene(SceneB)
+ }
+
+ @Test
+ fun customizeStlNestedScrollBehavior_EdgeWithPreview() {
+ var canScroll = true
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier.verticalNestedScrollToScene(
+ bottomBehavior = NestedScrollBehavior.EdgeWithPreview
+ )
+ .scrollable(rememberScrollableState { if (canScroll) it else 0f }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+
+ // Reach the end of the scrollable element
+ canScroll = false
+ scrollUp(percent = 0.5f)
+ val transition1 = assertThat(state.transitionState).isTransition()
+ assertThat(transition1).hasProgress(0.5f)
+
+ pointerUp()
+ rule.waitForIdle()
+ assertThat(state.transitionState).isIdle()
+ assertThat(state.transitionState).hasCurrentScene(SceneA)
+
+ // Start a new gesture
+ pointerDownAndScrollTouchSlop()
+ scrollUp(percent = 0.5f)
+ val transition2 = assertThat(state.transitionState).isTransition()
+ assertThat(transition2).hasProgress(0.5f)
+
+ pointerUp()
+ rule.waitForIdle()
+ assertThat(state.transitionState).isIdle()
+ assertThat(state.transitionState).hasCurrentScene(SceneB)
+ }
+
+ @Test
+ fun customizeStlNestedScrollBehavior_EdgeAlways() {
+ var canScroll = true
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier.verticalNestedScrollToScene(bottomBehavior = NestedScrollBehavior.EdgeAlways)
+ .scrollable(rememberScrollableState { if (canScroll) it else 0f }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+ assertThat(state.transitionState).isIdle()
+
+ // Reach the end of the scrollable element
+ canScroll = false
+ scrollUp(percent = 0.5f)
+ val transition = assertThat(state.transitionState).isTransition()
+ assertThat(transition).hasProgress(0.5f)
+
+ pointerUp()
+ rule.waitForIdle()
+ assertThat(state.transitionState).isIdle()
+ assertThat(state.transitionState).hasCurrentScene(SceneB)
+ }
+
+ @Test
+ fun customizeStlNestedScrollBehavior_multipleRequests() {
+ val state = setup2ScenesAndScrollTouchSlop {
+ Modifier
+ // This verticalNestedScrollToScene is closer the STL (an ancestor node)
+ .verticalNestedScrollToScene(bottomBehavior = NestedScrollBehavior.EdgeAlways)
+ // Another verticalNestedScrollToScene modifier
+ .verticalNestedScrollToScene(
+ bottomBehavior = NestedScrollBehavior.DuringTransitionBetweenScenes
+ )
+ .scrollable(rememberScrollableState { 0f }, Vertical)
+ }
+
+ scrollUp(percent = 0.5f)
+ // EdgeAlways always consume the remaining scroll, DuringTransitionBetweenScenes does not.
+ val transition = assertThat(state.transitionState).isTransition()
+ assertThat(transition).hasProgress(0.5f)
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.kt
index 4314676..5cf4f16 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/ambient/touch/ShadeTouchHandlerTest.kt
@@ -25,9 +25,13 @@
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.ambient.touch.TouchHandler.TouchSession
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
+import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED
+import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.shade.ShadeViewController
import com.android.systemui.shared.system.InputChannelCompat
import com.android.systemui.statusbar.phone.CentralSurfaces
+import com.android.systemui.testKosmos
import com.google.common.truth.Truth
import java.util.Optional
import org.junit.Before
@@ -45,6 +49,8 @@
@SmallTest
@RunWith(AndroidJUnit4::class)
class ShadeTouchHandlerTest : SysuiTestCase() {
+ private var kosmos = testKosmos()
+
private var mCentralSurfaces = mock<CentralSurfaces>()
private var mShadeViewController = mock<ShadeViewController>()
private var mDreamManager = mock<DreamManager>()
@@ -62,6 +68,7 @@
Optional.of(mCentralSurfaces),
mShadeViewController,
mDreamManager,
+ kosmos.communalSettingsInteractor,
TOUCH_HEIGHT
)
}
@@ -86,6 +93,8 @@
@Test
@EnableFlags(Flags.FLAG_COMMUNAL_HUB)
fun testSwipeDown_communalEnabled_sentToCentralSurfaces() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
+
swipe(Direction.DOWN)
// Both motion events are sent for central surfaces to process.
@@ -117,6 +126,8 @@
@Test
@EnableFlags(Flags.FLAG_COMMUNAL_HUB)
fun testSwipeUp_communalEnabled_touchesNotSent() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
+
swipe(Direction.UP)
// Motion events are not sent for central surfaces to process as the swipe is going in the
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt
index 546a6b7..d5e1fae 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt
@@ -160,6 +160,12 @@
}
@Test
+ fun testShowReturnsFalseWhenDelegateIsNotSet() {
+ whenever(bouncerView.delegate).thenReturn(null)
+ assertThat(underTest.show(true)).isEqualTo(false)
+ }
+
+ @Test
fun testShow_isResumed() {
whenever(repository.primaryBouncerShow.value).thenReturn(true)
whenever(keyguardSecurityModel.getSecurityMode(anyInt()))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt
index f9f7df8..4f5d0e5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelTest.kt
@@ -29,6 +29,7 @@
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel.Pattern
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel.Pin
+import com.android.systemui.biometrics.FaceHelpMessageDebouncer
import com.android.systemui.biometrics.data.repository.FaceSensorInfo
import com.android.systemui.biometrics.data.repository.fakeFacePropertyRepository
import com.android.systemui.biometrics.data.repository.fakeFingerprintPropertyRepository
@@ -36,7 +37,7 @@
import com.android.systemui.bouncer.domain.interactor.bouncerInteractor
import com.android.systemui.bouncer.shared.flag.fakeComposeBouncerFlags
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
+import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
@@ -75,15 +76,20 @@
private val authenticationInteractor by lazy { kosmos.authenticationInteractor }
private val bouncerInteractor by lazy { kosmos.bouncerInteractor }
private lateinit var underTest: BouncerMessageViewModel
+ private val ignoreHelpMessageId = 1
@Before
fun setUp() {
kosmos.fakeUserRepository.setUserInfos(listOf(PRIMARY_USER))
kosmos.fakeComposeBouncerFlags.composeBouncerEnabled = true
+ overrideResource(
+ R.array.config_face_acquire_device_entry_ignorelist,
+ intArrayOf(ignoreHelpMessageId)
+ )
underTest = kosmos.bouncerMessageViewModel
overrideResource(R.string.kg_trust_agent_disabled, "Trust agent is unavailable")
kosmos.fakeSystemPropertiesHelper.set(
- DeviceEntryInteractor.SYS_BOOT_REASON_PROP,
+ DeviceUnlockedInteractor.SYS_BOOT_REASON_PROP,
"not mainline reboot"
)
}
@@ -379,7 +385,15 @@
runCurrent()
kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
- HelpFaceAuthenticationStatus(1, "some helpful message")
+ HelpFaceAuthenticationStatus(0, "some helpful message", 0)
+ )
+ runCurrent()
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
+ HelpFaceAuthenticationStatus(
+ 0,
+ "some helpful message",
+ FaceHelpMessageDebouncer.DEFAULT_WINDOW_MS
+ )
)
runCurrent()
assertThat(bouncerMessage?.text).isEqualTo("Enter PIN")
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
index dcc9c7a..76920e4 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalDreamStartableTest.kt
@@ -22,6 +22,9 @@
import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
+import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED
+import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardRepository
@@ -61,9 +64,12 @@
@Before
fun setUp() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
+
underTest =
CommunalDreamStartable(
powerInteractor = kosmos.powerInteractor,
+ communalSettingsInteractor = kosmos.communalSettingsInteractor,
keyguardInteractor = kosmos.keyguardInteractor,
keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor,
dreamManager = dreamManager,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt
index 2f94933..9113617 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalOngoingContentStartableTest.kt
@@ -24,6 +24,7 @@
import com.android.systemui.communal.data.repository.fakeCommunalMediaRepository
import com.android.systemui.communal.data.repository.fakeCommunalSmartspaceRepository
import com.android.systemui.communal.domain.interactor.communalInteractor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.communal.domain.interactor.setCommunalEnabled
import com.android.systemui.flags.Flags
import com.android.systemui.flags.fakeFeatureFlagsClassic
@@ -48,20 +49,19 @@
private val mediaRepository = kosmos.fakeCommunalMediaRepository
private val smartspaceRepository = kosmos.fakeCommunalSmartspaceRepository
- private val featureFlags =
- kosmos.fakeFeatureFlagsClassic.apply { set(Flags.COMMUNAL_SERVICE_ENABLED, true) }
private lateinit var underTest: CommunalOngoingContentStartable
@Before
fun setUp() {
+ kosmos.fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, true)
underTest =
CommunalOngoingContentStartable(
bgScope = kosmos.applicationCoroutineScope,
communalInteractor = kosmos.communalInteractor,
communalMediaRepository = mediaRepository,
+ communalSettingsInteractor = kosmos.communalSettingsInteractor,
communalSmartspaceRepository = smartspaceRepository,
- featureFlags = featureFlags,
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt
index 2cbfa7d..4ad020f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/CommunalSceneStartableTest.kt
@@ -24,6 +24,7 @@
import com.android.systemui.SysuiTestCase
import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.communal.domain.interactor.communalSceneInteractor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.coroutines.collectLastValue
@@ -78,6 +79,7 @@
CommunalSceneStartable(
dockManager = dockManager,
communalInteractor = communalInteractor,
+ communalSettingsInteractor = communalSettingsInteractor,
communalSceneInteractor = communalSceneInteractor,
keyguardTransitionInteractor = keyguardTransitionInteractor,
keyguardInteractor = keyguardInteractor,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt
index 0169f99..06b710e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt
@@ -68,6 +68,38 @@
@EnableFlags(FLAG_COMMUNAL_HUB)
@Test
+ fun getFlagEnabled_bothEnabled() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
+
+ assertThat(underTest.getFlagEnabled()).isTrue()
+ }
+
+ @DisableFlags(FLAG_COMMUNAL_HUB)
+ @Test
+ fun getFlagEnabled_bothDisabled() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, false)
+
+ assertThat(underTest.getFlagEnabled()).isFalse()
+ }
+
+ @DisableFlags(FLAG_COMMUNAL_HUB)
+ @Test
+ fun getFlagEnabled_onlyClassicFlagEnabled() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
+
+ assertThat(underTest.getFlagEnabled()).isFalse()
+ }
+
+ @EnableFlags(FLAG_COMMUNAL_HUB)
+ @Test
+ fun getFlagEnabled_onlyTrunkFlagEnabled() {
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, false)
+
+ assertThat(underTest.getFlagEnabled()).isFalse()
+ }
+
+ @EnableFlags(FLAG_COMMUNAL_HUB)
+ @Test
fun secondaryUserIsInvalid() =
testScope.runTest {
val enabledState by collectLastValue(underTest.getEnabledState(SECONDARY_USER))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
index 2546f27..2bf50b3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt
@@ -52,7 +52,6 @@
import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.FaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.FaceDetectionStatus
-import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus
import com.android.systemui.display.data.repository.displayRepository
import com.android.systemui.dump.DumpManager
@@ -79,7 +78,6 @@
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
-import com.android.systemui.res.R
import com.android.systemui.statusbar.commandQueue
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.testKosmos
@@ -478,29 +476,6 @@
}
@Test
- fun faceHelpMessagesAreIgnoredBasedOnConfig() =
- testScope.runTest {
- overrideResource(
- R.array.config_face_acquire_device_entry_ignorelist,
- intArrayOf(10, 11)
- )
- underTest = createDeviceEntryFaceAuthRepositoryImpl()
- initCollectors()
- allPreconditionsToRunFaceAuthAreTrue()
-
- underTest.requestAuthenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER)
- faceAuthenticateIsCalled()
-
- authenticationCallback.value.onAuthenticationHelp(9, "help msg")
- authenticationCallback.value.onAuthenticationHelp(10, "Ignored help msg")
- authenticationCallback.value.onAuthenticationHelp(11, "Ignored help msg")
-
- val response = authStatus() as HelpFaceAuthenticationStatus
- assertThat(response.msg).isEqualTo("help msg")
- assertThat(response.msgId).isEqualTo(response.msgId)
- }
-
- @Test
fun dumpDoesNotErrorOutWhenFaceManagerOrBypassControllerIsNull() =
testScope.runTest {
fakeUserRepository.setSelectedUserInfo(primaryUser)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
index 546510b..3253edf 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
@@ -20,7 +20,6 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.SceneKey
-import com.android.internal.widget.LockPatternUtils
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.FakeAuthenticationRepository
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
@@ -32,27 +31,14 @@
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.AdaptiveAuthRequest
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.BouncerLockedOut
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.PolicyLockdown
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.SecurityTimeout
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.TrustAgentDisabled
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.UnattendedUpdate
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason.UserLockdown
import com.android.systemui.flags.EnableSceneContainer
-import com.android.systemui.flags.fakeSystemPropertiesHelper
import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
-import com.android.systemui.keyguard.data.repository.fakeBiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFaceAuthRepository
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.fakeTrustRepository
-import com.android.systemui.keyguard.shared.model.AuthenticationFlags
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.kosmos.testScope
@@ -61,7 +47,6 @@
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -438,231 +423,6 @@
assertThat(isUnlocked).isTrue()
}
- @Test
- fun deviceEntryRestrictionReason_whenFaceOrFingerprintOrTrust_alwaysNull() =
- testScope.runTest {
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
- kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
- runCurrent()
-
- verifyRestrictionReasonsForAuthFlags(
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to null,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to null,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to null,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to null,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to null,
- LockPatternUtils.StrongAuthTracker
- .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to null,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
- null,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
- null,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to null
- )
- }
-
- @Test
- fun deviceEntryRestrictionReason_whenFaceIsEnrolledAndEnabled_mapsToAuthFlagsState() =
- testScope.runTest {
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
- kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
- kosmos.fakeSystemPropertiesHelper.set(
- DeviceEntryInteractor.SYS_BOOT_REASON_PROP,
- "not mainline reboot"
- )
- runCurrent()
-
- verifyRestrictionReasonsForAuthFlags(
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to
- DeviceNotUnlockedSinceReboot,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST to
- AdaptiveAuthRequest,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to
- BouncerLockedOut,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to
- SecurityTimeout,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
- UserLockdown,
- LockPatternUtils.StrongAuthTracker
- .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to
- NonStrongBiometricsSecurityTimeout,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
- UnattendedUpdate,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
- PolicyLockdown,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to null,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
- null,
- )
- }
-
- @Test
- fun deviceEntryRestrictionReason_whenFingerprintIsEnrolledAndEnabled_mapsToAuthFlagsState() =
- testScope.runTest {
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
- kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
- kosmos.fakeSystemPropertiesHelper.set(
- DeviceEntryInteractor.SYS_BOOT_REASON_PROP,
- "not mainline reboot"
- )
- runCurrent()
-
- verifyRestrictionReasonsForAuthFlags(
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to
- DeviceNotUnlockedSinceReboot,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST to
- AdaptiveAuthRequest,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to
- BouncerLockedOut,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to
- SecurityTimeout,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
- UserLockdown,
- LockPatternUtils.StrongAuthTracker
- .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to
- NonStrongBiometricsSecurityTimeout,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
- UnattendedUpdate,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
- PolicyLockdown,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to null,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
- null,
- )
- }
-
- @Test
- fun deviceEntryRestrictionReason_whenTrustAgentIsEnabled_mapsToAuthFlagsState() =
- testScope.runTest {
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
- kosmos.fakeTrustRepository.setTrustUsuallyManaged(true)
- kosmos.fakeTrustRepository.setCurrentUserTrustManaged(false)
- kosmos.fakeSystemPropertiesHelper.set(
- DeviceEntryInteractor.SYS_BOOT_REASON_PROP,
- "not mainline reboot"
- )
- runCurrent()
-
- verifyRestrictionReasonsForAuthFlags(
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to
- DeviceNotUnlockedSinceReboot,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST to
- AdaptiveAuthRequest,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to
- BouncerLockedOut,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to
- SecurityTimeout,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
- UserLockdown,
- LockPatternUtils.StrongAuthTracker
- .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to
- NonStrongBiometricsSecurityTimeout,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
- UnattendedUpdate,
- LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
- PolicyLockdown,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to
- TrustAgentDisabled,
- LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
- TrustAgentDisabled,
- )
- }
-
- @Test
- fun deviceEntryRestrictionReason_whenDeviceRebootedForMainlineUpdate_mapsToTheCorrectReason() =
- testScope.runTest {
- val deviceEntryRestrictionReason by
- collectLastValue(underTest.deviceEntryRestrictionReason)
- kosmos.fakeSystemPropertiesHelper.set(
- DeviceEntryInteractor.SYS_BOOT_REASON_PROP,
- DeviceEntryInteractor.REBOOT_MAINLINE_UPDATE
- )
- kosmos.fakeBiometricSettingsRepository.setAuthenticationFlags(
- AuthenticationFlags(
- userId = 1,
- flag = LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT
- )
- )
- runCurrent()
-
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
- kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
- runCurrent()
-
- assertThat(deviceEntryRestrictionReason).isNull()
-
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
- runCurrent()
-
- assertThat(deviceEntryRestrictionReason)
- .isEqualTo(DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate)
-
- kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
- runCurrent()
-
- assertThat(deviceEntryRestrictionReason)
- .isEqualTo(DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate)
-
- kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
- kosmos.fakeTrustRepository.setTrustUsuallyManaged(true)
- runCurrent()
-
- assertThat(deviceEntryRestrictionReason)
- .isEqualTo(DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate)
- }
-
- @Test
- fun reportUserPresent_whenDeviceEntered() =
- testScope.runTest {
- val isDeviceEntered by collectLastValue(underTest.isDeviceEntered)
- assertThat(isDeviceEntered).isFalse()
- assertThat(kosmos.fakeDeviceEntryRepository.userPresentCount).isEqualTo(0)
-
- kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
- SuccessFingerprintAuthenticationStatus(0, true)
- )
- runCurrent()
- switchToScene(Scenes.Gone)
- assertThat(isDeviceEntered).isTrue()
- assertThat(kosmos.fakeDeviceEntryRepository.userPresentCount).isEqualTo(1)
-
- switchToScene(Scenes.Lockscreen)
- assertThat(isDeviceEntered).isFalse()
- assertThat(kosmos.fakeDeviceEntryRepository.userPresentCount).isEqualTo(1)
-
- kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
- SuccessFingerprintAuthenticationStatus(0, true)
- )
- switchToScene(Scenes.Gone)
- assertThat(isDeviceEntered).isTrue()
- assertThat(kosmos.fakeDeviceEntryRepository.userPresentCount).isEqualTo(2)
- }
-
- private fun TestScope.verifyRestrictionReasonsForAuthFlags(
- vararg authFlagToDeviceEntryRestriction: Pair<Int, DeviceEntryRestrictionReason?>
- ) {
- val deviceEntryRestrictionReason by collectLastValue(underTest.deviceEntryRestrictionReason)
-
- authFlagToDeviceEntryRestriction.forEach { (flag, expectedReason) ->
- kosmos.fakeBiometricSettingsRepository.setAuthenticationFlags(
- AuthenticationFlags(userId = 1, flag = flag)
- )
- runCurrent()
-
- if (expectedReason == null) {
- assertThat(deviceEntryRestrictionReason).isNull()
- } else {
- assertThat(deviceEntryRestrictionReason).isEqualTo(expectedReason)
- }
- }
- }
-
private fun switchToScene(sceneKey: SceneKey) {
sceneInteractor.changeScene(sceneKey, "reason")
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt
index a7a7bea3..c2acc5f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorTest.kt
@@ -19,17 +19,20 @@
import android.content.pm.UserInfo
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.internal.widget.LockPatternUtils
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
-import com.android.systemui.authentication.domain.interactor.authenticationInteractor
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
+import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason
import com.android.systemui.deviceentry.shared.model.DeviceUnlockSource
+import com.android.systemui.flags.fakeSystemPropertiesHelper
+import com.android.systemui.keyguard.data.repository.fakeBiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFaceAuthRepository
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeTrustRepository
-import com.android.systemui.keyguard.domain.interactor.trustInteractor
+import com.android.systemui.keyguard.shared.model.AuthenticationFlags
import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.kosmos.testScope
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
@@ -40,6 +43,7 @@
import com.android.systemui.user.data.repository.fakeUserRepository
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -54,18 +58,8 @@
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
private val authenticationRepository = kosmos.fakeAuthenticationRepository
- private val deviceEntryRepository = kosmos.fakeDeviceEntryRepository
- val underTest =
- DeviceUnlockedInteractor(
- applicationScope = testScope.backgroundScope,
- authenticationInteractor = kosmos.authenticationInteractor,
- deviceEntryRepository = deviceEntryRepository,
- trustInteractor = kosmos.trustInteractor,
- faceAuthInteractor = kosmos.deviceEntryFaceAuthInteractor,
- fingerprintAuthInteractor = kosmos.deviceEntryFingerprintAuthInteractor,
- powerInteractor = kosmos.powerInteractor,
- )
+ val underTest = kosmos.deviceUnlockedInteractor
@Before
fun setup() {
@@ -100,6 +94,30 @@
}
@Test
+ fun deviceUnlockStatus_whenUnlockedAndAuthMethodIsPinAndInLockdown_isFalse() =
+ testScope.runTest {
+ val deviceUnlockStatus by collectLastValue(underTest.deviceUnlockStatus)
+ val isInLockdown by collectLastValue(underTest.isInLockdown)
+
+ authenticationRepository.setAuthenticationMethod(AuthenticationMethodModel.Pin)
+ kosmos.fakeDeviceEntryFingerprintAuthRepository.setAuthenticationStatus(
+ SuccessFingerprintAuthenticationStatus(0, true)
+ )
+ kosmos.fakeBiometricSettingsRepository.setAuthenticationFlags(
+ AuthenticationFlags(
+ userId = 1,
+ flag =
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN,
+ )
+ )
+ runCurrent()
+ assertThat(isInLockdown).isTrue()
+
+ assertThat(deviceUnlockStatus?.isUnlocked).isFalse()
+ assertThat(deviceUnlockStatus?.deviceUnlockSource).isNull()
+ }
+
+ @Test
fun deviceUnlockStatus_whenUnlockedAndAuthMethodIsSim_isFalse() =
testScope.runTest {
val deviceUnlockStatus by collectLastValue(underTest.deviceUnlockStatus)
@@ -221,6 +239,218 @@
assertThat(deviceUnlockStatus?.isUnlocked).isFalse()
}
+ @Test
+ fun deviceEntryRestrictionReason_whenFaceOrFingerprintOrTrust_alwaysNull() =
+ testScope.runTest {
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
+ runCurrent()
+
+ verifyRestrictionReasonsForAuthFlags(
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to null,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to null,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to null,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to null,
+ LockPatternUtils.StrongAuthTracker
+ .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to null,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
+ null,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
+ null,
+ )
+ }
+
+ @Test
+ fun deviceEntryRestrictionReason_whenFaceOrFingerprintOrTrust_whenLockdown() =
+ testScope.runTest {
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
+ runCurrent()
+
+ verifyRestrictionReasonsForAuthFlags(
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
+ DeviceEntryRestrictionReason.UserLockdown,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
+ DeviceEntryRestrictionReason.PolicyLockdown
+ )
+ }
+
+ @Test
+ fun deviceEntryRestrictionReason_whenFaceIsEnrolledAndEnabled_mapsToAuthFlagsState() =
+ testScope.runTest {
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
+ kosmos.fakeSystemPropertiesHelper.set(
+ DeviceUnlockedInteractor.SYS_BOOT_REASON_PROP,
+ "not mainline reboot"
+ )
+ runCurrent()
+
+ verifyRestrictionReasonsForAuthFlags(
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST to
+ DeviceEntryRestrictionReason.AdaptiveAuthRequest,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to
+ DeviceEntryRestrictionReason.BouncerLockedOut,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to
+ DeviceEntryRestrictionReason.SecurityTimeout,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
+ DeviceEntryRestrictionReason.UserLockdown,
+ LockPatternUtils.StrongAuthTracker
+ .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to
+ DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
+ DeviceEntryRestrictionReason.UnattendedUpdate,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
+ DeviceEntryRestrictionReason.PolicyLockdown,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to null,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
+ null,
+ )
+ }
+
+ @Test
+ fun deviceEntryRestrictionReason_whenFingerprintIsEnrolledAndEnabled_mapsToAuthFlagsState() =
+ testScope.runTest {
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
+ kosmos.fakeSystemPropertiesHelper.set(
+ DeviceUnlockedInteractor.SYS_BOOT_REASON_PROP,
+ "not mainline reboot"
+ )
+ runCurrent()
+
+ verifyRestrictionReasonsForAuthFlags(
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST to
+ DeviceEntryRestrictionReason.AdaptiveAuthRequest,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to
+ DeviceEntryRestrictionReason.BouncerLockedOut,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to
+ DeviceEntryRestrictionReason.SecurityTimeout,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
+ DeviceEntryRestrictionReason.UserLockdown,
+ LockPatternUtils.StrongAuthTracker
+ .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to
+ DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
+ DeviceEntryRestrictionReason.UnattendedUpdate,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
+ DeviceEntryRestrictionReason.PolicyLockdown,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to null,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
+ null,
+ )
+ }
+
+ @Test
+ fun deviceEntryRestrictionReason_whenTrustAgentIsEnabled_mapsToAuthFlagsState() =
+ testScope.runTest {
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(true)
+ kosmos.fakeTrustRepository.setCurrentUserTrustManaged(false)
+ kosmos.fakeSystemPropertiesHelper.set(
+ DeviceUnlockedInteractor.SYS_BOOT_REASON_PROP,
+ "not mainline reboot"
+ )
+ runCurrent()
+
+ verifyRestrictionReasonsForAuthFlags(
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT to
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST to
+ DeviceEntryRestrictionReason.AdaptiveAuthRequest,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT to
+ DeviceEntryRestrictionReason.BouncerLockedOut,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT to
+ DeviceEntryRestrictionReason.SecurityTimeout,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN to
+ DeviceEntryRestrictionReason.UserLockdown,
+ LockPatternUtils.StrongAuthTracker
+ .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT to
+ DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE to
+ DeviceEntryRestrictionReason.UnattendedUpdate,
+ LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW to
+ DeviceEntryRestrictionReason.PolicyLockdown,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST to
+ DeviceEntryRestrictionReason.TrustAgentDisabled,
+ LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED to
+ DeviceEntryRestrictionReason.TrustAgentDisabled,
+ )
+ }
+
+ @Test
+ fun deviceEntryRestrictionReason_whenDeviceRebootedForMainlineUpdate_mapsToTheCorrectReason() =
+ testScope.runTest {
+ val deviceEntryRestrictionReason by
+ collectLastValue(underTest.deviceEntryRestrictionReason)
+ kosmos.fakeSystemPropertiesHelper.set(
+ DeviceUnlockedInteractor.SYS_BOOT_REASON_PROP,
+ DeviceUnlockedInteractor.REBOOT_MAINLINE_UPDATE
+ )
+ kosmos.fakeBiometricSettingsRepository.setAuthenticationFlags(
+ AuthenticationFlags(
+ userId = 1,
+ flag = LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT
+ )
+ )
+ runCurrent()
+
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(false)
+ runCurrent()
+
+ assertThat(deviceEntryRestrictionReason).isNull()
+
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+ runCurrent()
+
+ assertThat(deviceEntryRestrictionReason)
+ .isEqualTo(DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate)
+
+ kosmos.fakeBiometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
+ runCurrent()
+
+ assertThat(deviceEntryRestrictionReason)
+ .isEqualTo(DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate)
+
+ kosmos.fakeBiometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+ kosmos.fakeTrustRepository.setTrustUsuallyManaged(true)
+ runCurrent()
+
+ assertThat(deviceEntryRestrictionReason)
+ .isEqualTo(DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate)
+ }
+
+ private fun TestScope.verifyRestrictionReasonsForAuthFlags(
+ vararg authFlagToDeviceEntryRestriction: Pair<Int, DeviceEntryRestrictionReason?>
+ ) {
+ val deviceEntryRestrictionReason by collectLastValue(underTest.deviceEntryRestrictionReason)
+
+ authFlagToDeviceEntryRestriction.forEach { (flag, expectedReason) ->
+ kosmos.fakeBiometricSettingsRepository.setAuthenticationFlags(
+ AuthenticationFlags(userId = 1, flag = flag)
+ )
+ runCurrent()
+
+ if (expectedReason == null) {
+ assertThat(deviceEntryRestrictionReason).isNull()
+ } else {
+ assertThat(deviceEntryRestrictionReason).isEqualTo(expectedReason)
+ }
+ }
+ }
+
companion object {
private const val primaryUserId = 1
private val primaryUser = UserInfo(primaryUserId, "test user", UserInfo.FLAG_PRIMARY)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt
index be0d899..9e69601 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt
@@ -18,8 +18,11 @@
package com.android.systemui.keyguard.ui.viewmodel
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.systemui.Flags
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
@@ -74,9 +77,9 @@
@Test
@DisableSceneContainer
+ @DisableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun alpha_WhenNotGone_clockMigrationFlagIsOff_emitsKeyguardAlpha() =
testScope.runTest {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
val alpha by collectLastValue(underTest.alpha)
keyguardTransitionRepository.sendTransitionSteps(
@@ -186,9 +189,9 @@
@Test
@DisableSceneContainer
+ @EnableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun alpha_whenGone_equalsZero() =
testScope.runTest {
- mSetFlagsRule.enableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
val alpha by collectLastValue(underTest.alpha)
keyguardTransitionRepository.sendTransitionStep(
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
index 63d06a4..41c5b73 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
@@ -18,6 +18,8 @@
package com.android.systemui.keyguard.ui.viewmodel
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags as AConfigFlags
@@ -69,10 +71,11 @@
private val burnInFlow = MutableStateFlow(BurnInModel())
@Before
+ @DisableFlags(
+ AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT,
+ AConfigFlags.FLAG_COMPOSE_LOCKSCREEN
+ )
fun setUp() {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
-
MockitoAnnotations.initMocks(this)
whenever(burnInInteractor.burnIn(anyInt(), anyInt())).thenReturn(burnInFlow)
kosmos.burnInInteractor = burnInInteractor
@@ -174,10 +177,9 @@
}
@Test
+ @DisableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun translationAndScale_whenFullyDozing_MigrationFlagOff_staysOutOfTopInset() =
testScope.runTest {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
-
burnInParameters =
burnInParameters.copy(
minViewY = 100,
@@ -226,10 +228,9 @@
}
@Test
+ @EnableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun translationAndScale_whenFullyDozing_MigrationFlagOn_staysOutOfTopInset() =
testScope.runTest {
- mSetFlagsRule.enableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
-
burnInParameters =
burnInParameters.copy(
minViewY = 100,
@@ -310,104 +311,99 @@
}
@Test
+ @DisableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
+ @EnableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun translationAndScale_composeFlagOff_weatherLargeClock() =
testBurnInViewModelForClocks(
isSmallClock = false,
isWeatherClock = true,
expectedScaleOnly = false,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = false
)
@Test
+ @DisableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
+ @EnableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun translationAndScale_composeFlagOff_weatherSmallClock() =
testBurnInViewModelForClocks(
isSmallClock = true,
isWeatherClock = true,
expectedScaleOnly = false,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = false
)
@Test
+ @DisableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
+ @EnableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun translationAndScale_composeFlagOff_nonWeatherLargeClock() =
testBurnInViewModelForClocks(
isSmallClock = false,
isWeatherClock = false,
expectedScaleOnly = true,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = false
)
@Test
+ @DisableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
+ @EnableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun translationAndScale_composeFlagOff_nonWeatherSmallClock() =
testBurnInViewModelForClocks(
isSmallClock = true,
isWeatherClock = false,
expectedScaleOnly = false,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = false
)
@Test
+ @EnableFlags(
+ AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT,
+ AConfigFlags.FLAG_COMPOSE_LOCKSCREEN
+ )
fun translationAndScale_composeFlagOn_weatherLargeClock() =
testBurnInViewModelForClocks(
isSmallClock = false,
isWeatherClock = true,
expectedScaleOnly = false,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = true
)
@Test
+ @EnableFlags(
+ AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT,
+ AConfigFlags.FLAG_COMPOSE_LOCKSCREEN
+ )
fun translationAndScale_composeFlagOn_weatherSmallClock() =
testBurnInViewModelForClocks(
isSmallClock = true,
isWeatherClock = true,
expectedScaleOnly = false,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = true
)
@Test
+ @EnableFlags(
+ AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT,
+ AConfigFlags.FLAG_COMPOSE_LOCKSCREEN
+ )
fun translationAndScale_composeFlagOn_nonWeatherLargeClock() =
testBurnInViewModelForClocks(
isSmallClock = false,
isWeatherClock = false,
expectedScaleOnly = true,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = true
)
@Test
+ @EnableFlags(
+ AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT,
+ AConfigFlags.FLAG_COMPOSE_LOCKSCREEN
+ )
fun translationAndScale_composeFlagOn_nonWeatherSmallClock() =
testBurnInViewModelForClocks(
isSmallClock = true,
isWeatherClock = false,
expectedScaleOnly = false,
- enableMigrateClocksToBlueprintFlag = true,
- enableComposeLockscreenFlag = true
)
private fun testBurnInViewModelForClocks(
isSmallClock: Boolean,
isWeatherClock: Boolean,
expectedScaleOnly: Boolean,
- enableMigrateClocksToBlueprintFlag: Boolean,
- enableComposeLockscreenFlag: Boolean
) =
testScope.runTest {
- if (enableMigrateClocksToBlueprintFlag) {
- mSetFlagsRule.enableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
- } else {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
- }
-
- if (enableComposeLockscreenFlag) {
- mSetFlagsRule.enableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
- } else {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_COMPOSE_LOCKSCREEN)
- }
if (isSmallClock) {
keyguardClockRepository.setClockSize(ClockSize.SMALL)
// we need the following step to update stateFlow value
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
new file mode 100644
index 0000000..6ddc074
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt
@@ -0,0 +1,683 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.statusbar.notification.collection.coordinator
+
+import android.app.Notification
+import android.os.UserHandle
+import android.platform.test.flag.junit.FlagsParameterization
+import android.provider.Settings
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.dump.DumpManager
+import com.android.systemui.flags.andSceneContainer
+import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.log.logcatLogBuffer
+import com.android.systemui.plugins.statusbar.StatusBarStateController
+import com.android.systemui.scene.data.repository.Idle
+import com.android.systemui.scene.data.repository.setTransition
+import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder
+import com.android.systemui.statusbar.notification.collection.NotifPipeline
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
+import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationListRepository
+import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
+import com.android.systemui.statusbar.policy.HeadsUpManager
+import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener
+import com.android.systemui.util.settings.FakeSettings
+import com.google.common.truth.Truth.assertThat
+import kotlin.time.Duration.Companion.seconds
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.TestCoroutineScheduler
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.same
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+
+@SmallTest
+@RunWith(ParameterizedAndroidJunit4::class)
+class OriginalUnseenKeyguardCoordinatorTest(flags: FlagsParameterization) : SysuiTestCase() {
+
+ private val kosmos = Kosmos()
+
+ private val headsUpManager: HeadsUpManager = mock()
+ private val keyguardRepository = FakeKeyguardRepository()
+ private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
+ private val notifPipeline: NotifPipeline = mock()
+ private val statusBarStateController: StatusBarStateController = mock()
+
+ init {
+ mSetFlagsRule.setFlagsParameterization(flags)
+ }
+
+ @Test
+ fun unseenFilterSuppressesSeenNotifWhileKeyguardShowing() {
+ // GIVEN: Keyguard is not showing, shade is expanded, and a notification is present
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(true)
+ runKeyguardCoordinatorTest {
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: The keyguard is now showing
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is recognized as "seen" and is filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
+
+ // WHEN: The keyguard goes away
+ keyguardRepository.setKeyguardShowing(false)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is shown regardless
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenFilterStopsMarkingSeenNotifWhenTransitionToAod() {
+ // GIVEN: Keyguard is not showing, shade is not expanded, and a notification is present
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(false)
+ runKeyguardCoordinatorTest {
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: The device transitions to AOD
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.AOD,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // THEN: We are no longer listening for shade expansions
+ verify(statusBarStateController, never()).addCallback(any())
+ }
+ }
+
+ @Test
+ fun unseenFilter_headsUpMarkedAsSeen() {
+ // GIVEN: Keyguard is not showing, shade is not expanded
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(false)
+ runKeyguardCoordinatorTest {
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Gone),
+ stateTransition = TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
+ )
+
+ // WHEN: A notification is posted
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: That notification is heads up
+ onHeadsUpChangedListener.onHeadsUpStateChanged(fakeEntry, /* isHeadsUp= */ true)
+ testScheduler.runCurrent()
+
+ // WHEN: The keyguard is now showing
+ keyguardRepository.setKeyguardShowing(true)
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Lockscreen),
+ stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.AOD)
+ )
+
+ // THEN: The notification is recognized as "seen" and is filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
+
+ // WHEN: The keyguard goes away
+ keyguardRepository.setKeyguardShowing(false)
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Gone),
+ stateTransition = TransitionStep(KeyguardState.AOD, KeyguardState.GONE)
+ )
+
+ // THEN: The notification is shown regardless
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenFilterDoesNotSuppressSeenOngoingNotifWhileKeyguardShowing() {
+ // GIVEN: Keyguard is not showing, shade is expanded, and an ongoing notification is present
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(true)
+ runKeyguardCoordinatorTest {
+ val fakeEntry =
+ NotificationEntryBuilder()
+ .setNotification(Notification.Builder(mContext, "id").setOngoing(true).build())
+ .build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: The keyguard is now showing
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is recognized as "ongoing" and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenFilterDoesNotSuppressSeenMediaNotifWhileKeyguardShowing() {
+ // GIVEN: Keyguard is not showing, shade is expanded, and a media notification is present
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(true)
+ runKeyguardCoordinatorTest {
+ val fakeEntry =
+ NotificationEntryBuilder().build().apply {
+ row =
+ mock<ExpandableNotificationRow>().apply {
+ whenever(isMediaRow).thenReturn(true)
+ }
+ }
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: The keyguard is now showing
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is recognized as "media" and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenFilterUpdatesSeenProviderWhenSuppressing() {
+ // GIVEN: Keyguard is not showing, shade is expanded, and a notification is present
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(true)
+ runKeyguardCoordinatorTest {
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: The keyguard is now showing
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is recognized as "seen" and is filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
+
+ // WHEN: The filter is cleaned up
+ unseenFilter.onCleanup()
+
+ // THEN: The SeenNotificationProvider has been updated to reflect the suppression
+ assertThat(seenNotificationsInteractor.hasFilteredOutSeenNotifications.value).isTrue()
+ }
+ }
+
+ @Test
+ fun unseenFilterInvalidatesWhenSettingChanges() {
+ // GIVEN: Keyguard is not showing, and shade is expanded
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(true)
+ runKeyguardCoordinatorTest {
+ // GIVEN: A notification is present
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // GIVEN: The setting for filtering unseen notifications is disabled
+ showOnlyUnseenNotifsOnKeyguardSetting = false
+
+ // GIVEN: The pipeline has registered the unseen filter for invalidation
+ val invalidationListener: Pluggable.PluggableListener<NotifFilter> = mock()
+ unseenFilter.setInvalidationListener(invalidationListener)
+
+ // WHEN: The keyguard is now showing
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is not filtered out
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+
+ // WHEN: The secure setting is changed
+ showOnlyUnseenNotifsOnKeyguardSetting = true
+
+ // THEN: The pipeline is invalidated
+ verify(invalidationListener).onPluggableInvalidated(same(unseenFilter), any())
+
+ // THEN: The notification is recognized as "seen" and is filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
+ }
+ }
+
+ @Test
+ fun unseenFilterAllowsNewNotif() {
+ // GIVEN: Keyguard is showing, no notifications present
+ keyguardRepository.setKeyguardShowing(true)
+ runKeyguardCoordinatorTest {
+ // WHEN: A new notification is posted
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // THEN: The notification is recognized as "unseen" and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenFilterSeenGroupSummaryWithUnseenChild() {
+ // GIVEN: Keyguard is not showing, shade is expanded, and a notification is present
+ keyguardRepository.setKeyguardShowing(false)
+ whenever(statusBarStateController.isExpanded).thenReturn(true)
+ runKeyguardCoordinatorTest {
+ // WHEN: A new notification is posted
+ val fakeSummary = NotificationEntryBuilder().build()
+ val fakeChild =
+ NotificationEntryBuilder()
+ .setGroup(context, "group")
+ .setGroupSummary(context, false)
+ .build()
+ GroupEntryBuilder().setSummary(fakeSummary).addChild(fakeChild).build()
+
+ collectionListener.onEntryAdded(fakeSummary)
+ collectionListener.onEntryAdded(fakeChild)
+
+ // WHEN: Keyguard is now showing, both notifications are marked as seen
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // WHEN: The child notification is now unseen
+ collectionListener.onEntryUpdated(fakeChild)
+
+ // THEN: The summary is not filtered out, because the child is unseen
+ assertThat(unseenFilter.shouldFilterOut(fakeSummary, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenNotificationIsMarkedAsSeenWhenKeyguardGoesAway() {
+ // GIVEN: Keyguard is showing, not dozing, unseen notification is present
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardRepository.setIsDozing(false)
+ runKeyguardCoordinatorTest {
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.AOD,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: five seconds have passed
+ testScheduler.advanceTimeBy(5.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: Keyguard is no longer showing
+ keyguardRepository.setKeyguardShowing(false)
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Gone),
+ stateTransition = TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
+ )
+
+ // WHEN: Keyguard is shown again
+ keyguardRepository.setKeyguardShowing(true)
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Lockscreen),
+ stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.AOD)
+ )
+
+ // THEN: The notification is now recognized as "seen" and is filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
+ }
+ }
+
+ @Test
+ fun unseenNotificationIsNotMarkedAsSeenIfShadeNotExpanded() {
+ // GIVEN: Keyguard is showing, unseen notification is present
+ keyguardRepository.setKeyguardShowing(true)
+ runKeyguardCoordinatorTest {
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ val fakeEntry = NotificationEntryBuilder().build()
+ collectionListener.onEntryAdded(fakeEntry)
+
+ // WHEN: Keyguard is no longer showing
+ keyguardRepository.setKeyguardShowing(false)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GONE,
+ this.testScheduler,
+ )
+
+ // WHEN: Keyguard is shown again
+ keyguardRepository.setKeyguardShowing(true)
+ testScheduler.runCurrent()
+
+ // THEN: The notification is not recognized as "seen" and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenNotificationIsNotMarkedAsSeenIfNotOnKeyguardLongEnough() {
+ // GIVEN: Keyguard is showing, not dozing, unseen notification is present
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardRepository.setIsDozing(false)
+ runKeyguardCoordinatorTest {
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Lockscreen),
+ stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.LOCKSCREEN)
+ )
+ val firstEntry = NotificationEntryBuilder().setId(1).build()
+ collectionListener.onEntryAdded(firstEntry)
+ testScheduler.runCurrent()
+
+ // WHEN: one second has passed
+ testScheduler.advanceTimeBy(1.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: another unseen notification is posted
+ val secondEntry = NotificationEntryBuilder().setId(2).build()
+ collectionListener.onEntryAdded(secondEntry)
+ testScheduler.runCurrent()
+
+ // WHEN: four more seconds have passed
+ testScheduler.advanceTimeBy(4.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the keyguard is no longer showing
+ keyguardRepository.setKeyguardShowing(false)
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Gone),
+ stateTransition = TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
+ )
+
+ // WHEN: Keyguard is shown again
+ keyguardRepository.setKeyguardShowing(true)
+ kosmos.setTransition(
+ sceneTransition = Idle(Scenes.Lockscreen),
+ stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.LOCKSCREEN)
+ )
+
+ // THEN: The first notification is considered seen and is filtered out.
+ assertThat(unseenFilter.shouldFilterOut(firstEntry, 0L)).isTrue()
+
+ // THEN: The second notification is still considered unseen and is not filtered out
+ assertThat(unseenFilter.shouldFilterOut(secondEntry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenNotificationOnKeyguardNotMarkedAsSeenIfRemovedAfterThreshold() {
+ // GIVEN: Keyguard is showing, not dozing
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardRepository.setIsDozing(false)
+ runKeyguardCoordinatorTest {
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: a new notification is posted
+ val entry = NotificationEntryBuilder().setId(1).build()
+ collectionListener.onEntryAdded(entry)
+ testScheduler.runCurrent()
+
+ // WHEN: five more seconds have passed
+ testScheduler.advanceTimeBy(5.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the notification is removed
+ collectionListener.onEntryRemoved(entry, 0)
+ testScheduler.runCurrent()
+
+ // WHEN: the notification is re-posted
+ collectionListener.onEntryAdded(entry)
+ testScheduler.runCurrent()
+
+ // WHEN: one more second has passed
+ testScheduler.advanceTimeBy(1.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the keyguard is no longer showing
+ keyguardRepository.setKeyguardShowing(false)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GONE,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: Keyguard is shown again
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // THEN: The notification is considered unseen and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(entry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenNotificationOnKeyguardNotMarkedAsSeenIfRemovedBeforeThreshold() {
+ // GIVEN: Keyguard is showing, not dozing
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardRepository.setIsDozing(false)
+ runKeyguardCoordinatorTest {
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: a new notification is posted
+ val entry = NotificationEntryBuilder().setId(1).build()
+ collectionListener.onEntryAdded(entry)
+ testScheduler.runCurrent()
+
+ // WHEN: one second has passed
+ testScheduler.advanceTimeBy(1.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the notification is removed
+ collectionListener.onEntryRemoved(entry, 0)
+ testScheduler.runCurrent()
+
+ // WHEN: the notification is re-posted
+ collectionListener.onEntryAdded(entry)
+ testScheduler.runCurrent()
+
+ // WHEN: one more second has passed
+ testScheduler.advanceTimeBy(1.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the keyguard is no longer showing
+ keyguardRepository.setKeyguardShowing(false)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GONE,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: Keyguard is shown again
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // THEN: The notification is considered unseen and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(entry, 0L)).isFalse()
+ }
+ }
+
+ @Test
+ fun unseenNotificationOnKeyguardNotMarkedAsSeenIfUpdatedBeforeThreshold() {
+ // GIVEN: Keyguard is showing, not dozing
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardRepository.setIsDozing(false)
+ runKeyguardCoordinatorTest {
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: a new notification is posted
+ val entry = NotificationEntryBuilder().setId(1).build()
+ collectionListener.onEntryAdded(entry)
+ testScheduler.runCurrent()
+
+ // WHEN: one second has passed
+ testScheduler.advanceTimeBy(1.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the notification is updated
+ collectionListener.onEntryUpdated(entry)
+ testScheduler.runCurrent()
+
+ // WHEN: four more seconds have passed
+ testScheduler.advanceTimeBy(4.seconds)
+ testScheduler.runCurrent()
+
+ // WHEN: the keyguard is no longer showing
+ keyguardRepository.setKeyguardShowing(false)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.GONE,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // WHEN: Keyguard is shown again
+ keyguardRepository.setKeyguardShowing(true)
+ keyguardTransitionRepository.sendTransitionSteps(
+ from = KeyguardState.GONE,
+ to = KeyguardState.LOCKSCREEN,
+ this.testScheduler,
+ )
+ testScheduler.runCurrent()
+
+ // THEN: The notification is considered unseen and is not filtered out.
+ assertThat(unseenFilter.shouldFilterOut(entry, 0L)).isFalse()
+ }
+ }
+
+ private fun runKeyguardCoordinatorTest(
+ testBlock: suspend KeyguardCoordinatorTestScope.() -> Unit
+ ) {
+ val testDispatcher = UnconfinedTestDispatcher()
+ val testScope = TestScope(testDispatcher)
+ val fakeSettings =
+ FakeSettings().apply {
+ putInt(Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, 1)
+ }
+ val seenNotificationsInteractor =
+ SeenNotificationsInteractor(ActiveNotificationListRepository())
+ val keyguardCoordinator =
+ OriginalUnseenKeyguardCoordinator(
+ testDispatcher,
+ mock<DumpManager>(),
+ headsUpManager,
+ keyguardRepository,
+ kosmos.keyguardTransitionInteractor,
+ KeyguardCoordinatorLogger(logcatLogBuffer()),
+ testScope.backgroundScope,
+ fakeSettings,
+ seenNotificationsInteractor,
+ statusBarStateController,
+ )
+ keyguardCoordinator.attach(notifPipeline)
+ testScope.runTest {
+ KeyguardCoordinatorTestScope(
+ keyguardCoordinator,
+ testScope,
+ seenNotificationsInteractor,
+ fakeSettings,
+ )
+ .testBlock()
+ }
+ }
+
+ private inner class KeyguardCoordinatorTestScope(
+ private val keyguardCoordinator: OriginalUnseenKeyguardCoordinator,
+ private val scope: TestScope,
+ val seenNotificationsInteractor: SeenNotificationsInteractor,
+ private val fakeSettings: FakeSettings,
+ ) : CoroutineScope by scope {
+ val testScheduler: TestCoroutineScheduler
+ get() = scope.testScheduler
+
+ val unseenFilter: NotifFilter
+ get() = keyguardCoordinator.unseenNotifFilter
+
+ val collectionListener: NotifCollectionListener =
+ argumentCaptor { verify(notifPipeline).addCollectionListener(capture()) }.lastValue
+
+ val onHeadsUpChangedListener: OnHeadsUpChangedListener
+ get() = argumentCaptor { verify(headsUpManager).addListener(capture()) }.lastValue
+
+ var showOnlyUnseenNotifsOnKeyguardSetting: Boolean
+ get() =
+ fakeSettings.getIntForUser(
+ Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
+ UserHandle.USER_CURRENT,
+ ) == 1
+ set(value) {
+ fakeSettings.putIntForUser(
+ Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
+ if (value) 1 else 2,
+ UserHandle.USER_CURRENT,
+ )
+ }
+ }
+
+ companion object {
+ @JvmStatic
+ @Parameters(name = "{0}")
+ fun getParams(): List<FlagsParameterization> {
+ return FlagsParameterization.allCombinationsOf().andSceneContainer()
+ }
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
index f14c96ded..71cd95f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
@@ -64,7 +64,6 @@
import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.whenever
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -77,6 +76,7 @@
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mock
+import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
@@ -213,9 +213,11 @@
}
@Test
- fun validatePaddingTop() =
+ fun validatePaddingTopInNonSplitShade_usesLargeScreenHeader() =
testScope.runTest {
+ whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(10)
overrideResource(R.bool.config_use_split_notification_shade, false)
+ overrideResource(R.bool.config_use_large_screen_shade_header, true)
overrideResource(R.dimen.large_screen_shade_header_height, 10)
overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
@@ -223,6 +225,21 @@
configurationRepository.onAnyConfigurationChange()
+ assertThat(paddingTop).isEqualTo(10)
+ }
+
+ @Test
+ fun validatePaddingTopInNonSplitShade_doesNotUseLargeScreenHeader() =
+ testScope.runTest {
+ whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(10)
+ overrideResource(R.bool.config_use_split_notification_shade, false)
+ overrideResource(R.bool.config_use_large_screen_shade_header, false)
+ overrideResource(R.dimen.large_screen_shade_header_height, 10)
+ overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
+
+ val paddingTop by collectLastValue(underTest.paddingTopDimen)
+
+ configurationRepository.onAnyConfigurationChange()
assertThat(paddingTop).isEqualTo(0)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt
index 59e8ea6..10a2f64 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImplTest.kt
@@ -38,6 +38,8 @@
import com.android.systemui.animation.LaunchableView
import com.android.systemui.assist.AssistManager
import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.keyguard.KeyguardViewMediator
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.plugins.ActivityStarter.OnDismissAction
@@ -101,6 +103,7 @@
@Mock private lateinit var userTracker: UserTracker
@Mock private lateinit var activityIntentHelper: ActivityIntentHelper
@Mock private lateinit var communalSceneInteractor: CommunalSceneInteractor
+ @Mock private lateinit var communalSettingsInteractor: CommunalSettingsInteractor
private lateinit var underTest: LegacyActivityStarterInternalImpl
private val mainExecutor = FakeExecutor(FakeSystemClock())
private val shadeAnimationInteractor =
@@ -135,6 +138,7 @@
activityIntentHelper = activityIntentHelper,
mainExecutor = mainExecutor,
communalSceneInteractor = communalSceneInteractor,
+ communalSettingsInteractor = communalSettingsInteractor,
)
`when`(userTracker.userHandle).thenReturn(UserHandle.OWNER)
`when`(communalSceneInteractor.isCommunalVisible).thenReturn(MutableStateFlow(false))
@@ -352,6 +356,7 @@
`when`(pendingIntent.isActivity).thenReturn(true)
`when`(keyguardStateController.isShowing).thenReturn(true)
`when`(keyguardStateController.isOccluded).thenReturn(true)
+ `when`(communalSettingsInteractor.isCommunalFlagEnabled()).thenReturn(true)
`when`(communalSceneInteractor.isCommunalVisible).thenReturn(MutableStateFlow(true))
`when`(communalSceneInteractor.isLaunchingWidget).thenReturn(MutableStateFlow(true))
`when`(activityIntentHelper.wouldPendingLaunchResolverActivity(eq(pendingIntent), anyInt()))
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt
new file mode 100644
index 0000000..142631e
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.domain.interactor
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.android.systemui.volume.data.repository.audioSharingRepository
+import com.google.common.truth.Truth
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class AudioSharingInteractorTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ lateinit var underTest: AudioSharingInteractor
+
+ @Before
+ fun setUp() {
+ with(kosmos) { underTest = audioSharingInteractor }
+ }
+
+ @Test
+ fun volumeChanges_returnVolume() {
+ with(kosmos) {
+ testScope.runTest {
+ with(audioSharingRepository) {
+ setSecondaryGroupId(TEST_GROUP_ID)
+ setVolumeMap(mapOf(TEST_GROUP_ID to TEST_VOLUME))
+ }
+ val volume by collectLastValue(underTest.volume)
+ runCurrent()
+
+ Truth.assertThat(volume).isEqualTo(TEST_VOLUME)
+ }
+ }
+ }
+
+ @Test
+ fun volumeChanges_returnNull() {
+ with(kosmos) {
+ testScope.runTest {
+ with(audioSharingRepository) {
+ setSecondaryGroupId(TEST_GROUP_ID_INVALID)
+ setVolumeMap(mapOf(TEST_GROUP_ID to TEST_VOLUME))
+ }
+ val volume by collectLastValue(underTest.volume)
+ runCurrent()
+
+ Truth.assertThat(volume).isNull()
+ }
+ }
+ }
+
+ @Test
+ fun volumeChanges_returnDefaultVolume() {
+ with(kosmos) {
+ testScope.runTest {
+ with(audioSharingRepository) {
+ setSecondaryGroupId(TEST_GROUP_ID)
+ setVolumeMap(emptyMap())
+ }
+ val volume by collectLastValue(underTest.volume)
+ runCurrent()
+
+ Truth.assertThat(volume).isEqualTo(TEST_VOLUME_DEFAULT)
+ }
+ }
+ }
+
+ private companion object {
+ const val TEST_GROUP_ID = 1
+ const val TEST_GROUP_ID_INVALID = -1
+ const val TEST_VOLUME = 10
+ const val TEST_VOLUME_DEFAULT = 20
+ }
+}
diff --git a/packages/SystemUI/res-product/values-or/strings.xml b/packages/SystemUI/res-product/values-or/strings.xml
index a89dd7b..4a66968 100644
--- a/packages/SystemUI/res-product/values-or/strings.xml
+++ b/packages/SystemUI/res-product/values-or/strings.xml
@@ -33,7 +33,7 @@
<string name="kg_failed_attempts_almost_at_erase_user" product="tablet" msgid="7325071812832605911">"ଆପଣ ଟାବଲେଟକୁ ଅନଲକ କରିବାକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g> ଭୁଲ ପ୍ରୟାସ ପରେ, ଏହି ୟୁଜର ପ୍ରୋଫାଇଲ୍କୁ କାଢ଼ି ଦିଆଯିବ, ଯାହା ଫଳରେ ସମସ୍ତ ୟୁଜର ଡାଟା ଡିଲିଟ ହୋଇଯିବ।"</string>
<string name="kg_failed_attempts_almost_at_erase_user" product="default" msgid="8110939900089863103">"ଆପଣ ଫୋନକୁ ଅନଲକ କରିବାକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g> ଭୁଲ ପ୍ରୟାସ ପରେ, ଏହି ୟୁଜର ପ୍ରୋଫାଇଲକୁ କାଢ଼ି ଦିଆଯିବ, ଯାହା ଫଳରେ ସମସ୍ତ ୟୁଜର ଡାଟା ଡିଲିଟ ହୋଇଯିବ।"</string>
<string name="kg_failed_attempts_now_erasing_user" product="tablet" msgid="8509811676952707883">"ଆପଣ ଟାବଲେଟକୁ ଅନଲକ କରିବାକୁ <xliff:g id="NUMBER">%d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଏହି ୟୁଜରଙ୍କୁ ବାହାର କରିଦିଆଯିବ, ଯାହାଦ୍ୱାରା ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତା ଡାଟା ଡିଲିଟ ହୋଇଯିବ।"</string>
- <string name="kg_failed_attempts_now_erasing_user" product="default" msgid="3051962486994265014">"ଆପଣ ଫୋନ୍କୁ ଅନ୍ଲକ୍ କରିବାକୁ <xliff:g id="NUMBER">%d</xliff:g>ଥର ଭୁଲ୍ ପ୍ରୟାସ କରିଛନ୍ତି। ଏହି ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ବାହାର କରିଦିଆଯିବ, ଯାହାଦ୍ୱାରା ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତା ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
+ <string name="kg_failed_attempts_now_erasing_user" product="default" msgid="3051962486994265014">"ଆପଣ ଫୋନକୁ ଅନଲକ କରିବାକୁ <xliff:g id="NUMBER">%d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଏହି ୟୁଜରଙ୍କୁ ବାହାର କରିଦିଆଯିବ, ଯାହା ଦ୍ୱାରା ସମସ୍ତ ୟୁଜର ଡାଟା ଡିଲିଟ ହେବ।"</string>
<string name="kg_failed_attempts_almost_at_erase_profile" product="tablet" msgid="1049523640263353830">"ଆପଣ ଟାବ୍ଲେଟ୍କୁ ଅନ୍ଲକ୍ କରିବାକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ୍ ପ୍ରୟାସ ପରେ, ୱାର୍କ ପ୍ରୋଫାଇଲ୍କୁ ବାହାର କରିଦିଆଯିବ, ଯାହା ଫଳରେ ସମସ୍ତ ପ୍ରୋଫାଇଲ୍ ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
<string name="kg_failed_attempts_almost_at_erase_profile" product="default" msgid="3280816298678433681">"ଆପଣ ଫୋନ୍କୁ ଅନ୍ଲକ୍ କରିବାକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ୍ ପ୍ରୟାସ ପରେ, ୱାର୍କ ପ୍ରୋଫାଇଲ୍କୁ ବାହାର କରିଦିଆଯିବ, ଯାହା ଫଳରେ ସମସ୍ତ ପ୍ରୋଫାଇଲ୍ ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
<string name="kg_failed_attempts_now_erasing_profile" product="tablet" msgid="4417100487251371559">"ଆପଣ ଟାବ୍ଲେଟ୍କୁ ଅନ୍ଲକ୍ କରିବାକୁ<xliff:g id="NUMBER">%d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। କାର୍ଯ୍ୟ ପ୍ରୋଫାଇଲ୍ ବାହାର କରିଦିଆଯିବ, ଯାହା ଫଳରେ ସମସ୍ତ ପ୍ରୋଫାଇଲ୍ ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
diff --git a/packages/SystemUI/res/layout/overlay_action_chip.xml b/packages/SystemUI/res/layout/overlay_action_chip.xml
deleted file mode 100644
index e7c382f..0000000
--- a/packages/SystemUI/res/layout/overlay_action_chip.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2019 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<com.android.systemui.screenshot.OverlayActionChip
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
- android:id="@+id/overlay_action_chip"
- android:theme="@style/FloatingOverlay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/overlay_action_chip_margin_start"
- android:layout_gravity="center"
- android:gravity="center"
- android:alpha="0.0">
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingVertical="@dimen/overlay_action_chip_padding_vertical"
- android:background="@drawable/action_chip_background"
- android:gravity="center">
- <ImageView
- android:id="@+id/overlay_action_chip_icon"
- android:tint="?androidprv:attr/materialColorOnSecondary"
- android:layout_width="@dimen/overlay_action_chip_icon_size"
- android:layout_height="@dimen/overlay_action_chip_icon_size"/>
- <TextView
- android:id="@+id/overlay_action_chip_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
- android:textSize="@dimen/overlay_action_chip_text_size"
- android:textColor="?androidprv:attr/materialColorOnSecondary"/>
- </LinearLayout>
-</com.android.systemui.screenshot.OverlayActionChip>
diff --git a/packages/SystemUI/res/layout/screenshot_static.xml b/packages/SystemUI/res/layout/screenshot_static.xml
deleted file mode 100644
index 3b728a9..0000000
--- a/packages/SystemUI/res/layout/screenshot_static.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2020 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<com.android.systemui.screenshot.DraggableConstraintLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <ImageView
- android:id="@+id/actions_container_background"
- android:visibility="gone"
- android:layout_height="0dp"
- android:layout_width="0dp"
- android:elevation="4dp"
- android:background="@drawable/action_chip_container_background"
- android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal"
- android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="@+id/actions_container"
- app:layout_constraintEnd_toEndOf="@+id/actions_container"
- app:layout_constraintBottom_toTopOf="@id/guideline"/>
- <HorizontalScrollView
- android:id="@+id/actions_container"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginEnd="@dimen/overlay_action_container_margin_horizontal"
- android:paddingEnd="@dimen/overlay_action_container_padding_end"
- android:paddingVertical="@dimen/overlay_action_container_padding_vertical"
- android:elevation="4dp"
- android:scrollbars="none"
- app:layout_constraintHorizontal_bias="0"
- app:layout_constraintWidth_percent="1.0"
- app:layout_constraintWidth_max="wrap"
- app:layout_constraintStart_toEndOf="@+id/screenshot_preview_border"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toBottomOf="@id/actions_container_background">
- <LinearLayout
- android:id="@+id/screenshot_actions"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- <include layout="@layout/overlay_action_chip"
- android:id="@+id/screenshot_share_chip"/>
- <include layout="@layout/overlay_action_chip"
- android:id="@+id/screenshot_edit_chip"/>
- <include layout="@layout/overlay_action_chip"
- android:id="@+id/screenshot_scroll_chip"
- android:visibility="gone" />
- </LinearLayout>
- </HorizontalScrollView>
- <View
- android:id="@+id/screenshot_preview_border"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_marginStart="@dimen/overlay_preview_container_margin"
- android:layout_marginTop="@dimen/overlay_border_width_neg"
- android:layout_marginEnd="@dimen/overlay_border_width_neg"
- android:layout_marginBottom="@dimen/overlay_preview_container_margin"
- android:elevation="8dp"
- android:alpha="0"
- android:background="@drawable/overlay_border"
- app:layout_constraintStart_toStartOf="@id/actions_container_background"
- app:layout_constraintTop_toTopOf="@id/screenshot_preview"
- app:layout_constraintEnd_toEndOf="@id/screenshot_preview"
- app:layout_constraintBottom_toBottomOf="@id/actions_container_background"/>
- <ImageView
- android:id="@+id/screenshot_preview"
- android:visibility="invisible"
- android:layout_width="@dimen/overlay_x_scale"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/overlay_border_width"
- android:layout_marginBottom="@dimen/overlay_border_width"
- android:layout_gravity="center"
- android:elevation="8dp"
- android:contentDescription="@string/screenshot_edit_description"
- android:scaleType="fitEnd"
- android:background="@drawable/overlay_preview_background"
- android:adjustViewBounds="true"
- android:clickable="true"
- app:layout_constraintStart_toStartOf="@id/screenshot_preview_border"
- app:layout_constraintBottom_toBottomOf="@id/screenshot_preview_border"/>
- <ImageView
- android:id="@+id/screenshot_badge"
- android:layout_width="56dp"
- android:layout_height="56dp"
- android:visibility="gone"
- android:elevation="9dp"
- app:layout_constraintBottom_toBottomOf="@id/screenshot_preview_border"
- app:layout_constraintEnd_toEndOf="@id/screenshot_preview_border"/>
- <FrameLayout
- android:id="@+id/screenshot_dismiss_button"
- android:layout_width="@dimen/overlay_dismiss_button_tappable_size"
- android:layout_height="@dimen/overlay_dismiss_button_tappable_size"
- android:elevation="11dp"
- android:visibility="gone"
- app:layout_constraintStart_toEndOf="@id/screenshot_preview"
- app:layout_constraintEnd_toEndOf="@id/screenshot_preview"
- app:layout_constraintTop_toTopOf="@id/screenshot_preview"
- app:layout_constraintBottom_toTopOf="@id/screenshot_preview"
- android:contentDescription="@string/screenshot_dismiss_description">
- <ImageView
- android:id="@+id/screenshot_dismiss_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_margin="@dimen/overlay_dismiss_button_margin"
- android:background="@drawable/circular_background"
- android:backgroundTint="?androidprv:attr/materialColorPrimary"
- android:tint="?androidprv:attr/materialColorOnPrimary"
- android:padding="4dp"
- android:src="@drawable/ic_close"/>
- </FrameLayout>
- <ImageView
- android:id="@+id/screenshot_scrollable_preview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:scaleType="matrix"
- android:visibility="gone"
- app:layout_constraintStart_toStartOf="@id/screenshot_preview"
- app:layout_constraintTop_toTopOf="@id/screenshot_preview"
- android:elevation="7dp"/>
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_end="0dp" />
-
- <FrameLayout
- android:id="@+id/screenshot_message_container"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginHorizontal="@dimen/overlay_action_container_margin_horizontal"
- android:layout_marginTop="4dp"
- android:layout_marginBottom="@dimen/overlay_action_container_margin_bottom"
- android:paddingHorizontal="@dimen/overlay_action_container_padding_end"
- android:paddingVertical="@dimen/overlay_action_container_padding_vertical"
- android:elevation="4dp"
- android:background="@drawable/action_chip_container_background"
- android:visibility="gone"
- app:layout_constraintTop_toBottomOf="@id/guideline"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintWidth_max="450dp"
- app:layout_constraintHorizontal_bias="0">
- <include layout="@layout/screenshot_work_profile_first_run" />
- <include layout="@layout/screenshot_detection_notice" />
- </FrameLayout>
-</com.android.systemui.screenshot.DraggableConstraintLayout>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index a4b6dea..adeafbc 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -126,27 +126,41 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tik om te bekyk"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Kon nie skermopname stoor nie"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Kon nie skermopname begin nie"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Jy sal ophou om <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> op te neem"</string>
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
+ <skip />
<!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
<skip />
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Deel tans skerm"</string>
<!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Jy sal ophou om <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> te deel"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
+ <skip />
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
+ <skip />
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
+ <skip />
<!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Skerm word tans uitgesaai"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Skerm word tans uitgesaai"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Hou op uitsaai?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Jy sal ophou om <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uit te saai"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
<!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
<skip />
<!-- no translation found for close_dialog_button (4749497706540104133) -->
@@ -295,6 +309,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Sluimerskerm"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Moenie Steur Nie"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Geen saamgebinde toestelle beskikbaar nie"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tik om ’n toestel te koppel of ontkoppel"</string>
@@ -495,6 +511,10 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"kies legstuk"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"verwyder legstuk"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"plaas gekose legstuk"</string>
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
+ <skip />
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
+ <skip />
<!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
<skip />
<!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
@@ -722,7 +742,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Verstek"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Outomaties"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Geen klank of vibrasie nie"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Geen klank of vibrasie nie en verskyn laer in gespreksafdeling"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Kan lui of vibreer op grond van toestelinstellings"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Kan lui of vibreer op grond van toestelinstellings. Gesprekke van <xliff:g id="APP_NAME">%1$s</xliff:g> af verskyn by verstek in ’n borrel."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Laat die stelsel bepaal of hierdie kennisgewing \'n klank moet maak of vibreer"</string>
@@ -779,6 +800,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,6 +1384,8 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Verdeelde skerm"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Invoer"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Appkortpaaie"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Toeganklikheid"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Kortpadsleutels"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Soekkortpaaie"</string>
@@ -1375,8 +1400,7 @@
<skip />
<!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
<skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Uitstekende werk!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gaan terug"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Swiep enige plek op die raakpaneel links of regs met drie vingers om terug te gaan."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Raakpaneel wat drie vingers wat regs en links beweeg wys"</string>
@@ -1385,4 +1409,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Vlak %1$d van %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Huiskontroles"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Kry vinnig toegang tot jou huiskontroles as ’n sluimerskerm"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-af/tiles_states_strings.xml b/packages/SystemUI/res/values-af/tiles_states_strings.xml
index 1b4781d..1af9fd9 100644
--- a/packages/SystemUI/res/values-af/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-af/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Af"</item>
<item msgid="4875147066469902392">"Aan"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Onbeskikbaar"</item>
<item msgid="5044688398303285224">"Af"</item>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 784d1ab..fb4c765 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ለመመልከት መታ ያድርጉ"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"የማያ ገጽ ቀረጻን ማስቀመጥ ላይ ስህተት"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"የማያ ገፅ ቀረጻን መጀመር ላይ ስህተት"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"እርስዎ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> መቅረጽ ያቆማሉ"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"መቅረጽ አቁም"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"ማያ ገፅን በማጋራት ላይ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ማያ ገፅን ማጋራት ይቁም?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"እርስዎ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ማጋራት ያቆማሉ"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"ማያ ገፅን Cast በማድረግ ላይ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"ማጋራት አቁም"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"ማያ ገፅን cast በማድረግ ላይ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"cast ማድረግ ይቁም?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"እርስዎ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> cast ማድረግ ያቆማሉ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"cast ማድረግ አቁም"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ዝጋ"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ችግር መመዝገቢያ"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"የአሰራር ችግር አመዘጋገብ"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ለችግር መሰብሰብ ክፍለ ጊዜ ቀጣይነት ያለው ማሳወቂያ"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"የችግር ምዝገባ ማስቀመጥ ላይ ስህተት"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ችግር ምዝገባ ማስጀመር ላይ ስህተት"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"በሙሉ ገጽ ዕይታ በማየት ላይ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ለመውጣት ከማያ ገፅዎ አናት ወደታች ያንሸራትቱ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ገባኝ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ተመለስ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"መነሻ"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"የማያ ገፅ ማቆያ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ኤተርኔት"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"አትረብሽ"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ብሉቱዝ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ምንም የተጣመሩ መሣሪያዎች አይገኝም"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"መሣሪያን ለማገናኘት ወይም ግንኙነቱን ለማቋረጥ መታ ያድርጉ"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ተቀምጧል"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ግንኙነትን አቋርጥ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ያግብሩ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ነገ በራስ-ሰር ያብሩ"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"እንደ ፈጣን ማጋራት እና የእኔን መሣሪያ አግኝ ያሉ ባህሪዎች ብሉቱዝን ይጠቀማሉ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ብሉቱዝ ነገ ጠዋት ይበራል"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ኦዲዮ አጋራ"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ምግብር ይምረጡ"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ምግብር አስወግድ"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"በቦታ የተመረጠ ምግብር"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"የማያ ገፅ ቁልፍ ምግብሮች"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ምግብር በመጠቀም መተግበሪያ ለመክፈት እርስዎ መሆንዎን ማረጋገጥ አለብዎት። እንዲሁም የእርስዎ ጡባዊ በተቆለፈበት ጊዜ እንኳን ማንኛውም ሰው እነሱን ማየት እንደሚችል ከግምት ውስጥ ያስገቡ። አንዳንድ ምግብሮች ለማያ ገፅ ቁልፍዎ የታሰቡ ላይሆኑ ይችላሉ እና እዚህ ለማከል አስተማማኝ ላይሆኑ ይችላሉ።"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ገባኝ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ተጠቃሚ ቀይር"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ወደታች ተጎታች ምናሌ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"በዚህ ክፍለ-ጊዜ ውስጥ ያሉ ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ነባሪ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ራስ-ሰር"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ምንም ድምፅ ወይም ንዝረት የለም"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ምንም ድምፅ ወይም ንዝረት የለም እና በውይይት ክፍል ላይ አይታይም"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"በመሣሪያ ቅንብሮች መሰረት ሊጮህ ወይም ሊነዝር ይችላል"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"በስልክ ቅንብሮች መሰረት ሊጮህ ወይም ሊነዝር ይችላል። የ<xliff:g id="APP_NAME">%1$s</xliff:g> ውይይቶች በነባሪነት አረፋ ይሆናሉ።"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ይህ ማሳወቂያ ድምፅ ወይም ንዝረት መደረግ ካለበት ስርዓቱ እንዲወሰን ያድርጉት"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"ገፅ ወደ ላይ"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"ገፅ ወደ ታች"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"ሰርዝ"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"መነሻ"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"መጨረሻ"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"አስገባ"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"የተከፈለ ማያ ገፅ"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ግብዓት"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"የመተግበሪያ አቋራጮች"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ተደራሽነት"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"የቁልፍ ሰሌዳ አቋራጮች"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"የፍለጋ አቋራጮች"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"መሰብሰቢያ አዶ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"መዘርጊያ አዶ"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ወይም"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"የተመለስ ምልክት"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"የቤት ምልክት"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"የተግባር ቁልፍ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ተከናውኗል"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ጥሩ ሠርተዋል!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ወደኋላ ተመለስ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ወደኋላ ለመመለስ በመዳሰሻ ሰሌዳው ላይ በየትኛውም ቦታ ሦስት ጣቶችን በመጠቀም ወደግራ ወይም ወደቀኝ ያንሸራትቱ።"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ሦስት ጣቶች ወደቀኝ እና ግራ ሲንቀሳቀሱ የሚያሳይ የመዳሰሻ ሰሌዳ"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"ደረጃ %1$d ከ %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"የቤት ውስጥ ቁጥጥሮች"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"የቤት መቆጣጠሪያዎችዎን እንደ የገጸ ማያ አሳራፊ በፍጥነት ይድረሱባቸው"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-am/tiles_states_strings.xml b/packages/SystemUI/res/values-am/tiles_states_strings.xml
index a3c590c..8bad7ab 100644
--- a/packages/SystemUI/res/values-am/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-am/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ጠፍቷል"</item>
<item msgid="4875147066469902392">"በርቷል"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"አይገኝም"</item>
<item msgid="5044688398303285224">"ጠፍቷል"</item>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 3a8b063..b96793a3 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"انقر لعرض التسجيل"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"حدث خطأ أثناء حفظ تسجيل محتوى الشاشة."</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"حدث خطأ في بدء تسجيل الشاشة"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"سيتم إيقاف تسجيل محتوى <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"إيقاف التسجيل"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"جارِ مشاركة محتوى الشاشة"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"هل تريد إيقاف مشاركة الشاشة؟"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"سيتم إيقاف مشاركة محتوى <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"جارٍ بثّ محتوى الشاشة"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"إيقاف المشاركة"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"جارٍ بث محتوى الشاشة"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"هل تريد إيقاف البث؟"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"سيتم إيقاف بث محتوى <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"إيقاف البث"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"إغلاق"</string>
<string name="issuerecord_title" msgid="286627115110121849">"مسجّلة المشاكل"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"يجري معالجة تسجيل المشكلة."</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"إشعار بنشاط مستمر في الخلفية لجلسة جمع البيانات حول المشكلة"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"حدث خطأ أثناء حفظ تسجيل المشكلة."</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"حدث خطأ أثناء بدء تسجيل المشكلة."</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"جارٍ العرض بملء الشاشة"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"للخروج، مرِّر سريعًا من أسفل الشاشة لأعلاها"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"حسنًا"</string>
<string name="accessibility_back" msgid="6530104400086152611">"رجوع"</string>
<string name="accessibility_home" msgid="5430449841237966217">"الرئيسية"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"شاشة الاستراحة"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"عدم الإزعاج"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"بلوتوث"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"لا يتوفر أي أجهزة مقترنة"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"انقر لربط جهاز أو إلغاء ربطه"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"محفوظ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"إلغاء الربط"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"تفعيل"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"التفعيل تلقائيًا غدًا"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"يُستخدَم البلوتوث في ميزات مثل Quick Share و\"العثور على جهازي\""</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"سيتم تفعيل البلوتوث صباح الغد"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"مشاركة الصوت"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"اختيار التطبيق المصغّر"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"إزالة التطبيق المصغّر"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"إضافة التطبيق المصغّر المحدَّد"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"التطبيقات المصغّرة المصمَّمة لشاشة القفل"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"لفتح تطبيق باستخدام تطبيق مصغَّر، عليك إثبات هويتك. يُرجى ملاحظة أنّ أي شخص يمكنه الاطّلاع محتوى التطبيقات المصغَّرة، حتى وإن كان جهازك اللوحي مُقفلاً. بعض التطبيقات المصغّرة قد لا تكون مُصمَّمة لإضافتها إلى شاشة القفل، وقد يكون هذا الإجراء غير آمن."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"حسنًا"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تبديل المستخدم"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"القائمة المنسدلة"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"سيتم حذف كل التطبيقات والبيانات في هذه الجلسة."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"تلقائية"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"تلقائي"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"بدون صوت أو اهتزاز"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"بدون صوت أو اهتزاز وتظهر في أسفل قسم المحادثات"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"يمكن إصدار رنين أو اهتزاز بناءً على إعدادات الجهاز"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"يمكن إصدار رنين أو اهتزاز بناءً على إعدادات الجهاز. تظهر المحادثات من \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" كفقاعات تلقائيًا."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"السماح للنظام بتحديد ما إذا يجب اهتزاز الجهاز أو إصدار رنين عند تلقّي هذا الإشعار"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"الرئيسية"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"تقسيم الشاشة"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"الإدخال"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"اختصارات التطبيقات"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"التطبيق الحالي"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"تسهيل الاستخدام"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"اختصارات لوحة المفاتيح"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"اختصارات طلبات البحث"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"رمز التصغير"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"رمز التوسيع"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"أو"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"إيماءة الرجوع"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"إيماءة الانتقال إلى الشاشة الرئيسية"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"مفتاح الإجراء"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تم"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"أحسنت."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"رجوع"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"للرجوع، مرِّر سريعًا لليسار أو لليمين باستخدام ثلاثة أصابع في أي مكان على لوحة اللمس."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"لوحة لمس تعرض ثلاثة أصابع تتحرك يمينًا ويسارًا"</string>
@@ -1385,4 +1394,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"مستوى الإضاءة: %1$d من %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"إدارة المنزل آليًّا"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"يمكنك إدارة المنزل آليًّا بشكل سريع من شاشة الاستراحة"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ar/tiles_states_strings.xml b/packages/SystemUI/res/values-ar/tiles_states_strings.xml
index a89650a..62a6816 100644
--- a/packages/SystemUI/res/values-ar/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ar/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"الميزة غير مفعّلة"</item>
<item msgid="4875147066469902392">"الميزة مفعّلة"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"الميزة غير متاحة"</item>
<item msgid="5044688398303285224">"الميزة غير مفعّلة"</item>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 53241dd..99c4326 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"চাবলৈ টিপক"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ৰেকৰ্ড কৰা স্ক্ৰীন ছেভ কৰোঁতে আসোঁৱাহ হৈছে"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"স্ক্রীন ৰেকৰ্ড কৰা আৰম্ভ কৰোঁতে আসোঁৱাহ হৈছে"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"আপুনি <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ৰেকৰ্ড কৰা বন্ধ কৰিব"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"ৰেকৰ্ডিং কৰা বন্ধ কৰিবনে?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"বৰ্তমান আপুনি আপোনাৰ গোটেই স্ক্ৰীনখন ৰেকৰ্ড কৰি আছে"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"বৰ্তমান আপুনি <xliff:g id="APP_NAME">%1$s</xliff:g> ৰেকৰ্ড কৰি আছে"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ৰেকৰ্ডিং বন্ধ কৰক"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"স্ক্ৰীন শ্বেয়াৰ কৰি থকা হৈছে"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"আপুনি <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> শ্বেয়াৰ কৰা বন্ধ কৰিব"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"স্ক্ৰীন কাষ্ট কৰি থকা হৈছে"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"আপুনি <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> কাষ্ট কৰা বন্ধ কৰিব"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"স্ক্ৰীন শ্বেয়াৰ কৰা বন্ধ কৰিবনে?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"বৰ্তমান আপুনি আপোনাৰ গোটেই স্ক্ৰীনখন <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>ৰ সৈতে শ্বেয়াৰ কৰি আছে"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"বৰ্তমান আপুনি আপোনাৰ গোটেই স্ক্ৰীনখন এটা এপৰ সৈতে শ্বেয়াৰ কৰি আছে"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"বৰ্তমান আপুনি <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> শ্বেয়াৰ কৰি আছে"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"বৰ্তমান আপুনি এটা এপ্ শ্বেয়াৰ কৰি আছে"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"শ্বেয়াৰ কৰা বন্ধ কৰক"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"স্ক্ৰীন কাষ্ট কৰি থকা হৈছে"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"কাষ্ট কৰা বন্ধ কৰিবনে?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"বৰ্তমান আপুনি আপোনাৰ সম্পূৰ্ণ স্ক্ৰীনখন <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ত কাষ্ট কৰি আছে"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"বৰ্তমান আপুনি আপোনাৰ সম্পূৰ্ণ স্ক্ৰীনখন আশে-পাশে থকা ডিভাইচ এটাত কাষ্ট কৰি আছে"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"বৰ্তমান আপুনি <xliff:g id="DEVICE_NAME">%2$s</xliff:g>ত <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> কাষ্ট কৰি আছে"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"বৰ্তমান আপুনি আশে-পাশে থকা ডিভাইচ এটাত <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> কাষ্ট কৰি আছে"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"বৰ্তমান আপুনি <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ত কাষ্ট কৰি আছে"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"বৰ্তমান আপুনি আশে-পাশে থকা ডিভাইচ এটাত কাষ্ট কৰি আছে"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"কাষ্ট বন্ধ কৰক"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"বন্ধ কৰক"</string>
<string name="issuerecord_title" msgid="286627115110121849">"সমস্যা ৰেকৰ্ডাৰ"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"সমস্যা ৰেকৰ্ড কৰি থকা হৈছে"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"সমস্যা সংগ্ৰহ কৰা এটা ছেশ্বনৰ বাবে চলিত জাননী"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"সমস্যাৰ ৰেকৰ্ডিং ছেভ কৰাত আসোঁৱাহ"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"সমস্যাৰ ৰেকৰ্ডিং আৰম্ভ কৰোঁতে আসোঁৱাহ হৈছে"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"পূৰ্ণ স্ক্ৰীনত চাই আছে"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"বাহিৰ হ’বলৈ, আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে ওপৰৰ পৰা তললৈ ছোৱাইপ কৰক"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"বুজি পালোঁ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"উভতি যাওক"</string>
<string name="accessibility_home" msgid="5430449841237966217">"গৃহ পৃষ্ঠাৰ বুটাম"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"স্ক্ৰীন ছেভাৰ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ইথাৰনেট"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"অসুবিধা নিদিব"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"অগ্ৰাধিকাৰপ্ৰাপ্ত ম’ড"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ব্লুটুথ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"কোনো যোৰা লগোৱা ডিভাইচ উপলব্ধ নহয়।"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ডিভাইচ সংযোগ কৰিবলৈ অথবা সংযোগ বিচ্ছিন্ন কৰিবলৈ টিপক"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ছেভ কৰা হৈছে"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"সংযোগ বিচ্ছিন্ন কৰক"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"সক্ৰিয় কৰক"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"কাইলৈ স্বয়ংক্ৰিয়ভাৱে অন কৰক"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share আৰু Find My Deviceৰ দৰে সুবিধাসমূহে ব্লুটুথ ব্যৱহাৰ কৰে"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"কাইলৈ পুৱা ব্লুটুথ অন হ’ব"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"অডিঅ’ শ্বেয়াৰ কৰক"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ৱিজেট বাছনি কৰক"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ৱিজেট আঁতৰাওক"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"বাছনি কৰা ৱিজেটটো ৰাখক"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"লক স্ক্ৰীনৰ ৱিজেট"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"আপোনাৰ টেবলেটটো লক কৰি ৰাখিলেও যিকোনো লোকে আপোনাৰ লক স্ক্ৰীনত ৱিজেট চাব পাৰে।"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"লক স্ক্ৰীন ৱিজেট"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"এটা ৱিজেট ব্যৱহাৰ কৰি কোনো এপ্ খুলিবলৈ, এয়া আপুনিয়েই বুলি সত্যাপন পৰীক্ষা কৰিব লাগিব। লগতে, মনত ৰাখিব যে যিকোনো লোকেই সেইবোৰ চাব পাৰে, আনকি আপোনাৰ টেবলেটটো লক হৈ থাকিলেও। কিছুমান ৱিজেট হয়তো আপোনাৰ লক স্ক্ৰীনৰ বাবে কৰা হোৱা নাই আৰু ইয়াত যোগ কৰাটো অসুৰক্ষিত হ’ব পাৰে।"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"বুজি পালোঁ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যৱহাৰকাৰী সলনি কৰক"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুল-ডাউনৰ মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই ছেশ্বনৰ আটাইবোৰ এপ্ আৰু ডেটা মচা হ\'ব।"</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ডিফ’ল্ট"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"স্বয়ংক্ৰিয়"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"কোনো ধ্বনি অথবা কম্পন নাই"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"কোনো ধ্বনি অথবা কম্পন নাই আৰু বাৰ্তালাপ শাখাটোৰ তলৰ অংশত দেখা পোৱা যায়"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ডিভাইচৰ ছেটিঙৰ ওপৰত নিৰ্ভৰ কৰি ৰিং কৰিব অথবা কম্পন হ’ব পাৰে"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ডিভাইচৰ ছেটিঙৰ ওপৰত নিৰ্ভৰ কৰি ৰিং কৰিব অথবা কম্পন হ’ব পাৰে। <xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বাৰ্তালাপ ডিফ’ল্টভাৱে বাবল হিচাপে প্ৰদৰ্শিত হয়।"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"এই জাননীটোৱে ধ্বনি নে কম্পন সৃষ্টি কৰিব সেয়া ছিষ্টেমটোক নিৰ্ধাৰণ কৰিবলৈ দিয়ক"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"পেজ আপ"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"পেজ ডাউন"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"মচক"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"এস্কে’প"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"হ\'ম"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"সমাপ্ত"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"ভৰাওক"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"বিভাজিত স্ক্ৰীন"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ইনপুট"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"এপ্ শ্বৰ্টকাটসমূহ"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"বৰ্তমানৰ এপ্"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"সাধ্য সুবিধা"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"কীব’ৰ্ডৰ শ্বৰ্টকাট"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"সন্ধানৰ শ্বৰ্টকাট"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"সংকোচন কৰাৰ চিহ্ন"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"বিস্তাৰ কৰাৰ চিহ্ন"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"অথবা"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"উভতি যাওক নিৰ্দেশ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"গৃহ স্ক্ৰীনলৈ যোৱাৰ নিৰ্দেশ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"কাৰ্য কী"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হ’ল"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"বঢ়িয়া!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"উভতি যাওক"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"উভতি যাবলৈ, টাচ্চপেডৰ যিকোনো স্থানত তিনিটা আঙুলি ব্যৱহাৰ কৰি বাওঁ বা সোঁফালে ছোৱাইপ কৰক।"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"তিনিটা আঙুলি সোঁ আৰু বাওঁফালে লৰচৰ কৰা দেখুওৱা টাচ্চপেড"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dৰ %1$d স্তৰ"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ঘৰৰ সা-সৰঞ্জামৰ নিয়ন্ত্ৰণ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"স্ক্ৰীনছেভাৰ হিচাপে ক্ষিপ্ৰতাৰে ঘৰৰ সা-সৰঞ্জামৰ নিয়ন্ত্ৰণ এক্সেছ কৰক"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"আনডু কৰক"</string>
</resources>
diff --git a/packages/SystemUI/res/values-as/tiles_states_strings.xml b/packages/SystemUI/res/values-as/tiles_states_strings.xml
index e978fe2..fdd1f103 100644
--- a/packages/SystemUI/res/values-as/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-as/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"অফ আছে"</item>
<item msgid="4875147066469902392">"অন কৰা আছে"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"উপলব্ধ নহয়"</item>
+ <item msgid="2004750556637773692">"অফ আছে"</item>
+ <item msgid="8968530753931637871">"অন আছে"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"উপলব্ধ নহয়"</item>
<item msgid="5044688398303285224">"অফ আছে"</item>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 7fd21bf..e2ca41b 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Baxmaq üçün toxunun"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Ekran çəkimini yadda saxlayarkən xəta oldu"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Ekranın yazılması ilə bağlı xəta"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin çəkilməsini dayandıracaqsınız"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Qeydəalmanı dayandırın"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ekran paylaşılır"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Ekran paylaşımı dayandırılsın?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin paylaşılmasını dayandıracaqsınız"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Ekran yayımlanır"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Paylaşımı dayandırın"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Ekran yayımlanır"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Yayım dayandırılsın?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin yayımlanmasını dayandıracaqsınız"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Yayımı dayandırın"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Bağlayın"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problem qeydə alan"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Problem qeydi emal edilir"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Problemin əldə edilməsi sessiyası üçün davam edən bildiriş"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Problem qeydini yadda saxlayarkən xəta"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Problemi qeydə almağa başlayarkən xəta"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Tam ekran rejimi"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Çıxmaq üçün ekranın yuxarısından aşağı çəkin"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Anladım"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Geri"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Ana səhifə"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Ekran qoruyucu"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Narahat etməyin"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Heç bir cütlənmiş cihaz əlçatan deyil"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toxunaraq cihaza qoşulun, yaxud əlaqəni ayırın"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Yadda saxlandı"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"əlaqəni kəsin"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivləşdirin"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Sabah avtomatik aktiv edin"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Cəld Paylaşım və Cihazın Tapılması kimi funksiyalar Bluetooth istifadə edir"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth sabah səhər aktiv ediləcək"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Audio paylaşın"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"vidcet seçin"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"vidceti silin"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"seçilmiş vidceti yerləşdirin"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Kilid ekranı vidcetləri"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Vidcetdən istifadə edərək tətbiqi açmaq üçün kimliyi doğrulamalısınız. Planşet kilidli olsa da, hər kəs vidcetlərə baxa bilər. Bəzi vidcetlər kilid ekranı üçün nəzərdə tutulmayıb və bura əlavə etmək təhlükəli ola bilər."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Anladım"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aşağı çəkilən menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu sessiyada bütün tətbiqlər və data silinəcək."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Defolt"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Avtomatik"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Səs və ya vibrasiya yoxdur"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Söhbət siyahısının aşağısında səssiz və vibrasiyasız görünür"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Cihaz ayarlarına əsasən zəng çala və ya vibrasiya edə bilər"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Cihaz ayarlarına əsasən zəng çala və ya vibrasiya edə bilər. <xliff:g id="APP_NAME">%1$s</xliff:g> tətbiqindən söhbətlərdə defolt olaraq qabarcıq çıxır."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Bu bildirişin səs çıxarması və ya vibrasiya etməsi sistem tərəfindən təyin edilsin"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Yuxarı Səhifə"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Aşağı Səhifə"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Silin"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Son"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Daxil edin"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Bölünmüş ekran"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Daxiletmə"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Tətbiq qısayolları"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Xüsusi imkanlar"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Klaviatura qısayolları"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Axtarış qısayolları"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"İkonanı yığcamlaşdırın"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"İkonanı genişləndirin"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"və ya"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Geri jesti"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Əsas ekran jesti"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Əməliyyat düyməsi"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hazırdır"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Əla!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Geri qayıdın"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Geri qayıtmaq üçün taçpedin istənilən yerində üç barmaqla sola və ya sağa çəkin."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Üç barmağın sağa və sola hərəkət etdiyini göstərən taçped"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Səviyyə %1$d/%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Ev nizamlayıcıları"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Ekran qoruyucu kimi ev nizamlayıcılarına tez giriş"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-az/tiles_states_strings.xml b/packages/SystemUI/res/values-az/tiles_states_strings.xml
index c24f402..da6d217 100644
--- a/packages/SystemUI/res/values-az/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-az/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Deaktiv"</item>
<item msgid="4875147066469902392">"Aktiv"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Əlçatan deyil"</item>
<item msgid="5044688398303285224">"Deaktiv"</item>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 3b34af8..3a7cc66 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Dodirnite da biste pregledali"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Greška pri čuvanju snimka ekrana"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Greška pri pokretanju snimanja ekrana"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Zaustavićete snimanje za: <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Želite da zaustavite snimanje?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Trenutno snimate ceo ekran"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Trenutno snimate: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Zaustavi snimanje"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ekran se deli"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Zaustavićete deljenje za: <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Prebacuje se ekran"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Zaustavićete prebacivanje za: <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Želite da zaustavite deljenje ekrana?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Trenutno delite ceo ekran sa: <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Trenutno delite ceo ekran sa aplikacijom"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Trenutno delite: <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Trenutno delite aplikaciju"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Zaustavi deljenje"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Prebacuje se ekran"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Želite da zaustavite prebacivanje?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Trenutno prebacujete ceo ekran na: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Trenutno prebacujete ceo ekran na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> se trenutno prebacuje na: <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> se trenutno prebacuje na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Trenutno prebacujete na: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Trenutno prebacujete na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Zaustavi prebacivanje"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zatvori"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Snimač problema"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Obrađuje se snimak problema"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"obaveštenje o aktivnosti u toku za sesiju prikupljanja podataka o problemu"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Greška pri čuvanju snimka problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Greška pri pokretanju snimanja problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Prikazuje se ceo ekran"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Da biste zatvorili, prevucite nadole od vrha ekrana"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Važi"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Nazad"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Početna"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Čuvar ekrana"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Eternet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne uznemiravaj"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nije dostupan nijedan upareni uređaj"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Dodirnite da biste povezali uređaj ili prekinuli vezu"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Sačuvano"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekinite vezu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivirajte"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatski uključi sutra"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funkcije kao što su Quick Share i Pronađi moj uređaj koriste Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth će se uključiti sutra ujutru"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Deli zvuk"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"izaberite vidžet"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"uklonite vidžet"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"postavite izabrani vidžet"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Vidžeti za zaključani ekran"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Svi mogu da vide vedžete na zaključanom ekranu, čak i kada je tablet zaključan."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Vidžeti za zaključani ekran"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da biste otvorili aplikaciju koja koristi vidžet, treba da potvrdite da ste to vi. Imajte u vidu da svako može da ga vidi, čak i kada je tablet zaključan. Neki vidžeti možda nisu namenjeni za zaključani ekran i možda nije bezbedno da ih tamo dodate."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Važi"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zameni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci u ovoj sesiji će biti izbrisani."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Podrazumevano"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatska"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Bez zvuka i vibriranja"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Bez zvuka i vibriranja i prikazuje se u nastavku odeljka za konverzacije"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Može da zvoni ili vibrira u zavisnosti od podešavanja uređaja"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Može da zvoni ili vibrira u zavisnosti od podešavanja uređaja. Konverzacije iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> podrazumevano se prikazuju u oblačićima."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Neka sistem utvrdi da li ovo obaveštenje treba da emituje zvuk ili da vibrira"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Taster za stranicu nagore"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Taster za stranicu nadole"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Taster za brisanje"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Taster Početna"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Taster za kraj"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Taster za umetanje"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Podeljeni ekran"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Unos"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Prečice za aplikacije"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuelna aplikacija"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tasterske prečice"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prečice pretrage"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona za skupljanje"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona za proširivanje"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ili"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Pokret za vraćanje"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Pokret za početnu stranicu"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Taster radnji"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Odlično!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazad"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Da biste se vratili, prevucite ulevo ili udesno sa tri prsta bilo gde na tačpedu."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Tačped sa prikazom tri prsta koji se pomeraju udesno i ulevo"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. nivo od %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrole za dom"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Brz pristup kontrolama za dom kao čuvaru ekrana"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
index df0b786..6833c27 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Isključeno"</item>
<item msgid="4875147066469902392">"Uključeno"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nedostupno"</item>
<item msgid="5044688398303285224">"Isključeno"</item>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 87f5bf1..7280866 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Націсніце для прагляду"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Памылка захавання запісу экрана"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Памылка пачатку запісу экрана"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Запіс з праграмы <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> будзе спынены"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Спыніць запіс?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Зараз вы запісваеце змесціва ўсяго экрана"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Зараз вы запісваеце змесціва праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Спыніць запіс"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Экран абагульваецца"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Абагульванне з праграмы <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> будзе спынена"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Экран трансліруецца"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Трансляцыя праграмы <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> будзе спынена"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Спыніць абагульванне экрана?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Зараз вы абагульваеце змесціва ўсяго экрана з праграмай \"<xliff:g id="HOST_APP_NAME">%1$s</xliff:g>\""</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Зараз вы абагульваеце змесціва ўсяго экрана з праграмай"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Зараз вы абагульваеце змесціва праграмы \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\""</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Зараз вы абагульваеце змесціва праграмы"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Спыніць абагульванне"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Экран трансліруецца"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Спыніць трансляцыю?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Зараз вы трансліруеце змесціва ўсяго экрана на прыладу \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Зараз вы трансліруеце змесціва ўсяго экрана на прыладу паблізу"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Зараз вы трансліруеце змесціва праграмы \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\" на прыладу \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\""</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Зараз вы трансліруеце змесціва праграмы \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\" на прыладу паблізу"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Зараз вы трансліруеце змесціва на прыладу \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Зараз вы трансліруеце змесціва на прыладу паблізу"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Спыніць трансляцыю"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Закрыць"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Запіс праблемы"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Ідзе апрацоўка запісу праблемы"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Бягучае апавяшчэнне пра сеанс збору даных аб праблеме"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Пры захаванні запісу праблемы адбылася памылка"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Пры спробе пачаць запіс праблемы адбылася памылка"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Прагляд у поўнаэкранным рэжыме"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Каб выйсці, правядзіце пальцам уніз ад верхняга краю экрана"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Зразумела"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Назад"</string>
<string name="accessibility_home" msgid="5430449841237966217">"На Галоўную старонку"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Экранная застаўка"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Не турбаваць"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Няма даступных спалучаных прылад"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Націсніце, каб падключыць або адключыць прыладу"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Захавана"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"адключыць"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"актываваць"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Аўтаматычна ўключыць заўтра"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Bluetooth выкарыстоўваецца такімі функцыямі і сэрвісамі, як Хуткае абагульванне і Знайсці прыладу"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth уключыцца заўтра раніцай"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Абагуліць аўдыя"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"выбраць віджэт"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"выдаліць віджэт"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"размясціць выбраны віджэт"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Віджэты на экране блакіроўкі"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Віджэты на экране блакіроўкі будуць бачныя, нават калі планшэт заблакіраваны."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Віджэты на экране блакіроўкі"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Каб адкрыць праграму з дапамогай віджэта, вам неабходна будзе пацвердзіць сваю асобу. Таксама памятайце, што такія віджэты могуць пабачыць іншыя людзі, нават калі экран планшэта заблакіраваны. Некаторыя віджэты могуць не падыходзіць для выкарыстання на экране блакіроўкі, і дадаваць іх сюды можа быць небяспечна."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Зразумела"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Перайсці да іншага карыстальніка"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"высоўнае меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усе праграмы і даныя гэтага сеанса будуць выдалены."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Стандартна"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Аўтаматычна"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Без гуку ці вібрацыі"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Паказваецца без гуку ці вібрацыі ў раздзеле размоў"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"У залежнасці ад налад прылады магчымы званок або вібрацыя"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"У залежнасці ад налад прылады магчымы званок або вібрацыя. Размовы ў праграме \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" стандартна паяўляюцца ў выглядзе ўсплывальных апавяшчэнняў."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Сістэма сама будзе вызначаць, ці трэба для гэтага апавяшчэння ўключаць гук або вібрацыю"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Падзелены экран"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Увод"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ярлыкі праграм"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Спецыяльныя магчымасці"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Спалучэнні клавіш"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Пошук спалучэнняў клавіш"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Значок \"Згарнуць\""</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Значок \"Разгарнуць\""</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"або"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Жэст для вяртання на папярэдні экран"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Жэст для вяртання на галоўны экран"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Клавіша дзеяння"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Гатова"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Цудоўна!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Каб вярнуцца на папярэдні экран, правядзіце трыма пальцамі ўлева або ўправа ў любым месцы сэнсарнай панэлі."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Паказваецца, як на сэнсарнай панэлі тры пальцы рухаюцца ўправа і ўлева"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Узровень %1$d з %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Кіраванне домам"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Хуткі доступ да кіравання домам на застаўцы"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-be/tiles_states_strings.xml b/packages/SystemUI/res/values-be/tiles_states_strings.xml
index 33e704c..4cc09a7 100644
--- a/packages/SystemUI/res/values-be/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-be/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Выключана"</item>
<item msgid="4875147066469902392">"Уключана"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Недаступна"</item>
<item msgid="5044688398303285224">"Выключана"</item>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 1e4bf0c..5ac0be0 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Докоснете за преглед"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Грешка при запазването на записа на екрана"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"При стартирането на записа на екрана възникна грешка"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Ще спрете да записвате <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Спиране на записа"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Екранът се споделя"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Да се спре ли споделянето на екрана?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Ще спрете да споделяте <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Екранът се предава"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Спиране на споделянето"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Екранът се предава"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Да се спре ли предаването?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Ще спрете да предавате <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Спиране на предаването"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Затваряне"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Записване на проблем"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Записът се обработва"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Текущо известие за сесия за събиране на данни за проблем"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Грешка при запазването на записа на проблема"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Грешка при стартирането на записа на проблема"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Изглед на цял екран"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"За изход плъзнете надолу от горната част на екрана"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Разбрах"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Назад"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Начало"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Скрийнсейвър"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Не безпокойте"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Няма налични сдвоени устройства"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Докоснете, за да свържете устройство или да прекъснете връзката му"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Запазено"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"прекратяване на връзката"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активиране"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Автоматично включване утре"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Функции като „Бързо споделяне“ и „Намиране на устройството ми“ използват Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ще се включи утре сутрин"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Споделяне на звука"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"избиране на приспособление"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"премахване на приспособлението"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"поставяне на избраното приспособление"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Приспособления за заключения екран"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"За да отворите дадено приложение посредством приспособление, ще трябва да потвърдите, че това сте вие. Също така имайте предвид, че всеки ще вижда приспособленията дори когато таблетът ви е заключен. Възможно е някои от тях да не са предназначени за заключения екран и добавянето им на него може да е опасно."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Разбрах"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Превключване между потребителите"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падащо меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Всички приложения и данни в тази сесия ще бъдат изтрити."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Стандартно"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автоматично"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звук или вибриране"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звук или вибриране и се показва по-долу в секцията с разговори"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Може да звъни или да вибрира въз основа на настройките на устройството"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Може да звъни или да вибрира въз основа на настройките на устройството. Разговорите от <xliff:g id="APP_NAME">%1$s</xliff:g> се показват като балончета по подразбиране."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Нека системата да определя дали дадено известие да се придружава от звук, или вибриране"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Страница нагоре"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Страница надолу"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Изтриване"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Разделен екран"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Въвеждане"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Преки пътища към приложения"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Достъпност"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Клавишни комбинации"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Търсете клавишни комбинации"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за свиване"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Икона за разгъване"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"или"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Жест за връщане назад"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Жест за преминаване към началния екран"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Клавиш за действия"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Отлично!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"За да се върнете назад, прекарайте три пръста наляво или надясно по сензорния панел."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Сензорен панел, върху който три пръста се движат надясно и наляво"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Ниво %1$d от %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Контроли за дома"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Достъп до контролите за дома ви като скрийнсейвър"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bg/tiles_states_strings.xml b/packages/SystemUI/res/values-bg/tiles_states_strings.xml
index e2fd653..92db279 100644
--- a/packages/SystemUI/res/values-bg/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bg/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Изкл."</item>
<item msgid="4875147066469902392">"Вкл."</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Не е налице"</item>
<item msgid="5044688398303285224">"Изкл."</item>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index b7439ca..fa38ac3 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"দেখতে ট্যাপ করুন"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"স্ক্রিন রেকর্ডিং সেভ করার সময় কোনও সমস্যা হয়েছে"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"স্ক্রিন রেকর্ডিং শুরু করার সময় সমস্যা হয়েছে"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"এটির জন্য <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপের কন্টেন্ট রেকর্ড হওয়া বন্ধ হয়ে যাবে"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"রেকর্ড করা বন্ধ করুন"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"স্ক্রিন শেয়ার করা হচ্ছে"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"স্ক্রিন শেয়ার করা বন্ধ করবেন?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"এটির জন্য <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপের কন্টেন্ট শেয়ার করা বন্ধ হয়ে যাবে"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"স্ক্রিন কাস্ট করা হচ্ছে"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"শেয়ার করা বন্ধ করুন"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"স্ক্রিন কাস্ট করা হচ্ছে"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"কাস্ট করা বন্ধ করবেন?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"এটির জন্য <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> অ্যাপের কন্টেন্ট কাস্ট হওয়া বন্ধ হয়ে যাবে"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"কাস্টিং বন্ধ করুন"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"বন্ধ করুন"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Recorder-এ সমস্যা হয়েছে"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"সমস্যা সংক্রান্ত রেকর্ডিং প্রসেস করা হচ্ছে"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"সমস্যা সংগ্রহ সেশনের জন্য অনগোইং নোটিফিকেশন"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"সমস্যা সংক্রান্ত রেকর্ডিং সেভ করার সময় সমস্যা হয়েছে"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"সমস্যা সংক্রান্ত রেকর্ডিং শুরু করতে সমস্যা হয়েছে"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ফুল-স্ক্রিনে দেখা হচ্ছে"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"বেরিয়ে আসতে, আপনার স্ক্রিনের একেবারে উপর থেকে নিচের দিকে সোয়াইপ করুন"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"বুঝেছি"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ফিরুন"</string>
<string name="accessibility_home" msgid="5430449841237966217">"হোম"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"স্ক্রিন সেভার"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ইথারনেট"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"বিরক্ত করবে না"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ব্লুটুথ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"চেনা কোনও ডিভাইস নেই"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"কোনও ডিভাইস কানেক্ট বা ডিসকানেক্ট করতে ট্যাপ করুন"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"সেভ করা আছে"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ডিসকানেক্ট করুন"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"চালু করুন"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"আগামীকাল অটোমেটিক চালু হয়ে যাবে"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"দ্রুত শেয়ার ও Find My Device-এর মতো ফিচার ব্লুটুথ ব্যবহার করে"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ব্লুটুথ আগামীকাল সকালে চালু হয়ে যাবে"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"অডিও শেয়ার করুন"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"উইজেট বেছে নিন"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"উইজেট সরান"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"বেছে নেওয়া উইজেটটি রাখুন"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"লক স্ক্রিন উইজেট"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"উইজেট ব্যবহার করে কোনও অ্যাপ খুলতে, আপনাকে নিজের পরিচয় যাচাই করতে হবে। এছাড়াও, মনে রাখবেন, এমনকি আপনার ট্যাবলেট লক থাকাকালীন যেকেউ তা দেখতে পারবেন। কিছু উইজেট আপনার লক স্ক্রিনের উদ্দেশ্যে তৈরি করা হয়নি এবং এখানে যোগ করা নিরাপদ নাও হতে পারে।"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"বুঝেছি"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যবহারকারী পাল্টে দিন"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুলডাউন মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই সেশনের সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ডিফল্ট"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"অটোমেটিক"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"আওয়াজ করবে না বা ভাইব্রেট হবে না"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"আওয়াজ করবে না বা ভাইব্রেট হবে না এবং কথোপকথন বিভাগের নিচের দিকে দেখা যাবে"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ডিভাইসের সেটিংস অনুযায়ী রিং বা ভাইব্রেট হতে পারে"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ডিভাইসের সেটিংস অনুযায়ী রিং বা ভাইব্রেট হতে পারে। <xliff:g id="APP_NAME">%1$s</xliff:g>-এর কথোপকথন সাধারণত বাবলের মতো দেখাবে।"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"এই বিজ্ঞপ্তি এলে ডিভাইস আওয়াজ করবে না ভাইব্রেট করবে তা সিস্টেমকে সেট করতে দিন"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"পেজ আপ"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"পেজ ডাউন"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"মুছুন"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"হোম"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"শেষ"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"ঢোকান"</string>
@@ -1361,22 +1374,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"স্প্লিট স্ক্রিন"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ইনপুট"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"অ্যাপ শর্টকাট"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"বর্তমান অ্যাপ"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"অ্যাক্সেসিবিলিটি"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"কীবোর্ড শর্টকাট"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"সার্চ শর্টকাট"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"আইকন আড়াল করুন"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"আইকন বড় করুন"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"অথবা"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ফিরে যাওয়ার জেসচার"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"হোমপেজে যাওয়ার জেসচার"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"অ্যাকশন কী"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হয়ে গেছে"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"অসাধারণ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ফিরে যান"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ফিরে যেতে, টাচপ্যাডের যেকোনও জায়গায় তিনটি আঙুল দিয়ে ডান বা বাঁদিকে সোয়াইপ করুন।"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"টাচপ্যাডে, তিনটি আঙুল ডান ও বাঁদিকে সরানো দেখানো হচ্ছে"</string>
@@ -1385,4 +1394,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-এর মধ্যে %1$d লেভেল"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"হোম কন্ট্রোল"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"স্ক্রিন সেভার হিসেবে ঝটপট \'হোম কন্ট্রোল\' অ্যাক্সেস করুন"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bn/tiles_states_strings.xml b/packages/SystemUI/res/values-bn/tiles_states_strings.xml
index 6e4dfbf..b6336ba 100644
--- a/packages/SystemUI/res/values-bn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bn/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"বন্ধ আছে"</item>
<item msgid="4875147066469902392">"চালু আছে"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"উপলভ্য নেই"</item>
<item msgid="5044688398303285224">"বন্ধ আছে"</item>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index d187843..5a85435 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Dodirnite da vidite"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Greška prilikom pohranjivanja snimka ekrana"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Greška pri pokretanju snimanja ekrana"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Zaustavit ćete snimanje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Želite li zaustaviti snimanje?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Trenutačno snimate cijeli zaslon"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Trenutačno snimate aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Zaustavi snimanje"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Dijeljenje ekrana"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Zaustavit ćete dijeljenje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Emitiranje ekrana"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Zaustavit ćete emitiranje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Zaustaviti dijeljenje ekrana?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Trenutačno dijelite cijeli zaslon s aplikacijom <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Trenutačno dijelite cijeli zaslon s aplikacijom"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Trenutačno dijelite aplikaciju <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Trenutačno dijelite aplikaciju"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Zaustavi dijeljenje"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Emitiranje ekrana"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Zaustaviti emitiranje?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Trenutačno emitirate cijeli zaslon na uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Trenutačno emitirate cijeli zaslon na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Trenutačno emitirate aplikaciju <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> na uređaj <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Trenutačno emitirate aplikaciju <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Trenutačno emitirate na uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Trenutačno emitirate na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Zaustavi emitiranje"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zatvori"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Snimač problema"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Obrada snimka problema"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Obavještenje o aktivnosti u pozadini za sesiju prikupljanja podataka o problemu"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Došlo je do greške prilikom pohranjivanja snimka problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Došlo je do greške prilikom pokretanja snimanja problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Prikazivanje preko cijelog ekrana"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Da izađete, prevucite s vrha ekrana nadolje"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Razumijem"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Nazad"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Dugme za početnu stranicu"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Čuvar ekrana"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne ometaj"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nema dostupnih uparenih uređaja"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Dodirnite da povežete ili prekinete povezanost uređaja"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Sačuvano"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekid veze"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiviranje"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatski uključi sutra"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funkcije kao što su Quick Share i Pronađi moj uređaj koriste Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth će se uključiti sutra ujutro"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Dijeli zvuk"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"odabir vidžeta"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"uklanjanje vidžeta"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"postavljanje odabranog vidžeta"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgeti zaključanog zaslona"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Svi vide widgete na vašem zaključanom zaslonu, čak i ako je tablet zaključan."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Vidžeti zaključanog ekrana"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da otvorite aplikaciju pomoću vidžeta, morat ćete potvrditi identitet. Također imajte na umu da ih svako može pregledati, čak i ako je tablet zaključan. Neki vidžeti možda nisu namijenjeni za vaš zaključani ekran i njihovo dodavanje ovdje možda nije sigurno."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Razumijem"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zamijeni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci iz ove sesije će se izbrisati."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Zadano"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatski"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Bez zvuka ili vibracije"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Bez zvuka ili vibracije i pojavljuje se pri dnu odjeljka razgovora"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Može zvoniti ili vibrirati na osnovu postavki uređaja"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Može zvoniti ili vibrirati na osnovu postavki uređaja. Razgovori iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> prikazuju se u oblačićima prema zadanim postavkama."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Neka sistem odluči treba li se ovo obavještenje oglasiti zvukom ili vibracijom"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Tipka Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Tipka Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Tipka za brisanje"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Tipka za početak"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Kraj"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Tipka za umetanje"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Podijeljeni ekran"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Unos"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Prečice aplikacije"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Trenutna aplikacija"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Prečice tastature"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prečica pretraživanja"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona sužavanja"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona proširivanja"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ili"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Pokret za povratak"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Pokret za povratak na početni ekran"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tipka radnji"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Sjajno!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazad"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Da se vratite, prevucite ulijevo ili udesno s tri prsta bilo gdje na dodirnoj podlozi."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Dodirna podloga prikazuje tri prsta koji se pomjeraju desno-lijevo"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. nivo od %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrole za dom"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Brzo pristupajte kontrolama za dom putem čuvara ekrana"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bs/tiles_states_strings.xml b/packages/SystemUI/res/values-bs/tiles_states_strings.xml
index df0b786..6833c27 100644
--- a/packages/SystemUI/res/values-bs/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-bs/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Isključeno"</item>
<item msgid="4875147066469902392">"Uključeno"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nedostupno"</item>
<item msgid="5044688398303285224">"Isključeno"</item>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 13203df..2b4e309 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Toca per veure-la"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"S\'ha produït un error en desar la gravació de la pantalla"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"S\'ha produït un error en iniciar la gravació de pantalla"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Deixaràs de gravar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Vols aturar la gravació?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Ara mateix estàs gravant tota la pantalla"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Ara mateix estàs gravant <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Atura la gravació"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"S\'està compartint la pantalla"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Deixaràs de compartir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"S\'està emetent la pantalla"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Deixaràs d\'emetre <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Vols deixar de compartir la pantalla?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Ara mateix estàs compartint tota la pantalla amb <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Ara mateix estàs compartint tota la pantalla amb una aplicació"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Ara mateix estàs compartint <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Ara mateix estàs compartint una aplicació"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Deixa de compartir"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"S\'està emetent la pantalla"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Vols aturar l\'emissió?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Ara mateix estàs emetent tota la pantalla a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Ara mateix estàs emetent tota la pantalla en un dispositiu proper"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Ara mateix estàs emetent <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> a <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Ara mateix estàs emetent <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> en un dispositiu proper"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Ara mateix estàs emetent a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Ara mateix estàs emetent en un dispositiu proper"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Atura l\'emissió"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Tanca"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Gravadora de problemes"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Processant gravació del problema"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificació en curs d\'una sessió de recollida de dades del problema"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"S\'ha produït un error en desar la gravació del problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"S\'ha produït un error en iniciar la gravació del problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualització en pantalla completa"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Per sortir, llisca cap avall des de la part superior de la pantalla"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Entesos"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Enrere"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Inici"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Estalvi de pantalla"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"No molestis"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No hi ha dispositius vinculats disponibles"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toca per connectar o desconnectar un dispositiu"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Desat"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconnecta"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activa"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Activa automàticament demà"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Les funcions com Quick Share i Troba el meu dispositiu utilitzen el Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"El Bluetooth s\'activarà demà al matí"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Comparteix l\'àudio"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"selecciona el widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"suprimeix el widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"col·loca el widget seleccionat"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgets de la pantalla de bloqueig"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Tothom pot veure widgets a la pantalla de bloqueig, fins i tot amb la tauleta bloquejada."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets de la pantalla de bloqueig"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Per obrir una aplicació utilitzant un widget, necessitaràs verificar la teva identitat. També has de tenir en compte que qualsevol persona pot veure els widgets, fins i tot quan la tauleta està bloquejada. És possible que alguns widgets no estiguin pensats per a la pantalla de bloqueig i que no sigui segur afegir-los-hi."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entesos"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Canvia d\'usuari"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Totes les aplicacions i les dades d\'aquesta sessió se suprimiran."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Predeterminat"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automàtic"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Sense so ni vibració"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sense so ni vibració i es mostra més avall a la secció de converses"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Pot sonar o vibrar en funció de la configuració del dispositiu"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Pot sonar o vibrar en funció de la configuració del dispositiu. Les converses de l\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g> es mostren com a bombolles de manera predeterminada."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Fes que el sistema determini si aquesta notificació ha d\'emetre un so o una vibració"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Re Pàg"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Av Pàg"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Tecla de supressió"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Inici"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Final"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Tecla d\'inserció"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Pantalla dividida"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Dreceres d\'aplicacions"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilitat"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tecles de drecera"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Dreceres de cerca"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Replega la icona"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Desplega la icona"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"o"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gest Enrere"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gest Inici"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla d\'acció"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fet"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Ben fet!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Torna"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Per tornar enrere, llisca cap a l\'esquerra o cap a la dreta amb tres dits en qualsevol lloc del ratolí tàctil."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Ratolí tàctil que mostra tres dits que es mouen cap a la dreta i cap a l\'esquerra"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivell %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Controls de la llar"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Utilitza controls de la llar com a estalvi de pantalla"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ca/tiles_states_strings.xml b/packages/SystemUI/res/values-ca/tiles_states_strings.xml
index 67eb853..3b908fd 100644
--- a/packages/SystemUI/res/values-ca/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ca/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Desactivat"</item>
<item msgid="4875147066469902392">"Activat"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"No disponible"</item>
<item msgid="5044688398303285224">"Desactivat"</item>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 3110f05..992b35b 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Klepnutím nahrávku zobrazíte"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Při ukládání záznamu obrazovky došlo k chybě"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Při spouštění nahrávání obrazovky došlo k chybě"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Přestane se nahrávat aplikace <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Ukončit nahrávání"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Sdílení obrazovky"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Ukončit sdílení obrazovky?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Přestane se sdílet aplikace <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Odesílání obsahu obrazovky"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Ukončit sdílení"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Odesílání obsahu obrazovky"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Ukončit odesílání?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Přestane se odesílat aplikace <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Ukončit odesílání"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zavřít"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Rekordér problémů"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Zpracování záznamu problému"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Upozornění na probíhající shromažďování dat o problému"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Při ukládání záznamu problému došlo k chybě"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Při zahájení záznamu problému došlo k chybě"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Zobrazování přes celou obrazovku"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Tento režim ukončíte přejetím prstem dolů z horní části obrazovky"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Rozumím"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Zpět"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Domů"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Spořič obrazovky"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Nerušit"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nejsou dostupná žádná spárovaná zařízení"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Klepnutím zařízení připojíte nebo odpojíte"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Uloženo"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"odpojit"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivovat"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Zítra automaticky zapnout"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Bluetooth využívají funkce jako Quick Share a Najdi moje zařízení."</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth se zapne zítra ráno."</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Sdílet zvuk"</string>
@@ -402,7 +411,7 @@
<string name="accessibility_hearing_device_pair_new_device" msgid="8440082580186130090">"Kliknutím spárujete nové zařízení"</string>
<string name="hearing_devices_presets_error" msgid="350363093458408536">"Předvolbu nelze aktualizovat"</string>
<string name="hearing_devices_preset_label" msgid="7878267405046232358">"Předvolba"</string>
- <string name="live_caption_title" msgid="8916875614623730005">"Živý přepis"</string>
+ <string name="live_caption_title" msgid="8916875614623730005">"Okamžité titulky"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Odblokovat mikrofon zařízení?"</string>
<string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Odblokovat fotoaparát zařízení?"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Odblokovat fotoaparát a mikrofon zařízení?"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"vybrat widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"odstranit widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"umístit vybraný widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgety na obrazovce uzamčení"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"K otevření aplikace pomocí widgetu budete muset ověřit svou totožnost. Také mějte na paměti, že widgety uvidí kdokoli, i když tablet bude uzamčen. Některé widgety nemusí být pro obrazovku uzamčení určeny a nemusí být bezpečné je na ni přidat."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Rozumím"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Přepnout uživatele"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbalovací nabídka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Veškeré aplikace a data v této relaci budou vymazána."</string>
@@ -612,7 +622,7 @@
<string name="volume_odi_captions_hint_disable" msgid="2518846326748183407">"deaktivovat"</string>
<string name="sound_settings" msgid="8874581353127418308">"Zvuk a vibrace"</string>
<string name="volume_panel_dialog_settings_button" msgid="2513228491513390310">"Nastavení"</string>
- <string name="volume_panel_captioning_title" msgid="5984936949147684357">"Živý přepis"</string>
+ <string name="volume_panel_captioning_title" msgid="5984936949147684357">"Okamžité titulky"</string>
<string name="csd_lowered_title" product="default" msgid="2464112924151691129">"Hlasitost byla snížena na bezpečnou úroveň"</string>
<string name="csd_system_lowered_text" product="default" msgid="1250251883692996888">"Hlasitost sluchátek byla vysoká déle, než je doporučeno"</string>
<string name="csd_500_system_lowered_text" product="default" msgid="7414943302186884124">"Hlasitost sluchátek překročila bezpečný limit pro tento týden"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Výchozí"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automaticky"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Žádný zvuk ani vibrace"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Žádný zvuk ani vibrace a zobrazuje se níže v sekci konverzací"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Vyzvání nebo vibruje podle nastavení zařízení"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Vyzvání nebo vibruje podle nastavení zařízení. Konverzace z aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> ve výchozím nastavení bublají."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Nechat systém rozhodnout, zda má toto oznámení vydat zvuk či zavibrovat"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Rozdělená obrazovka"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vstup"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Zkratky aplikací"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Přístupnost"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Klávesové zkratky"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Vyhledat zkratky"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona sbalení"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona rozbalení"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"nebo"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto zpět"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto domů"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Akční klávesa"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Výborně!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Zpět"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Pokud se chcete vrátit zpět, stačí kdekoli na touchpadu přejet třemi prsty doleva nebo doprava."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad se třemi prsty, které se pohybují doprava a doleva"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Úroveň %1$d z %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Ovládání domácnosti"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Rychlý přístup k funkcím, jako je spořič obrazovky"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-cs/tiles_states_strings.xml b/packages/SystemUI/res/values-cs/tiles_states_strings.xml
index ae533a8..c4d7388 100644
--- a/packages/SystemUI/res/values-cs/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-cs/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Vypnuto"</item>
<item msgid="4875147066469902392">"Zapnuto"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nedostupné"</item>
<item msgid="5044688398303285224">"Vypnuto"</item>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 24d6d68..2750b42 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tryk for at se"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Skærmoptagelsen kunne ikke gemmes"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Skærmoptagelsen kunne ikke startes"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Du stopper optagelse af <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stop optagelse"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Skærmen deles"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Stop skærmdelingen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Du stopper deling af <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Skærmen castes"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Stop deling"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Skærmen castes"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Vil du stoppe din cast?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Du stopper casting af <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stop cast"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Luk"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problemoptagelse"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Behandler optagelse af problem"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Igangværende notifikation om en session med problemindsamling"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Kunne ikke gemme optagelse af problem"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Fejl under forsøg på at starte optagelse af problem"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visning i fuld skærm"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Stryg nedad fra toppen af skærmen for at afslutte"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Tilbage"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Hjem"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Pauseskærm"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Forstyr ikke"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Der er ingen tilgængelige parrede enheder"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tryk for at oprette eller afbryde forbindelse til en enhed"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Gemt"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"afbryd forbindelse"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivér"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Aktivér automatisk i morgen"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funktioner som f.eks. Quick Share og Find min enhed anvender Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth aktiveres i morgen tidlig"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Del lyd"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"vælg widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"fjern widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"placer valgt widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets på låseskærmen"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Hvis du vil åbne en app ved hjælp af en widget, skal du verificere din identitet. Husk også, at alle kan se dem, også når din tablet er låst. Nogle widgets er muligvis ikke beregnet til låseskærmen, og det kan være usikkert at tilføje dem her."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skift bruger"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullemenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps og data i denne session slettes."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Standard"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatisk"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ingen lyd eller vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ingen lyd eller vibration, og den vises længere nede i samtalesektionen"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Kan ringe eller vibrere baseret på enhedens indstillinger"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Kan ringe eller vibrere baseret på enhedens indstillinger. Samtaler fra <xliff:g id="APP_NAME">%1$s</xliff:g> vises som standard i bobler."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Få systemet til at afgøre, om denne notifikation skal vibrere eller afspille en lyd"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Opdelt skærm"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Appgenveje"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Hjælpefunktioner"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tastaturgenveje"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Genveje til søgning"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikon for Skjul"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikon for Udvid"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"eller"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Bevægelse for at gå tilbage"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Bevægelse for at gå til startskærm"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Handlingstast"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Udfør"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Sådan!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gå tilbage"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Du kan gå tilbage ved at stryge mod venstre eller højre med tre fingre et vilkårligt sted på touchpladen."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchplade viser tre fingre, der bevæger sig til højre og venstre"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d af %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Hjemmestyring"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Tilgå hurtigt hjemmestyring via din pauseskærm"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-da/tiles_states_strings.xml b/packages/SystemUI/res/values-da/tiles_states_strings.xml
index 2c3b053..3a9533a 100644
--- a/packages/SystemUI/res/values-da/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-da/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Fra"</item>
<item msgid="4875147066469902392">"Til"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Ikke tilgængelig"</item>
<item msgid="5044688398303285224">"Fra"</item>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 412c46a..710ae57 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Zum Ansehen tippen"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Fehler beim Speichern der Bildschirmaufzeichnung"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Fehler beim Start der Bildschirmaufzeichnung"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> wird dann nicht mehr aufgezeichnet"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Aufnahme beenden"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Bildschirm wird geteilt"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Bildschirmfreigabe beenden?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> wird dann nicht mehr geteilt"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Bildschirm wird übertragen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Freigabe beenden"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Bildschirm wird übertragen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Übertragung abbrechen?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> wird dann nicht mehr übertragen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Streaming beenden"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Schließen"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problem aufzeichnen"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Aufzeichnung wird verarbeitet"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Benachrichtigung über laufende Aufzeichnung eines Problems"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Fehler beim Speichern der Aufzeichnung des Problems"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Fehler beim Starten der Aufzeichnung des Problems"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Vollbildmodus wird aktiviert"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Wenn du den Modus verlassen möchtest, wische vom oberen Displayrand nach unten"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Ok"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Zurück"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Startbildschirm"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Bildschirmschoner"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Bitte nicht stören"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Keine gekoppelten Geräte verfügbar"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Zum Verbinden oder Trennen eines Geräts tippen"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Gespeichert"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"Verknüpfung aufheben"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivieren"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Morgen automatisch aktivieren"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funktionen wie „Quick Share“ und „Mein Gerät finden“ verwenden Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth wird morgen früh aktiviert"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Audioinhalte freigeben"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"Widget auswählen"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"Widget entfernen"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ausgewähltes Widget in den Bearbeitungsmodus versetzen"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Sperrbildschirm-Widgets"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Wenn du eine App mit einem Widget öffnen möchtest, musst du deine Identität bestätigen. Beachte auch, dass jeder die Widgets sehen kann, auch wenn dein Tablet gesperrt ist. Einige Widgets sind möglicherweise nicht für den Sperrbildschirm vorgesehen, sodass es unsicher sein kann, sie hier hinzuzufügen."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ok"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Pull-down-Menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle Apps und Daten in dieser Sitzung werden gelöscht."</string>
@@ -619,11 +629,11 @@
<string name="csd_button_keep_listening" product="default" msgid="4093794049149286784">"Weiterhören"</string>
<string name="csd_button_lower_volume" product="default" msgid="5347210412376264579">"Leiser stellen"</string>
<string name="screen_pinning_title" msgid="9058007390337841305">"App ist auf dem Bildschirm fixiert"</string>
- <string name="screen_pinning_description" msgid="8699395373875667743">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Berühre und halte dazu \"Zurück\" und \"Übersicht\"."</string>
- <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Berühre und halte dazu \"Zurück\" und \"Startbildschirm\"."</string>
+ <string name="screen_pinning_description" msgid="8699395373875667743">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Halte dazu \"Zurück\" und \"Übersicht\" gedrückt."</string>
+ <string name="screen_pinning_description_recents_invisible" msgid="4564466648700390037">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Halte dazu \"Zurück\" und \"Startbildschirm\" gedrückt."</string>
<string name="screen_pinning_description_gestural" msgid="7246323931831232068">"Die App bleibt so lange auf dem Bildschirm angepinnt, bis du die Fixierung aufhebst. Wische dazu nach oben und halte den Bildschirm gedrückt."</string>
- <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Berühre und halte dazu \"Übersicht\"."</string>
- <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Berühre und halte dazu \"Startbildschirm\"."</string>
+ <string name="screen_pinning_description_accessible" msgid="7386449191953535332">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Halte dazu \"Übersicht\" gedrückt."</string>
+ <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"Die App bleibt so lange auf dem Bildschirm fixiert, bis du die Fixierung aufhebst. Halte dazu \"Startbildschirm\" gedrückt."</string>
<string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"Möglicherweise kann auf personenbezogene Daten (Kontakte, E-Mails usw.) zugegriffen werden."</string>
<string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"Die fixierte App kann ggf. andere Apps öffnen."</string>
<string name="screen_pinning_toast" msgid="8177286912533744328">"Zum Aufheben der Fixierung dieser App \"Zurück\" und \"Übersicht\" halten"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Standard"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatisch"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Kein Ton und keine Vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Kein Ton und keine Vibration, erscheint weiter unten im Bereich „Unterhaltungen“"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Kann je nach Geräteeinstellungen klingeln oder vibrieren"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Kann je nach Geräteeinstellungen klingeln oder vibrieren. Unterhaltungen von <xliff:g id="APP_NAME">%1$s</xliff:g> werden standardmäßig als Bubble angezeigt."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Das System entscheiden lassen, ob bei dieser Benachrichtigung ein Ton oder eine Vibration ausgegeben wird"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Nach oben"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Nach unten"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Entf"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Pos1"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Ende"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Einfg"</string>
@@ -829,7 +842,7 @@
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Eingabe"</string>
<string name="input_switch_input_language_next" msgid="3782155659868227855">"Zur nächsten Sprache wechseln"</string>
<string name="input_switch_input_language_previous" msgid="6043341362202336623">"Zur vorherigen Sprache wechseln"</string>
- <string name="input_access_emoji" msgid="8105642858900406351">"Auf Emoji zugreifen"</string>
+ <string name="input_access_emoji" msgid="8105642858900406351">"Auf Emojis zugreifen"</string>
<string name="input_access_voice_typing" msgid="7291201476395326141">"Auf Spracheingabe zugreifen"</string>
<string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"Apps"</string>
<string name="keyboard_shortcut_group_applications_assist" msgid="6772492350416591448">"Assistant"</string>
@@ -1298,7 +1311,7 @@
<string name="home_quick_affordance_unavailable_configure_the_app" msgid="604424593994493281">"• Mindestens ein Gerät oder Gerätesteuerfeld ist verfügbar"</string>
<string name="notes_app_quick_affordance_unavailable_explanation" msgid="4796955161600178530">"Wähle eine Standard-App für Notizen aus, die du für die Verknüpfung verwenden möchtest"</string>
<string name="keyguard_affordance_enablement_dialog_notes_app_action" msgid="6821710209675089470">"App wählen"</string>
- <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Verknüpfung berühren & halten"</string>
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Verknüpfung gedrückt halten"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Abbrechen"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Jetzt umdrehen"</string>
<string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Smartphone auffalten"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Splitscreen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Eingabe"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App-Verknüpfungen"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Bedienungshilfen"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tastenkürzel"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Tastenkürzel suchen"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Symbol „Minimieren“"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Symbol „Maximieren“"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"oder"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Touch-Geste „Zurück“"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Touch-Geste „Startbildschirm“"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Aktionstaste"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fertig"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Gut gemacht!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Zurück"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Wenn du zurückgehen möchtest, wische an einer beliebigen Stelle des Touchpads mit drei Fingern nach links oder rechts."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad mit drei Fingern, die sich nach links und rechts bewegen"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d von %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Smart-Home-Steuerung"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Smart-Home-Steuerung als Bildschirmschoner nutzen"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-de/tiles_states_strings.xml b/packages/SystemUI/res/values-de/tiles_states_strings.xml
index 0606cc7..8d9c793 100644
--- a/packages/SystemUI/res/values-de/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-de/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Aus"</item>
<item msgid="4875147066469902392">"An"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nicht verfügbar"</item>
<item msgid="5044688398303285224">"Aus"</item>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 64b3c39..b77a9f1 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Πατήστε για προβολή"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Σφάλμα κατά την αποθήκευση της εγγραφής οθόνης"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Σφάλμα κατά την έναρξη της εγγραφής οθόνης"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Θα διακόψετε την εγγραφή της εφαρμογής <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Διακοπή εγγραφής"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Γίνεται κοινοποίηση οθόνης"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Διακοπή κοινής χρήσης οθόνης;"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Θα διακόψετε την κοινή χρήση της εφαρμογής <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Μετάδοση οθόνης"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Διακοπή κοινής χρήσης"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Μετάδοση οθόνης"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Τερματισμός μετάδοσης;"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Θα διακόψετε τη μετάδοση της εφαρμογής <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Διακοπή μετάδοσης"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Κλείσιμο"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Εργαλείο καταγραφής προβλημάτων"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Επεξερ. καταγραφής προβλήματος"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Ειδοποίηση σε εξέλιξη για μια περίοδο λειτουργίας συλλογής προβλημάτων"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Σφάλμα κατά την αποθήκευση της καταγραφής του προβλήματος"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Σφάλμα κατά την έναρξη της καταγραφής του προβλήματος"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Προβολή σε πλήρη οθόνη"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Για έξοδο, σύρετε προς τα κάτω από το επάνω μέρος της οθόνης"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Το κατάλαβα"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Πίσω"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Αρχική οθόνη"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Προφύλαξη οθόνης"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Μην ενοχλείτε"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Δεν υπάρχουν διαθέσιμες συσκευές σε σύζευξη"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Πατήστε για σύνδεση ή αποσύνδεση μιας συσκευής"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Αποθηκεύτηκε"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"αποσύνδεση"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ενεργοποίηση"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Αυτόματη ενεργοποίηση αύριο"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Λειτουργίες όπως το Quick Share και η Εύρεση συσκευής χρησιμοποιούν το Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Το Bluetooth θα ενεργοποιηθεί αύριο το πρωί"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Κοινή χρήση ήχου"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"επιλογή γραφικού στοιχείου"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"κατάργηση γραφικού στοιχείου"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"τοποθέτηση επιλεγμένου γραφικού στοιχείου"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Γραφικά στοιχεία οθόνης κλειδώματος"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Για να ανοίξετε μια εφαρμογή χρησιμοποιώντας ένα γραφικό στοιχείο, θα πρέπει να επαληθεύσετε την ταυτότητά σας. Επίσης, λάβετε υπόψη ότι η προβολή τους είναι δυνατή από οποιονδήποτε, ακόμα και όταν το tablet σας είναι κλειδωμένο. Ορισμένα γραφικά στοιχεία μπορεί να μην προορίζονται για την οθόνη κλειδώματος και η προσθήκη τους εδώ ενδέχεται να μην είναι ασφαλής."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Το κατάλαβα"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Εναλλαγή χρήστη"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"αναπτυσσόμενο μενού"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Όλες οι εφαρμογές και τα δεδομένα αυτής της περιόδου σύνδεσης θα διαγραφούν."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Προεπιλογή"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Αυτόματο"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Χωρίς ήχο ή δόνηση"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Χωρίς ήχο ή δόνηση και εμφανίζεται χαμηλά στην ενότητα συζητήσεων"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Ενδέχεται να κουδουνίζει ή να δονείται βάσει των ρυθμίσεων συσκευής"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Ενδέχεται να κουδουνίζει ή να δονείται βάσει των ρυθμίσεων συσκευής. Οι συζητήσεις από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> εμφανίζονται σε συννεφάκι από προεπιλογή."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Επιτρέψτε στο σύστημα να αποφασίσει αν αυτή η ειδοποίηση θα αναπαράγει έναν ήχο ή θα ενεργοποιήσει τη δόνηση της συσκευής"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Προηγούμενη σελίδα"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Επόμενη σελίδα"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Λήξη"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Διαχωρισμός οθόνης"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Είσοδος"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Συντομεύσεις εφαρμογών"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Προσβασιμότητα"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Συντομεύσεις πληκτρολογίου"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Συντομεύσεις αναζήτησης"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Εικονίδιο σύμπτυξης"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Εικονίδιο ανάπτυξης"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ή"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Κίνηση επιστροφής"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Κίνηση μετάβασης στην αρχική οθόνη"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Πλήκτρο ενέργειας"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Τέλος"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Μπράβο!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Επιστροφή"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Για επιστροφή, σύρετε προς τα αριστερά ή προς τα δεξιά χρησιμοποιώντας τρία δάχτυλα οπουδήποτε στην επιφάνεια αφής."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Επιφάνεια αφής στην οποία εμφανίζονται τρία δάχτυλα να κινούνται δεξιά και αριστερά"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Επίπεδο %1$d από %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Οικιακοί έλεγχοι"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Γρήγ. πρόσβαση σε οικιακ. ελέγχους ως προφ. οθόνης"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-el/tiles_states_strings.xml b/packages/SystemUI/res/values-el/tiles_states_strings.xml
index d4545ff..3f27fb4 100644
--- a/packages/SystemUI/res/values-el/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-el/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Ανενεργό"</item>
<item msgid="4875147066469902392">"Ενεργό"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Μη διαθέσιμο"</item>
<item msgid="5044688398303285224">"Ανενεργό"</item>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index f1d6d51..1b1ae97 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tap to view"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Error saving screen recording"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Error starting screen recording"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"You will stop recording <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stop recording"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Sharing screen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Stop sharing screen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"You will stop sharing <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Casting screen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Stop sharing"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Casting screen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Stop casting?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"You will stop casting <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stop casting"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Close"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Issue Recorder"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Processing issue recording"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Ongoing notification for an issue collection session"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Error saving issue recording"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Error starting issue recording"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Viewing full screen"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"To exit, swipe down from the top of your screen"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Got it"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Back"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Home"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Screen saver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Do Not Disturb"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No paired devices available"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tap to connect or disconnect a device"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Saved"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatically turn on tomorrow"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Features like Quick Share and Find My Device use Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth will turn on tomorrow morning"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Share audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"select widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remove widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"place selected widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatic"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"No sound or vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No sound or vibration and appears lower in conversation section"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"May ring or vibrate based on device settings"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"May ring or vibrate based on device settings. Conversations from <xliff:g id="APP_NAME">%1$s</xliff:g> bubble by default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Have the system determine if this notification should make sound or vibration"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Split screen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"or"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Back gesture"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Home gesture"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Action key"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Great work!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"To go back, swipe left or right using 3 fingers anywhere on the touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad showing 3 fingers moving right and left"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Home controls"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Quickly access your home controls as a screensaver"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
index 39dd7c8..27c23aa 100644
--- a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Off"</item>
<item msgid="4875147066469902392">"On"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Unavailable"</item>
<item msgid="5044688398303285224">"Off"</item>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 321f5b9..0acb674 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -126,19 +126,25 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tap to view"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Error saving screen recording"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Error starting screen recording"</string>
- <string name="screenrecord_stop_dialog_title" msgid="2685522129492260887">"Stop recording screen?"</string>
- <string name="screenrecord_stop_dialog_message" msgid="1926783607059442889">"You will stop recording your screen"</string>
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"You will stop recording <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Stop recording?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"You\'re currently recording your entire screen"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"You\'re currently recording <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stop recording"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Sharing screen"</string>
<string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Stop sharing screen?"</string>
- <string name="share_to_app_stop_dialog_message" msgid="3181723638915877339">"You will stop sharing your screen"</string>
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"You will stop sharing <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"You\'re currently sharing your entire screen with <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"You\'re currently sharing your entire screen with an app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"You\'re currently sharing <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"You\'re currently sharing an app"</string>
<string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Stop sharing"</string>
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Casting screen"</string>
- <string name="cast_to_other_device_stop_dialog_title" msgid="1910372600290258193">"Stop casting screen?"</string>
- <string name="cast_to_other_device_stop_dialog_message" msgid="1502520537030715412">"You will stop casting your screen"</string>
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"You will stop casting <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Casting screen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Stop casting?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"You\'re currently casting your entire screen to <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"You\'re currently casting your entire screen to a nearby device"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"You\'re currently casting <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> to <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"You\'re currently casting <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> to a nearby device"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"You\'re currently casting to <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"You\'re currently casting to a nearby device"</string>
<string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stop casting"</string>
<string name="close_dialog_button" msgid="4749497706540104133">"Close"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Issue Recorder"</string>
@@ -284,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Screen saver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Do Not Disturb"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Priority modes"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No paired devices available"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tap to connect or disconnect a device"</string>
@@ -483,6 +490,8 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"select widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remove widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"place selected widget"</string>
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Lock screen widgets"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Anyone can view widgets on your lock screen, even if your tablet\'s locked."</string>
<string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you’ll need to verify it’s you. Also, keep in mind that anyone can view them, even when your tablet’s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
@@ -707,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatic"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"No sound or vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No sound or vibration and appears lower in conversation section"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"May ring or vibrate based on device settings"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"May ring or vibrate based on device settings. Conversations from <xliff:g id="APP_NAME">%1$s</xliff:g> bubble by default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Have the system determine if this notification should make sound or vibration"</string>
@@ -764,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1346,6 +1357,7 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Split screen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Current App"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
@@ -1356,8 +1368,7 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Home gesture"</string>
<string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Action key"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Great job!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"To go back, swipe left or right using three fingers anywhere on the touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad showing three fingers moving right and left"</string>
@@ -1366,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Home Controls"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Quickly access your home controls as a screensaver"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"Undo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
index 39dd7c8..0658ce5 100644
--- a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Off"</item>
<item msgid="4875147066469902392">"On"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Unavailable"</item>
+ <item msgid="2004750556637773692">"Off"</item>
+ <item msgid="8968530753931637871">"On"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Unavailable"</item>
<item msgid="5044688398303285224">"Off"</item>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index f1d6d51..1b1ae97 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tap to view"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Error saving screen recording"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Error starting screen recording"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"You will stop recording <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stop recording"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Sharing screen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Stop sharing screen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"You will stop sharing <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Casting screen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Stop sharing"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Casting screen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Stop casting?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"You will stop casting <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stop casting"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Close"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Issue Recorder"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Processing issue recording"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Ongoing notification for an issue collection session"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Error saving issue recording"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Error starting issue recording"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Viewing full screen"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"To exit, swipe down from the top of your screen"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Got it"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Back"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Home"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Screen saver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Do Not Disturb"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No paired devices available"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tap to connect or disconnect a device"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Saved"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatically turn on tomorrow"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Features like Quick Share and Find My Device use Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth will turn on tomorrow morning"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Share audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"select widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remove widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"place selected widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatic"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"No sound or vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No sound or vibration and appears lower in conversation section"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"May ring or vibrate based on device settings"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"May ring or vibrate based on device settings. Conversations from <xliff:g id="APP_NAME">%1$s</xliff:g> bubble by default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Have the system determine if this notification should make sound or vibration"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Split screen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"or"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Back gesture"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Home gesture"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Action key"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Great work!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"To go back, swipe left or right using 3 fingers anywhere on the touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad showing 3 fingers moving right and left"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Home controls"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Quickly access your home controls as a screensaver"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
index 39dd7c8..27c23aa 100644
--- a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Off"</item>
<item msgid="4875147066469902392">"On"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Unavailable"</item>
<item msgid="5044688398303285224">"Off"</item>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index f1d6d51..1b1ae97 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tap to view"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Error saving screen recording"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Error starting screen recording"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"You will stop recording <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stop recording"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Sharing screen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Stop sharing screen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"You will stop sharing <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Casting screen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Stop sharing"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Casting screen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Stop casting?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"You will stop casting <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stop casting"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Close"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Issue Recorder"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Processing issue recording"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Ongoing notification for an issue collection session"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Error saving issue recording"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Error starting issue recording"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Viewing full screen"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"To exit, swipe down from the top of your screen"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Got it"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Back"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Home"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Screen saver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Do Not Disturb"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No paired devices available"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tap to connect or disconnect a device"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Saved"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnect"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activate"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatically turn on tomorrow"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Features like Quick Share and Find My Device use Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth will turn on tomorrow morning"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Share audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"select widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remove widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"place selected widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you\'ll need to verify that it\'s you. Also, bear in mind that anyone can view them, even when your tablet\'s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatic"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"No sound or vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No sound or vibration and appears lower in conversation section"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"May ring or vibrate based on device settings"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"May ring or vibrate based on device settings. Conversations from <xliff:g id="APP_NAME">%1$s</xliff:g> bubble by default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Have the system determine if this notification should make sound or vibration"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Split screen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Collapse icon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Expand icon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"or"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Back gesture"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Home gesture"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Action key"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Great work!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"To go back, swipe left or right using 3 fingers anywhere on the touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad showing 3 fingers moving right and left"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Home controls"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Quickly access your home controls as a screensaver"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
index 39dd7c8..27c23aa 100644
--- a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Off"</item>
<item msgid="4875147066469902392">"On"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Unavailable"</item>
<item msgid="5044688398303285224">"Off"</item>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index a196720..e4a6603 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -126,19 +126,25 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tap to view"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Error saving screen recording"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Error starting screen recording"</string>
- <string name="screenrecord_stop_dialog_title" msgid="2685522129492260887">"Stop recording screen?"</string>
- <string name="screenrecord_stop_dialog_message" msgid="1926783607059442889">"You will stop recording your screen"</string>
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"You will stop recording <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Stop recording?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"You\'re currently recording your entire screen"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"You\'re currently recording <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stop recording"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Sharing screen"</string>
<string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Stop sharing screen?"</string>
- <string name="share_to_app_stop_dialog_message" msgid="3181723638915877339">"You will stop sharing your screen"</string>
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"You will stop sharing <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"You\'re currently sharing your entire screen with <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"You\'re currently sharing your entire screen with an app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"You\'re currently sharing <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"You\'re currently sharing an app"</string>
<string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Stop sharing"</string>
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Casting screen"</string>
- <string name="cast_to_other_device_stop_dialog_title" msgid="1910372600290258193">"Stop casting screen?"</string>
- <string name="cast_to_other_device_stop_dialog_message" msgid="1502520537030715412">"You will stop casting your screen"</string>
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"You will stop casting <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Casting screen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Stop casting?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"You\'re currently casting your entire screen to <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"You\'re currently casting your entire screen to a nearby device"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"You\'re currently casting <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> to <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"You\'re currently casting <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> to a nearby device"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"You\'re currently casting to <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"You\'re currently casting to a nearby device"</string>
<string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stop casting"</string>
<string name="close_dialog_button" msgid="4749497706540104133">"Close"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Issue Recorder"</string>
@@ -284,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Screen saver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Do Not Disturb"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Priority modes"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No paired devices available"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tap to connect or disconnect a device"</string>
@@ -483,6 +490,8 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"select widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remove widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"place selected widget"</string>
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Lock screen widgets"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Anyone can view widgets on your lock screen, even if your tablet\'s locked."</string>
<string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lock screen widgets"</string>
<string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"To open an app using a widget, you’ll need to verify it’s you. Also, keep in mind that anyone can view them, even when your tablet’s locked. Some widgets may not have been intended for your lock screen and may be unsafe to add here."</string>
<string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Got it"</string>
@@ -707,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatic"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"No sound or vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No sound or vibration and appears lower in conversation section"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"May ring or vibrate based on device settings"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"May ring or vibrate based on device settings. Conversations from <xliff:g id="APP_NAME">%1$s</xliff:g> bubble by default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Have the system determine if this notification should make sound or vibration"</string>
@@ -764,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1346,6 +1357,7 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Split screen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App shortcuts"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Current App"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Search shortcuts"</string>
@@ -1356,8 +1368,7 @@
<string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Home gesture"</string>
<string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Action key"</string>
<string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string>
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Great job!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"To go back, swipe left or right using three fingers anywhere on the touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad showing three fingers moving right and left"</string>
@@ -1366,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d of %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Home Controls"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Quickly access your home controls as a screensaver"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"Undo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml
index 35ab88b..a6a5fdd 100644
--- a/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Off"</item>
<item msgid="4875147066469902392">"On"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Unavailable"</item>
+ <item msgid="2004750556637773692">"Off"</item>
+ <item msgid="8968530753931637871">"On"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Unavailable"</item>
<item msgid="5044688398303285224">"Off"</item>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index c551253..1b751b4 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Presiona para ver"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Se produjo un error al guardar la grabación de pantalla"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Error al iniciar la grabación de pantalla"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Dejarás de grabar contenido de <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Detener la grabación"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Compartiendo pantalla"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"¿Quieres dejar de compartir la pantalla?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Dejarás de compartir contenido de <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Transmitiendo pantalla"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Dejar de compartir"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Transmitiendo pantalla"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"¿Detener la transmisión?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Dejarás de transmitir contenido de <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Detener transmisión"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Cerrar"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Grabadora de errores"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Procesando grabación del error"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificación continua por un error durante la sesión de recopilación de datos"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Se produjo un error al guardar la grabación del problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Se produjo un error al iniciar la grabación del problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualización en pantalla completa"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Para salir, desliza el dedo hacia abajo desde la parte superior de la pantalla"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Entendido"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Atrás"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Página principal"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Protector pantalla"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"No interrumpir"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No hay dispositivos sincronizados disponibles"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Presiona para conectar o desconectar un dispositivo"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Guardado"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activar"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Activar automáticamente mañana"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Las funciones como Quick Share y Encontrar mi dispositivo usan Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"El Bluetooth se activará mañana a la mañana"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Compartir audio"</string>
@@ -383,7 +392,7 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Grabación de pantalla"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Detener"</string>
- <string name="qs_record_issue_label" msgid="8166290137285529059">"Grabar error"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"Registrar problema"</string>
<string name="qs_record_issue_start" msgid="2979831312582567056">"Iniciar"</string>
<string name="qs_record_issue_stop" msgid="3531747965741982657">"Detener"</string>
<string name="qs_record_issue_bug_report" msgid="8229031766918650079">"Informe de errores"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"Seleccionar widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"quitar widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"colocar widget seleccionado"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets en la pantalla de bloqueo"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir una app usando un widget, debes verificar tu identidad. Además, ten en cuenta que cualquier persona podrá verlo, incluso cuando la tablet esté bloqueada. Es posible que algunos widgets no se hayan diseñados para la pantalla de bloqueo y podría ser peligroso agregarlos allí."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú expandible"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán las aplicaciones y los datos de esta sesión."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Predeterminada"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"No suena ni vibra, y aparece en la parte inferior de la sección de conversaciones"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Puede sonar o vibrar según la configuración del dispositivo"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Puede sonar o vibrar según la configuración del dispositivo. Conversaciones de la burbuja de <xliff:g id="APP_NAME">%1$s</xliff:g> de forma predeterminada."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Dejar que el sistema determine si esta notificación debe emitir un sonido o una vibración"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Re Pág"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Av Pág"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Borrar"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Inicio"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fin"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insertar"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Pantalla dividida"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Accesos directos a aplicaciones"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Buscar combinaciones de teclas"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícono de contraer"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícono de expandir"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"o"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto atrás"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto para ir a la pantalla principal"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla de acción"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Listo"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"¡Bien hecho!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atrás"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para volver, desliza tres dedos hacia la derecha o izquierda en cualquier lugar del panel táctil."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Panel táctil en el que aparecen tres dedos que se mueven hacia la derecha y la izquierda"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Controles de la casa"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Usa rápidamente los controles de la casa como protector de pantalla"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
index 869efff..b82fafe 100644
--- a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Desactivado"</item>
<item msgid="4875147066469902392">"Activado"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"No disponible"</item>
<item msgid="5044688398303285224">"Desactivada"</item>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index ae0527e..56985bc 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Toca para verla"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"No se ha podido guardar la grabación de pantalla"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"No se ha podido empezar a grabar la pantalla"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Dejarás de grabar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Detener grabación"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Compartiendo pantalla"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"¿Dejar de compartir pantalla?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Dejarás de compartir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Enviando pantalla"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Dejar de compartir"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Enviando pantalla"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"¿Dejar de enviar?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Dejarás de enviar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Dejar de enviar contenido"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Cerrar"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Grabadora de problemas"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Procesando grabación de problema"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificación continua de una sesión de obtención de datos del problema"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"No se ha podido guardar la grabación del problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"No se ha podido iniciar la grabación del problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualización en pantalla completa"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Para salir, desliza hacia abajo desde la parte superior de la pantalla"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Entendido"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Atrás"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Inicio"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Salvapantallas"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"No molestar"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"No hay dispositivos vinculados disponibles"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toca para conectar o desconectar un dispositivo"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Guardado"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activar"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Activar automáticamente mañana"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Las funciones como Quick Share y Encontrar mi dispositivo usan Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"El Bluetooth se activará mañana por la mañana"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Compartir audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"seleccionar widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"eliminar widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"colocar widget seleccionado"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets para la pantalla de bloqueo"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir una aplicación usando un widget, deberás verificar que eres tú. Además, ten en cuenta que cualquier persona podrá verlos, incluso aunque tu tablet esté bloqueada. Es posible que algunos widgets no estén pensados para la pantalla de bloqueo y no sea seguro añadirlos aquí."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendido"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar de usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán todas las aplicaciones y datos de esta sesión."</string>
@@ -554,7 +564,7 @@
<string name="media_projection_action_text" msgid="3634906766918186440">"Empezar ahora"</string>
<string name="empty_shade_text" msgid="8935967157319717412">"No hay notificaciones"</string>
<string name="no_unseen_notif_text" msgid="395512586119868682">"No hay notificaciones nuevas"</string>
- <string name="adaptive_notification_edu_hun_title" msgid="5720882373252389461">"Notif. adaptativas activadas"</string>
+ <string name="adaptive_notification_edu_hun_title" msgid="5720882373252389461">"Notificaciones adaptativas activadas"</string>
<string name="adaptive_notification_edu_hun_text" msgid="4260536236101821273">"Tu dispositivo baja el volumen y reduce las ventanas emergentes durante un máximo de 2 minutos cuando recibes muchas notificaciones en poco tiempo."</string>
<string name="go_to_adaptive_notification_settings" msgid="2423690125178298479">"Desactivar"</string>
<string name="unlock_to_see_notif_text" msgid="7439033907167561227">"Desbloquea para ver notificaciones anteriores"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Predeterminado"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sin sonido ni vibración, y se muestra más abajo en la sección de conversaciones"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Puede sonar o vibrar según los ajustes del dispositivo"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Puede sonar o vibrar según los ajustes del dispositivo. Las conversaciones de <xliff:g id="APP_NAME">%1$s</xliff:g> aparecen como burbujas de forma predeterminada."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Haz que el sistema determine si con esta notificación el dispositivo debe sonar o vibrar"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Re Pág"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Av Pág"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Supr"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Inicio"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fin"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Pantalla dividida"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Accesos directos a aplicaciones"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atajos de búsqueda"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icono de contraer"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icono de desplegar"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"o"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto para volver"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto para ir al inicio"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla de acción"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hecho"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"¡Bien hecho!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atrás"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para volver, desliza tres dedos hacia la izquierda o la derecha en cualquier punto del panel táctil."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Panel táctil con tres dedos moviéndose hacia la derecha y la izquierda"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Controles de la casa"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Usa los controles de tu casa como salvapantallas"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-es/tiles_states_strings.xml b/packages/SystemUI/res/values-es/tiles_states_strings.xml
index 5dbb2c1..02365e5 100644
--- a/packages/SystemUI/res/values-es/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-es/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Desactivado"</item>
<item msgid="4875147066469902392">"Activado"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"No disponible"</item>
<item msgid="5044688398303285224">"Desactivado"</item>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 0bc2302..111480f 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Puudutage kuvamiseks"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Viga ekraanisalvestise salvestamisel"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Viga ekraanikuva salvestamise alustamisel"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Lõpetate rakenduse <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sisu salvestamise"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Peata salvestamine"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ekraani jagamine"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Kas lõpetada ekraanikuva jagamine?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Lõpetate rakenduse <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sisu jagamise"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Ekraanikuva ülekandmine"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Lõpeta jagamine"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Ekraanikuva ülekandmine"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Kas peatada ülekandmine?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Lõpetate rakenduse <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sisu ülekandmise"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Peata ülekandmine"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Sule"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Probleemisalvesti"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Probleemisalvestise töötlemine"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Probleemikogumise seansi taustamärguanne"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Viga probleemisalvestise salvestamisel"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Viga probleemi salvestamise alustamisel"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Kuvamine täisekraanil"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Väljumiseks pühkige ekraanikuva ülaosast alla"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Selge"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Tagasi"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Kodu"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Ekraanisäästja"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Mitte segada"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Ühtegi seotud seadet pole saadaval"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Puudutage seadme ühendamiseks või ühenduse katkestamiseks"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Salvestatud"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"katkesta ühendus"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiveeri"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Lülita homme automaatselt sisse"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Sellised funktsioonid nagu Kiirjagamine ja Leia mu seade kasutavad Bluetoothi."</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth lülitub sisse homme hommikul"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Jaga heli"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"vidina valimine"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"eemaldage vidin"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"asetage valitud vidin"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lukustuskuva vidinad"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Rakenduse avamiseks vidina abil peate kinnitama, et see olete teie. Samuti pidage meeles, et kõik saavad vidinaid vaadata, isegi kui teie tahvelarvuti on lukus. Mõni vidin ei pruugi olla ette nähtud teie lukustuskuva jaoks ja seda pole turvaline siia lisada."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Selge"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kasutaja vahetamine"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rippmenüü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Seansi kõik rakendused ja andmed kustutatakse."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Vaikeseade"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automaatne"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ilma heli ja vibreerimiseta"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ilma heli ja vibreerimiseta, kuvatakse vestluste jaotises allpool"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Võib seadme seadete põhjal heliseda või vibreerida"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Võib seadme seadete põhjal heliseda või vibreerida. Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> vestlused kuvatakse vaikimisi mullis."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Laske süsteemil määrata, kas selle märguande puhul peaks esitama heli või vibreerima"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Lehe võrra üles"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Lehe võrra alla"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Kustuta"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Avakuva"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Lõpp"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Sisesta"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Jagatud ekraanikuva"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Sisend"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Rakenduse otseteed"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Juurdepääsetavus"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Klaviatuuri otseteed"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Otsingu otseteed"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ahendamisikoon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Laiendamisikoon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"või"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Tagasiliikumisliigutus"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Avakuvale liikumise liigutus"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Toiminguklahv"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Väga hea!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Tagasi"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Tagasiliikumiseks pühkige puuteplaadil kolme sõrmega vasakule või paremale."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Puuteplaat kolme paremale ja vasakule liikuva sõrmega"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Tase %1$d/%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kodu juhtelemendid"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Juurdepääs kodu juhtelementidele ekraanisäästjalt"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-et/tiles_states_strings.xml b/packages/SystemUI/res/values-et/tiles_states_strings.xml
index 704649e..3794f9a 100644
--- a/packages/SystemUI/res/values-et/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-et/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Väljas"</item>
<item msgid="4875147066469902392">"Sees"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Pole saadaval"</item>
<item msgid="5044688398303285224">"Väljas"</item>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 0307b0e..f082ea1 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Sakatu ikusteko"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Errore bat gertatu da pantaila-grabaketa gordetzean"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Errore bat gertatu da pantaila grabatzen hastean"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> grabatzeari utziko diozu"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Utzi grabatzeari"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Pantaila partekatzen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Pantaila partekatzeari utzi nahi diozu?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> partekatzeari utziko diozu"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Pantaila igortzen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Utzi partekatzeari"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Pantaila igortzen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Igortzeari utzi nahi diozu?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> igortzeari utziko diozu"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Utzi igortzeari"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Itxi"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Arazo-grabagailua"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Arazoaren grabaketa prozesatzen"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Arazo bat biltzeko saio baten aktibo dagoen jakinarazpena"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Errore bat gertatu da arazoa grabatzean"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Errore bat gertatu da arazoa grabatzen hastean"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Pantaila osoa ikusgai"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Irteteko, pasatu hatza pantailaren goialdetik beherantz"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Ados"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Atzera"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Hasiera"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Pantaila-babeslea"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ez molestatzeko modua"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetootha"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Ez dago parekatutako gailurik erabilgarri"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Sakatu hau gailu bat konektatu edo deskonektatzeko"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Gordeta"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"deskonektatu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktibatu"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Aktibatu automatikoki bihar"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share, Bilatu nire gailua eta beste eginbide batzuek Bluetootha erabiltzen dute"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bihar goizean aktibatuko da Bluetootha"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Partekatu audioa"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"hautatu widget bat"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"kendu widgeta"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"kokatu hautatutako widgeta"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Pantaila blokeatuko widgetak"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Aplikazio bat widget baten bidez irekitzeko, zeu zarela egiaztatu beharko duzu. Gainera, kontuan izan edonork ikusi ahalko dituela halako widgetak, tableta blokeatuta badago ere. Baliteke widget batzuk pantaila blokeaturako egokiak ez izatea, eta agian ez da segurua haiek bertan gehitzea."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ados"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Aldatu erabiltzailea"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"zabaldu menua"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Saioko aplikazio eta datu guztiak ezabatuko dira."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Lehenetsia"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatikoa"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ez du tonurik jotzen edo dar-dar egiten"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ez du tonurik jotzen edo dar-dar egiten, eta elkarrizketen atalaren behealdean agertzen da"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Baliteke tonua jotzea edo dardara egitea, gailuaren ezarpenen arabera"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Baliteke tonua jotzea edo dardara egitea, gailuaren ezarpenen arabera. Modu lehenetsian, <xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioko elkarrizketak burbuila gisa agertzen dira."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Ezarri sistemak zehaztu dezala jakinarazpen honek soinua edo dardara egin behar duen ala ez"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Orrian gora"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Orrian behera"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Ezabatu"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Hasiera"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Amaitu"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Txertatu"</string>
@@ -1212,7 +1225,7 @@
<string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Informazio gehiago lortzeko, sakatu hau"</string>
<string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Alarmarik ez"</string>
<string name="accessibility_bouncer" msgid="5896923685673320070">"erabili pantailaren blokeoa"</string>
- <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"Ukitu hatz-marken sentsorea. Pantailaren albo batean dagoen botoi laburra da."</string>
+ <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"Ukitu hatz-marken sentsorea. Telefonoaren albo batean dagoen botoi laburra da."</string>
<string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Hatz-marken sentsorea"</string>
<string name="accessibility_authenticate_hint" msgid="798914151813205721">"autentifikatu"</string>
<string name="accessibility_enter_hint" msgid="2617864063504824834">"sartu gailuan"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Pantaila zatitzea"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Sarrera"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Aplikazioetarako lasterbideak"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Erabilerraztasuna"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Lasterbideak"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Bilatu lasterbideak"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Tolesteko ikonoa"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Zabaltzeko ikonoa"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"edo"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Atzera egiteko keinua"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Orri nagusira joateko keinua"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Ekintza-tekla"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Eginda"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Bikain!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Egin atzera"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Atzera egiteko, pasatu 3 hatz ezkerrera edo eskuinera ukipen-panelean."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"3 hatz ukipen-panel baten gainean eskuinera eta ezkerrera mugitzen erakusten duen irudia"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d/%2$d maila"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Etxeko gailuen kontrola"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Kontrolatu etxeko gailuak pantaila-babesletik"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-eu/tiles_states_strings.xml b/packages/SystemUI/res/values-eu/tiles_states_strings.xml
index 13e14e0..45d5121 100644
--- a/packages/SystemUI/res/values-eu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-eu/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Desaktibatuta"</item>
<item msgid="4875147066469902392">"Aktibatuta"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Ez dago erabilgarri"</item>
<item msgid="5044688398303285224">"Desaktibatuta"</item>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 752cc61..ceb62e4 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"برای مشاهده تکضرب بزنید"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"خطا در ذخیرهسازی ضبط صفحهنمایش"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"خطا هنگام شروع ضبط صفحهنمایش"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ضبط <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> را متوقف خواهید کرد"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"توقف ضبط"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"درحال همرسانی صفحهنمایش"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"صفحه همرسانی متوقف شود؟"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"همرسانی <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> را متوقف خواهید کرد"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"درحال پخش محتوای صفحهنمایش"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"توقف همرسانی"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"درحال پخش محتوای صفحهنمایش"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"پخش محتوا متوقف شود؟"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"پخش محتوای <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> را متوقف خواهید کرد"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"توقف پخش محتوا"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"بستن"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ضبطکننده مشکل"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"درحال پردازش کردن ضبط مشکل"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"اعلان جاری مربوط به جلسه جمعآوری مشکل"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"هنگام ذخیره کردن ضبط مشکل، خطایی پیش آمد"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"هنگام شروع ضبط مشکل، خطایی پیش آمد"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"درحال مشاهده در حالت تمامصفحه"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"برای خروج، از بالای صفحه تند به پایین بکشید"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"متوجهام"</string>
<string name="accessibility_back" msgid="6530104400086152611">"برگشت"</string>
<string name="accessibility_home" msgid="5430449841237966217">"صفحهٔ اصلی"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"محافظ صفحه"</string>
<string name="ethernet_label" msgid="2203544727007463351">"اترنت"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"مزاحم نشوید"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"بلوتوث"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"هیچ دستگاه مرتبط شدهای موجود نیست"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"برای اتصال یا قطع اتصال دستگاه، تکضرب بزنید"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ذخیرهشده"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"قطع اتصال"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"فعال کردن"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"فردا بهطور خودکار روشن شود"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ویژگیهایی مثل «همرسانی سریع» و «پیدا کردن دستگاهم» از بلوتوث استفاده میکنند"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"بلوتوث فردا صبح روشن خواهد شد"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"همرسانی صدا"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"انتخاب ابزارک"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"برداشتن ابزارک"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"جایگذاری ابزارک انتخابشده"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ابزارکهای صفحه قفل"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"برای باز کردن برنامه بااستفاده از ابزارک، باید هویت خودتان را بهتأیید برسانید. همچنین، بهخاطر داشته باشید که همه میتوانند آنها را مشاهده کنند، حتی وقتی رایانه لوحیتان قفل است. برخیاز ابزارکها ممکن است برای صفحه قفل درنظر گرفته نشده باشند و ممکن است اضافه کردن آنها در اینجا ناامن باشد."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"متوجهام"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"منوی پایینپر"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"همه برنامهها و دادههای این جلسه حذف خواهد شد."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"پیشفرض"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"خودکار"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"بدون صدا یا لرزش"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"بدون صدا و لرزش در پایین بخش مکالمه نشان داده میشود"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"بسته به تنظیمات دستگاه ممکن است زنگ بزند یا بلرزد"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"بسته به تنظیمات دستگاه ممکن است زنگ بزند یا بلرزد. مکالمههای <xliff:g id="APP_NAME">%1$s</xliff:g> بهطور پیشفرض در حبابک نشان داده میشوند."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"سیستم را تنظیم کنید که تشخیص دهد اعلان صدا و لرزش داشته باشد یا نه"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"صفحه بعد"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"صفحه قبل"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"حذف"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"ابتدا"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"صفحهٔ دونیمه"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ورودی"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"میانبرهای برنامه"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"برنامه فعلی"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"دسترسپذیری"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"میانبرهای صفحهکلید"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"جستجوی میانبرها"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"نماد جمع کردن"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"نماد ازهم بازکردن"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"یا"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"اشاره برگشت"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"اشاره صفحه اصلی"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"دکمه کنش"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تمام"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"عالی است!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"برگشتن"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"برای برگشتن، در هر جایی از صفحه لمسی، با سه انگشت تند بهچپ یا راست بکشید."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"صفحه لمسی که سه انگشت را درحال حرکت بهسمت راست و چپ نشان میدهد"</string>
@@ -1385,4 +1394,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"سطح %1$d از %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"کنترل خانه هوشمند"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"به کنترل خانه هوشمند بهعنوان محافظ صفحهنمایش دسترسی سریع دارید"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fa/tiles_states_strings.xml b/packages/SystemUI/res/values-fa/tiles_states_strings.xml
index 756b442..d6e0e82 100644
--- a/packages/SystemUI/res/values-fa/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fa/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"خاموش"</item>
<item msgid="4875147066469902392">"روشن"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"دردسترس نیست"</item>
<item msgid="5044688398303285224">"خاموش"</item>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index b9eae3d..5ba52d5 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Katso napauttamalla"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Virhe näyttötallenteen tallentamisessa"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Virhe näytön tallennuksen aloituksessa"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ei enää tallenna sisältöä"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Lopeta tallennus"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Näyttöä jaetaan"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Lopetetaanko näytön jakaminen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ei enää jaa sisältöä"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Näyttöä striimataan"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Lopeta jakaminen"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Näyttöä striimataan"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Lopetetaanko striimaus?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ei enää striimaa sisältöä"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Lopeta striimaus"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Sulje"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Ongelman tallentaja"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Käsittely: Ongelman tallennus"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Ongelmankeräykseen liittyvä ilmoitus taustalla jatkuvasta toiminnasta"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Virhe ongelman tallenteen tallentamisessa"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Virhe ongelman tallentamisen aloituksessa"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Koko näytön tilassa"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Poistu pyyhkäisemällä alas näytön yläreunasta"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Selvä"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Takaisin"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Aloitus"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Näytönsäästäjä"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Älä häiritse"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Laitepareja ei ole käytettävissä"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Muodosta yhteys laitteeseen tai katkaise yhteys napauttamalla"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Tallennettu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"katkaise yhteys"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivoi"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Laita automaattisesti päälle huomenna"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share, Paikanna laite ja tietyt muut ominaisuudet käyttävät Bluetoothia"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth menee päälle huomisaamuna"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Jaa audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"valitse widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"poista widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"aseta valittu widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Lukitusnäytön widgetit"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Jos haluat avata sovelluksen käyttämällä widgetiä, sinun täytyy vahvistaa henkilöllisyytesi. Muista myös, että widgetit näkyvät kaikille, vaikka tabletti olisi lukittuna. Jotkin widgetit on ehkä tarkoitettu lukitusnäytölle, ja niiden lisääminen tänne ei välttämättä ole turvallista."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Selvä"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Vaihda käyttäjää"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"alasvetovalikko"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Kaikki sovellukset ja tämän istunnon tiedot poistetaan."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Oletus"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automaattinen"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ei ääntä tai värinää"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ei ääntä tai värinää ja näkyy alempana keskusteluosiossa"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Voi soida tai väristä laitteen asetuksista riippuen"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Voi soida tai väristä laitteen asetuksista riippuen. Keskusteluista (<xliff:g id="APP_NAME">%1$s</xliff:g>) luodaan oletuksena kuplia."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Järjestelmä valitsee, kuuluuko tästä ilmoituksesta ääntä tai väriseekö se"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Jaettu näyttö"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Syöte"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Sovellusten pikakuvakkeet"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Saavutettavuus"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Pikanäppäimet"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Pikahaut"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Tiivistyskuvake"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Laajennuskuvake"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"tai"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Takaisin-ele"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Etusivu-ele"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Toimintonäppäin"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Hienoa!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Takaisin"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Jos haluat siirtyä takaisin, pyyhkäise kosketuslevyllä vasemmalle tai oikealle kolmella sormella."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Kosketuslevy, jolla kolme sormea liikkuu oikealle ja vasemmalle"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Taso %1$d/%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kodin ohjaus"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Avaa kodin ohjaus nopeasti näytönsäästäjän kautta"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fi/tiles_states_strings.xml b/packages/SystemUI/res/values-fi/tiles_states_strings.xml
index 5ecc9595..6290062 100644
--- a/packages/SystemUI/res/values-fi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fi/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Poissa päältä"</item>
<item msgid="4875147066469902392">"Päällä"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Ei saatavilla"</item>
<item msgid="5044688398303285224">"Poissa päältä"</item>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index b1aec7d..a72cdc7 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Touchez pour afficher"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Erreur d\'enregistrement de l\'écran"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Une erreur s\'est produite lors du démarrage de l\'enregistrement d\'écran"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Vous arrêterez d\'enregistrer <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Arrêter l\'enregistrement"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Partage d\'écran en cours…"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Arrêter le partage d\'écran?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Vous arrêterez de partager <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Diffusion de l\'écran en cours…"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Arrêter le partage"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Diffusion de l\'écran en cours…"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Arrêter de diffuser?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Vous arrêterez de diffuser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Arrêter la diffusion"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Fermer"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Enregistreur de problèmes"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Trait. de l\'enreg. du problème"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notification continue pour une session de collecte d\'un problème"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Erreur lors de l\'enregistrement du problème"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Erreur lors du démarrage de l\'enregistrement du problème"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Affichage plein écran"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Pour quitter ce mode, balayer l\'écran vers le bas à partir du haut"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Précédent"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Domicile"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Écran de veille"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne pas déranger"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Aucun des appareils associés n\'est disponible"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Touchez pour connecter ou déconnecter un appareil"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Enregistré"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"Déconnecter"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"Activer"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"L\'activer automatiquement demain"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Les fonctionnalités comme Partage rapide et Localiser mon appareil utilisent le Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Le Bluetooth s\'activera demain matin"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Partager l\'audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"sélectionner le widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"retirer le widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"placer le widget sélectionné"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets de l\'écran de verrouillage"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pour ouvrir une appli à l\'aide d\'un widget, vous devrez confirmer votre identité. En outre, gardez à l\'esprit que tout le monde peut les voir, même lorsque votre tablette est verrouillée. Certains widgets n\'ont peut-être pas été conçus pour votre écran de verrouillage et il pourrait être dangereux de les ajouter ici."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applis et les données de cette session seront supprimées."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Par défaut"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatique"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Aucun son ni vibration"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Aucun son ni vibration, et s\'affiche plus bas dans la section des conversations"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Peut sonner ou vibrer, selon les paramètres de l\'appareil"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Peut sonner ou vibrer, selon les paramètres de l\'appareil. Conversations des bulles de <xliff:g id="APP_NAME">%1$s</xliff:g> par défaut."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Faire en sorte que le système détermine si cette notification devrait émettre un son ou vibrer"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page précédente"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page suivante"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Supprimer"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Accueil"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fin"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insérer"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Écran divisé"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrée"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Raccourcis des applis"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilité"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Raccourcis-clavier"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Recherchez des raccourcis"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icône Réduire"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icône Développer"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ou"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Geste de retour"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Geste d\'accès à l\'écran d\'accueil"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Touche d\'action"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Bon travail!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Retour"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Pour revenir en arrière, balayez vers la gauche ou la droite en utilisant trois doigts n\'importe où sur le pavé tactile."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Pavé tactile montrant trois doigts se déplaçant à droite et à gauche"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Domotique"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Accès rapide : domotique sous forme d\'Écran de veille"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
index 52b763b..e0445fa 100644
--- a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Désactivé"</item>
<item msgid="4875147066469902392">"Activé"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Non disponible"</item>
<item msgid="5044688398303285224">"Désactivée"</item>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 8618b38..240f013 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Appuyez pour afficher"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Erreur lors de l\'enregistrement de l\'écran"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Erreur lors du démarrage de l\'enregistrement de l\'écran"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Vous arrêterez d\'enregistrer <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Arrêter l\'enregistrement"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Partage de l\'écran…"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Arrêter le partage d\'écran ?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Vous arrêterez de partager <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Diffusion de l\'écran…"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Arrêter le partage"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Cast de l\'écran"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Arrêter de caster ?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Vous arrêterez de caster <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Arrêter de caster du contenu"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Fermer"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Enregistreur de problèmes"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Enregistrement du problème"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notification d\'activité en cours concernant la session d\'enregistrement d\'un problème"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Erreur lors de l\'enregistrement du problème"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Erreur lors du démarrage de l\'enregistrement du problème"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Affichage en plein écran"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Pour quitter, balayez l\'écran de haut en bas"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Retour"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Accueil"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Économiseur d\'écran"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne pas déranger"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Aucun appareil associé disponible."</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Appuyez pour connecter ou déconnecter un appareil"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Enregistré"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"dissocier"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activer"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Activer automatiquement demain"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Certaines fonctionnalités, telles que Quick Share et Localiser mon appareil, utilisent le Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Le Bluetooth sera activé demain matin"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Partager le contenu audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"sélectionner un widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"supprimer le widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"positionner le widget sélectionné"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets pour l\'écran de verrouillage"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pour ouvrir une appli à l\'aide d\'un widget, vous devez confirmer qu\'il s\'agit bien de vous. N\'oubliez pas non plus que tout le monde peut voir vos widgets, même lorsque votre tablette est verrouillée. Certains d\'entre eux n\'ont pas été conçus pour l\'écran de verrouillage et les ajouter à cet endroit peut s\'avérer dangereux."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applications et les données de cette session seront supprimées."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Par défaut"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatique"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ni son, ni vibreur"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ni son, ni vibreur ; s\'affiche plus bas dans la section des conversations"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Peut sonner ou vibrer en fonction des paramètres de l\'appareil"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Peut sonner ou vibrer en fonction des paramètres de l\'appareil. Les conversations provenant de <xliff:g id="APP_NAME">%1$s</xliff:g> s\'affichent sous forme de bulles par défaut."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Laisser le système déterminer si cette notification doit être accompagnée d\'un son ou d\'une vibration"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page précédente"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page suivante"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Supprimer"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Accueil"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fin"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insérer"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Écran partagé"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrée"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Raccourcis d\'application"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilité"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Raccourcis clavier"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Raccourcis de recherche"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icône Réduire"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icône Développer"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ou"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Geste Retour"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Geste Accueil"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Touche d\'action"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Bravo !"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Retour"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Pour retourner en arrière, balayez vers la gauche avec trois doigts n\'importe où sur le pavé tactile."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Pavé tactile sur lequel trois doigts glissent vers la droite, puis vers la gauche"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d sur %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Contrôle de la maison"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Domotique sous forme d\'économiseur d\'écran"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fr/tiles_states_strings.xml b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
index fcdd9f0..adc9cb3 100644
--- a/packages/SystemUI/res/values-fr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-fr/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Désactivé"</item>
<item msgid="4875147066469902392">"Activé"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Indisponible"</item>
<item msgid="5044688398303285224">"Désactivé"</item>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index b44dc45..5388b09 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -126,27 +126,28 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Toca para ver o contido"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Produciuse un erro ao gardar a gravación da pantalla"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Produciuse un erro ao iniciar a gravación da pantalla"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Deixarás de gravar a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Queres deter a gravación?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Estás gravando toda a pantalla"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Estás gravando <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
<skip />
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Compartindo pantalla"</string>
<!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Deixarás de compartir a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Estás compartindo toda a pantalla con <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Estás compartindo toda a pantalla cunha aplicación"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Estás compartindo <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Estás compartindo unha aplicación"</string>
<!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Emitindo pantalla"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Deixarás de emitir a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Emitindo pantalla"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Queres deter a emisión?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Estás emitindo toda a pantalla en <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Estás emitindo toda a pantalla nun dispositivo próximo"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Estás emitindo <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> en <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Estás emitindo <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> nun dispositivo próximo"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Estás emitindo contido en <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Estás emitindo contido nun dispositivo próximo"</string>
<!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
<skip />
<!-- no translation found for close_dialog_button (4749497706540104133) -->
@@ -295,6 +296,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Protector pantalla"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Non molestar"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Non hai dispositivos vinculados dispoñibles"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toca para conectar ou desconectar un dispositivo"</string>
@@ -495,6 +498,8 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"seleccionar widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"quitar o widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"colocar o widget seleccionado"</string>
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgets da pantalla de bloqueo"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Calquera pode ver os widgets na pantalla de bloqueo, mesmo coa tableta bloqueada"</string>
<!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
<skip />
<!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
@@ -722,7 +727,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Configuración predeterminada"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Sen son nin vibración"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sen son nin vibración, e aparecen máis abaixo na sección de conversas"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Poderían facer que o dispositivo soe ou vibre en función da súa configuración"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Poderían facer que o dispositivo soe ou vibre en función da súa configuración. As conversas de <xliff:g id="APP_NAME">%1$s</xliff:g> móstranse en burbullas de forma predeterminada."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Fai que o sistema determine se a notificación debe emitir un son ou unha vibración"</string>
@@ -779,6 +785,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Re Páx"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Av Páx"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Supr"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Escape"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Inicio"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fin"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Inserir"</string>
@@ -1361,6 +1368,7 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Pantalla dividida"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atallos de aplicacións"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplicación actual"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidade"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Atallos de teclado"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atallos de busca"</string>
@@ -1375,8 +1383,7 @@
<skip />
<!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
<skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Moi ben!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Volver"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para volver, pasa tres dedos cara á esquerda ou cara á dereita en calquera lugar do panel táctil."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Panel táctil que mostra tres dedos movéndose á dereita e á esquerda"</string>
@@ -1385,4 +1392,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivel %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Controis domóticos"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Usa os controis domóticos como protector de pantalla"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-gl/tiles_states_strings.xml b/packages/SystemUI/res/values-gl/tiles_states_strings.xml
index 03b934e..d2c8ea0 100644
--- a/packages/SystemUI/res/values-gl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-gl/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Non"</item>
<item msgid="4875147066469902392">"Si"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Non dispoñible"</item>
<item msgid="5044688398303285224">"Non"</item>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 5e384e3..66495f3 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"જોવા માટે ટૅપ કરો"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"સ્ક્રીન રેકોર્ડિંગ સાચવવામાં ભૂલ આવી"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"સ્ક્રીનને રેકૉર્ડ કરવાનું શરૂ કરવામાં ભૂલ"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"તમે <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને રેકોર્ડ કરવાનું બંધ કરશો"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"રેકોર્ડિંગ રોકો"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"સ્ક્રીન શેર કરી રહ્યાં છીએ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"સ્ક્રીન શેર કરવાનું રોકીએ?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"તમે <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને શેર કરવાનું બંધ કરશો"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"સ્ક્રીન કાસ્ટ કરી રહ્યાં છીએ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"શેર કરવાનું રોકો"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"સ્ક્રીન કાસ્ટ કરી રહ્યાં છીએ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"શું કાસ્ટ કરવાનું બંધ કરીએ?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"તમે <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ને કાસ્ટ કરવાનું બંધ કરશો"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"કાસ્ટ કરવાનું રોકો"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"બંધ કરો"</string>
<string name="issuerecord_title" msgid="286627115110121849">"સમસ્યા રેકોર્ડર"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"સમસ્યા રેકોર્ડિંગ ચાલુ છે"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"કોઈ સમસ્યા સંગ્રહના સત્ર માટે ચાલુ નોટિફિકેશન"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"સમસ્યા રેકોર્ડિંગને સાચવવામાં ભૂલ આવી"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"સમસ્યા રેકોર્ડિંગને શરૂ કરવામાં ભૂલ આવી"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"પૂર્ણ સ્ક્રીન જોઈ રહ્યાં છે"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"બહાર નીકળવા માટે, તમારી સ્ક્રીનની સૌથી ઉપરથી નીચેની તરફ સ્વાઇપ કરો"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"સમજાઈ ગયું"</string>
<string name="accessibility_back" msgid="6530104400086152611">"પાછળ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"હોમ"</string>
@@ -295,6 +303,7 @@
<string name="start_dreams" msgid="9131802557946276718">"સ્ક્રીન સેવર"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ઇથરનેટ"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ખલેલ પાડશો નહીં"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"પ્રાધાન્યતાના મોડ"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"બ્લૂટૂથ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"કોઈ જોડી કરેલ ઉપકરણો ઉપલબ્ધ નથી"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"કોઈ ડિવાઇસ કનેક્ટ કરવા કે ડિસ્કનેક્ટ કરવા માટે ટૅપ કરો"</string>
@@ -306,8 +315,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"સાચવેલું"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ડિસ્કનેક્ટ કરો"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"સક્રિય કરો"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"આવતીકાલે ઑટોમૅટિક રીતે ચાલુ કરો"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ક્વિક શેર અને Find My Device જેવી સુવિધાઓ બ્લૂટૂથનો ઉપયોગ કરે છે"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"બ્લૂટૂથ આવતીકાલે સવારે ચાલુ થશે"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ઑડિયો શેર કરો"</string>
@@ -495,12 +503,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"વિજેટ પસંદ કરો"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"વિજેટ કાઢી નાખો"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"પસંદ કરેલું વિજેટ મૂકો"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"લૉક સ્ક્રીન વિજેટ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"વિજેટનો ઉપયોગ કરીને ઍપ ખોલવા માટે, તમારે એ ચકાસણી કરવાની જરૂર રહેશે કે આ તમે જ છો. તે ઉપરાંત, ધ્યાનમાં રાખો કે તમારું ટૅબ્લેટ લૉક કરેલું હોય તો પણ કોઈપણ વ્યક્તિ તેમને જોઈ શકે છે. અમુક વિજેટ કદાચ તમારી લૉક સ્ક્રીન માટે બનાવવામાં આવ્યા ન હોઈ શકે છે અને તેમને અહીં ઉમેરવાનું અસલામત હોઈ શકે છે."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"સમજાઈ ગયું"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"વપરાશકર્તા સ્વિચ કરો"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"પુલડાઉન મેનૂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"આ સત્રમાંની તમામ ઍપ અને ડેટા કાઢી નાખવામાં આવશે."</string>
@@ -722,7 +731,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ડિફૉલ્ટ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ઑટોમૅટિક રીતે"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"કોઈપણ સાઉન્ડ અથવા વાઇબ્રેશન નથી"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"કોઈપણ સાઉન્ડ અથવા વાઇબ્રેશન નથી અને વાતચીત વિભાગમાં તે વધુ નીચેની દિશાએ દેખાય છે"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ડિવાઇસના સેટિંગના આધારે રિંગ અથવા વાઇબ્રેટ થઈ શકે છે"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ડિવાઇસના સેટિંગના આધારે રિંગ અથવા વાઇબ્રેટ થઈ શકે છે. ડિફૉલ્ટ તરીકે <xliff:g id="APP_NAME">%1$s</xliff:g> બબલની વાતચીત."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"આ નોટિફિકેશન સાઉન્ડ અથવા વાઇબ્રેટ કરી શકશે કે નહીં તે સિસ્ટમને નક્કી કરવા દો"</string>
@@ -779,6 +789,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1373,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"સ્ક્રીનને વિભાજિત કરો"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ઇનપુટ"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ઍપ શૉર્ટકટ"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"હાલની ઍપ"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ઍક્સેસિબિલિટી"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"કીબોર્ડ શૉર્ટકટ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"શૉર્ટકટ શોધો"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"\'નાનું કરો\'નું આઇકન"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"\'મોટું કરો\'નું આઇકન"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"અથવા"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"પાછળ જવાનો સંકેત"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"હોમ સ્ક્રીન પર જવાનો સંકેત"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ઍક્શન કી"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"થઈ ગયું"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ખૂબ સરસ કામ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"પાછા જાઓ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"પાછા જવા માટે, ત્રણ આંગળીઓનો ઉપયોગ કરીને ટચપૅડ પર કોઈપણ જગ્યાએ ડાબે કે જમણે સ્વાઇપ કરો."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"જમણી અને ડાબી તરફ ખસી રહેલી ત્રણ આંગળીઓ બતાવતું ટચપૅડ"</string>
@@ -1385,4 +1393,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dમાંથી %1$d લેવલ"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ઘરેલું સાધનોના નિયંત્રણો"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"સ્ક્રીનસેવર તરીકે તમારા ઘરેલું સાધનોના નિયંત્રણો ઝડપથી ઍક્સેસ કરો"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"છેલ્લો ફેરફાર રદ કરો"</string>
</resources>
diff --git a/packages/SystemUI/res/values-gu/tiles_states_strings.xml b/packages/SystemUI/res/values-gu/tiles_states_strings.xml
index 5c4a478..196a05b 100644
--- a/packages/SystemUI/res/values-gu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-gu/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"બંધ છે"</item>
<item msgid="4875147066469902392">"ચાલુ છે"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"અનુપલબ્ધ"</item>
+ <item msgid="2004750556637773692">"બંધ"</item>
+ <item msgid="8968530753931637871">"ચાલુ"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ઉપલબ્ધ નથી"</item>
<item msgid="5044688398303285224">"બંધ છે"</item>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 54bcede..1c95672 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"देखने के लिए टैप करें"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"स्क्रीन रिकॉर्डिंग सेव करते समय गड़बड़ी हुई"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"स्क्रीन को रिकॉर्ड करने में गड़बड़ी आ रही है"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"इससे <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का कॉन्टेंट रिकॉर्ड होना बंद हो जाएगा"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"रिकॉर्ड करना बंद करें"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"स्क्रीन शेयर की जा रही है"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"क्या स्क्रीन शेयरिंग बंद करनी है?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"इससे <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का कॉन्टेंट शेयर होना बंद हो जाएगा"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"स्क्रीन कास्ट की जा रही है"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"शेयर करना बंद करें"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"स्क्रीन कास्ट की जा रही है"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"क्या कास्टिंग बंद करनी है?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"इससे <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का कॉन्टेंट कास्ट होना बंद हो जाएगा"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"कास्ट करना बंद करें"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"बंद करें"</string>
<string name="issuerecord_title" msgid="286627115110121849">"समस्या का डेटा सेव करने वाला टूल"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"समस्या का डेटा प्रोसेस हो रहा"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"समस्या का डेटा इकट्ठा करने के लिए बैकग्राउंड में जारी गतिविधि की सूचना"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"समस्या का डेटा सेव करते समय गड़बड़ी हुई"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"समस्या का डेटा सेव करने की प्रोसेस शुरू करते समय गड़बड़ी हुई"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"फ़ुल स्क्रीन मोड पर देखा जा रहा है"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"बंद करने के लिए, स्क्रीन के सबसे ऊपरी हिस्से से नीचे की ओर स्वाइप करें"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ठीक है"</string>
<string name="accessibility_back" msgid="6530104400086152611">"वापस जाएं"</string>
<string name="accessibility_home" msgid="5430449841237966217">"होम"</string>
@@ -295,6 +303,7 @@
<string name="start_dreams" msgid="9131802557946276718">"स्क्रीन सेवर"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ईथरनेट"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"परेशान न करें"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"अहम मोड"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ब्लूटूथ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"कोई भी युग्मित डिवाइस उपलब्ध नहीं"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"किसी डिवाइस को कनेक्ट या डिसकनेक्ट करने के लिए टैप करें"</string>
@@ -306,8 +315,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"सेव किया गया"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"डिसकनेक्ट करें"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"चालू करें"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ब्लूटूथ कल अपने-आप चालू हो जाएगा"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"क्विक शेयर और Find My Device जैसी सुविधाएं, ब्लूटूथ का इस्तेमाल करती हैं"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ब्लूटूथ कल सुबह चालू होगा"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ऑडियो शेयर करें"</string>
@@ -495,12 +503,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"विजेट चुनें"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"विजेट हटाएं"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"चुने गए विजेट के लिए जगह चुनें"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लॉक स्क्रीन विजेट"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"किसी विजेट से कोई ऐप्लिकेशन खोलने के लिए, आपको अपनी पहचान की पुष्टि करनी होगी. ध्यान रखें कि टैबलेट के लॉक होने पर भी कोई व्यक्ति विजेट देख सकता है. ऐसा हो सकता है कि कुछ विजेट लॉक स्क्रीन पर दिखाने के लिए न बने हों. इन्हें लॉक स्क्रीन पर जोड़ना असुरक्षित हो सकता है."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ठीक है"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेन्यू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"इस सेशन के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा."</string>
@@ -722,7 +731,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"डिफ़ॉल्ट"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"अपने-आप"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"आवाज़ या वाइब्रेशन न हो"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"इससे किसी तरह की आवाज़ या वाइब्रेशन नहीं होता और बातचीत, सेक्शन में सबसे नीचे दिखती है"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"डिवाइस की सेटिंग के आधार पर, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"डिवाइस की सेटिंग के आधार पर, सूचना आने पर घंटी बज सकती है या वाइब्रेशन हो सकता है. <xliff:g id="APP_NAME">%1$s</xliff:g> पर होने वाली बातचीत, डिफ़ॉल्ट रूप से बबल के तौर पर दिखती है."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"सिस्टम को यह तय करने की अनुमति दें कि इस सूचना के मिलने पर आवाज़ हो या वाइब्रेशन हो"</string>
@@ -779,6 +789,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1373,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"स्प्लिट स्क्रीन"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ऐप शॉर्टकट"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"मौजूदा ऐप्लिकेशन"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सुलभता"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"सर्च शॉर्टकट"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"छोटा करने का आइकॉन"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"बड़ा करने का आइकॉन"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"या"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"पीछे जाने का जेस्चर"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"होम स्क्रीन पर जाने का जेस्चर"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ऐक्शन बटन"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"हो गया"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"बहुत बढ़िया!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"वापस जाएं"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"वापस जाने के लिए, टचपैड पर कहीं भी तीन उंगलियों से बाईं या दाईं तरफ़ स्वाइप करें."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"टचपैड पर तीन उंगलियों को दाईं और बाईं तरफ़ ले जाया जा रहा है"</string>
@@ -1385,4 +1393,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d में से %1$d लेवल"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"होम कंट्रोल"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"स्क्रीनसेवर से तुरंत होम कंट्रोल ऐक्सेस करें"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"पहले जैसा करें"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hi/tiles_states_strings.xml b/packages/SystemUI/res/values-hi/tiles_states_strings.xml
index b89eeb3..b988d72 100644
--- a/packages/SystemUI/res/values-hi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hi/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"बंद है"</item>
<item msgid="4875147066469902392">"चालू है"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"उपलब्ध नहीं है"</item>
+ <item msgid="2004750556637773692">"बंद है"</item>
+ <item msgid="8968530753931637871">"चालू है"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"उपलब्ध नहीं है"</item>
<item msgid="5044688398303285224">"बंद है"</item>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index cac83e6..fce4ac0 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Dodirnite za prikaz"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Pogreška prilikom spremanja snimke zaslona"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Pogreška prilikom pokretanja snimanja zaslona"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Zaustavit ćete snimanje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Želite li zaustaviti snimanje?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Trenutačno snimate cijeli zaslon"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Trenutačno snimate aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Zaustavi snimanje"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Dijeljenje zaslona"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Zaustavit ćete dijeljenje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Emitiranje zaslona"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Zaustavit ćete emitiranje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Želite li zaustaviti dijeljenje zaslona?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Trenutačno dijelite cijeli zaslon s aplikacijom <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Trenutačno dijelite cijeli zaslon s aplikacijom"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Trenutačno dijelite aplikaciju <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Trenutačno dijelite aplikaciju"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Zaustavi dijeljenje"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Emitiranje zaslona"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Želite li prestati emitirati?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Trenutačno emitirate cijeli zaslon na uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Trenutačno emitirate cijeli zaslon na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Trenutačno emitirate aplikaciju <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> na uređaj <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Trenutačno emitirate aplikaciju <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Trenutačno emitirate na uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Trenutačno emitirate na uređaj u blizini"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Zaustavi emitiranje"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zatvori"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Snimač poteškoća"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Obrada snimke poteškoće"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Obavijest o aktivnosti u pozadini za sesiju prikupljanja poteškoća"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Pogreška pri spremanju snimke poteškoće"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Pogreška pri pokretanju snimke poteškoće"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Gledanje preko cijelog zaslona"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Za izlaz povucite prstom od vrha zaslona prema dolje"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Shvaćam"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Natrag"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Početna"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Čuvar zaslona"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne uznemiravaj"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Upareni uređaji nisu dostupni"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Dodirnite da biste povezali uređaj ili prekinuli vezu s njim"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Spremljeno"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekini vezu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiviraj"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatski uključi sutra"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Značajke kao što su brzo dijeljenje i Pronađi moj uređaj koriste Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth će se uključiti sutra ujutro"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Dijeli zvuk"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"odaberi widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ukloni widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"postavi odabrani widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgeti zaključanog zaslona"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Svi vide widgete na vašem zaključanom zaslonu, čak i ako je tablet zaključan."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgeti na zaključanom zaslonu"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Da biste otvorili aplikaciju pomoću widgeta, trebate potvrditi da ste to vi. Također napominjemo da ih svatko može vidjeti, čak i ako je vaš tablet zaključan. Neki widgeti možda nisu namijenjeni za zaključani zaslon, pa ih možda nije sigurno dodati ovdje."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Shvaćam"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Promjena korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući izbornik"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Izbrisat će se sve aplikacije i podaci u ovoj sesiji."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Zadano"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatski"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Bez zvuka ili vibracije"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Bez zvuka ili vibracije i prikazuje se pri dnu odjeljka razgovora"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Može zvoniti ili vibrirati ovisno o postavkama uređaja"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Možda će zvoniti ili vibrirati, ovisno o postavkama uređaja. Razgovori iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> prikazuju se u oblačiću prema zadanim postavkama."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Neka sustav odredi treba li obavijest najaviti zvukom ili vibracijom"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Stranica prema gore"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Stranica prema dolje"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Izbriši"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Početak"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Kraj"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Umetni"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Podijeljeni zaslon"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Unos"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Prečaci aplikacija"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tipkovni prečaci"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Prečaci za pretraživanje"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona za sažimanje"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona za proširivanje"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ili"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Pokret za povratak"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Pokret za otvaranje početnog zaslona"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tipka za radnju"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Sjajno!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Natrag"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Za povratak trima prstima prijeđite ulijevo ili udesno bilo gdje na dodirnoj podlozi."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Dodirna podloga prikazuje tri prsta koji se kreću udesno i ulijevo"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Razina %1$d od %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Upravljanje uređajima"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Brzo upravljajte uređajima putem čuvara zaslona"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hr/tiles_states_strings.xml b/packages/SystemUI/res/values-hr/tiles_states_strings.xml
index df0b786..6833c27 100644
--- a/packages/SystemUI/res/values-hr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hr/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Isključeno"</item>
<item msgid="4875147066469902392">"Uključeno"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nedostupno"</item>
<item msgid="5044688398303285224">"Isključeno"</item>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index c408e30..f59622c 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Koppintson a megtekintéshez"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Hiba történt a képernyőrögzítés mentése során"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Hiba a képernyőrögzítés indításakor"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Le fogja állítani a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> rögzítését"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Felvétel leállítása"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Képernyő megosztása…"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Leállítja a képernyőmegosztást?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Le fogja állítani a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> megosztását"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Képernyőtartalom átküldése…"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Megosztás leállítása"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Képernyőtartalom átküldése…"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Leállítja az átküldést?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Le fogja állítani a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> átküldését"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Átküldés leállítása"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Bezárás"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problémafelvevő"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Problémafelvétel feldolgozása…"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Folyamatban lévő értesítés egy problémagyűjtési munkamenethez"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Hiba történt a problémafelvétel mentésekor"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Hiba történt a problémafelvétel elindításakor"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Megtekintése teljes képernyőn"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"A kilépéshez csúsztasson gyorsan lefelé a képernyő tetejéről."</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Értem"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Vissza"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Főoldal"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Képernyővédő"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne zavarjanak"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nem áll rendelkezésre párosított eszköz"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Koppintson egy eszköz csatlakoztatásához vagy leválasztásához"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Mentve"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"leválasztás"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiválás"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatikus bekapcsolás holnap"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Egyes funkciók (például a Quick Share és a Készülékkereső) Bluetootht használnak"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"A Bluetooth holnap reggel bekapcsol"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Hang megosztása"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"modul kiválasztása"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"modul törlése"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"kijelölt modul áthelyezése"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"A lezárási képernyő moduljai"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ha modul használatával szeretne megnyitni egy alkalmazást, igazolnia kell a személyazonosságát. Ne felejtse továbbá, hogy bárki megtekintheti a modulokat, még akkor is, amikor zárolva van a táblagép. Előfordulhat, hogy bizonyos modulokat nem a lezárási képernyőn való használatra terveztek, ezért nem biztonságos a hozzáadásuk."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Értem"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Felhasználóváltás"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"lehúzható menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"A munkamenetben található összes alkalmazás és adat törlődni fog."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Alapértelmezett"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatikus"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Nincs hang és rezgés"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nincs hang és rezgés, továbbá lejjebb jelenik meg a beszélgetések szakaszában"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Az eszközbeállítások alapján csöröghet és rezeghet"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Az eszközbeállítások alapján csöröghet és rezeghet. A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazásban lévő beszélgetések alapértelmezés szerint buborékban jelennek meg."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"A rendszer határozza meg, hogy ez az értesítés adjon-e ki hangot, illetve rezegjen-e"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Kezdőképernyő"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Osztott képernyő"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Bevitel"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Alkalmazás-parancsikonok"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Kisegítő lehetőségek"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Billentyűparancsok"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Billentyűparancsok keresése"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Összecsukás ikon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Kibontás ikon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"vagy"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Vissza kézmozdulat"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Kezdőképernyő kézmozdulat"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Műveletbillentyű"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kész"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Kiváló!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Vissza"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"A visszalépéshez csúsztasson három ujjal gyorsan balra vagy a jobbra az érintőpad tetszőleges területén."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Három, jobbra és balra mozgó ujjat ábrázoló érintőpad"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Fényerő: %2$d/%1$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Otthon vezérlése"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Gyorsan vezérelheti otthonát képernyőkímélővel"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hu/tiles_states_strings.xml b/packages/SystemUI/res/values-hu/tiles_states_strings.xml
index bbd6bc0..6b54c52 100644
--- a/packages/SystemUI/res/values-hu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hu/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Ki"</item>
<item msgid="4875147066469902392">"Be"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nem áll rendelkezésre"</item>
<item msgid="5044688398303285224">"Ki"</item>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index c898fca..2be9a3c 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Հպեք՝ դիտելու համար"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Չհաջողվեց պահել էկրանի տեսագրությունը"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Չհաջողվեց սկսել տեսագրումը"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Դուք կկանգնեցնեք <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածից բովանդակության տեսագրումը"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Կանգնեցնե՞լ ձայնագրումը"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Դուք ներկայումս ձայնագրում եք ձեր ամբողջ էկրանը"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Դուք ներկայումս ձայնագրում եք <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Կանգնեցնել տեսագրումը"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Միացված է էկրանի ցուցադրումը"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Դուք կկանգնեցնեք <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածից բովանդակության փոխանցումը"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Էկրանի հեռարձակում"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Դուք կկանգնեցնեք <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածից բովանդակության հեռարձակումը"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Դադարեցնե՞լ էկրանի ցուցադրումը"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Դուք ներկայումս կիսվում եք ձեր էկրանով <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> հավելվածի հետ"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Դուք ներկայումս կիսվում եք ձեր էկրանով հավելվածի հետ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Դուք ներկայումս կիսվում եք <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> հավելվածով"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Դուք ներկայումս կիսվում եք հավելվածով"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Դադարեցնել էկրանի ցուցադրումը"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Էկրանի հեռարձակում"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Կանգնեցնե՞լ հեռարձակումը"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Դուք ներկայումս հեռարձակում եք ձեր ամբողջ էկրանը <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքին"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Դուք ներկայումս հեռարձակում եք ձեր ամբողջ էկրանը մոտակա սարքին"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Դուք ներկայումս հեռարձակում եք <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> հավելվածը <xliff:g id="DEVICE_NAME">%2$s</xliff:g> սարքին"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Դուք ներկայումս հեռարձակում եք <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> հավելվածը մոտակա սարքին"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Դուք ներկայումս հեռարձակում եք <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքին"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Դուք ներկայումս հեռարձակում եք մոտակա սարքին"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Դադարեցնել հեռարձակումը"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Փակել"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Խնդիրների տեսագրիչ"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Մշակում ենք տեսագրությունը"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Խնդրի տեսագրման մասին ընթացիկ ծանուցում"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Չհաջողվեց պահել տեսագրությունը"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Չհաջողվեց սկսել տեսագրումը"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Լիաէկրան դիտակերպ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Դուրս գալու համար էկրանի վերևից մատը սահեցրեք ներքև"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Եղավ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Հետ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Տուն"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Էկրանապահ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Չանհանգստացնել"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Զուգակցված սարքեր չկան"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Հպեք՝ սարք միացնելու կամ անջատելու համար"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Պահված է"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"անջատել"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ակտիվացնել"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Ավտոմատ միացնել վաղը"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Bluetooth-ն օգտագործում են, օրինակ, Quick Share և «Գտնել իմ սարքը» գործառույթները"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth-ը կմիանա վաղն առավոտյան"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Փոխանցել աուդիո"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ընտրել վիջեթ"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"հեռացնել վիջեթը"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"տեղադրել ընտրված վիջեթը"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Կողպէկրանի վիջեթներ"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Բոլորը կարող են դիտել ձեր կողպէկրանի վիջեթները, նույնիսկ եթե պլանշետը կողպված է"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Կողպէկրանի վիջեթներ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Վիջեթի միջոցով հավելված բացելու համար դուք պետք է հաստատեք ձեր ինքնությունը։ Նաև նկատի ունեցեք, որ ցանկացած ոք կարող է դիտել վիջեթները, նույնիսկ երբ ձեր պլանշետը կողպված է։ Որոշ վիջեթներ կարող են նախատեսված չլինել ձեր կողպէկրանի համար, և այստեղ դրանց ավելացնելը կարող է վտանգավոր լինել։"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Եղավ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Անջատել օգտվողին"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"իջնող ընտրացանկ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Այս աշխատաշրջանի բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Կանխադրված"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Ավտոմատ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Առանց ձայնի կամ թրթռոցի"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Առանց ձայնի և թրթռոցի, հայտնվում է զրույցների ցանկի ներքևում"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Կարող է զնգալ կամ թրթռալ՝ կախված սարքի կարգավորումներից"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Կարող է զնգալ կամ թրթռալ՝ կախված սարքի կարգավորումներից։ <xliff:g id="APP_NAME">%1$s</xliff:g>-ի զրույցներն ըստ կանխադրման հայտնվում են ամպիկների տեսքով։"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Թող համակարգն ավտոմատ որոշի՝ արդյոք այս ծանուցումը ձայնով, թե թրթռոցով է պետք մատուցել"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Ջնջել"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Գլխավոր էջ"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Վերջ"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Տեղադրել"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Տրոհված էկրան"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ներածում"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Հավելվածի դյուրանցումներ"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Հատուկ գործառույթներ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Ստեղնային դյուրանցումներ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Դյուրանցումների որոնում"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ծալել պատկերակը"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ծավալել պատկերակը"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"կամ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"«Հետ» ժեստ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Հիմնական էկրան անցնելու ժեստ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Գործողության ստեղն"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Պատրաստ է"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Կեցցե՛ք"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Հետ գնալ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Հետ գնալու համար հպահարթակի վրա երեք մատով սահեցրեք ձախ կամ աջ։"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Երեք մատները աջ ու ձախ են շարժվում հպահարթակի վրա"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d՝ %2$d-ից"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Տան կառավարման տարրեր"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Տան կառավարման տարրերը դարձրեք էկրանապահ"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hy/tiles_states_strings.xml b/packages/SystemUI/res/values-hy/tiles_states_strings.xml
index eb77ccf..248840e 100644
--- a/packages/SystemUI/res/values-hy/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-hy/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Անջատված է"</item>
<item msgid="4875147066469902392">"Միացված է"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Հասանելի չէ"</item>
<item msgid="5044688398303285224">"Անջատված է"</item>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 9546cf0..8f5ecfa 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Ketuk untuk melihat"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Terjadi error saat menyimpan rekaman layar"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Terjadi error saat memulai perekaman layar"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Anda akan berhenti merekam <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Berhenti merekam"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Membagikan layar"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Hentikan berbagi layar?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Anda akan berhenti membagikan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Mentransmisikan layar"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Berhenti berbagi"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Mentransmisikan layar"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Hentikan transmisi?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Anda akan berhenti mentransmisikan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Hentikan transmisi"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Tutup"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Perekam Masalah"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Memproses rekaman masalah"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notifikasi berkelanjutan untuk sesi pengumpulan masalah"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Terjadi error saat menyimpan rekaman masalah"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Terjadi error saat memulai perekaman masalah"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Melihat layar penuh"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Untuk keluar, geser ke bawah dari bagian atas layar"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Oke"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Kembali"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Utama"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Screensaver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Jangan Ganggu"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Perangkat yang disandingkan tak tersedia"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Ketuk untuk memulai atau menghentikan koneksi perangkat"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Disimpan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"putuskan koneksi"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktifkan"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Aktifkan otomatis besok"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Fitur seperti Quick Share dan Temukan Perangkat Saya menggunakan Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth akan dinyalakan besok pagi"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Bagikan audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"pilih widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"hapus widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"letakkan widget yang dipilih"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widget layar kunci"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Untuk membuka aplikasi menggunakan widget, Anda perlu memverifikasi diri Anda. Selain itu, harap ingat bahwa siapa saja dapat melihatnya, bahkan saat tablet Anda terkunci. Beberapa widget mungkin tidak dirancang untuk layar kunci Anda dan mungkin tidak aman untuk ditambahkan di sini."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Oke"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pulldown"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua aplikasi dan data dalam sesi ini akan dihapus."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Otomatis"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Tidak ada suara atau getaran"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Tidak ada suara atau getaran dan ditampilkan lebih rendah di bagian percakapan"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Dapat berdering atau bergetar berdasarkan setelan perangkat"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Dapat berdering atau bergetar berdasarkan setelan perangkat. Percakapan <xliff:g id="APP_NAME">%1$s</xliff:g> ditampilkan sebagai balon secara default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Biarkan sistem menentukan apakah notifikasi ini akan berbunyi atau bergetar"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Layar terpisah"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Pintasan aplikasi"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Aksesibilitas"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Pintasan keyboard"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Pintasan penelusuran"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikon ciutkan"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikon luaskan"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"atau"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gestur kembali"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gestur layar utama"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tombol tindakan"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Bagus!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kembali"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Untuk kembali, geser ke kiri atau ke kanan menggunakan tiga jari ke mana saja di touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad menampilkan tiga jari yang bergerak ke kanan dan ke kiri"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Tingkat %1$d dari %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrol Rumah"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Akses cepat kontrol rumah Anda sebagai screensaver"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-in/tiles_states_strings.xml b/packages/SystemUI/res/values-in/tiles_states_strings.xml
index a415f64..de505ca 100644
--- a/packages/SystemUI/res/values-in/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-in/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Nonaktif"</item>
<item msgid="4875147066469902392">"Aktif"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Tidak tersedia"</item>
<item msgid="5044688398303285224">"Mati"</item>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index a6c7f88..c47475b 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Ýttu til að skoða"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Villa við að vista skjáupptöku"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Villa við að hefja upptöku skjás"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Þú munt hætta upptöku úr <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stöðva upptöku"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Deilir skjá"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Hætta að deila skjá?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Þú munt hætta að deila úr <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Varpar skjá"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Hætta að deila"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Varpar skjá"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Hætta að varpa?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Þú munt hætta vörpun úr <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Hætta að varpa"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Loka"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Upptökutæki fyrir vandamál"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Vinnur úr upptöku af vandamáli"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Áframhaldandi tilkynning fyrir lotu vandamálasafns"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Villa kom upp við að vista upptöku af vandamáli"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Villa kom upp við að hefja upptöku af vandamáli"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Notar allan skjáinn"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Strjúktu niður frá efsta hluta skjásins til að hætta"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Ég skil"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Til baka"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Heim"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Skjávari"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ónáðið ekki"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Engin pöruð tæki til staðar"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Ýttu til að tengja eða aftengja tæki"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Vistað"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"aftengja"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"virkja"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Kveikja sjálfkrafa á morgun"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Eiginleikar eins og Flýtideiling og Finna tækið mitt nota Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Kveikt verður á Bluetooth í fyrramálið"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Deila hljóði"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"velja græju"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"fjarlægja græju"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"koma valinni græju fyrir"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Græjur fyrir lásskjá"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Þú þarft að staðfesta að þetta sért þú til að geta opnað forrit með græju. Hafðu einnig í huga að hver sem er getur skoðað þær, jafnvel þótt spjaldtölvan sé læst. Sumar græjur eru hugsanlega ekki ætlaðar fyrir lásskjá og því gæti verið óöruggt að bæta þeim við hér."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ég skil"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skipta um notanda"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Fellivalmynd"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Öllum forritum og gögnum í þessari lotu verður eytt."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Sjálfgefið"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Sjálfvirk"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ekkert hljóð eða titringur"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ekkert hljóð eða titringur og birtist neðar í samtalshluta"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Gæti hringt eða titrað en það fer eftir stillingum tækisins"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Gæti hringt eða titrað en það fer eftir stillingum tækisins. Samtöl frá <xliff:g id="APP_NAME">%1$s</xliff:g> birtast sjálfkrafa í blöðru."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Láta kerfið ákvarða hvort hljóð eða titringur fylgir þessari tilkynningu"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Skjáskipting"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Inntak"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Flýtileiðir forrita"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Aðgengi"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Flýtilyklar"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Leitarflýtileiðir"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Minnka tákn"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Stækka tákn"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"eða"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Bending til að fara til baka"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Bending til að fara á upphafsskjá"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Aðgerðalykill"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Lokið"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Vel gert!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Til baka"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Strjúktu til vinstri eða hægri með þrem fingrum hvar sem er á snertifletinum til að fara til baka."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Snertiflötur sem sýnir þrjá fingur færast til hægri og vinstri"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Stig %1$d af %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Heimastýringar"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Fáðu skjótan aðgang að heimastýringum sem skjávara"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-is/tiles_states_strings.xml b/packages/SystemUI/res/values-is/tiles_states_strings.xml
index c9befd6..ee3b311 100644
--- a/packages/SystemUI/res/values-is/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-is/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Slökkt"</item>
<item msgid="4875147066469902392">"Kveikt"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Ekki í boði"</item>
<item msgid="5044688398303285224">"Slökkt"</item>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 6067329..1cfc8d4 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tocca per visualizzare"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Errore durante il salvataggio della registrazione dello schermo"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Errore durante l\'avvio della registrazione dello schermo"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Interromperai la registrazione di <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Interrompi registrazione"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Condivisione dello schermo in corso"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Vuoi interrompere la condivisione dello schermo?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Interromperai la condivisione di <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Trasmissione dello schermo attiva"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Interrompi condivisione"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Trasmissione dello schermo in corso…"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Vuoi interrompere la trasmissione?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Interromperai la trasmissione di <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Interrompi trasmissione"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Chiudi"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Registratore dei problemi"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Elaborazione registrazione…"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notifica continua per una sessione di raccolta di problemi"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Impossibile salvare la registrazione del problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Impossibile avviare la registrazione del problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualizzazione a schermo intero"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Per uscire, scorri verso il basso dalla parte superiore dello schermo"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Indietro"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Home"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Salvaschermo"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Non disturbare"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nessun dispositivo accoppiato disponibile"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tocca per connettere o disconnettere un dispositivo"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Dispositivo salvato"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"disconnetti"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"attiva"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Attiva automaticamente domani"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funzionalità come Quick Share e Trova il mio dispositivo usano il Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Il Bluetooth verrà attivato domani mattina"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Condividi audio"</string>
@@ -320,7 +329,7 @@
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Attivazione…"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotazione automatica"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotazione automatica dello schermo"</string>
- <string name="quick_settings_location_label" msgid="2621868789013389163">"Geolocalizzazione"</string>
+ <string name="quick_settings_location_label" msgid="2621868789013389163">"Posizione"</string>
<string name="quick_settings_screensaver_label" msgid="1495003469366524120">"Salvaschermo"</string>
<string name="quick_settings_camera_label" msgid="5612076679385269339">"Accesso alla fotocamera"</string>
<string name="quick_settings_mic_label" msgid="8392773746295266375">"Accesso al microfono"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"seleziona widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"rimuovi widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"posiziona il widget selezionato"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widget della schermata di blocco"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Per aprire un\'app utilizzando un widget, dovrai verificare la tua identità. Inoltre tieni presente che chiunque può vederlo, anche quando il tablet è bloccato. Alcuni widget potrebbero non essere stati progettati per la schermata di blocco e potrebbe non essere sicuro aggiungerli qui."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ok"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambio utente"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu a discesa"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tutte le app e i dati di questa sessione verranno eliminati."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Modalità predefinita"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatico"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Nessun suono o vibrazione"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nessun suono o vibrazione e appare più in basso nella sezione delle conversazioni"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Potrebbero essere attivati lo squillo o la vibrazione in base alle impostazioni del dispositivo"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Potrebbero essere attivati lo squillo o la vibrazione in base alle impostazioni del dispositivo. Conversazioni dalla bolla <xliff:g id="APP_NAME">%1$s</xliff:g> per impostaz. predefinita."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Fai stabilire al sistema se questa notifica deve emettere suoni o vibrazioni"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Pagina su"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Pagina giù"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Elimina"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home page"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fine"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"INS"</string>
@@ -1361,22 +1374,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Schermo diviso"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Scorciatoie app"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App corrente"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilità"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Scorciatoie da tastiera"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Scorciatoie per la ricerca"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icona Comprimi"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icona Espandi"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"oppure"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto Indietro"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto Home"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tasto azione"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fine"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Ottimo lavoro"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Indietro"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Per tornare indietro, scorri verso sinistra o verso destra utilizzando tre dita in un punto qualsiasi del touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad che mostra tre dita che si muovono verso destra e sinistra"</string>
@@ -1385,4 +1394,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Livello %1$d di %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Controlli della casa"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Accedi rapidamente ai controlli della casa dal salvaschermo"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-it/tiles_states_strings.xml b/packages/SystemUI/res/values-it/tiles_states_strings.xml
index 2fd4f6d..e7c626f 100644
--- a/packages/SystemUI/res/values-it/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-it/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Off"</item>
<item msgid="4875147066469902392">"On"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Non disponibile"</item>
<item msgid="5044688398303285224">"Off"</item>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index fba9920..2ff5f83 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"יש להקיש כדי להציג"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"שגיאה בשמירה של הקלטת המסך"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"שגיאה בהפעלה של הקלטת המסך"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ההקלטה של <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> תיפסק"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"הפסקת ההקלטה"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"שיתוף המסך מתבצע"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"להפסיק את שיתוף המסך?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"השיתוף של <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> יופסק"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"הפעלת Cast של המסך מתבצעת"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"הפסקת השיתוף"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"הפעלת Cast של המסך מתבצעת"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"להפסיק את הפעלת ה-Cast?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"הפעלת ה-Cast של <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> תיפסק"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"הפסקת ה-Cast"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"סגירה"</string>
<string name="issuerecord_title" msgid="286627115110121849">"בעיה במכשיר ההקלטה"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"מתבצע עיבוד של בעיית ההקלטה"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"התראה מתמשכת לסשן איסוף הבעיה"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"שגיאה בשמירה של בעיית ההקלטה"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"שגיאה בהפעלה של בעיית ההקלטה"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"צפייה במסך מלא"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"כדי לצאת, מחליקים למטה מהחלק העליון של המסך"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"הבנתי"</string>
<string name="accessibility_back" msgid="6530104400086152611">"חזרה"</string>
<string name="accessibility_home" msgid="5430449841237966217">"בית"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"שומר מסך"</string>
<string name="ethernet_label" msgid="2203544727007463351">"אתרנט"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"נא לא להפריע"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"אין מכשירים מותאמים זמינים"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"אפשר להקיש כדי להתחבר למכשיר או להתנתק ממנו"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"נשמר"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ניתוק"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"הפעלה"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"הפעלה אוטומטית מחר"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"תכונות כמו \'שיתוף מהיר\' ו\'איפה המכשיר שלי\' משתמשות ב-Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"חיבור ה-Bluetooth יופעל מחר בבוקר"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"שיתוף האודיו"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"צריך לבחור ווידג\'ט"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"הסרת הווידג\'ט"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"צריך למקם את הווידג\'ט שנבחר"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ווידג\'טים במסך הנעילה"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"כדי לפתוח אפליקציה באמצעות ווידג\'ט, עליך לאמת את זהותך. בנוסף, כדאי לזכור שכל אחד יכול לראות את הווידג\'טים גם כשהטאבלט שלך נעול. יכול להיות שחלק מהווידג\'טים לא נועדו למסך הנעילה ושלא בטוח להוסיף אותם לכאן."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"הבנתי"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"תפריט במשיכה למטה"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"כל האפליקציות והנתונים בסשן הזה יימחקו."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ברירת מחדל"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"באופן אוטומטי"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ללא צליל או רטט"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ללא צליל או רטט ומופיעה למטה בקטע התראות השיחה"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ייתכן שיופעל צלצול או רטט בהתאם להגדרות במכשיר"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ייתכן שיופעל צלצול או רטט בהתאם להגדרות במכשיר. שיחות מהאפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מופיעות בבועות כברירת מחדל."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"אפשר לתת למערכת לקבוע אם ההתראה הזאת צריכה להיות מלווה בצליל או ברטט"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"דפדוף למעלה"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"דפדוף למטה"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"מחיקה"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"דף הבית"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"סיום"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"הוספה"</string>
@@ -966,8 +979,8 @@
<string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"מצב \'נא לא להפריע\' הופעל על ידי אפליקציה או על ידי כלל אוטומטי."</string>
<string name="running_foreground_services_title" msgid="5137313173431186685">"אפליקציות שפועלות ברקע"</string>
<string name="running_foreground_services_msg" msgid="3009459259222695385">"אפשר להקיש לקבלת פרטים על צריכה של נתונים וסוללה"</string>
- <string name="mobile_data_disable_title" msgid="5366476131671617790">"לכבות את חבילת הגלישה?"</string>
- <string name="mobile_data_disable_message" msgid="8604966027899770415">"לא תהיה לך גישה לנתונים או לאינטרנט באמצעות <xliff:g id="CARRIER">%s</xliff:g>. אינטרנט יהיה זמין רק באמצעות Wi-Fi."</string>
+ <string name="mobile_data_disable_title" msgid="5366476131671617790">"לכבות את השימוש בחבילת הגלישה?"</string>
+ <string name="mobile_data_disable_message" msgid="8604966027899770415">"לא תהיה לך גישה לנתונים או לאינטרנט דרך <xliff:g id="CARRIER">%s</xliff:g>. אפשר יהיה לגשת לאינטרנט רק דרך Wi-Fi."</string>
<string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"הספק שלך"</string>
<string name="auto_data_switch_disable_title" msgid="5146527155665190652">"לחזור אל <xliff:g id="CARRIER">%s</xliff:g>?"</string>
<string name="auto_data_switch_disable_message" msgid="5885533647399535852">"לא תתבצע החלפה אוטומטית של חבילת הגלישה על סמך זמינות"</string>
@@ -1361,22 +1374,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"מסך מפוצל"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"קלט"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"קיצורי דרך של אפליקציות"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"האפליקציה הנוכחית"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"נגישות"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"מקשי קיצור"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"קיצורי דרך לחיפוש"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"סמל הכיווץ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"סמל ההרחבה"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"או"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"תנועת חזרה"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"תנועת חזרה למסך הבית"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"מקש הפעולה"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"סיום"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"מעולה!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"חזרה"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"כדי לחזור אחורה, מחליקים שמאלה או ימינה עם שלוש אצבעות בכל מקום על לוח המגע."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"לוח מגע שמראה שלוש אצבעות זזות ימינה ושמאלה"</string>
@@ -1385,4 +1394,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"רמה %1$d מתוך %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"שליטה במכשירים"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"גישה מהירה לממשק השליטה במכשירים כשומר מסך"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-iw/tiles_states_strings.xml b/packages/SystemUI/res/values-iw/tiles_states_strings.xml
index b5cb476..a81cda4 100644
--- a/packages/SystemUI/res/values-iw/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-iw/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"כבוי"</item>
<item msgid="4875147066469902392">"פועל"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"לא זמין"</item>
<item msgid="5044688398303285224">"כבוי"</item>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 5a57016..4290be9f 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"タップすると表示されます"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"画面の録画の保存中にエラーが発生しました"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"画面の録画中にエラーが発生しました"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> の記録を停止します"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"録画を停止しますか?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"現在、画面全体を録画しています"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"現在、<xliff:g id="APP_NAME">%1$s</xliff:g>を録画しています"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"録画を停止"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"画面を共有しています"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> の共有を停止します"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"画面をキャストしています"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> のキャストを停止します"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"画面の共有を停止しますか?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"現在、画面全体を<xliff:g id="HOST_APP_NAME">%1$s</xliff:g>と共有しています"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"現在、画面全体をアプリと共有しています"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"現在、<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>を共有しています"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"現在、アプリを共有しています"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"共有を停止"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"画面をキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"キャストを停止しますか?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"現在、<xliff:g id="DEVICE_NAME">%1$s</xliff:g>に画面全体をキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"現在、付近のデバイスに画面全体をキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"現在、<xliff:g id="DEVICE_NAME">%2$s</xliff:g>に<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>をキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"現在、付近のデバイスに<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>をキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"現在、<xliff:g id="DEVICE_NAME">%1$s</xliff:g>にキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"現在、付近のデバイスにキャストしています"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"キャストを停止"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"閉じる"</string>
<string name="issuerecord_title" msgid="286627115110121849">"問題記録ツール"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"問題の記録を処理しています"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"問題の収集セッションに関する進行中の通知"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"問題の記録の保存中にエラーが発生しました"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"問題の記録の開始中にエラーが発生しました"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"全画面表示"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"終了するには画面の上部から下にスワイプします"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"戻る"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ホーム"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"スクリーン セーバー"</string>
<string name="ethernet_label" msgid="2203544727007463351">"イーサネット"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"サイレント モード"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ペア設定されたデバイスがありません"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"タップしてデバイスを接続または接続解除します"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"保存済み"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"接続を解除"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"有効化"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"明日自動的に ON にする"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share や「デバイスを探す」などの機能は Bluetooth を使用します"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"明日の朝に Bluetooth が ON になります"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"音声を共有"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ウィジェットを選択"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ウィジェットを削除"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"選択したウィジェットを配置"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"ロック画面ウィジェット"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"タブレットがロックされていても、ロック画面のウィジェットは誰でも確認できます。"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ロック画面ウィジェット"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ウィジェットを使用してアプリを起動するには、本人確認が必要です。タブレットがロックされた状態でも他のユーザーにウィジェットが表示されますので、注意してください。一部のウィジェットについてはロック画面での使用を想定していないため、ロック画面への追加は危険な場合があります。"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ユーザーを切り替える"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"プルダウン メニュー"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"このセッションでのアプリとデータはすべて削除されます。"</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"デフォルト"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"自動"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"着信音もバイブレーションも OFF になります"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"着信音もバイブレーションも無効になり会話セクションの下に表示されます"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"デバイスの設定を基に着信音またはバイブレーションが有効になります"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"デバイスの設定を基に着信音またはバイブレーションが有効になります。デフォルトでは <xliff:g id="APP_NAME">%1$s</xliff:g> からの会話がふきだしで表示されます。"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"この通知を音またはバイブレーションで知らせるかどうかの自動判断"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"PageUp"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"PageDown"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"分割画面"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"入力"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"アプリのショートカット"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ユーザー補助"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"キーボード ショートカット"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"検索ショートカット"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"閉じるアイコン"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"開くアイコン"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"または"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"「戻る」ジェスチャー"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"「ホーム」ジェスチャー"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"アクションキー"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完了"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"よくできました。"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"戻る"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"戻るには、3 本の指でタッチパッドを左右にスワイプします。"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"タッチパッドで 3 本の指を左右に動かしている様子"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"レベル %1$d/%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ホーム コントロール"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ホーム コントロールにスクリーンセーバーからすばやくアクセス"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ja/tiles_states_strings.xml b/packages/SystemUI/res/values-ja/tiles_states_strings.xml
index 790445c..610385e 100644
--- a/packages/SystemUI/res/values-ja/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ja/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"OFF"</item>
<item msgid="4875147066469902392">"ON"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"使用不可"</item>
<item msgid="5044688398303285224">"OFF"</item>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index dd92fee..b1b01b0 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"შეეხეთ სანახავად"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ეკრანის ჩანაწერის შენახვისას შეცდომა მოხდა"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ეკრანის ჩაწერის დაწყებისას წარმოიქმნა შეცდომა"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"თქვენ შეწყვეტთ <b><xliff:g id="APP_NAME">%1$s</xliff:g>-ის</b> ჩაწერას"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"გსურთ ჩაწერის შეწყვეტა?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"თქვენ ამჟამად იწერთ თქვენს მთლიან ეკრანს"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"თქვენ ამჟამად იწერთ <xliff:g id="APP_NAME">%1$s</xliff:g>-ს"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ჩაწერის შეწყვეტა"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"მიმდინარეობს ეკრანის გაზიარება"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"თქვენ შეწყვეტთ <b><xliff:g id="APP_NAME">%1$s</xliff:g>-ის</b> გაზიარებას"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"მიმდინარეობს ეკრანის ტრანსლირება"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"თქვენ შეწყვეტთ <b><xliff:g id="APP_NAME">%1$s</xliff:g>-ის</b> ტრანსლირებას"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"გსურთ ეკრანის გაზიარების შეწყვეტა?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"თქვენ ამჟამად უზიარებთ თქვენს მთლიან ეკრანს<xliff:g id="HOST_APP_NAME">%1$s</xliff:g>-ს"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"თქვენ ამჟამად უზიარებთ თქვენს მთლიან ეკრანს აპს"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"თქვენ ამჟამად აზიარებთ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>-ს"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"თქვენ ამჟამად აზიარებთ აპს"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"გაზიარების შეწყვეტა"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"მიმდინარეობს ეკრანის ტრანსლირება"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"გსურთ ტრანსლირების შეწყვეტა?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"თქვენ ამჟამად ახდენთ თქვენი მთლიანი ეკრანის ტრანსლირებას <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ზე"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"თქვენ ამჟამად ახდენთ თქვენი მთლიანი ეკრანის ტრანსლირებას ახლომახლო მოწყობილობაზე"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"თქვენ ამჟამად ახდენთ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>-ის ტრანსლირებას <xliff:g id="DEVICE_NAME">%2$s</xliff:g>-ზე"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"თქვენ ამჟამად ახდენთ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>-ის ტრანსლირებას ახლომახლო მოწყობილობაზე."</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"თქვენ ამჟამად ახდენთ ტრანსლირებას <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ზე"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"თქვენ ამჟამად ახდენთ ტრანსლირებას ახლომახლო მოწყობილობაზე"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"ტრანსლირების შეწყვეტა"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"დახურვა"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ჩანაწერის რეკორდერი"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"პრობლემის ჩანაწერის დამუშავება"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"მიმდინარე შეტყობინება პრობლემების შეგროვების სესიისთვის"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"პრობლემის ჩანაწერის შენახვისას წარმოიქმნა შეცდომა"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"პრობლემის ჩაწერის დაწყებისას წარმოიქმნა შეცდომა"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"მიმდინარეობს სრულ ეკრანზე ნახვა"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"თქვენი ეკრანის ზემოდან გადაფურცლეთ ქვემოთ, რათა გამოხვიდეთ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"გასაგებია"</string>
<string name="accessibility_back" msgid="6530104400086152611">"უკან"</string>
<string name="accessibility_home" msgid="5430449841237966217">"საწყისი"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"ეკრანმზოგი"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ეთერნეტი"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"არ შემაწუხოთ"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"პრიორიტეტული რეჟიმები"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"დაწყვილებული მოწყობილობები მიუწვდომელია"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"შეეხეთ მოწყობილობის დასაკავშირებლად ან გასათიშად"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"შენახული"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"კავშირის გაწყვეტა"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"გააქტიურება"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ხვალ ავტომატურად ჩართვა"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ისეთი ფუნქციები, როგორიცაა სწრაფი გაზიარება და ჩემი მოწყობილობის პოვნა, იყენებს Bluetooth-ს"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ჩაირთვება ხვალ დილით"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"აუდიოს გაზიარება"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ვიჯეტის არჩევა"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ვიჯეტის ამოშლა"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"არჩეული ვიჯეტის განთავსება"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"ჩაკეტილი ეკრანის ვიჯეტები"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"ნებისმიერს შეუძლია თქვენს ჩაკეტილ ეკრანზე ვიჯეტების ნახვა, თუნდაც ტაბლეტი ჩაკეტილი იყოს."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"დაბლოკილი ეკრანის ვიჯეტები"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"უნდა დაადასტუროთ თქვენი ვინაობა, რათა გახსნათ აპი ვიჯეტის გამოყენებით. გაითვალისწინეთ, რომ ნებისმიერს შეუძლია მათი ნახვა, მაშინაც კი, როცა ტაბლეტი დაბლოკილია. ზოგი ვიჯეტი შეიძლება არ იყოს გათვლილი თქვენი დაბლოკილი ეკრანისთვის და მათი აქ დამატება შეიძლება სახიფათო იყოს."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"გასაგებია"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"მომხმარებლის გადართვა"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ჩამოშლადი მენიუ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ამ სესიის ყველა აპი და მონაცემი წაიშლება."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ნაგულისხმევი"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ავტომატური"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ხმისა და ვიბრაციის გარეშე"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ხმისა და ვიბრაციის გარეშე, ჩნდება მიმოწერების სექციის ქვედა ნაწილში"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"დარეკვა ან ვიბრაცია მოწყობილობის პარამეტრების მიხედვით"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"დარეკვა ან ვიბრაცია მოწყობილობის პარამეტრების მიხედვით. მიმოწერები <xliff:g id="APP_NAME">%1$s</xliff:g>-ის ბუშტიდან, ნაგულისხმევად."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"სისტემისთვის ისეთი უფლების მინიჭება, რომ მან განსაზღვროს, ამ შეტყობინებამ ხმოვანი სიგნალი უნდა აამოქმედოს თუ ვიბრაცია"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"ეკრანის გაყოფა"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"შეყვანა"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"აპის მალსახმობები"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"მიმდინარე აპი"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"მისაწვდომობა"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"კლავიატურის მალსახმობები"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ძიების მალსახმობები"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ხატულის ჩაკეცვა"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ხატულის გაფართოება"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ან"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"უკან დაბრუნების ჟესტი"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"მთავარ ეკრანზე გადასვლის ჟესტი"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"მოქმედების კლავიში"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"მზადაა"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"შესანიშნავია!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"უკან დაბრუნება"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"უკან დასაბრუნებლად, სენსორულ პანელზე ნებისმიერ ადგილას სამი თითის გამოყენებით გადაფურცლეთ მარცხნივ ან მარჯვნივ."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"სენსორული პანელი, რომელიც აჩვენებს მარჯვენა და მარცხენა მიმართულებით მოძრავ სამ თითს"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"დონე: %1$d %2$d-დან"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"სახლის კონტროლი"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"სწრაფი წვდომა სახლის კონტროლზე ეკრანმზოგის სახით"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"მოქმედების გაუქმება"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ka/tiles_states_strings.xml b/packages/SystemUI/res/values-ka/tiles_states_strings.xml
index 21f8102..2b11a15 100644
--- a/packages/SystemUI/res/values-ka/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ka/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"გამორთულია"</item>
<item msgid="4875147066469902392">"ჩართულია"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"მიუწვდომელია"</item>
+ <item msgid="2004750556637773692">"გამორთული"</item>
+ <item msgid="8968530753931637871">"ჩართული"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"მიუწვდომელია"</item>
<item msgid="5044688398303285224">"გამორთულია"</item>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 2c7d43d..c07b6a0 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Көру үшін түртіңіз."</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Экран жазбасын сақтау кезінде қате шықты."</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Экрандағы бейнені жазу кезінде қате шықты."</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасының контентін жазуды тоқтатасыз."</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Жазуды тоқтату"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Экранды бөлісіп жатыр."</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Экранды бөлісуді тоқтатасыз ба?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасының контентін бөлісуді тоқтатасыз."</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Экранды трансляциялап жатыр."</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Бөлісуді тоқтату"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Экранды трансляциялап жатырсыз."</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Трансляциялау тоқтасын ба?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасының контентін трансляциялауды тоқтатасыз."</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Трансляцияны тоқтату"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Жабу"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Мәселені жазу құралы"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Мәселе жазбасы өңделіп жатыр"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Мәселе туралы дерек жинау сеансына арналған ағымдағы хабарландыру"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Мәселе жазбасын сақтау кезінде қате шықты."</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Мәселені жазуды бастау кезінде қате шықты."</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Толық экранда көру"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Шығу үшін экранның жоғарғы жағынан төмен қарай сырғытыңыз."</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Түсінікті"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Артқа"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Үй"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Скринсейвер"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Этернет"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Мазаламау"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Жұптасқан құрылғылар жоқ"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Құрылғыны жалғау не ажырату үшін түртіңіз."</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Сақталды"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ажырату"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"іске қосу"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Ертең автоматты түрде қосу"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share және Find My Device сияқты функциялар Bluetooth-ты пайдаланады."</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ертең таңертең қосылады."</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Аудионы бөлісу"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"виджет таңдау"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"виджетті өшіру"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"таңдалған виджетті орналастыру"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Құлып экранының виджеттері"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Қолданбаны виджет көмегімен ашу үшін жеке басыңызды растауыңыз керек. Сондай-ақ басқалар оларды планшетіңіз құлыптаулы кезде де көре алатынын ескеріңіз. Кейбір виджеттер құлып экранына арналмаған болады, сондықтан оларды мұнда қосу қауіпсіз болмауы мүмкін."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Түсінікті"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Пайдаланушыны ауыстыру"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ашылмалы мәзір"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Осы сеанстағы барлық қолданба мен дерек жойылады."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Әдепкі"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автоматты"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Дыбыс не діріл болмайды."</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дыбыс не діріл болмайды, әңгімелер бөлімінің төмен жағында тұрады."</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Құрылғы параметрлеріне байланысты шырылдауы не дірілдеуі мүмкін"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Құрылғы параметрлеріне байланысты шырылдауы не дірілдеуі мүмкін. <xliff:g id="APP_NAME">%1$s</xliff:g> чаттары әдепкісінше қалқымалы етіп көрсетіледі."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Хабарландыру дыбысының немесе дірілдің қосылуын жүйе анықтайтын болады"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Экранды бөлу"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Кіріс"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Қолданба таңбашалары"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Арнайы мүмкіндіктер"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Перне тіркесімдері"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Іздеу жылдам пәрмендері"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Жию белгішесі"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Жаю белгішесі"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"немесе"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Артқа қайтару қимылы"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Негізгі бетке қайтару қимылы"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Әрекет пернесі"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Дайын"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Жарайсыз!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Артқа"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Артқа қайту үшін сенсорлық тақтаның кез келген жерінен үш саусақпен солға немесе оңға сырғытыңыз."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Оңға және солға жылжитын үш саусақты көрсетіп тұрған сенсорлық тақта."</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Деңгей: %1$d/%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Үй басқару элементтері"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Үй басқару элементтерін скринсейверден қолданыңыз."</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-kk/tiles_states_strings.xml b/packages/SystemUI/res/values-kk/tiles_states_strings.xml
index cf3aa69..6410460 100644
--- a/packages/SystemUI/res/values-kk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-kk/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Өшірулі"</item>
<item msgid="4875147066469902392">"Қосулы"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Қолжетімсіз"</item>
<item msgid="5044688398303285224">"Өшірулі"</item>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index e16225b..bd31568 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ចុចដើម្បីមើល"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"មានបញ្ហាក្នុងការរក្សាទុកការថតវីដេអូអេក្រង់"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"មានបញ្ហាក្នុងការចាប់ផ្ដើមថតអេក្រង់"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"អ្នកនឹងឈប់ថត <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"បញ្ឈប់ការថតឬ?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"បច្ចុប្បន្ន អ្នកកំពុងថតអេក្រង់ទាំងមូលរបស់អ្នក"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"បច្ចុប្បន្ន អ្នកកំពុងថត <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ឈប់ថត"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"កំពុងបង្ហាញអេក្រង់"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"អ្នកនឹងឈប់ចែករំលែក <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"កំពុងបញ្ជូនអេក្រង់"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"អ្នកនឹងឈប់បញ្ជូន <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ឈប់បង្ហាញអេក្រង់ឬ?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"បច្ចុប្បន្ន អ្នកកំពុងបង្ហាញអេក្រង់ទាំងមូលរបស់អ្នកតាមរយៈ <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"បច្ចុប្បន្ន អ្នកកំពុងបង្ហាញអេក្រង់ទាំងមូលរបស់អ្នកតាមរយៈកម្មវិធីមួយ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"បច្ចុប្បន្ន អ្នកកំពុងបង្ហាញ<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"បច្ចុប្បន្ន អ្នកកំពុងបង្ហាញកម្មវិធីមួយ"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"ឈប់ចែករំលែក"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"កំពុងបញ្ជូនអេក្រង់"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"ឈប់បញ្ជូនឬ?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"បច្ចុប្បន្ន អ្នកកំពុងបញ្ជូនអេក្រង់ទាំងមូលរបស់អ្នកទៅ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"បច្ចុប្បន្ន អ្នកកំពុងបញ្ជូនអេក្រង់ទាំងមូលរបស់អ្នកទៅឧបករណ៍នៅជិត"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"បច្ចុប្បន្ន អ្នកកំពុងបញ្ជូន <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ទៅ <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"បច្ចុប្បន្ន អ្នកកំពុងបញ្ជូន <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ទៅឧបករណ៍នៅជិត"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"បច្ចុប្បន្ន អ្នកកំពុងបញ្ជូនទៅ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"បច្ចុប្បន្ន អ្នកកំពុងបញ្ជូនទៅឧបករណ៍នៅជិត"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"បញ្ឈប់ការបញ្ជូន"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"បិទ"</string>
<string name="issuerecord_title" msgid="286627115110121849">"កម្មវិធីកត់ត្រាបញ្ហា"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"កំពុងដំណើរការការកត់ត្រាបញ្ហា"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ការជូនដំណឹងដែលកំពុងបន្តសម្រាប់វគ្គប្រមូលបញ្ហា"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"មានបញ្ហាក្នុងការរក្សាទុកកំណត់ត្រាបញ្ហា"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"មានបញ្ហាក្នុងការចាប់ផ្ដើមកត់ត្រាបញ្ហា"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"កំពុងមើលពេញអេក្រង់"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ដើម្បីចេញ សូមអូសពីផ្នែកខាងលើនៃអេក្រង់របស់អ្នកចុះក្រោម"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"យល់ហើយ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ថយក្រោយ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"គេហទំព័រ"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"ធាតុរក្សាអេក្រង់"</string>
<string name="ethernet_label" msgid="2203544727007463351">"អ៊ីសឺរណិត"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"កុំរំខាន"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ប៊្លូធូស"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"មិនមានឧបករណ៍ផ្គូផ្គងដែលអាចប្រើបាន"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ចុចដើម្បីភ្ជាប់ ឬផ្ដាច់ឧបករណ៍"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"បានរក្សាទុក"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ផ្ដាច់"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"បើកដំណើរការ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"បើកនៅថ្ងៃស្អែកដោយស្វ័យប្រវត្តិ"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"មុខងារដូចជា Quick Share និង \"រកឧបករណ៍របស់ខ្ញុំ\" ប្រើប៊្លូធូស"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ប៊្លូធូសនឹងបើកនៅព្រឹកស្អែក"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ស្ដាប់សំឡេងរួមគ្នា"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ជ្រើសរើសធាតុក្រាហ្វិក"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ដកធាតុក្រាហ្វិកចេញ"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ដាក់ធាតុក្រាហ្វិកដែលបានជ្រើសរើស"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"ធាតុក្រាហ្វិកអេក្រង់ចាក់សោ"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"អ្នកគ្រប់គ្នាអាចមើលធាតុក្រាហ្វិកលើអេក្រង់ចាក់សោរបស់អ្នក ទោះបីជាថេប្លេតរបស់អ្នកត្រូវបានចាក់សោក៏ដោយ។"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ធាតុក្រាហ្វិកលើអេក្រង់ចាក់សោ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ដើម្បីបើកកម្មវិធីដោយប្រើធាតុក្រាហ្វិក អ្នកនឹងត្រូវផ្ទៀងផ្ទាត់ថាជាអ្នក។ ទន្ទឹមនឹងនេះ សូមចងចាំថា នរណាក៏អាចមើលធាតុក្រាហ្វិកបាន សូម្បីពេលថេប្លេតរបស់អ្នកជាប់សោក៏ដោយ។ ធាតុក្រាហ្វិកមួយចំនួនប្រហែលមិនត្រូវបានរចនាឡើងសម្រាប់អេក្រង់ចាក់សោរបស់អ្នកទេ និងមិនមានសុវត្ថិភាពឡើយ បើបញ្ចូលទៅទីនេះ។"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"យល់ហើយ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរអ្នកប្រើ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ម៉ឺនុយទាញចុះ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"កម្មវិធី និងទិន្នន័យទាំងអស់ក្នុងវគ្គនេះនឹងត្រូវលុប។"</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"លំនាំដើម"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ស្វ័យប្រវត្តិ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"គ្មានសំឡេង ឬការញ័រទេ"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"គ្មានសំឡេងឬការញ័រ និងបង្ហាញទាបជាងនៅក្នុងផ្នែកសន្ទនា"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"អាចរោទ៍ ឬញ័រ ដោយផ្អែកលើការកំណត់ឧបករណ៍"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"អាចរោទ៍ ឬញ័រ ដោយផ្អែកលើការកំណត់ឧបករណ៍។ ការសន្ទនាពីផ្ទាំងអណ្ដែត <xliff:g id="APP_NAME">%1$s</xliff:g> តាមលំនាំដើម។"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ឱ្យប្រព័ន្ធកំណត់ថាតើការជូនដំណឹងនេះគួរតែបន្លឺសំឡេង ឬញ័រ"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"មុខងារបំបែកអេក្រង់"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ធាតុចូល"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ផ្លូវកាត់កម្មវិធី"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ភាពងាយស្រួល"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"ផ្លូវកាត់ក្ដារចុច"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ផ្លូវកាត់ការស្វែងរក"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"រូបតំណាង \"បង្រួម\""</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"រូបតំណាង \"ពង្រីក\""</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ឬ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ចលនាថយក្រោយ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ចលនាទៅទំព័រដើម"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"គ្រាប់ចុចសកម្មភាព"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"រួចរាល់"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ធ្វើបានល្អ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ថយក្រោយ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ដើម្បីថយក្រោយ សូមអូសទៅឆ្វេង ឬស្ដាំដោយប្រើម្រាមដៃបីនៅកន្លែងណាមួយនៅលើផ្ទាំងប៉ះ។"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ផ្ទាំងប៉ះដែលបង្ហាញម្រាមដៃបីដែលផ្លាស់ទីទៅស្ដាំ និងឆ្វេង"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"កម្រិតទី %1$d នៃ %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ការគ្រប់គ្រងផ្ទះ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ចូលប្រើការគ្រប់គ្រងផ្ទះអ្នកបានលឿនជាធាតុរក្សាអេក្រង់"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-km/tiles_states_strings.xml b/packages/SystemUI/res/values-km/tiles_states_strings.xml
index 54790f6..25f7485 100644
--- a/packages/SystemUI/res/values-km/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-km/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"បិទ"</item>
<item msgid="4875147066469902392">"បើក"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"មិនមានទេ"</item>
<item msgid="5044688398303285224">"បិទ"</item>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 24f5bb5..4bf89e1 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ವೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ಸೇವ್ ಮಾಡುವಾಗ ದೋಷ ಎದುರಾಗಿದೆ"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ಪ್ರಾರಂಭಿಸುವಾಗ ದೋಷ ಕಂಡುಬಂದಿದೆ"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ಇದರಿಂದ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ನ ಕಂಟೆಂಟ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವುದು ನಿಂತುಹೋಗುತ್ತದೆ"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"ರೆಕಾರ್ಡ್ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಬೇಕೇ?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"ನೀವು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"ನೀವು ಪ್ರಸ್ತುತ <xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ರೆಕಾರ್ಡಿಂಗ್ ನಿಲ್ಲಿಸಿ"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"ಪರದೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತಿದೆ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"ಇದರಿಂದ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ನ ಕಂಟೆಂಟ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುವುದು ನಿಂತುಹೋಗುತ್ತದೆ"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"ಪರದೆಯನ್ನು ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"ಇದರಿಂದ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ನ ಕಂಟೆಂಟ್ ಅನ್ನು ಬಿತ್ತರಿಸುವುದು ನಿಂತುಹೋಗುತ್ತದೆ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ಸ್ಕ್ರೀನ್ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಬೇಕೆ?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"ನೀವು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> ನೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"ನೀವು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆ್ಯಪ್ನೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"ನೀವು ಪ್ರಸ್ತುತ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"ನೀವು ಪ್ರಸ್ತುತ ಆ್ಯಪ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಿ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"ಬಿತ್ತರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಬೇಕೆ?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"ನೀವು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಬಿತ್ತರಿಸುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"ನೀವು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಕ್ಕೆ ಬಿತ್ತರಿಸುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"ನೀವು ಪ್ರಸ್ತುತ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ಅನ್ನು <xliff:g id="DEVICE_NAME">%2$s</xliff:g> ಗೆ ಬಿತ್ತರಿಸುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"ನೀವು ಪ್ರಸ್ತುತ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ಅನ್ನು ಸಮೀಪದ ಸಾಧನಕ್ಕೆ ಬಿತ್ತರಿಸುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"ನೀವು ಪ್ರಸ್ತುತ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಗೆ ಬಿತ್ತರಿಸುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"ನೀವು ಪ್ರಸ್ತುತ ಸಮೀಪದ ಸಾಧನಕ್ಕೆ ಬಿತ್ತರಿಸುತ್ತಿದ್ದೀರಿ"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"ಬಿತ್ತರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ಮುಚ್ಚಿರಿ"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ಸಮಸ್ಯೆ ರೆಕಾರ್ಡರ್"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ಸಮಸ್ಯೆ ರೆಕಾರ್ಡಿಂಗ್ ಪ್ರಕ್ರಿಯೆ…"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ಸಮಸ್ಯೆ ಸಂಗ್ರಹಣೆಯ ಸೆಶನ್ಗಾಗಿ ಜರುಗುತ್ತಿರುವ ನೋಟಿಫಿಕೇಶನ್"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ಸಮಸ್ಯೆಯ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಸೇವ್ ಮಾಡುವಾಗ ದೋಷ ಎದುರಾಗಿದೆ"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ಸಮಸ್ಯೆಯ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವಲ್ಲಿ ದೋಷ ಎದುರಾಗಿದೆ"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ಪೂರ್ಣ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ವೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ನಿರ್ಗಮಿಸಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ಅರ್ಥವಾಯಿತು"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ಹಿಂದೆ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ಮುಖಪುಟ"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"ಸ್ಕ್ರೀನ್ ಸೇವರ್"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ಇಥರ್ನೆಟ್"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"ಆದ್ಯತೆಯ ಮೋಡ್ಗಳು"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ಬ್ಲೂಟೂತ್"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ಯಾವುದೇ ಜೋಡಿಸಲಾದ ಸಾಧನಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ಸಾಧನವನ್ನು ಕನೆಕ್ಟ್ ಅಥವಾ ಡಿಸ್ಕನೆಕ್ಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ಸೇವ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ಡಿಸ್ಕನೆಕ್ಟ್ ಮಾಡಿ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ನಾಳೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಮಾಡಿ"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ಕ್ವಿಕ್ ಶೇರ್ ಮತ್ತು Find My Device ನಂತಹ ಫೀಚರ್ಗಳು ಬ್ಲೂಟೂತ್ ಅನ್ನು ಬಳಸುತ್ತವೆ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ಬ್ಲೂಟೂತ್ ನಾಳೆ ಬೆಳಗ್ಗೆ ಆನ್ ಆಗುತ್ತದೆ"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ಆಡಿಯೋ ಹಂಚಿಕೊಳ್ಳಿ"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ವಿಜೆಟ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ವಿಜೆಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ಆಯ್ಕೆಮಾಡಿದ ವಿಜೆಟ್ ಅನ್ನು ಇರಿಸಿ"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"ಲಾಕ್ ಸ್ಕ್ರೀನ್ ವಿಜೆಟ್ಗಳು"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಲಾಕ್ ಆಗಿದ್ದರೂ ಸಹ ಯಾರಾದರೂ ನಿಮ್ಮ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ವಿಜೆಟ್ಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ಲಾಕ್ ಸ್ಕ್ರೀನ್ ವಿಜೆಟ್ಗಳು"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ವಿಜೆಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಆ್ಯಪ್ ತೆರೆಯಲು, ಇದು ನೀವೇ ಎಂದು ನೀವು ದೃಢೀಕರಿಸಬೇಕಾಗುತ್ತದೆ. ಅಲ್ಲದೆ, ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಲಾಕ್ ಆಗಿದ್ದರೂ ಸಹ ಯಾರಾದರೂ ಅವುಗಳನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ. ಕೆಲವು ವಿಜೆಟ್ಗಳು ನಿಮ್ಮ ಲಾಕ್ ಸ್ಕ್ರೀನ್ಗಾಗಿ ಉದ್ದೇಶಿಸದೇ ಇರಬಹುದು ಮತ್ತು ಇಲ್ಲಿ ಸೇರಿಸುವುದು ಸುರಕ್ಷಿತವಲ್ಲದಿರಬಹುದು."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ಅರ್ಥವಾಯಿತು"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ಪುಲ್ಡೌನ್ ಮೆನು"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ಈ ಸೆಶನ್ನಲ್ಲಿನ ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ಡೀಫಾಲ್ಟ್"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ಸ್ವಯಂಚಾಲಿತ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ಯಾವುದೇ ಧ್ವನಿ ಅಥವಾ ವೈಬ್ರೇಷನ್ ಆಗುವುದಿಲ್ಲ"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ಯಾವುದೇ ಧ್ವನಿ ಅಥವಾ ವೈಬ್ರೇಷನ್ ಆಗುವುದಿಲ್ಲ, ಸಂಭಾಷಣೆ ವಿಭಾಗದ ಕೆಳಭಾಗದಲ್ಲಿ ಗೋಚರಿಸುತ್ತದೆ"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಆಧರಿಸಿ ಸಾಧನ ರಿಂಗ್ ಅಥವಾ ವೈಬ್ರೇಟ್ ಆಗುತ್ತದೆ"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಆಧರಿಸಿ ಫೋನ್ ರಿಂಗ್ ಅಥವಾ ವೈಬ್ರೇಟ್ ಆಗುತ್ತದೆ. ಡಿಫಾಲ್ಟ್ ಆಗಿ, <xliff:g id="APP_NAME">%1$s</xliff:g> ಬಬಲ್ ಸಂಭಾಷಣೆಗಳು."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ಈ ಅಧಿಸೂಚನೆಯು ಶಬ್ದ ಮಾಡಬೇಕೇ ಅಥವಾ ವೈಬ್ರೇಟ್ ಮಾಡಬೇಕೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವ ಅವಕಾಶವನ್ನು ಸಿಸ್ಟಂಗೆ ನೀಡಿ"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ಇನ್ಪುಟ್"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ಆ್ಯಪ್ ಶಾರ್ಟ್ಕಟ್ಗಳು"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ಪ್ರಸ್ತುತ ಆ್ಯಪ್"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳು"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ಹುಡುಕಾಟದ ಶಾರ್ಟ್ಕಟ್ಗಳು"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ಕುಗ್ಗಿಸುವ ಐಕಾನ್"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ವಿಸ್ತೃತಗೊಳಿಸುವ ಐಕಾನ್"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ಅಥವಾ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ಹಿಂಬದಿ ಗೆಸ್ಚರ್"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ಹೋಮ್ ಗೆಸ್ಚರ್"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ಆ್ಯಕ್ಷನ್ ಕೀ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ಮುಗಿದಿದೆ"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ಭೇಷ್!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ಹಿಂತಿರುಗಿ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ಹಿಂತಿರುಗಲು, ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಎಲ್ಲಿಯಾದರೂ ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಎಡ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ಮೂರು ಬೆರಳುಗಳು ಬಲಕ್ಕೆ ಮತ್ತು ಎಡಕ್ಕೆ ಚಲಿಸುತ್ತಿರುವುದನ್ನು ತೋರಿಸುತ್ತಿರುವ ಟಚ್ಪ್ಯಾಡ್"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ರಲ್ಲಿ %1$d ಮಟ್ಟ"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ಮನೆ ನಿಯಂತ್ರಣಗಳು"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ಮನೆ ನಿಯಂತ್ರಣವನ್ನು ಸ್ಕ್ರೀನ್ಸೇವರ್ನಂತೆ ಬೇಗ ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"ರದ್ದುಗೊಳಿಸಿ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kn/tiles_states_strings.xml b/packages/SystemUI/res/values-kn/tiles_states_strings.xml
index c7cb2b1..b2a7523 100644
--- a/packages/SystemUI/res/values-kn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-kn/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"ಆಫ್"</item>
<item msgid="4875147066469902392">"ಆನ್"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"ಲಭ್ಯವಿಲ್ಲ"</item>
+ <item msgid="2004750556637773692">"ಆಫ್ ಆಗಿದೆ"</item>
+ <item msgid="8968530753931637871">"ಆನ್ ಆಗಿದೆ"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ಲಭ್ಯವಿಲ್ಲ"</item>
<item msgid="5044688398303285224">"ಆಫ್"</item>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 89acb42..7647486 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"탭하여 보기"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"화면 녹화 저장 중에 오류가 발생했습니다."</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"화면 녹화 시작 중 오류 발생"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> 녹화가 중단됩니다."</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"녹화 중지"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"화면 공유 중"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"화면 공유를 중지하시겠습니까?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> 공유가 중단됩니다."</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"화면 전송 중"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"공유 중지"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"화면 전송 중"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"전송을 중지할까요?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> 전송이 중단됩니다."</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"전송 중지"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"닫기"</string>
<string name="issuerecord_title" msgid="286627115110121849">"문제 녹화 도구"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"문제 녹화 처리 중"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"문제 수집 섹션에 대한 진행 중 알림"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"문제 녹화 저장 중에 오류가 발생했습니다."</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"문제 녹화 시작 중에 오류가 발생했습니다."</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"전체 화면 모드"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"종료하려면 화면 상단에서 아래로 스와이프합니다."</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"확인"</string>
<string name="accessibility_back" msgid="6530104400086152611">"뒤로"</string>
<string name="accessibility_home" msgid="5430449841237966217">"홈"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"화면 보호기"</string>
<string name="ethernet_label" msgid="2203544727007463351">"이더넷"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"방해 금지 모드"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"블루투스"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"페어링된 기기가 없습니다"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"기기를 연결 또는 연결 해제하려면 탭하세요"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"저장됨"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"연결 해제"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"실행"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"내일 자동으로 사용 설정"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share, 내 기기 찾기 등의 기능에서 블루투스를 사용합니다."</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"블루투스가 내일 아침에 켜집니다."</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"오디오 공유"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"위젯 선택"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"위젯 삭제"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"선택한 위젯 배치"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"잠금 화면 위젯"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"위젯을 사용하여 앱을 열려면 본인 인증을 해야 합니다. 또한 태블릿이 잠겨 있더라도 누구나 볼 수 있다는 점을 유의해야 합니다. 일부 위젯은 잠금 화면에 적합하지 않고 여기에 추가하기에 안전하지 않을 수 있습니다."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"확인"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"사용자 전환"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"풀다운 메뉴"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"기본값"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"자동"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"소리 또는 진동 없음"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"소리나 진동이 울리지 않으며 대화 섹션 하단에 표시됨"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"기기 설정에 따라 벨소리나 진동이 울릴 수 있음"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"기기 설정에 따라 벨소리나 진동이 울릴 수 있습니다. 기본적으로 <xliff:g id="APP_NAME">%1$s</xliff:g>의 대화는 대화창으로 표시됩니다."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"시스템에서 알림 시 소리 또는 진동을 사용할지 결정하도록 허용합니다."</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"화면 분할"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"입력"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"앱 바로가기"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"접근성"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"단축키"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"검색 바로가기"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"접기 아이콘"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"확장 아이콘"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"또는"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"뒤로 동작"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"홈 동작"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"작업 키"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"완료"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"아주 좋습니다."</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"뒤로"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"돌아가려면 세 손가락을 사용해 터치패드의 아무 곳이나 왼쪽 또는 오른쪽으로 스와이프합니다."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"터치패드에서 세 손가락을 좌우로 움직이는 모습"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d단계 중 %1$d단계"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"홈 컨트롤"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"화면 보호기로 홈 컨트롤에 빠르게 액세스하기"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ko/tiles_states_strings.xml b/packages/SystemUI/res/values-ko/tiles_states_strings.xml
index bc4740d..9116085 100644
--- a/packages/SystemUI/res/values-ko/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ko/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"꺼짐"</item>
<item msgid="4875147066469902392">"켜짐"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"이용 불가"</item>
<item msgid="5044688398303285224">"꺼짐"</item>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index db6816a..d1aa663 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Көрүү үчүн таптаңыз"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Экран тартылган жок"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Экранды жаздырууну баштоодо ката кетти"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосун жаздырууну токтотосуз"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Жаздырууну токтотосузбу?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Учурда бүтүндөй экраныңызды жаздырып жатасыз"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Учурда <xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун жаздырып жатасыз"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Жаздырууну токтотуу"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Экран бөлүшүлүүдө"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосун бөлүшүүнү токтотосуз"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Тышкы экранга чыгарылууда"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосун тышкы экранга чыгарууну токтотосуз"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Экранды бөлүшүү токтотулсунбу?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Учурда бүтүндөй экраныңызды <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> менен бөлүшүп жатасыз"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Учурда бүтүндөй экраныңызды колдонмо менен бөлүшүп жатасыз"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Учурда <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> колдонмосун бөлүшүп жатасыз"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Учурда колдонмону бөлүшүп жатасыз"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Бөлүшүүнү токтотуу"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Тышкы экранга чыгарылууда"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Тышкы экранга чыгаруу токтотулсунбу?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Учурда бүтүндөй экраныңызды <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүнө чыгарып жатасыз"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Учурда бүтүндөй экраныңызды жакын жердеги түзмөккө чыгарып жатасыз"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Учурда <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> контентин <xliff:g id="DEVICE_NAME">%2$s</xliff:g> түзмөгүнө чыгарып жатасыз"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> контентин жакын жердеги түзмөккө чыгарып жатасыз"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Учурда <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүнө чыгарып жатасыз"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Учурда жакын жердеги түзмөккө чыгарып жатасыз"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Тышкы экранга чыгарууну токтотуу"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Жабуу"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Маселе жаздыргыч"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Маселе жаздырылууда"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Маселе тууралуу маалымат чогултулуп жатканы жөнүндө учурдагы билдирме"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Жаздырылган маселе сакталган жок"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Башталбай койду"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Толук экран режимин көрүү"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Чыгуу үчүн экранды өйдө жагынан ылдый сүрүп коюңуз"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Түшүндүм"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Артка"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Үйгө"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Көшөгө"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Тынчымды алба"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Жупташкан түзмөктөр жок"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Түзмөктү туташтыруу же ажыратуу үчүн таптаңыз"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Сакталды"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ажыратуу"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"иштетүү"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Эртең автоматтык түрдө күйгүзүлсүн"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Bluetooth Тез бөлүшүү жана Түзмөгүм кайда? сыяктуу функцияларда колдонулат"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth эртең таңда күйөт"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Чогуу угуу"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"виджет тандоо"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"виджетти алып салуу"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"тандалган виджетти жайгаштыруу"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Кулпуланган экрандагы виджеттер"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Планшетиңиз кулпуланган болсо да, кулпуланган экраныңыздан виджеттерди бардыгы көрө алат."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Кулпуланган экрандагы виджеттер"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Колдонмону виджет аркылуу ачуу үчүн бул сиз экениңизди ырасташыңыз керек. Аларды планшетиңиз кулпуланып турса да, баары көрө аларын эске алыңыз. Айрым виджеттер кулпуланган экранда колдонууга арналган эмес жана аларды бул жерге кошуу кооптуу болушу мүмкүн."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Түшүндүм"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Колдонуучуну которуу"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ылдый түшүүчү меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Бул сеанстагы бардык колдонмолор жана аларга байланыштуу нерселер өчүрүлөт."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Демейки"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автоматтык"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Үнү чыкпайт жана дирилдебейт"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Үнү чыкпайт же дирилдебейт жана сүйлөшүүлөр тизмесинин ылдый жагында көрүнөт"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Түзмөктүн параметрлерине жараша шыңгырап же дирилдеши мүмкүн"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Түзмөктүн параметрлерине жараша шыңгырап же дирилдеши мүмкүн. <xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосундагы сүйлөшүүлөр демейки шартта калкып чыкма билдирмелер болуп көрүнөт."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Билдирменин үнүн чыгартууну же басууну системага тапшырыңыз"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Өчүрүү"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Башкы бет"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Бүтүрүү"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Экранды бөлүү"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Киргизүү"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Колдонмодогу кыска жолдор"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Атайын мүмкүнчүлүктөр"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Ыкчам баскычтар"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Ыкчам баскычтарды издөө"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Жыйыштыруу сүрөтчөсү"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Жайып көрсөтүү сүрөтчөсү"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"же"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Артка кайтуу жаңсоосу"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Башкы бетке өтүү жаңсоосу"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Аракет баскычы"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Бүттү"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Азаматсыз!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Артка кайтуу"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Кайтуу үчүн сенсордук тактанын каалаган жерин үч манжаңыз менен солго же оңго сүрүңүз."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Үч манжанын оңго жана солго жылып жатканы көрсөтүлгөн сенсордук такта"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ичинен %1$d-деңгээл"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Үйдөгү түзмөктөрдү тескөө"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Үйдөгү түзмөктөрдү көшөгөдөн ыкчам тескеңиз"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ky/tiles_states_strings.xml b/packages/SystemUI/res/values-ky/tiles_states_strings.xml
index 694967e..d92f787 100644
--- a/packages/SystemUI/res/values-ky/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ky/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Өчүк"</item>
<item msgid="4875147066469902392">"Күйүк"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Жеткиликсиз"</item>
<item msgid="5044688398303285224">"Өчүк"</item>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 7652e4b..5abef94 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ແຕະເພື່ອເບິ່ງ"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ເກີດຂໍ້ຜິດພາດໃນການບັນທຶກໜ້າຈໍ"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ເກີດຄວາມຜິດພາດໃນການບັນທຶກໜ້າຈໍ"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ທ່ານຈະຢຸດການບັນທຶກ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"ຢຸດການບັນທຶກບໍ?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"ທ່ານກຳລັງບັນທຶກທັງໝົດໜ້າຈໍຂອງທ່ານ"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"ທ່ານກຳລັງບັນທຶກ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ຢຸດການບັນທຶກ"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"ກຳລັງແບ່ງປັນໜ້າຈໍ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"ທ່ານຈະຢຸດການແບ່ງປັນ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"ກຳລັງສົ່ງສັນຍານໜ້າຈໍ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"ທ່ານຈະຢຸດການສົ່ງສັນຍານ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ຢຸດການແບ່ງປັນໜ້າຈໍບໍ?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"ທ່ານກຳລັງແບ່ງປັນທັງໝົດໜ້າຈໍຂອງທ່ານກັບ <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"ທ່ານກຳລັງແບ່ງປັນທັງໝົດໜ້າຈໍຂອງທ່ານກັບແອັບ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"ທ່ານກຳລັງແບ່ງປັນ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"ທ່ານກຳລັງແບ່ງປັນແອັບ"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"ຢຸດການແບ່ງປັນ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"ກຳລັງສົ່ງສັນຍານໜ້າຈໍ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"ຢຸດການສົ່ງສັນຍານບໍ?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"ທ່ານກຳລັງສົ່ງສັນຍານທັງໝົດໜ້າຈໍຂອງທ່ານໄປຫາ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"ທ່ານກຳລັງສົ່ງສັນຍານທັງໝົດໜ້າຈໍຂອງທ່ານໄປຫາອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"ທ່ານກຳລັງສົ່ງສັນຍານ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ໄປຫາ <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"ທ່ານກຳລັງສົ່ງສັນຍານ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ໄປຫາອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"ທ່ານກຳລັງສົ່ງສັນຍານໄປຫາ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"ທ່ານກຳລັງສົ່ງສັນຍານໄປຫາອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"ຢຸດການສົ່ງສັນຍານ"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ປິດ"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ຕົວບັນທຶກບັນຫາ"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ກຳລັງປະມວນຜົນການບັນທຶກບັນຫາ"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ການແຈ້ງເຕືອນທີ່ດຳເນີນຢູ່ສຳລັບເຊດຊັນການຮວບຮວມບັນຫາ"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ເກີດຂໍ້ຜິດພາດໃນການບັນທຶກບັນຫາ"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ເກີດຂໍ້ຜິດພາດໃນການເລີ່ມຕົ້ນການບັນທຶກບັນຫາ"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ກຳລັງເບິ່ງເຕັມຈໍ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ເພື່ອອອກ, ໃຫ້ປັດລົງຈາກເທິງສຸດຂອງໜ້າຈໍຂອງທ່ານ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ເຂົ້າໃຈແລ້ວ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ກັບຄືນ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ໜ້າທຳອິດ"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"ພາບພັກໜ້າຈໍ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ຫ້າມລົບກວນ"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ບໍ່ມີອຸປະກອນທີ່ສາມາດຈັບຄູ່ໄດ້"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ແຕະເພື່ອເຊື່ອມຕໍ່ ຫຼື ຕັດການເຊື່ອມຕໍ່ອຸປະກອນ"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ບັນທຶກແລ້ວ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ຕັດການເຊື່ອມຕໍ່"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ເປີດນຳໃຊ້"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ເປີດໂດຍອັດຕະໂນມັດໃນມື້ອື່ນ"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ຄຸນສົມບັດຕ່າງໆໃຊ້ Bluetooth ເຊັ່ນ: ການແຊຣ໌ດ່ວນ ແລະ ຊອກຫາອຸປະກອນຂອງຂ້ອຍ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ຈະເປີດມື້ອື່ນເຊົ້າ"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ແບ່ງປັນສຽງ"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ເລືອກວິດເຈັດ"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ລຶບວິດເຈັດອອກ"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ວາງວິດເຈັດທີ່ເລືອກ"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"ວິດເຈັດໃນໜ້າຈໍລັອກ"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"ທຸກຄົນສາມາດເບິ່ງວິດເຈັດຢູ່ໜ້າຈໍລັອກຂອງທ່ານໄດ້, ເຖິງແມ່ນວ່າແທັບເລັດຂອງທ່ານຈະລັອກຢູ່ກໍຕາມ."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ວິດເຈັດໃນໜ້າຈໍລັອກ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ເພື່ອເປີດແອັບໂດຍໃຊ້ວິດເຈັດ, ທ່ານຈະຕ້ອງຢັ້ງຢືນວ່າແມ່ນທ່ານ. ນອກຈາກນັ້ນ, ກະລຸນາຮັບຊາບວ່າທຸກຄົນສາມາດເບິ່ງຂໍ້ມູນດັ່ງກ່າວໄດ້, ເຖິງແມ່ນວ່າແທັບເລັດຂອງທ່ານຈະລັອກຢູ່ກໍຕາມ. ວິດເຈັດບາງຢ່າງອາດບໍ່ໄດ້ມີໄວ້ສຳລັບໜ້າຈໍລັອກຂອງທ່ານ ແລະ ອາດບໍ່ປອດໄພທີ່ຈະເພີ່ມໃສ່ບ່ອນນີ້."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ເຂົ້າໃຈແລ້ວ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ສະຫຼັບຜູ້ໃຊ້"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ເມນູແບບດຶງລົງ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ແອັບຯແລະຂໍ້ມູນທັງໝົດໃນເຊດຊັນນີ້ຈະຖືກລຶບອອກ."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ຄ່າເລີ່ມຕົ້ນ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ອັດຕະໂນມັດ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ບໍ່ມີສຽງ ຫຼື ການສັ່ນເຕືອນ"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ບໍ່ມີສຽງ ຫຼື ການສັ່ນເຕືອນ ແລະ ປາກົດຢູ່ທາງລຸ່ມຂອງພາກສ່ວນການສົນທະນາ"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ອາດສົ່ງສຽງ ຫຼື ສັ່ນເຕືອນໂດຍອ້າງອີງຈາກການຕັ້ງຄ່າອຸປະກອນ"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ອາດສົ່ງສຽງ ຫຼື ສັ່ນເຕືອນໂດຍອ້າງອີງຈາກການຕັ້ງຄ່າອຸປະກອນ. ການສົນທະນາຈາກ <xliff:g id="APP_NAME">%1$s</xliff:g> ຈະເປັນ bubble ຕາມຄ່າເລີ່ມຕົ້ນ."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ໃຫ້ລະບົບກຳນົດວ່າການແຈ້ງເຕືອນນິ້ຄວນມີສຽງ ຫຼື ສັ່ນເຕືອນຫຼືບໍ່"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"ແບ່ງໜ້າຈໍ"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ອິນພຸດ"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ທາງລັດແອັບ"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ການຊ່ວຍເຂົ້າເຖິງ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"ຄີລັດ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ທາງລັດການຊອກຫາ"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ໄອຄອນຫຍໍ້ລົງ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ໄອຄອນຂະຫຍາຍ"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ຫຼື"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ທ່າທາງສຳລັບກັບຄືນ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ທ່າທາງສຳລັບໜ້າຫຼັກ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ປຸ່ມຄຳສັ່ງ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ແລ້ວໆ"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ດີຫຼາຍ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ກັບຄືນ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ເພື່ອກັບຄືນ, ໃຫ້ໃຊ້ 3 ນິ້ວປັດຊ້າຍ ຫຼື ຂວາບ່ອນໃດກໍໄດ້ເທິງແຜ່ນສໍາຜັດ."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ແຜ່ນສໍາຜັດສະແດງພາບ 3 ນິ້ວເລື່ອນໄປທາງຂວາ ແລະ ຊ້າຍ"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"ລະດັບທີ %1$d ຈາກ %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ການຄວບຄຸມເຮືອນ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ເຂົ້າເຖິງການຄວບຄຸມເຮືອນຂອງທ່ານໄດ້ຢ່າງວ່ອງໄວຢູ່ພາບພັກໜ້າຈໍ"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lo/tiles_states_strings.xml b/packages/SystemUI/res/values-lo/tiles_states_strings.xml
index 9386e00..f33514a 100644
--- a/packages/SystemUI/res/values-lo/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lo/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ປິດ"</item>
<item msgid="4875147066469902392">"ເປີດ"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ບໍ່ສາມາດໃຊ້ໄດ້"</item>
<item msgid="5044688398303285224">"ປິດ"</item>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 2787a84..a395f2d 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Palieskite, kad peržiūrėtumėte"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Išsaugant ekrano įrašą įvyko klaida"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Pradedant ekrano vaizdo įrašymą iškilo problema"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Programos (<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>) turinio įrašymas bus sustabdytas."</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Sustabdyti įrašymą"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Bendrinamas ekranas"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Nebebendrinti ekrano?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Programos (<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>) turinio bendrinimas bus sustabdytas."</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Perduodamas ekranas"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Nebebendrinti"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Perduodamas ekranas"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Sustabdyti perdavimą?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Programos (<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>) turinio perdavimas bus sustabdytas."</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Sustabdyti perdavimą"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Uždaryti"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problemų įrašytuvas"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Apdorojamas problemos įrašas"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Šiuo metu rodomas problemos duomenų rinkimo seanso pranešimas"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Išsaugant problemos įrašą įvyko klaida"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Pradedant problemos įrašą įvyko klaida"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Peržiūrima viso ekrano režimu"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Jei norite išeiti, perbraukite žemyn nuo ekrano viršaus"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Supratau"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Atgal"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Pagrindinis"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Ekrano užsklanda"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Eternetas"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Netrukdymo režimas"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nėra pasiekiamų susietų įrenginių"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Palieskite, kad prijungtumėte ar atjungtumėte įrenginį"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Išsaugota"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"atjungti"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"suaktyvinti"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatiškai įjungti rytoj"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Tokioms funkcijoms kaip „Spartusis bendrinimas“ ir „Rasti įrenginį“ naudojamas „Bluetooth“ ryšys"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"„Bluetooth“ ryšys bus įjungtas rytoj ryte"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Bendrinti garsą"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"pasirinkite valdiklį"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"pašalinti valdiklį"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"padėti pasirinktą valdiklį"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Užrakinimo ekrano valdikliai"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Kad galėtumėte atidaryti programą naudodami valdiklį, turėsite patvirtinti savo tapatybę. Be to, atminkite, kad bet kas gali peržiūrėti valdiklius net tada, kai planšetinis kompiuteris užrakintas. Kai kurie valdikliai gali būti neskirti jūsų užrakinimo ekranui ir gali būti nesaugu juos čia pridėti."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Supratau"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Perjungti naudotoją"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"išplečiamasis meniu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bus ištrintos visos šios sesijos programos ir duomenys."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Numatytasis"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatinis"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Neskamba ir nevibruoja"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Neskamba, nevibruoja ir rodoma apatinėje pokalbių skilties dalyje"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Gali skambėti arba vibruoti, atsižvelgiant į įrenginio nustatymus"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Gali skambėti arba vibruoti, atsižvelgiant į įrenginio nustatymus. Pokalbiai iš „<xliff:g id="APP_NAME">%1$s</xliff:g>“ debesėlio pagal numatytuosius nustatymus."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Nustatykite, kad sistema aptiktų, ar šis pranešimas turi skambėti, ar vibruoti"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Ankstesnis puslapis"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Tolesnis puslapis"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Ištrinti"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Pagrindinis"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Baigti"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Įterpti"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Išskaidyto ekrano režimas"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Įvestis"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Programos šaukiniai"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pritaikomumas"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Spartieji klavišai"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Paieškos šaukiniai"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Sutraukimo piktograma"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Išskleidimo piktograma"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"arba"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Grįžimo atgal gestas"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Pagrindinio ekrano gestas"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Veiksmų klavišas"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Atlikta"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Puiku!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Grįžti"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Jei norite grįžti, trimis pirštais perbraukite kairėn arba dešinėn bet kurioje jutiklinės dalies vietoje."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Jutiklinė dalis, kurioje rodomi trys dešinėn ir kairėn judantys pirštai"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d lygis iš %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Namų sistemos valdymas"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Pasiekite namų sistemos valdymą ekrano užsklandoje"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lt/tiles_states_strings.xml b/packages/SystemUI/res/values-lt/tiles_states_strings.xml
index c975e7e..30584f7 100644
--- a/packages/SystemUI/res/values-lt/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lt/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Išjungta"</item>
<item msgid="4875147066469902392">"Įjungta"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nepasiekiama"</item>
<item msgid="5044688398303285224">"Išjungta"</item>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 76d943f..3f54b4e 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Pieskarieties, lai skatītu"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Saglabājot ekrāna ierakstu, radās kļūda."</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Sākot ierakstīt ekrāna saturu, radās kļūda."</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Tiks pārtraukta lietotnes <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> satura ierakstīšana"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Apturēt ierakstīšanu"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Notiek ekrāna kopīgošana"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Vai apturēt ekrāna kopīgošanu?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Tiks pārtraukta lietotnes <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> satura kopīgošana"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Notiek ekrāna apraide"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Apturēt kopīgošanu"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Notiek ekrāna apraide"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Vai pārtraukt apraidi?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Tiks pārtraukta lietotnes <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> satura apraide"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Apturēt apraidi"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Aizvērt"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problēmu ierakstītājs"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Apstrādā problēmas ierakstu"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Aktīvs paziņojums par problēmu vākšanas sesiju"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Saglabājot problēmas ierakstu, radās kļūda."</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Sākot problēmas ierakstīšanu, radās kļūda."</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Skatīšanās pilnekrāna režīmā"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Lai izietu, velciet lejup no ekrāna augšdaļas."</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Labi"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Atpakaļ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Sākums"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Ekrānsaudzētājs"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Tīkls Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Režīms “Netraucēt”"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nav pieejama neviena pārī savienota ierīce."</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Lai pievienotu vai atvienotu kādu ierīci, pieskarieties."</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Saglabāta"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"atvienot"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivizēt"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automātiski ieslēgt rīt"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Tādas funkcijas kā “Ātrā kopīgošana” un “Atrast ierīci” izmanto Bluetooth savienojumu"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth savienojums tiks ieslēgts rīt no rīta"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Kopīgot audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"atlasīt logrīku"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"noņemt logrīku"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"novietot atlasīto logrīku"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Bloķēšanas ekrāna logrīki"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Lai atvērtu lietotni, izmantojot logrīku, jums būs jāapstiprina sava identitāte. Turklāt ņemiet vērā, ka ikviens var skatīt logrīkus, pat ja planšetdators ir bloķēts. Iespējams, daži logrīki nav paredzēti izmantošanai bloķēšanas ekrānā, un var nebūt droši tos šeit pievienot."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Labi"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mainīt lietotāju"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"novelkamā izvēlne"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tiks dzēstas visas šīs sesijas lietotnes un dati."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Noklusējums"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automātiski"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Nav skaņas signāla vai vibrācijas"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nav skaņas signāla vai vibrācijas, kā arī atrodas tālāk sarunu sadaļā"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Atkarībā no iestatījumiem var zvanīt vai vibrēt"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Atkarībā no ierīces iestatījumiem var zvanīt vai vibrēt. Sarunas no lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> pēc noklusējuma tiek parādītas burbulī."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Iestatiet, lai sistēma noteiktu, vai šim paziņojumam būs skaņa vai vibrācija"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Lapa uz augšu"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Lapa uz leju"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Dzēšanas taustiņš"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Sākumvietas taustiņš"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Beigvietas taustiņš"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Ievietošanas taustiņš"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ekrāna sadalīšana"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ievade"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Lietotņu saīsnes"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pieejamība"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Īsinājumtaustiņi"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Meklēšanas saīsnes"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Sakļaušanas ikona"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Izvēršanas ikona"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"vai"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Žests pāriešanai atpakaļ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Žests pāriešanai uz sākumu"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Darbību taustiņš"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gatavs"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Lieliski!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atpakaļ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Lai pārietu atpakaļ, ar trim pirkstiem velciet pa kreisi vai pa labi jebkurā vietā uz skārienpaliktņa"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Attēls ar skārienpaliktni, uz kura trīs pirksti kustas pa labi un pa kreisi"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Līmenis numur %1$d, kopā ir %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Mājas kontrolierīces"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Ātra piekļuve mājas kontrolierīcēm ekrānsaudzētājā"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lv/tiles_states_strings.xml b/packages/SystemUI/res/values-lv/tiles_states_strings.xml
index c65a1d4..8d23ef1 100644
--- a/packages/SystemUI/res/values-lv/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-lv/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Izslēgts"</item>
<item msgid="4875147066469902392">"Ieslēgts"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nav pieejams"</item>
<item msgid="5044688398303285224">"Izslēgts"</item>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 2d27181..6eaf8b9 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Допрете за прегледување"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Грешка при зачувувањето на снимката од екранот"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Грешка при почетокот на снимањето на екранот"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Ќе го сопрете снимањето на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Сопри го снимањето"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Се споделува екранот"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Да се сопре споделувањето на екранот?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Ќе го сопрете споделувањето на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Се емитува екранот"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Сопри го споделувањето"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Се емитува екранот"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Да се сопре емитувањето?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Ќе го сопрете емитувањето на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Сопри го емитувањето"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Затвори"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Проблем со „Диктафон“"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Се обработува проб. со снимање"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Тековно известување за сесија за проблем со прибирање"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Грешка при зачувување на проблемот со снимање"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Грешка при започнување на проблемот со снимање"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Се прикажува на цел екран"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"За да излезете, повлечете надолу од горниот дел на екранот"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Сфатив"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Назад"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Почетна страница"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Штедач на екран"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Етернет"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Не вознемирувај"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Нема достапни спарени уреди"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Допрете за да воспоставите или да прекинете врска со уред"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Зачувано"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"прекини врска"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активирај"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Автоматски вклучи го утре"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Функциите како „Брзо споделување“ и „Најди го мојот уред“ користат Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ќе се вклучи утре наутро"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Споделувај аудио"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"изберете виџет"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"отстранете го виџетот"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"поставете го избраниот виџет"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Виџети на заклучен екран"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"За да отворите апликација со помош на виџет, ќе треба да потврдите дека сте вие. Покрај тоа, имајте предвид дека секој може да ги гледа виџетите, дури и кога вашиот таблет е заклучен. Некои виџети можеби не се наменети за вашиот заклучен екран, па можеби не е безбедно да се додадат овде."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Сфатив"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Промени го корисникот"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"паѓачко мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Сите апликации и податоци во сесијава ќе се избришат."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Стандардно"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автоматски"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звук или вибрации"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звук или вибрации и се појавува подолу во делот со разговори"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Може да ѕвони или да вибрира во зависност од поставките за уредот"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Може да ѕвони или да вибрира во зависност од поставките за уредот. Стандардно, разговорите од <xliff:g id="APP_NAME">%1$s</xliff:g> се во балончиња."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Дозволете системот да определи дали известувањево треба да испушти звук или да вибрира"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Страница нагоре"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Страница надолу"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Избриши"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home-копче"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Крај"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Вметни"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Поделен екран"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Внесување"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Кратенки за апликации"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Пристапност"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Кратенки од тастатура"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Кратенки за пребарување"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за собирање"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Икона за проширување"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"или"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Движење за назад"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Движење за почетен екран"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Копче за дејство"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Одлично сторено!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"За да се вратите назад, повлечете налево или надесно со три прста каде било на допирната подлога."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Допирната подлога покажува три прста што се движат десно и лево"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Ниво %1$d од %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Контроли за домот"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Контролите за домот како штедач на екран"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-mk/tiles_states_strings.xml b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
index a8d9695..08cdc09 100644
--- a/packages/SystemUI/res/values-mk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mk/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Исклучено"</item>
<item msgid="4875147066469902392">"Вклучено"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Недостапно"</item>
<item msgid="5044688398303285224">"Исклучено"</item>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 3c99184..5877d2b 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"കാണാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"സ്ക്രീൻ റെക്കോർഡിംഗ് സംരക്ഷിക്കുന്നതിൽ പിശക്"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"സ്ക്രീൻ റെക്കോർഡിംഗ് ആരംഭിക്കുന്നതിൽ പിശക്"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> റെക്കോർഡ് ചെയ്യുന്നത് നിങ്ങൾ അവസാനിപ്പിക്കും"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"റെക്കോർഡിംഗ് നിർത്തണോ?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"നിങ്ങൾ ഇപ്പോൾ മുഴുവൻ സ്ക്രീനും റെക്കോർഡ് ചെയ്യുകയാണ്"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"നിങ്ങൾ ഇപ്പോൾ <xliff:g id="APP_NAME">%1$s</xliff:g> റെക്കോർഡ് ചെയ്യുകയാണ്"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"റെക്കോർഡിംഗ് നിർത്തുക"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"സ്ക്രീൻ പങ്കിടുന്നു"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> പങ്കിടുന്നത് നിങ്ങൾ അവസാനിപ്പിക്കും"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"സ്ക്രീൻ കാസ്റ്റ് ചെയ്യുന്നു"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> കാസ്റ്റ് ചെയ്യുന്നത് നിങ്ങൾ അവസാനിപ്പിക്കും"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"സ്ക്രീൻ പങ്കിടുന്നത് നിർത്തണോ?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"നിങ്ങൾ ഇപ്പോൾ മുഴുവൻ സ്ക്രീനും <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> എന്നതുമായി പങ്കിടുകയാണ്"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"നിങ്ങൾ ഇപ്പോൾ മുഴുവൻ സ്ക്രീനും ഒരു ആപ്പുമായി പങ്കിടുകയാണ്"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"നിങ്ങൾ ഇപ്പോൾ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> പങ്കിടുകയാണ്"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"നിങ്ങൾ നിലവിൽ ഒരു ആപ്പ് പങ്കിടുകയാണ്"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"പങ്കിടൽ നിർത്തുക"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"സ്ക്രീൻ കാസ്റ്റ് ചെയ്യുന്നു"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"കാസ്റ്റ് ചെയ്യുന്നത് അവസാനിപ്പിക്കണോ?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതിലേക്ക് നിങ്ങളുടെ മുഴുവൻ സ്ക്രീനും ഇപ്പോൾ കാസ്റ്റ് ചെയ്യുകയാണ്"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"സമീപമുള്ള ഉപകരണത്തിലേക്ക് നിങ്ങളുടെ മുഴുവൻ സ്ക്രീനും ഇപ്പോൾ കാസ്റ്റ് ചെയ്യുകയാണ്"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"<xliff:g id="DEVICE_NAME">%2$s</xliff:g> എന്നതിലേക്ക് നിങ്ങൾ ഇപ്പോൾ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> കാസ്റ്റ് ചെയ്യുകയാണ്"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"സമീപമുള്ള ഉപകരണത്തിലേക്ക് നിങ്ങൾ ഇപ്പോൾ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> കാസ്റ്റ് ചെയ്യുകയാണ്"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതിലേക്ക് നിങ്ങൾ ഇപ്പോൾ കാസ്റ്റ് ചെയ്യുകയാണ്"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"സമീപമുള്ള ഉപകരണത്തിലേക്ക് നിങ്ങൾ ഇപ്പോൾ കാസ്റ്റ് ചെയ്യുകയാണ്"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"കാസ്റ്റ് ചെയ്യുന്നത് നിർത്തുക"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"അടയ്ക്കുക"</string>
<string name="issuerecord_title" msgid="286627115110121849">"പ്രശ്ന റെക്കോർഡർ"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"പ്രശ്ന റെക്കോർഡിംഗ് പ്രോസസ് ചെയ്യുന്നു"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ഒരു പ്രശ്ന ശേഖരണ സെഷന്റെ ഓൺഗോയിംഗ് അറിയിപ്പ്"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"പ്രശ്ന റെക്കോർഡിംഗ് സംരക്ഷിക്കുന്നതിൽ പിശക്"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"പ്രശ്ന റെക്കോർഡിംഗ് ആരംഭിക്കുന്നതിൽ പിശക്"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"പൂർണ്ണ സ്ക്രീനിൽ കാണുന്നു"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"പുറത്ത് കടക്കാൻ, സ്ക്രീനിന്റെ മുകളിൽ നിന്ന് താഴോട്ട് സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"മനസ്സിലായി"</string>
<string name="accessibility_back" msgid="6530104400086152611">"മടങ്ങുക"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ഹോം"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"സ്ക്രീൻ സേവർ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ഇതർനെറ്റ്"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ശല്യപ്പെടുത്തരുത്"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ജോടിയാക്കിയ ഉപകരണങ്ങളൊന്നും ലഭ്യമല്ല"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ഒരു ഉപകരണം കണക്റ്റ് ചെയ്യാനോ വിച്ഛേദിക്കാനോ ടാപ്പ് ചെയ്യുക"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"സംരക്ഷിച്ചു"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"വിച്ഛേദിക്കുക"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"സജീവമാക്കുക"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"നാളെ സ്വയമേവ ഓണാക്കുക"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ക്വിക്ക് ഷെയർ, Find My Device പോലുള്ള ഫീച്ചറുകൾ Bluetooth ഉപയോഗിക്കുന്നു"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth നാളെ രാവിലെ ഓണാകും"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ഓഡിയോ പങ്കിടുക"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"വിജറ്റ് തിരഞ്ഞെടുക്കുക"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"വിജറ്റ് നീക്കം ചെയ്യുക"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"തിരഞ്ഞെടുത്ത വിജറ്റ് നൽകുക"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"ലോക്ക് സ്ക്രീൻ വിജറ്റുകൾ"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"ടാബ്ലെറ്റ് ലോക്കാണെങ്കിൽ പോലും ലോക്ക് സ്ക്രീനിൽ ആർക്കും വിജറ്റുകൾ കാണാം."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ലോക്ക് സ്ക്രീൻ വിജറ്റുകൾ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"വിജറ്റ് ഉപയോഗിച്ച് ഒരു ആപ്പ് തുറക്കാൻ, ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കേണ്ടതുണ്ട്. നിങ്ങളുടെ ടാബ്ലെറ്റ് ലോക്കായിരിക്കുമ്പോഴും എല്ലാവർക്കും അത് കാണാനാകുമെന്നതും ഓർക്കുക. ചില വിജറ്റുകൾ നിങ്ങളുടെ ലോക്ക് സ്ക്രീനിന് ഉള്ളതായിരിക്കില്ല, അവ ഇവിടെ ചേർക്കുന്നത് സുരക്ഷിതവുമായിരിക്കില്ല."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"മനസ്സിലായി"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ഉപയോക്താവ് മാറുക"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"പുൾഡൗൺ മെനു"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ഈ സെഷനിലെ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കും."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ഡിഫോൾട്ട്"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"സ്വയമേവ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ശബ്ദമോ വൈബ്രേഷനോ ഇല്ല"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ശബ്ദമോ വൈബ്രേഷനോ ഇല്ല, സംഭാഷണ വിഭാഗത്തിന് താഴെയായി ദൃശ്യമാകും"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ഉപകരണ ക്രമീകരണം അടിസ്ഥാനമാക്കി റിംഗ് ചെയ്യും അല്ലെങ്കിൽ വൈബ്രേറ്റ് ചെയ്യും"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ഉപകരണ ക്രമീകരണം അടിസ്ഥാനമാക്കി റിംഗ് ചെയ്യും അല്ലെങ്കിൽ വൈബ്രേറ്റ് ചെയ്യും. <xliff:g id="APP_NAME">%1$s</xliff:g> എന്ന ആപ്പിൽ നിന്നുള്ള സംഭാഷണങ്ങൾ ഡിഫോൾട്ടായി ബബിൾ ചെയ്യുന്നു."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ഈ അറിയിപ്പ് വരുമ്പോൾ ശബ്ദിക്കുകയാണോ വൈബ്രേറ്റ് ചെയ്യുകയാണോ വേണ്ടതെന്ന് നിർണ്ണയിക്കാൻ സിസ്റ്റത്തെ അനുവദിക്കുക"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"പേജ് അപ്പ്"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"പേജ് ഡൗൺ"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"ഡിലീറ്റ്"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"ഹോം"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"എൻഡ്"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"ഇൻസേർട്ട്"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"സ്ക്രീൻ വിഭജന മോഡ്"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ഇൻപുട്ട്"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ആപ്പ് കുറുക്കുവഴികൾ"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"നിലവിലെ ആപ്പ്"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ഉപയോഗസഹായി"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"കീബോഡ് കുറുക്കുവഴികൾ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"തിരയൽ കുറുക്കുവഴികൾ"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ചുരുക്കൽ ഐക്കൺ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"വികസിപ്പിക്കൽ ഐക്കൺ"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"അല്ലെങ്കിൽ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"\'മടങ്ങുക\' ജെസ്ച്ചർ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ഹോം ജെസ്ച്ചർ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ആക്ഷൻ കീ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"പൂർത്തിയായി"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"കൊള്ളാം!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"മടങ്ങുക"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"തിരികെ പോകാൻ, ടച്ച്പാഡിൽ എവിടെയെങ്കിലും മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് ഇടത്തേക്കോ വലത്തേക്കോ സ്വൈപ്പ് ചെയ്യുക."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"വലത്തേക്കും ഇടത്തേക്കും ചലിക്കുന്ന മൂന്ന് വിരലുകൾ കാണിക്കുന്ന ടച്ച്പാഡ്"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-ൽ %1$d-ാമത്തെ ലെവൽ"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ഹോം കൺട്രോളുകൾ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"സ്ക്രീൻസേവറായി ഹോം കൺട്രോളുകൾ പെട്ടെന്ന് ആക്സസ് ചെയ്യൂ"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ml/tiles_states_strings.xml b/packages/SystemUI/res/values-ml/tiles_states_strings.xml
index 609fdde..5999e3cf 100644
--- a/packages/SystemUI/res/values-ml/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ml/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ഓഫാണ്"</item>
<item msgid="4875147066469902392">"ഓണാണ്"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ലഭ്യമല്ല"</item>
<item msgid="5044688398303285224">"ഓഫാണ്"</item>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 2f4adf6..2e0115f 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Харахын тулд товшино уу"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Дэлгэцийн бичлэгийг хадгалахад алдаа гарлаа"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Дэлгэцийн бичлэгийг эхлүүлэхэд алдаа гарлаа"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Та <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г бичихээ болино"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Бичихийг зогсоох"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Дэлгэцийг хуваалцаж байна"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Дэлгэцийг хуваалцахыг зогсоох уу?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Та <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г хуваалцахаа болино"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Дэлгэцийг дамжуулж байна"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Хуваалцахыг зогсоох"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Дэлгэцийг дамжуулж байна"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Дамжуулахaa болих уу?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Та <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-г дамжуулахаа болино"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Дамжуулахыг зогсоох"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Хаах"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Асуудал бичигч"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Асуудлын бичлэгийг боловсруулж байна"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Асуудал цуглуулах харилцан үйлдлийн үргэлжилж буй мэдэгдэл"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Асуудлын бичлэгийг хадгалахад алдаа гарлаа"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Асуудлын бичлэгийг эхлүүлэхэд алдаа гарлаа"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Бүтэн дэлгэцээр үзэж байна"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Гарахын тулд дэлгэцийнхээ дээд талаас доош шударна уу"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Ойлголоо"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Буцах"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Гэрийн"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Дэлгэц амраагч"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Этернет"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Бүү саад бол"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Хослуулсан төхөөрөмж байхгүй"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Төхөөрөмжийг холбох эсвэл салгахын тулд товшино уу"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Хадгалсан"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"салгах"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"идэвхжүүлэх"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Маргааш автоматаар асаах"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Түргэн хуваалцах, Миний төхөөрөмжийг олох зэрэг онцлогууд Bluetooth-г ашигладаг"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth-г маргааш өглөө асаана"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Аудио хуваалцах"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"виджет сонгох"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"виджетийг хасах"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"сонгосон виджетийг байрлуулах"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Түгжээтэй дэлгэцийн виджет"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Виджет ашиглан аппыг нээхийн тулд та өөрийгөө мөн болохыг баталгаажуулах шаардлагатай болно. Мөн таны таблет түгжээтэй байсан ч тэдгээрийг дурын хүн үзэж болохыг санаарай. Зарим виджет таны түгжээтэй дэлгэцэд зориулагдаагүй байж магадгүй ба энд нэмэхэд аюултай байж болзошгүй."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ойлголоо"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Хэрэглэгчийг сэлгэх"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"эвхмэл цэс"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Энэ харилцан үйлдлийн бүх апп болон дата устах болно."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Өгөгдмөл"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автомат"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Дуу эсвэл чичиргээ байхгүй"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Дуу эсвэл чичиргээ байхгүй бөгөөд харилцан ярианы хэсгийн доод талд харагдана"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Төхөөрөмжийн тохиргоонд тулгуурлан хонх дуугаргах эсвэл чичиргэж болзошгүй"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Төхөөрөмжийн тохиргоонд тулгуурлан хонх дуугаргах эсвэл чичиргэж болзошгүй. <xliff:g id="APP_NAME">%1$s</xliff:g>-н харилцан яриаг өгөгдмөлөөр бөмбөлөг болгоно."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Энэ мэдэгдэл дуу гаргах эсвэл чичрэх эсэхийг системээр тодорхойлуулаарай"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Хуудас дээш"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Хуудас доош"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Устгах"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Нүүр хуудас"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Төгсгөл"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Оруулах"</string>
@@ -1212,7 +1225,7 @@
<string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Нэмэлт мэдээлэл авахын тулд товшино уу"</string>
<string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Сэрүүлэг тавиагүй"</string>
<string name="accessibility_bouncer" msgid="5896923685673320070">"дэлгэцийн түгжээ оруулах"</string>
- <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"Хурууны хээ мэдрэгчид хүрнэ үү. Энэ нь утасны хажуу талын арай богино товчлуур юм"</string>
+ <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"Хурууны хээ мэдрэгчид хүрнэ үү. Энэ нь утасны хажуу талын арай богино товч юм"</string>
<string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Хурууны хээ мэдрэгч"</string>
<string name="accessibility_authenticate_hint" msgid="798914151813205721">"баталгаажуулах"</string>
<string name="accessibility_enter_hint" msgid="2617864063504824834">"төхөөрөмж оруулах"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Дэлгэцийг хуваах"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Оролт"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Аппын товчлол"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Хандалт"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Товчлуурын шууд холбоос"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Товчлолууд хайх"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Хураах дүрс тэмдэг"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Дэлгэх дүрс тэмдэг"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"эсвэл"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Буцах зангаа"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Үндсэн нүүрний зангаа"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Тусгай товчлуур"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Болсон"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Үнэхээр сайн ажиллалаа!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Буцах"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Буцаж очихын тулд мэдрэгч самбар дээр гурван хуруугаараа хүссэн газраа зүүн эсвэл баруун тийш шударна уу."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Гурван хуруу баруун болон зүүн тийш хөдөлж буйг харуулсан мэдрэгч самбар"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d-с %1$d-р түвшин"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Гэрийн удирдлага"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Гэрийн удирдлагадаа дэлгэц амраагчаар шуурхай ханд"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-mn/tiles_states_strings.xml b/packages/SystemUI/res/values-mn/tiles_states_strings.xml
index a3f5454..b394574 100644
--- a/packages/SystemUI/res/values-mn/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mn/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Унтраалттай"</item>
<item msgid="4875147066469902392">"Асаалттай"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Боломжгүй"</item>
<item msgid="5044688398303285224">"Унтраалттай"</item>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index a5633a2..ed870c7 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"पाहण्यासाठी टॅप करा"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"स्क्रीन रेकॉर्डिंग सेव्ह करताना एरर आली"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"स्क्रीन रेकॉर्डिंग सुरू करताना एरर आली"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"तुम्ही <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> रेकॉर्ड करणे बंद कराल"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"रेकॉर्डिंग थांबवायचे आहे का?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"तुम्ही सध्या तुमची संपूर्ण स्क्रीन रेकॉर्ड करत आहात"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"तुम्ही सध्या <xliff:g id="APP_NAME">%1$s</xliff:g> रेकॉर्ड करत आहात"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"रेकॉर्ड करणे थांबवा"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"स्क्रीन शेअर करत आहे"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"तुम्ही <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> शेअर करणे बंद कराल"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"स्क्रीन कास्ट करत आहे"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"तुम्ही <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> कास्ट करणे बंद कराल"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"स्क्रीन शेअर करणे थांबवायचे आहे का?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"तुम्ही सध्या तुमची संपूर्ण स्क्रीन <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> सह शेअर करत आहात"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"तुम्ही सध्या तुमची संपूर्ण स्क्रीन एका ॲपसह शेअर करत आहात"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"तुम्ही सध्या <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> शेअर करत आहात"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"तुम्ही सध्या एक ॲप शेअर करत आहात"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"शेअर करणे थांबवा"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"स्क्रीन कास्ट करत आहे"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"कास्ट करणे थांबवायचे आहे का?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"तुम्ही सध्या तुमच्या संपूर्ण स्क्रीनला <xliff:g id="DEVICE_NAME">%1$s</xliff:g> वर कास्ट करत आहात"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"तुम्ही सध्या तुमच्या संपूर्ण स्क्रीनला जवळपासच्या डिव्हाइसवर कास्ट करत आहात"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"तुम्ही सध्या <xliff:g id="DEVICE_NAME">%2$s</xliff:g> वर <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ला कास्ट करत आहात"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"तुम्ही सध्या <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ला जवळपासच्या डिव्हाइसवर कास्ट करत आहात"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"तुम्ही सध्या <xliff:g id="DEVICE_NAME">%1$s</xliff:g> वर कास्ट करत आहात"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"तुम्ही सध्या जवळपासच्या डिव्हाइसवर कास्ट करत आहात"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"कास्ट करणे थांबवा"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"बंद करा"</string>
<string name="issuerecord_title" msgid="286627115110121849">"समस्या रेकॉर्डर"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"प्रक्रियेच्या समस्येचे रेकॉर्डिंग"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"समस्या गोळा करण्याच्या सेशनसाठीची सद्य सूचना"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"समस्येचे रेकॉर्डिंग सेव्ह करताना एरर आली"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"समस्येचे रेकॉर्डिंग सुरू करताना एरर आली"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"पूर्ण स्क्रीन पाहत आहात"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"बाहेर पडण्यासाठी, तुमच्या स्क्रीनच्या सर्वात वरून खाली स्वाइप करा"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"समजले"</string>
<string name="accessibility_back" msgid="6530104400086152611">"मागे"</string>
<string name="accessibility_home" msgid="5430449841237966217">"होम"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"स्क्रीन सेव्हर"</string>
<string name="ethernet_label" msgid="2203544727007463351">"इथरनेट"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"व्यत्यय आणू नका"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"प्राधान्य मोड"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ब्लूटूथ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"कोणतेही जोडलेले डिव्हाइसेस उपलब्ध नाहीत"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"डिव्हाइस कनेक्ट किंवा डिस्कनेक्ट करण्यासाठी टॅप करा"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"सेव्ह केले"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"डिस्कनेक्ट करा"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ॲक्टिव्हेट करा"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"उद्या आपोआप सुरू करा"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"क्विक शेअर आणि Find My Device यांसारखी वैशिष्ट्ये ब्लूटूथ वापरतात"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ब्लूटूथ उद्या सकाळी सुरू होईल"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ऑडिओ शेअर करा"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"विजेट निवडा"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"विजेट काढून टाका"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"निवडलेले विजेट ठेवा"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"लॉक स्क्रीन विजेट"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"तुमचा टॅबलेट लॉक केला, तरी कोणीही तुमच्या लॉक स्क्रीनवरील विजेट पाहू शकतो."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लॉक स्क्रीन विजेट"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"विजेट वापरून अॅप उघडण्यासाठी, तुम्हाला हे तुम्हीच असल्याची पडताळणी करावी लागेल. तसेच, लक्षात ठेवा, तुमचा टॅबलेट लॉक असतानादेखील कोणीही ती पाहू शकते. काही विजेट कदाचित तुमच्या लॉक स्क्रीनसाठी नाहीत आणि ती इथे जोडणे असुरक्षित असू शकते."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"समजले"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"वापरकर्ता स्विच करा"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"या सत्रातील सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"डीफॉल्ट"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ऑटोमॅटिक"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"आवाज किंवा व्हायब्रेशन नाही"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"आवाज किंवा व्हायब्रेशन नाही आणि संभाषण विभागात सर्वात तळाशी दिसते"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"डिव्हाइस सेटिंग्जनुसार रिंग किंवा व्हायब्रेट होऊ शकतो"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"डिव्हाइस सेटिंग्जनुसार रिंग किंवा व्हायब्रेट होऊ शकतो. <xliff:g id="APP_NAME">%1$s</xliff:g> मधील संभाषणे बाय डीफॉल्ट बबल होतात."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ही सूचना मिळाल्यावर आवाज व्हावा की व्हायब्रेशन व्हावे ते सिस्टममध्ये नमूद करा"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"हटवा"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"एस्केप"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"घाला"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"स्प्लिट स्क्रीन"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"अॅप शॉर्टकट"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"सध्याचे अॅप"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"अॅक्सेसिबिलिटी"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"शोधण्यासाठी शॉर्टकट"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"कोलॅप्स करा आयकन"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"विस्तार करा आयकन"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"किंवा"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"मागे जा जेश्चर"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"होम जेश्चर"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"अॅक्शन की"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"पूर्ण झाले"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"उत्तम कामगिरी!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"मागे जा"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"मागे जाण्यासाठी, टचपॅडवर कुठेही तीन बोटांनी डावीकडे किंवा उजवीकडे स्वाइप करा."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"तीन बोट उजवीकडे आणि डावीकडे हलताना दाखवणारे टचपॅड"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d पैकी %1$d पातळी"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"होम कंट्रोल"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"स्क्रीनसेव्हर म्हणून होम कंट्रोल झटपट ॲक्सेस करा"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"पहिल्यासारखे करा"</string>
</resources>
diff --git a/packages/SystemUI/res/values-mr/tiles_states_strings.xml b/packages/SystemUI/res/values-mr/tiles_states_strings.xml
index 54c320c..fdb1f40 100644
--- a/packages/SystemUI/res/values-mr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-mr/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"बंद आहे"</item>
<item msgid="4875147066469902392">"सुरू आहे"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"उपलब्ध नाही"</item>
+ <item msgid="2004750556637773692">"बंद आहे"</item>
+ <item msgid="8968530753931637871">"सुरू आहे"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"उपलब्ध नाही"</item>
<item msgid="5044688398303285224">"बंद आहे"</item>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 984fe3a..43e9716 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Ketik untuk lihat"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Ralat semasa menyimpan rakaman skrin"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Ralat semasa memulakan rakaman skrin"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Anda akan berhenti merakam <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Hentikan rakaman?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Anda sedang merakam seluruh skrin anda"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Anda sedang merakam <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Hentikan rakaman"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Berkongsi skrin"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Anda akan berhenti berkongsi <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Menghantar skrin"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Anda akan berhenti menghantar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Hentikan perkongsian skrin?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Anda sedang berkongsi seluruh skrin anda dengan <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Anda sedang berkongsi seluruh skrin anda dengan apl"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Anda sedang berkongsi <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Anda sedang berkongsi apl"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Hentikan perkongsian"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Menghantar skrin"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Berhenti menghantar?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Anda sedang menghantar seluruh skrin anda kepada <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Anda sedang menghantar seluruh skrin anda kepada peranti berdekatan"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Anda sedang menghantar <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> kepada <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Anda sedang menghantar <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> kepada peranti berdekatan"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Anda sedang membuat penghantaran kepada <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Anda sedang membuat penghantaran kepada peranti berdekatan"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Hentikan penghantaran"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Tutup"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Perakam Masalah"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Memproses rakaman masalah"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Pemberitahuan sedang berlangsung untuk sesi pengumpulan masalah"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Ralat menyimpan rakaman masalah"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Ralat memulakan rakaman masalah"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Melihat skrin penuh"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Untuk keluar, leret ke bawah daripada bahagian atas skrin anda"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Kembali"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Rumah"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Penyelamat skrin"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Jangan Ganggu"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Mod keutamaan"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Tiada peranti berpasangan tersedia"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Ketik untuk menyambungkan atau memutuskan sambungan peranti"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Disimpan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"putuskan sambungan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktifkan"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Hidupkan secara automatik pada hari esok"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Ciri seperti Quick Share dan Find My Device menggunakan Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth akan dihidupkan esok pagi"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Kongsi audio"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"pilih widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"alih keluar widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"letakkan widget dipilih"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widget skrin kunci"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Sesiapa sahaja boleh melihat widget pada skrin kunci, walaupun tablet dikunci."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widget skrin kunci"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Untuk membuka apl menggunakan widget, anda perlu mengesahkan identiti anda. Selain itu, perlu diingat bahawa sesiapa sahaja boleh melihat widget tersebut, walaupun semasa tablet anda dikunci. Sesetengah widget mungkin tidak sesuai untuk skrin kunci anda dan mungkin tidak selamat untuk ditambahkan di sini."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Tukar pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu tarik turun"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua apl dan data dalam sesi ini akan dipadam."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Lalai"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatik"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Tiada bunyi atau getaran"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Tiada bunyi atau getaran dan muncul di sebelah bawah dalam bahagian perbualan"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Mungkin berbunyi atau bergetar berdasarkan tetapan peranti"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Mungkin berbunyi atau bergetar berdasarkan tetapan peranti. Perbualan daripada gelembung <xliff:g id="APP_NAME">%1$s</xliff:g> secara lalai."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Minta sistem menentukan jika pemberitahuan ini patut menghasilkan bunyi atau getaran"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Skrin pisah"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Pintasan apl"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Apl Semasa"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Kebolehaksesan"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Pintasan papan kekunci"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Pintasan carian"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Kuncupkan ikon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Kembangkan ikon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"atau"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gerak isyarat kembali"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gerak isyarat pergi ke laman utama"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Kekunci tindakan"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Syabas!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kembali"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Untuk kembali, leret ke kiri atau kanan menggunakan tiga jari di mana-mana sahaja pada pad sentuh."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Pad sentuh menunjukkan tiga jari bergerak ke kanan dan kiri"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Tahap %1$d daripada %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kawalan Rumah"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Jadikan kawalan rumah anda sebagai penyelamat skrin"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"Buat asal"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ms/tiles_states_strings.xml b/packages/SystemUI/res/values-ms/tiles_states_strings.xml
index 174e416e..db63e2c 100644
--- a/packages/SystemUI/res/values-ms/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ms/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Mati"</item>
<item msgid="4875147066469902392">"Hidup"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Tidak tersedia"</item>
+ <item msgid="2004750556637773692">"Mati"</item>
+ <item msgid="8968530753931637871">"Hidup"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Tidak tersedia"</item>
<item msgid="5044688398303285224">"Mati"</item>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index c916e31..c1f186a 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ကြည့်ရှုရန် တို့ပါ"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ဖန်သားပြင်ရိုက်ကူးမှုကို သိမ်းရာတွင် အမှားရှိသည်"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ဖန်သားပြင် ရိုက်ကူးမှု စတင်ရာတွင် အမှားအယွင်းရှိနေသည်"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ၏ အကြောင်းအရာ ရိုက်ကူးခြင်းကို ရပ်ပါမည်"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ရိုက်ကူးမှု ရပ်ရန်"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"ဖန်သားပြင်ကို မျှဝေနေသည်"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ဖန်သားပြင်မျှဝေခြင်း ရပ်မလား။"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ၏ အကြောင်းအရာ မျှဝေခြင်းကို ရပ်ပါမည်"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"ဖန်သားပြင်ကို ကာစ်လုပ်နေသည်"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"မျှဝေခြင်း ရပ်ရန်"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"ဖန်သားပြင်ကို ကာစ်လုပ်နေသည်"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"ကာစ်လုပ်ခြင်းကို ရပ်လိုသလား။"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ၏ အကြောင်းအရာ ကာစ်လုပ်ခြင်းကို ရပ်ပါမည်"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"ကာစ် ရပ်ရန်"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ပိတ်ရန်"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ပြဿနာရိုက်ကူးစနစ်"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ပြဿနာရိုက်ကူးမှု လုပ်နေသည်"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ပြဿနာစုစည်းခြင်း စက်ရှင်အတွက် လုပ်ဆောင်နေဆဲ အကြောင်းကြားချက်"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ပြဿနာရိုက်ကူးမှုကို သိမ်း၍မရပါ"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ပြဿနာရိုက်ကူးမှုကို စတင်၍မရပါ"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ဖန်သားပြင်အပြည့် ကြည့်နေသည်"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ထွက်ရန် သင့်ဖန်သားပြင်ထိပ်မှ အောက်သို့ ပွတ်ဆွဲပါ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"နားလည်ပြီ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"နောက်သို့"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ပင်မစာမျက်နှာ"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"စခရင်နားချိန်ပုံ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"အီသာနက်"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"မနှောင့်ယှက်ရ"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ဘလူးတုသ်"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ချိတ်တွဲထားသည့် ကိရိယာများ မရှိ"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"စက်ကို ချိတ်ဆက်ရန် (သို့) ချိတ်ဆက်မှုဖြုတ်ရန် တို့ပါ"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"သိမ်းထားသည်"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ချိတ်ဆက်မှုဖြုတ်ရန်"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"စသုံးရန်"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"မနက်ဖြန် အလိုအလျောက်ဖွင့်ရန်"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"‘အမြန် မျှဝေပါ’ နှင့် Find My Device ကဲ့သို့ တူးလ်များသည် ဘလူးတုသ်သုံးသည်"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"မနက်ဖြန်နံနက်တွင် ဘလူးတုသ် ပွင့်ပါမည်"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"အသံမျှဝေရန်"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ဝိဂျက် ရွေးရန်"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ဝိဂျက် ဖယ်ရှားရန်"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ရွေးချယ်ထားသော ဝိဂျက်ကို တင်ရန်"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"လော့ခ်မျက်နှာပြင် ဝိဂျက်များ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ဝိဂျက်သုံး၍ အက်ပ်ဖွင့်ရန်အတွက် သင်ဖြစ်ကြောင်း အတည်ပြုရန်လိုသည်။ ထို့ပြင် သင့်တက်ဘလက် လော့ခ်ချထားချိန်၌ပင် မည်သူမဆို ၎င်းတို့ကို ကြည့်နိုင်ကြောင်း သတိပြုပါ။ ဝိဂျက်အချို့ကို လော့ခ်မျက်နှာပြင်အတွက် ရည်ရွယ်ထားခြင်း မရှိသဖြင့် ဤနေရာတွင် ထည့်ပါက မလုံခြုံနိုင်ပါ။"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"နားလည်ပြီ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ဆွဲချမီနူး"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ဒီချိတ်ဆက်မှု ထဲက အက်ပ်များ အားလုံး နှင့် ဒေတာကို ဖျက်ပစ်မည်။"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"မူလ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"အလိုအလျောက်"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"အသံ သို့မဟုတ် တုန်ခါမှုမရှိပါ"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"အသံ သို့မဟုတ် တုန်ခါမှုမရှိပါ၊ စကားဝိုင်းကဏ္ဍ၏ အောက်ပိုင်းတွင် မြင်ရသည်"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"စက်ပစ္စည်း ဆက်တင်များပေါ် အခြေခံပြီး အသံမြည်နိုင်သည် (သို့) တုန်ခါနိုင်သည်"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"စက်ပစ္စည်းဆက်တင်များပေါ် အခြေခံပြီး အသံမြည်နိုင်သည် (သို့) တုန်ခါနိုင်သည်။ မူရင်းသတ်မှတ်ချက်အဖြစ် <xliff:g id="APP_NAME">%1$s</xliff:g> မှ စကားဝိုင်းများကို ပူဖောင်းကွက်ဖြင့် ပြသည်။"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ဤအကြောင်းကြားချက်က အသံ သို့မဟုတ် တုန်ခါမှု ပေးရန် သင့်/မသင့်ကို စနစ်က ဆုံးဖြတ်ပါစေ"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"အပေါ်စာမျက်နှာသို့သွားပါ"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"အောက်စာမျက်နှာသို့သွားပါ"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"ဖျက်ရန်"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"ပင်မ"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"ပြီးပါပြီ"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"ထည့်ပါ"</string>
@@ -1361,22 +1374,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"မျက်နှာပြင် ခွဲ၍ပြသခြင်း"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ထည့်သွင်းမှု"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"အက်ပ်ဖြတ်လမ်းလင့်ခ်များ"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"လက်ရှိအက်ပ်"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"အများသုံးနိုင်မှု"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"လက်ကွက်ဖြတ်လမ်းများ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ရှာဖွေစာလုံး ဖြတ်လမ်း"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"လျှော့ပြရန် သင်္ကေတ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ပိုပြရန် သင်္ကေတ"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"သို့မဟုတ်"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"နောက်သို့ လက်ဟန်"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ပင်မစာမျက်နှာ လက်ဟန်"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"လုပ်ဆောင်ချက်ကီး"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ပြီးပြီ"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"တော်ပါပေသည်။"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ပြန်သွားရန်"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ပြန်သွားရန်အတွက် တာ့ချ်ပက်တွင် မည်သည့်နေရာ၌မဆို လက်သုံးချောင်းသုံး၍ ဘယ် (သို့) ညာသို့ ပွတ်ဆွဲပါ။"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"တာ့ချ်ပက်တွင် ဘယ်ညာရွှေ့နေသော လက်သုံးချောင်းကို ပြထားသည်"</string>
@@ -1385,4 +1394,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"အဆင့် %2$d အနက် %1$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"အိမ်ထိန်းချုပ်မှုများ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"အိမ်ထိန်းချုပ်မှုများကို စခရင်နားချိန်ပုံအဖြစ် အမြန်ဝင်ကြည့်ရန်"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-my/tiles_states_strings.xml b/packages/SystemUI/res/values-my/tiles_states_strings.xml
index f665a00a..3628c06 100644
--- a/packages/SystemUI/res/values-my/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-my/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ပိတ်"</item>
<item msgid="4875147066469902392">"ဖွင့်"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"မရနိုင်ပါ"</item>
<item msgid="5044688398303285224">"ပိတ်"</item>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 8fccf1a..199b359 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Trykk for å se"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Feil ved lagring av skjermopptaket"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Feil ved start av skjermopptaket"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Du slutter å ta opp <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Stopp opptaket"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Deler skjermen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Vil du slutte å dele skjermen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Du slutter å dele <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Caster skjermen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Slutt å dele"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Caster skjermen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Vil du stoppe castingen?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Du slutter å caste <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Stopp castingen"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Lukk"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Funksjon for opptak av problemer"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Opptak, databehandlingsproblem"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Pågående varsel for en innsamlingsøkt for et problem"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Feil ved lagring av problemopptaket"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Feil ved start av problemopptaket"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visning i fullskjerm"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"For å gå ut, sveip ned fra toppen av skjermen"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Greit"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Tilbake"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Startside"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Skjermsparer"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ikke forstyrr"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Ingen sammenkoblede enheter er tilgjengelige"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Trykk for å koble en enhet til eller fra"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Lagret"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"koble fra"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiver"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Slå på automatisk i morgen"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funksjoner som Quick Share og Finn enheten min bruker Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth slås på i morgen tidlig"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Del lyd"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"velg modul"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"fjern modul"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"plasser den valgte modulen"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Låseskjermmoduler"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"For å åpne en app ved hjelp av en modul må du bekrefte at det er deg. Husk også at hvem som helst kan se dem, selv om nettbrettet er låst. Noen moduler er kanskje ikke laget for å være på låseskjermen og kan være utrygge å legge til der."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Greit"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Bytt bruker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullegardinmeny"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apper og data i denne økten blir slettet."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Standard"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatisk"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Ingen lyd eller vibrering"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ingen lyd eller vibrering, og vises lavere i samtaledelen"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Kan ringe eller vibrere basert på enhetsinnstillingene"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Kan ringe eller vibrere basert på enhetsinnstillingene. Samtaler fra <xliff:g id="APP_NAME">%1$s</xliff:g> vises som standard som bobler."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"La systemet velge om dette varselet skal lage lyd eller vibrere"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Startskjerm"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Delt skjerm"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Inndata"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App-snarveier"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Tilgjengelighet"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Hurtigtaster"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Snarveier til søk"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Skjul-ikon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Vis-ikon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"eller"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Tilbakebevegelse"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Startskjermbevegelse"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Handlingstast"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Ferdig"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Bra jobbet!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gå tilbake"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"For å gå tilbake, sveip til venstre eller høyre med tre fingre hvor som helst på styreflaten."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"En styreflate med tre fingre som beveger seg til høyre og venstre"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivå %1$d av %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Hjemkontroller"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Gå raskt til hjemkontrollene som skjermsparer"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nb/tiles_states_strings.xml b/packages/SystemUI/res/values-nb/tiles_states_strings.xml
index a9efd1d..2a57ecf 100644
--- a/packages/SystemUI/res/values-nb/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-nb/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Av"</item>
<item msgid="4875147066469902392">"På"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Utilgjengelig"</item>
<item msgid="5044688398303285224">"Av"</item>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 8fae08d..672609a 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"हेर्नका लागि ट्याप गर्नुहोस्"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"स्क्रिन रेकर्डिङ सेभ गर्ने क्रममा त्रुटि भयो"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"स्क्रिन रेकर्ड गर्न थाल्ने क्रममा त्रुटि भयो"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का सामग्री रेकर्ड हुन छाड्ने छन्"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"रेकर्ड गर्न छाड्ने हो?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"तपाईं अहिले आफ्नो डिभाइसको पूरै स्क्रिन रेकर्ड गरिरहनुभएको छ"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"तपाईं अहिले <xliff:g id="APP_NAME">%1$s</xliff:g> रेकर्ड गरिरहनुभएको छ"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"रेकर्ड गर्न छाड्नुहोस्"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"स्क्रिन सेयर गरिँदै छ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का सामग्री सेयर हुन छाड्ने छन्"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"स्क्रिन कास्ट गरिँदै छ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> का सामग्री कास्ट हुन छाड्ने छन्"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"स्क्रिन सेयर गर्न छाड्ने हो?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"तपाईं अहिले <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> सँग आफ्नो डिभाइसको पूरै स्क्रिन सेयर गरिरहनुभएको छ"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"तपाईं अहिले कुनै एपसँग आफ्नो डिभाइसको पूरै स्क्रिन सेयर गरिरहनुभएको छ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"तपाईं अहिले <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> सेयर गरिरहनुभएको छ"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"तपाईं अहिले कुनै एप सेयर गरिरहनुभएको छ"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"सेयर गर्न छाड्नुहोस्"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"स्क्रिन कास्ट गरिँदै छ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"कास्ट गर्न छाड्ने हो?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"तपाईं अहिले आफ्नो डिभाइसको पूरै स्क्रिन <xliff:g id="DEVICE_NAME">%1$s</xliff:g> मा कास्ट गरिरहनुभएको छ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"तपाईं अहिले आफ्नो डिभाइसको पूरै स्क्रिन नजिकैको डिभाइसमा कास्ट गरिरहनुभएको छ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"तपाईं अहिले <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> बाट <xliff:g id="DEVICE_NAME">%2$s</xliff:g> मा कास्ट गरिरहनुभएको छ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"तपाईं अहिले <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> बाट नजिकैको डिभाइसमा कास्ट गरिरहनुभएको छ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"तपाईं अहिले <xliff:g id="DEVICE_NAME">%1$s</xliff:g> मा कास्ट गरिरहनुभएको छ"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"तपाईं अहिले नजिकैको डिभाइसमा कास्ट गरिरहनुभएको छ"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"कास्ट गर्न छाड्नुहोस्"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"बन्द गर्नुहोस्"</string>
<string name="issuerecord_title" msgid="286627115110121849">"समस्यासम्बन्धी जानकारी रेकर्ड गर्ने रेकर्डर"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"समस्याको रेकर्डिङ प्रोसेस गरिँदै छ"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"समस्यासम्बन्धी जानकारी सङ्कलन गर्ने जारी सत्रसम्बन्धी सूचना"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"समस्याको रेकर्डिङ सेभ गर्ने क्रममा त्रुटि भयो"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"समस्यासम्बन्धी जानकारी रेकर्ड गर्न थाल्ने क्रममा त्रुटि भयो"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"फुल स्क्रिन हेरिँदै छ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"यहाँबाट बाहिरिन स्क्रिनको सिरानबाट तलतिर स्वाइप गर्नुहोस्"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"बुझेँ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"पछाडि"</string>
<string name="accessibility_home" msgid="5430449841237966217">"गृह"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"स्क्रिन सेभर"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"बाधा नपुऱ्याउनुहोस्"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ब्लुटुथ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"जोडी उपकरणहरू उपलब्ध छैन"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"कुनै डिभाइस कनेक्ट गर्न वा डिस्कनेक्ट गर्न ट्याप गर्नुहोस्"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"सेभ गरिएको छ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"डिस्कनेक्ट गर्नुहोस्"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"एक्टिभेट गर्नुहोस्"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"भोलि स्वतः अन गर्नुहोस्"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"क्विक सेयर र Find My Device जस्ता सुविधाहरू प्रयोग गर्न ब्लुटुथ चाहिन्छ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ब्लुटुथ भोलि बिहान अन हुने छ"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"अडियो सेयर गर्नुहोस्"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"विजेट चयन गर्नुहोस्"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"विजेट हटाउनुहोस्"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"चयन गरिएका विजेटका लागि ठाउँ चयन गर्नुहोस्"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"लक स्क्रिन विजेटहरू"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"तपाईंको ट्याब्लेट लक भएका बेला पनि सबैले लक स्क्रिनमा भएका विजेट हेर्न सक्छन्।"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"लक स्क्रिन विजेटहरू"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"विजेट प्रयोग गरी एप खोल्न तपाईंले आफ्नो पहिचान पुष्टि गर्नु पर्ने हुन्छ। साथै, तपाईंको ट्याब्लेट लक भएका बेला पनि सबै जनाले तिनलाई देख्न सक्छन् भन्ने कुरा ख्याल गर्नुहोस्। केही विजेटहरू लक स्क्रिनमा प्रयोग गर्ने उद्देश्यले नबनाइएका हुन सक्छन् र तिनलाई यहाँ हाल्नु सुरक्षित नहुन सक्छ।"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"बुझेँ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"प्रयोगकर्ता फेर्नुहोस्"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनु"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"यो सत्रमा भएका सबै एपहरू र डेटा मेटाइने छ।"</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"डिफल्ट"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"स्वचालित"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"बज्दैन पनि, भाइब्रेट पनि हुँदैन"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"बज्दैन पनि, भाइब्रेट पनि हुँदैन र वार्तालाप खण्डको तलतिर देखा पर्छ"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"डिभाइसको सेटिङका आधारमा घन्टी बज्न वा भाइब्रेट हुन सक्छ"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"डिभाइसको सेटिङका आधारमा घन्टी बज्न वा कम्पन हुन सक्छ। <xliff:g id="APP_NAME">%1$s</xliff:g> मार्फत गरिएका वार्तालापहरू स्वतः बबलमा देखिन्छन्।"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"सिस्टमलाई यो सूचना आउँदा ध्वनि बज्नु पर्छ वा कम्पन हुनु पर्छ भन्ने कुराको निधो गर्न दिनुहोस्"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"स्प्लिट स्क्रिन"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"एपका सर्टकटहरू"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"हालको एप"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सर्वसुलभता"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"किबोर्डका सर्टकटहरू"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"खोजका सर्टकटहरू"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"\"कोल्याप्स गर्नुहोस्\" आइकन"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"\"एक्स्पान्ड गर्नुहोस्\" आइकन"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"वा"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ब्याक जेस्चर"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"होम जेस्चर"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"एक्सन की"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"सम्पन्न भयो"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"अद्भुत!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"पछाडि जानुहोस्"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"पछाडि जान तिन वटा औँलाले टचप्याडमा कतै छोएर बायाँ वा दायाँतिर स्वाइप गर्नुहोस्।"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"तिन वटा औँला दायाँ र बायाँ सारेको देखाइएको टचप्याड"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d मध्ये %1$d औँ स्तर"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"होम कन्ट्रोलहरू"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"होम कन्ट्रोललाई तुरुन्तै स्क्रिनसेभरका रूपमा एक्सेस गर्नुहोस्"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ne/tiles_states_strings.xml b/packages/SystemUI/res/values-ne/tiles_states_strings.xml
index c1b2f34..7edd8bf 100644
--- a/packages/SystemUI/res/values-ne/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ne/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"अफ छ"</item>
<item msgid="4875147066469902392">"अन छ"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"उपलब्ध छैन"</item>
<item msgid="5044688398303285224">"अफ छ"</item>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 6dbd8fb..7f86f23 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tik om te bekijken"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Fout bij opslaan van schermopname"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Fout bij starten van schermopname"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Je stopt met het opnemen van <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Opname stoppen?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Je neemt op dit moment je hele scherm op"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Je neemt op dit moment <xliff:g id="APP_NAME">%1$s</xliff:g> op"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Opname stoppen"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Scherm delen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Je stopt met het delen van <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Scherm casten"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Je stopt met het casten van <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Scherm delen stoppen?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Je deelt op dit moment je hele scherm met <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Je deelt op dit moment je hele scherm met een app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Je deelt op dit moment <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Je deelt op dit moment een app"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Delen stoppen"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Scherm casten"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Stoppen met casten?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Je cast op dit moment je hele scherm naar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Je cast op dit moment je hele scherm naar een apparaat in de buurt"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Je cast op dit moment <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> naar <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Je cast op dit moment <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> naar een apparaat in de buurt"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Je cast op dit moment naar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Je cast op dit moment naar een apparaat in de buurt"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Casten stoppen"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Sluiten"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Problemen opnemen"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Probleemopname verwerken"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Melding over actieve activiteit voor een sessie voor probleemverzameling"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Fout bij opslaan van probleemopname"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Fout bij starten van probleemopname"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Volledig scherm wordt getoond"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Swipe omlaag vanaf de bovenkant van het scherm om af te sluiten"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Terug"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Startscherm"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Screensaver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Niet storen"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Geen gekoppelde apparaten beschikbaar"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tik om een apparaat te verbinden of de verbinding te verbreken"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Opgeslagen"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"loskoppelen"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activeren"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Morgen automatisch aanzetten"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Functies zoals Quick Share en Vind mijn apparaat gebruiken bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth wordt morgenochtend aangezet"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Audio delen"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"widget selecteren"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"widget verwijderen"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"geselecteerde widget plaatsen"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgets op het vergrendelscherm"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Iedereen kan widgets op je vergrendelscherm bekijken, ook als je tablet is vergrendeld."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets op het vergrendelscherm"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Als je een app wilt openen met een widget, moet je laten verifiëren dat jij het bent. Houd er ook rekening mee dat iedereen ze kan bekijken, ook als je tablet vergrendeld is. Bepaalde widgets zijn misschien niet bedoeld voor je vergrendelscherm en kunnen hier niet veilig worden toegevoegd."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Gebruiker wijzigen"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pull-downmenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps en gegevens in deze sessie worden verwijderd."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Standaard"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatisch"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Geen geluid of trilling"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Geen geluid of trilling en wordt lager in het gedeelte met gesprekken getoond"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Kan overgaan of trillen op basis van de apparaatinstellingen"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Kan overgaan of trillen op basis van de apparaatinstellingen. Gesprekken uit <xliff:g id="APP_NAME">%1$s</xliff:g> worden standaard als bubbels weergegeven."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Het systeem laten bepalen of deze melding geluid moet maken of moet trillen"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1212,7 +1209,7 @@
<string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Tik hier voor meer informatie"</string>
<string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Geen wekker gezet"</string>
<string name="accessibility_bouncer" msgid="5896923685673320070">"schermvergrendeling invoeren"</string>
- <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"Raak de vingerafdruksensor aan. Dit is de kortere knop aan de zijkant van de telefoon."</string>
+ <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"Plaats je vinger op de vingerafdruksensor. Dat is de kortere knop aan de zijkant van de telefoon."</string>
<string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Vingerafdruksensor"</string>
<string name="accessibility_authenticate_hint" msgid="798914151813205721">"verifiëren"</string>
<string name="accessibility_enter_hint" msgid="2617864063504824834">"apparaat opgeven"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Gesplitst scherm"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Invoer"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"App-snelkoppelingen"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Huidige app"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Toegankelijkheid"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Sneltoetsen"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Snelkoppelingen voor zoekopdrachten"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icoon voor samenvouwen"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icoon voor uitvouwen"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"of"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gebaar voor terug"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gebaar voor startscherm"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Actietoets"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Goed werk!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Terug"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Als je wilt teruggaan, swipe je met 3 vingers naar links of rechts op de touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad met 3 vingers die naar rechts en links bewegen"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveau %1$d van %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Bediening voor in huis"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Gebruik bediening voor in huis als screensaver"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nl/tiles_states_strings.xml b/packages/SystemUI/res/values-nl/tiles_states_strings.xml
index c5d9361..45664b8 100644
--- a/packages/SystemUI/res/values-nl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-nl/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Uit"</item>
<item msgid="4875147066469902392">"Aan"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Niet beschikbaar"</item>
<item msgid="5044688398303285224">"Uit"</item>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 0f05982..88aea15 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ଦେଖିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ସ୍କ୍ରିନ ରେକର୍ଡିଂ ସେଭ କରିବାରେ ତ୍ରୁଟି"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ସ୍କ୍ରିନ୍ ରେକର୍ଡିଂ ଆରମ୍ଭ କରିବାରେ ତ୍ରୁଟି"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ଆପଣ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ରେକର୍ଡ କରିବା ବନ୍ଦ କରିବେ"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ରେକର୍ଡିଂ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"ସ୍କ୍ରିନ ସେୟାର କରାଯାଉଛି"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ସ୍କ୍ରିନ ସେୟାର କରିବା ବନ୍ଦ କରିବେ?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"ଆପଣ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ସେୟାର କରିବା ବନ୍ଦ କରିବେ"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"ସ୍କ୍ରିନ କାଷ୍ଟ କରାଯାଉଛି"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"ସେୟାର କରିବା ବନ୍ଦ କରନ୍ତୁ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"ସ୍କ୍ରିନ କାଷ୍ଟ କରାଯାଉଛି"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"କାଷ୍ଟ କରିବା ବନ୍ଦ କରିବେ?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"ଆପଣ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ କାଷ୍ଟ କରିବା ବନ୍ଦ କରିବେ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"କାଷ୍ଟ କରିବା ବନ୍ଦ କରନ୍ତୁ"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ସମସ୍ୟା ରେକର୍ଡର"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ସମସ୍ୟାର ରେକର୍ଡିଂର ପ୍ରକ୍ରିୟାକରଣ"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ଏକ ସମସ୍ୟା ସଂଗ୍ରହ ସେସନ ପାଇଁ ଚାଲୁଥିବା ବିଜ୍ଞପ୍ତି"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ସମସ୍ୟାର ରେକର୍ଡିଂ କରିବାରେ ତ୍ରୁଟି"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ସମସ୍ୟାର ରେକର୍ଡିଂ ଆରମ୍ଭ କରିବାରେ ତ୍ରୁଟି"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରେ ଦେଖିବା"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ବାହାରି ଯିବା ପାଇଁ ଆପଣଙ୍କ ସ୍କ୍ରିନର ଶୀର୍ଷରୁ ତଳକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ବୁଝିଗଲି"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ଫେରନ୍ତୁ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ହୋମ"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"ସ୍କ୍ରିନ୍ ସେଭର୍"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ଇଥରନେଟ୍"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ବ୍ଲୁଟୁଥ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ପେୟାର୍ ହୋଇଥିବା କୌଣସି ଡିଭାଇସ୍ ଉପଲବ୍ଧ ନାହିଁ"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ଏକ ଡିଭାଇସ କନେକ୍ଟ କିମ୍ବା ଡିସକନେକ୍ଟ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ସେଭ କରାଯାଇଛି"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ଡିସକନେକ୍ଟ କରନ୍ତୁ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ଚାଲୁ କରନ୍ତୁ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ଆସନ୍ତାକାଲି ସ୍ୱତଃ ଚାଲୁ ହେବ"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share ଏବଂ Find My Device ପରି ଫିଚରଗୁଡ଼ିକ ବ୍ଲୁଟୁଥ ବ୍ୟବହାର କରେ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ବ୍ଲୁଟୁଥ ଆସନ୍ତା କାଲି ସକାଳେ ଚାଲୁ ହେବ"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ଅଡିଓ ସେୟାର କରନ୍ତୁ"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ୱିଜେଟ ଚୟନ କରନ୍ତୁ"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ୱିଜେଟକୁ କାଢ଼ି ଦିଅନ୍ତୁ"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ଚୟନିତ ୱିଜେଟ ରଖନ୍ତୁ"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ଲକ ସ୍କ୍ରିନ ୱିଜେଟଗୁଡ଼ିକ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ଏକ ୱିଜେଟ ବ୍ୟବହାର କରି ଗୋଟିଏ ଆପ ଖୋଲିବା ପାଇଁ ଏହା ଆପଣ ଅଟନ୍ତି ବୋଲି ଆପଣଙ୍କୁ ଯାଞ୍ଚ କରିବାକୁ ହେବ। ଆହୁରି ମଧ୍ୟ, ଆପଣଙ୍କ ଟାବଲେଟ ଲକ ଥିଲେ ମଧ୍ୟ ଯେ କୌଣସି ବ୍ୟକ୍ତି ଏହାକୁ ଭ୍ୟୁ କରିପାରିବେ ବୋଲି ମନେ ରଖନ୍ତୁ। କିଛି ୱିଜେଟ ଆପଣଙ୍କ ଲକ ସ୍କ୍ରିନ ପାଇଁ ଉଦ୍ଦିଷ୍ଟ ହୋଇନଥାଇପାରେ ଏବଂ ଏଠାରେ ଯୋଗ କରିବା ଅସୁରକ୍ଷିତ ହୋଇପାରେ।"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ବୁଝିଗଲି"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ୟୁଜର୍ ବଦଳାନ୍ତୁ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ପୁଲଡାଉନ ମେନୁ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ଏହି ସେସନର ସମସ୍ତ ଆପ୍ ଓ ଡାଟା ଡିଲିଟ୍ ହୋଇଯିବ।"</string>
@@ -511,7 +521,7 @@
<string name="guest_notification_app_name" msgid="2110425506754205509">"ଅତିଥି ମୋଡ"</string>
<string name="guest_notification_session_active" msgid="5567273684713471450">"ଆପଣ ଅତିଥି ମୋଡରେ ଅଛନ୍ତି"</string>
<string name="user_add_user_message_guest_remove" msgid="5589286604543355007">\n\n"ଜଣେ ନୂଆ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଗ କରିବା ଦ୍ୱାରା ଅତିଥି ମୋଡରୁ ବାହାରି ଯିବ ଏବଂ ବର୍ତ୍ତମାନର ଅତିଥି ସେସନରୁ ସମସ୍ତ ଆପ ଓ ଡାଟା ଡିଲିଟ ହୋଇଯିବ।"</string>
- <string name="user_limit_reached_title" msgid="2429229448830346057">"ଉପଯୋଗକର୍ତ୍ତା ସୀମାରେ ପହଞ୍ଚିଛି"</string>
+ <string name="user_limit_reached_title" msgid="2429229448830346057">"ୟୁଜର ସୀମାରେ ପହଞ୍ଚିଛି"</string>
<string name="user_limit_reached_message" msgid="1070703858915935796">"{count,plural, =1{କେବଳ ଜଣେ ୟୁଜର ତିଆରି କରାଯାଇପାରିବ।}other{କେବଳ # ଜଣ ୟୁଜର ତିଆରି କରାଯାଇପାରିବ।}}"</string>
<string name="user_remove_user_title" msgid="9124124694835811874">"ୟୁଜରଙ୍କୁ ବାହାର କରିବେ?"</string>
<string name="user_remove_user_message" msgid="6702834122128031833">"ଏହି ୟୁଜରଙ୍କ ସମସ୍ତ ଆପ୍ ଓ ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ଡିଫଲ୍ଟ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ସ୍ୱଚାଳିତ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"କୌଣସି ସାଉଣ୍ଡ କିମ୍ବା ଭାଇବ୍ରେସନ୍ ନାହିଁ"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"କୌଣସି ସାଉଣ୍ଡ କିମ୍ବା ଭାଇବ୍ରେସନ୍ ନାହିଁ ଏବଂ ବାର୍ତ୍ତାଳାପ ବିଭାଗର ନିମ୍ନରେ ଦେଖାଯାଏ"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ଡିଭାଇସ ସେଟିଂସ ଆଧାରରେ ରିଂ କିମ୍ବା ଭାଇବ୍ରେଟ ହୋଇପାରେ"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ଡିଭାଇସ ସେଟିଂସ ଆଧାରରେ ରିଂ କିମ୍ବା ଭାଇବ୍ରେଟ ହୋଇପାରେ। ଡିଫଲ୍ଟ ଭାବରେ <xliff:g id="APP_NAME">%1$s</xliff:g>ରୁ ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ବବଲ ଭାବେ ଦେଖାଯାଏ।"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ଏହି ବିଜ୍ଞପ୍ତି ପ୍ରାପ୍ତ ହେବା ସମୟରେ ସାଉଣ୍ଡ ହେବା ଉଚିତ ନା ଭାଇବ୍ରେସନ୍ ତାହା ସିଷ୍ଟମକୁ ସ୍ଥିର କରିବାକୁ ଦିଅନ୍ତୁ"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"ଉପର ପୃଷ୍ଠା"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"ତଳ ପୃଷ୍ଠା"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"ଡିଲିଟ କରନ୍ତୁ"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"ହୋମ"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"ସମାପ୍ତ"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"ଇନ୍ସର୍ଟ"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ଇନପୁଟ"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ଆପ ସର୍ଟକଟ"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ଆକ୍ସେସିବିଲିଟୀ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"କୀବୋର୍ଡ ସର୍ଟକଟ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ସର୍ଚ୍ଚ ସର୍ଟକଟ"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ଆଇକନକୁ ସଙ୍କୁଚିତ କରନ୍ତୁ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ଆଇକନକୁ ବିସ୍ତାର କରନ୍ତୁ"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"କିମ୍ବା"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ବେକ ଜେଶ୍ଚର"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ହୋମ ଜେଶ୍ଚର"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ଆକ୍ସନ କୀ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ହୋଇଗଲା"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ବଢ଼ିଆ କାମ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ପଛକୁ ଫେରନ୍ତୁ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ପଛକୁ ଫେରିବା ପାଇଁ ଯେ କୌଣସି ସ୍ଥାନରେ ତିନି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ବାମ କିମ୍ବା ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ।"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ଡାହାଣ ଏବଂ ବାମକୁ ତିନି ଆଙ୍ଗୁଠି ମୁଭ କରୁଥିବା ଟଚପେଡ ଦେଖାଉଛି"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dରୁ %1$d ନମ୍ବର ଲେଭେଲ"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ହୋମ କଣ୍ଟ୍ରୋଲ୍ସ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ସ୍କ୍ରିନସେଭର ଭାବେ ହୋମ କଣ୍ଟ୍ରୋଲ୍ସକୁ ଶୀଘ୍ର ଆକ୍ସେସ କରନ୍ତୁ"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-or/tiles_states_strings.xml b/packages/SystemUI/res/values-or/tiles_states_strings.xml
index fe187c2..1bc369b 100644
--- a/packages/SystemUI/res/values-or/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-or/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ବନ୍ଦ ଅଛି"</item>
<item msgid="4875147066469902392">"ଚାଲୁ ଅଛି"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ଉପଲବ୍ଧ ନାହିଁ"</item>
<item msgid="5044688398303285224">"ବନ୍ଦ ଅଛି"</item>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 3cb2e6d..3f06376 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ ਨੂੰ ਰੱਖਿਅਤ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋ ਗਈ"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋਈ"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ਤੁਸੀਂ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਰਿਕਾਰਡ ਕਰਨਾ ਬੰਦ ਕਰ ਦੇਵੋਗੇ"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ਰਿਕਾਰਡਿੰਗ ਬੰਦ ਕਰੋ"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"ਸਕ੍ਰੀਨ ਸਾਂਝੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"ਕੀ ਸਕ੍ਰੀਨ ਨੂੰ ਸਾਂਝਾ ਕਰਨਾ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"ਤੁਸੀਂ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਸਾਂਝਾ ਕਰਨਾ ਬੰਦ ਕਰ ਦੇਵੋਗੇ"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"ਸਕ੍ਰੀਨ \'ਤੇ ਕਾਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"ਸਾਂਝਾਕਰਨ ਬੰਦ ਕਰੋ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"ਸਕ੍ਰੀਨ \'ਤੇ ਕਾਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"ਕੀ ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"ਤੁਸੀਂ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰ ਦੇਵੋਗੇ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰੋ"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ਬੰਦ ਕਰੋ"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ਸਮੱਸਿਆ ਰਿਕਾਰਡਰ"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ਸਮੱਸਿਆ ਰਿਕਾਰਡਿੰਗ ਪ੍ਰਕਿਰਿਆ-ਅਧੀਨ ਹੈ"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ਸਮੱਸਿਆ ਬਾਰੇ ਜਾਣਕਾਰੀ ਇਕੱਤਰ ਕਰਨ ਵਾਲੇ ਸੈਸ਼ਨ ਸੰਬੰਧੀ ਨਿਰੰਤਰ ਸੂਚਨਾ"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ਸਮੱਸਿਆ ਰਿਕਾਰਡਿੰਗ ਰੱਖਿਅਤ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋ ਗਈ"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ਸਮੱਸਿਆ ਰਿਕਾਰਡਿੰਗ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਵੇਲੇ ਗੜਬੜ ਹੋ ਗਈ"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ਪੂਰੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦੇਖਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ਬਾਹਰ ਜਾਣ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰ ਤੋਂ ਹੇਠਾਂ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ਸਮਝ ਲਿਆ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ਪਿੱਛੇ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ਘਰ"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"ਸਕ੍ਰੀਨ ਸੇਵਰ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ਈਥਰਨੈਟ"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"ਬਲੂਟੁੱਥ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ਕੋਈ ਜੋੜਾਬੱਧ ਕੀਤੀਆਂ ਡੀਵਾਈਸਾਂ ਉਪਲਬਧ ਨਹੀਂ"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"ਡੀਵਾਈਸ ਨੂੰ ਕਨੈਕਟ ਜਾਂ ਡਿਸਕਨੈਕਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"ਕੱਲ੍ਹ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ਕਵਿੱਕ ਸ਼ੇਅਰ ਅਤੇ Find My Device ਵਰਗੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬਲੂਟੁੱਥ ਵਰਤਦੀਆਂ ਹਨ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"ਬਲੂਟੁੱਥ ਕੱਲ੍ਹ ਸਵੇਰੇ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ਆਡੀਓ ਨੂੰ ਸਾਂਝਾ ਕਰੋ"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ਵਿਜੇਟ ਚੁਣੋ"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ਵਿਜੇਟ ਹਟਾਓ"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ਚੁਣੇ ਗਏ ਵਿਜੇਟ ਲਈ ਥਾਂ ਚੁਣੋ"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"ਲਾਕ ਸਕ੍ਰੀਨ ਵਿਜੇਟ"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ਵਿਜੇਟ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਐਪ ਖੋਲ੍ਹਣ ਲਈ, ਤੁਹਾਨੂੰ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ ਕਿ ਇਹ ਤੁਸੀਂ ਹੀ ਹੋ। ਨਾਲ ਹੀ, ਇਹ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਕੋਈ ਵੀ ਉਨ੍ਹਾਂ ਨੂੰ ਦੇਖ ਸਕਦਾ ਹੈ, ਭਾਵੇਂ ਤੁਹਾਡੀ ਟੈਬਲੈੱਟ ਲਾਕ ਹੋਵੇ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਵਿਜੇਟ ਤੁਹਾਡੀ ਲਾਕ ਸਕ੍ਰੀਨ ਲਈ ਨਾ ਬਣੇ ਹੋਣ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਥੇ ਸ਼ਾਮਲ ਕਰਨਾ ਅਸੁਰੱਖਿਅਤ ਹੋਵੇ।"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ਸਮਝ ਲਿਆ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ਪੁੱਲਡਾਊਨ ਮੀਨੂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ਇਸ ਸੈਸ਼ਨ ਵਿਚਲੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟੇ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ਸਵੈਚਲਿਤ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ਕੋਈ ਧੁਨੀ ਜਾਂ ਥਰਥਰਾਹਟ ਨਹੀਂ"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ਕੋਈ ਧੁਨੀ ਜਾਂ ਥਰਥਰਾਹਟ ਨਹੀਂ ਅਤੇ ਸੂਚਨਾਵਾਂ ਗੱਲਬਾਤ ਸੈਕਸ਼ਨ ਵਿੱਚ ਹੇਠਲੇ ਪਾਸੇ ਦਿਸਦੀਆਂ ਹਨ"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"ਡੀਵਾਈਸ ਸੈਟਿੰਗਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਘੰਟੀ ਵੱਜ ਸਕਦੀ ਹੈ ਜਾਂ ਥਰਥਰਾਹਟ ਹੋ ਸਕਦੀ ਹੈ"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"ਡੀਵਾਈਸ ਸੈਟਿੰਗਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਘੰਟੀ ਵੱਜ ਸਕਦੀ ਹੈ ਜਾਂ ਥਰਥਰਾਹਟ ਹੋ ਸਕਦੀ ਹੈ। ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਤੌਰ \'ਤੇ <xliff:g id="APP_NAME">%1$s</xliff:g> ਬਬਲ ਤੋਂ ਗੱਲਾਂਬਾਤਾਂ।"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ਸਿਸਟਮ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਦਿਓ ਕਿ ਇਸ ਸੂਚਨਾ ਲਈ ਕੋਈ ਧੁਨੀ ਵਜਾਉਣੀ ਚਾਹੀਦੀ ਹੈ ਜਾਂ ਥਰਥਰਾਹਟ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"ਮਿਟਾਓ"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ਇਨਪੁੱਟ"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ਐਪ ਸ਼ਾਰਟਕੱਟ"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ਪਹੁੰਚਯੋਗਤਾ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ਖੋਜ ਸੰਬੰਧੀ ਸ਼ਾਰਟਕੱਟ"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ਪ੍ਰਤੀਕ ਨੂੰ ਸਮੇਟੋ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ਪ੍ਰਤੀਕ ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ਜਾਂ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ਪਿੱਛੇ ਜਾਣ ਦਾ ਇਸ਼ਾਰਾ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ਹੋਮ \'ਤੇ ਜਾਣ ਦਾ ਇਸ਼ਾਰਾ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ਕਾਰਵਾਈ ਕੁੰਜੀ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ਹੋ ਗਿਆ"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"ਬਹੁਤ ਵਧੀਆ!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ਵਾਪਸ ਜਾਓ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ਵਾਪਸ ਜਾਣ ਲਈ, ਟੱਚਪੈਡ \'ਤੇ ਕਿਤੇ ਵੀ ਤਿੰਨ ਉਂਗਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ।"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਨੂੰ ਸੱਜੇ ਅਤੇ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਲਿਜਾਂਦੇ ਹੋਏ ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d ਵਿੱਚੋਂ %1$d ਪੱਧਰ"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ਹੋਮ ਕੰਟਰੋਲ"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ਸਕ੍ਰੀਨ-ਸੇਵਰ ਵਜੋਂ ਆਪਣੇ ਹੋਮ ਕੰਟਰੋਲਾਂ ਤੱਕ ਤੁਰੰਤ ਪਹੁੰਚ ਕਰੋ"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pa/tiles_states_strings.xml b/packages/SystemUI/res/values-pa/tiles_states_strings.xml
index 62dc05a..cc4c5c4 100644
--- a/packages/SystemUI/res/values-pa/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pa/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ਬੰਦ ਹੈ"</item>
<item msgid="4875147066469902392">"ਚਾਲੂ ਹੈ"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ਅਣਉਪਲਬਧ ਹੈ"</item>
<item msgid="5044688398303285224">"ਬੰਦ ਹੈ"</item>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index b679e82..dedfc93 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Kliknij, aby wyświetlić"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Podczas zapisywania nagrania ekranu wystąpił błąd"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Błąd podczas rozpoczynania rejestracji zawartości ekranu"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Przestaniesz nagrywać treści z aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Zatrzymać nagrywanie?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Obecnie nagrywasz cały widok ekranu"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Obecnie nagrywasz widok aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Zatrzymaj nagrywanie"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Udostępniam ekran"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Przestaniesz udostępniać treści z aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Przesyłam ekran"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Przestaniesz przesyłać treści z aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Zatrzymać udostępnianie ekranu?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Obecnie udostępniasz aplikacji <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> cały widok ekranu"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Obecnie udostępniasz aplikacji cały widok ekranu"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Obecnie udostępniasz aplikację <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Obecnie udostępniasz aplikację"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Zatrzymaj udostępnianie"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Przesyłam zawartość ekranu"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Zatrzymać przesyłanie?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Obecnie przesyłasz cały widok ekranu na urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Obecnie przesyłasz cały widok ekranu na urządzenie w pobliżu"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Obecnie przesyłasz widok aplikacji <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> na urządzenie <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Obecnie przesyłasz widok aplikacji <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> na urządzenie w pobliżu"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Obecnie przesyłasz widok ekranu na urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Obecnie przesyłasz widok ekranu na urządzenie w pobliżu"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Zatrzymaj przesyłanie"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zamknij"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Rejestrator problemów"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Przetwarzam nagranie problemu"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Powiadomienie o trwającej aktywności sesji nagrywania ekranu"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Błąd podczas zapisywania nagrania problemu"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Błąd podczas rozpoczynania nagrania problemu"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Włączony pełny ekran"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Aby zamknąć, przesuń palcem w dół z góry ekranu"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Wróć"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Ekran główny"</string>
@@ -195,7 +190,7 @@
<string name="biometric_dialog_tap_confirm_with_face_alt_1" msgid="439152621640507113">"Odblokowano rozpoznawaniem twarzy. Kliknij, aby kontynuować."</string>
<string name="biometric_dialog_tap_confirm_with_face_alt_2" msgid="8586608186457385108">"Twarz rozpoznana. Kliknij, aby kontynuować."</string>
<string name="biometric_dialog_tap_confirm_with_face_alt_3" msgid="2192670471930606539">"Twarz rozpoznana. Aby kontynuować, kliknij ikonę odblokowywania."</string>
- <string name="biometric_dialog_tap_confirm_with_face_sfps" msgid="2499213248903257928">"Odblokowano skanem twarzy. Kliknij, aby kontynuować."</string>
+ <string name="biometric_dialog_tap_confirm_with_face_sfps" msgid="2499213248903257928">"Odblokowano skanem twarzy. Kliknij, aby przejść dalej."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Uwierzytelniono"</string>
<string name="biometric_dialog_cancel_authentication" msgid="981316588773442637">"Anuluj uwierzytelnianie"</string>
<string name="biometric_dialog_content_view_more_options_button" msgid="2663810393874865475">"Więcej opcji"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Wygaszacz ekranu"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Nie przeszkadzać"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Tryby priorytetowe"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Brak dostępnych sparowanych urządzeń"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Kliknij, aby podłączyć lub odłączyć urządzenie"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Zapisane"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"rozłącz"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktywuj"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automatycznie włącz jutro"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Bluetootha używają funkcje takie jak szybkie udostępnianie czy Znajdź moje urządzenie"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth włączy się jutro rano"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Udostępnij dźwięk"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"wybierz widżet"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"usuń widżet"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"umieść wybrany widżet"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widżety na ekranie blokady"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Każdy zobaczy widżety na ekranie blokady, nawet gdy tablet jest zablokowany."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widżety na ekranie blokady"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Aby otworzyć aplikację za pomocą widżetu, musisz potwierdzić swoją tożsamość. Pamiętaj też, że każdy będzie mógł wyświetlić widżety nawet wtedy, gdy tablet będzie zablokowany. Niektóre widżety mogą nie być przeznaczone do umieszczenia na ekranie blokady i ich dodanie w tym miejscu może być niebezpieczne."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Przełącz użytkownika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Wszystkie aplikacje i dane w tej sesji zostaną usunięte."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Domyślne"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatycznie"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Bez dźwięku i wibracji"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Brak dźwięku i wibracji, wyświetlają się niżej w sekcji rozmów"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Mogą włączać dzwonek lub wibracje w zależności od ustawień urządzenia"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Mogą włączać dzwonek lub wibracje w zależności od ustawień urządzenia. Rozmowy z aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g> są domyślnie wyświetlane jako dymki."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Pozwól systemowi decydować, czy o powiadomieniu powinien informować dźwięk czy wibracja"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1357,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Podzielony ekran"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Wprowadzanie"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Skróty do aplikacji"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ułatwienia dostępu"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Skróty klawiszowe"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Skróty do wyszukiwania"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona zwijania"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona rozwijania"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"lub"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gest przejścia wstecz"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gest przejścia na ekran główny"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Klawisz działania"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotowe"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Świetnie!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Wróć"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Aby wrócić, przesuń 3 palcami w lewo lub w prawo w dowolnym miejscu touchpada."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"3 palce na touchpadzie poruszające się w prawo i w lewo"</string>
@@ -1385,4 +1378,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Poziom %1$d z %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Sterowanie domem"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Szybki dostęp do sterowania domem na wygaszaczu ekranu"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"Cofnij"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pl/tiles_states_strings.xml b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
index 5aa719f..2190cf8 100644
--- a/packages/SystemUI/res/values-pl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pl/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Wyłączone"</item>
<item msgid="4875147066469902392">"Włączone"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Niedostępne"</item>
+ <item msgid="2004750556637773692">"Wyłączono"</item>
+ <item msgid="8968530753931637871">"Włączono"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Niedostępny"</item>
<item msgid="5044688398303285224">"Wyłączona"</item>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 29b8452..1ab30c3 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Toque para ver"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Erro ao salvar a gravação da tela"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Erro ao iniciar a gravação de tela"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Você vai parar de gravar o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Parar gravação?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Você está gravando a tela inteira"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Você está gravando o app <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Parar gravação"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Compartilhando a tela"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Você vai parar de compartilhar o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Transmitindo a tela"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Você vai parar de transmitir o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Parar o compartilhamento de tela?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Você está compartilhando a tela inteira com o app <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Você está compartilhando a tela inteira com um app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Você está compartilhando o app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Você está compartilhando um app"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Interromper compartilhamento"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Transmitindo a tela"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Parar transmissão?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Você está transmitindo a tela inteira para o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Você está transmitindo a tela inteira para um dispositivo por perto"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Você está transmitindo o app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> para o <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Você está transmitindo o app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> para um dispositivo por perto"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Você está transmitindo para o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Você está transmitindo para um dispositivo por perto"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Interromper transmissão"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Fechar"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Gravador de problemas"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Processando a gravação do problema"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificação em andamento para uma sessão de coleta de problemas"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Erro ao salvar a gravação do problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Erro ao iniciar a gravação do problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualização em tela cheia"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Para sair, deslize de cima para baixo na tela"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Entendi"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Voltar"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Página inicial"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Protetor de tela"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Não perturbe"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Não há dispositivos pareados disponíveis"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toque para conectar ou desconectar um dispositivo"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Salvo"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ativar"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Ativar automaticamente amanhã"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Recursos como o Quick Share e o Encontre Meu Dispositivo usam Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"O Bluetooth será ativado amanhã de manhã"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Compartilhar áudio"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"selecionar widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remover widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"posicionar widget selecionado"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgets da tela de bloqueio"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Todos podem ver os widgets na tela de bloqueio, mesmo com o tablet bloqueado."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets da tela de bloqueio"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir um app usando um widget, você precisará confirmar sua identidade. Além disso, não se esqueça que qualquer pessoa pode ver os widgets, mesmo quando o tablet está bloqueado. Alguns widgets podem não ter sido criados para ficar na tela de bloqueio e fazer isso talvez não seja seguro."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendi"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Padrão"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Som e vibração desativados"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"O som e a vibração estão desativados, e o balão aparece na parte inferior da seção de conversa"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Pode vibrar ou tocar com base nas configurações do dispositivo"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Pode vibrar ou tocar com base nas configurações do dispositivo. As conversas do app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem em balões por padrão."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Faça com que o sistema determine se a notificação resultará em som ou vibração"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Tela dividida"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App atual"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos do teclado"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atalhos de pesquisa"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícone \"Fechar\""</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícone \"Abrir\""</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ou"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto de volta"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto de início"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla de ação"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Muito bem!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para voltar, deslize para a esquerda ou direita usando 3 dedos em qualquer lugar do touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad mostrando 3 dedos deslizando para a direita e esquerda"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Automação residencial"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Controles de automação residencial no protetor de tela"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
index 3526c77..b881142 100644
--- a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Desativado"</item>
<item msgid="4875147066469902392">"Ativado"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Indisponível"</item>
<item msgid="5044688398303285224">"Desativada"</item>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index cdec12e..963b47c 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Toque para ver"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Erro ao guardar a gravação de ecrã"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Ocorreu um erro ao iniciar a gravação do ecrã."</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Vai parar de gravar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Parar a gravação?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Neste momento, está a gravar todo o seu ecrã"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Neste momento, está a gravar a app <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Parar gravação"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"A partilhar o ecrã"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Vai parar de partilhar <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"A transmitir o ecrã"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Vai parar de transmitir <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Parar a partilha do ecrã?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Neste momento, está a partilhar todo o seu ecrã com a app <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Neste momento, está a partilhar todo o seu ecrã com uma app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Neste momento, está a partilhar a app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Neste momento, está a partilhar uma app"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Parar partilha"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"A transmitir o ecrã"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Parar a transmissão?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Neste momento, está a transmitir todo o seu ecrã para o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Neste momento, está a transmitir todo o seu ecrã para um dispositivo próximo"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Neste momento, está a transmitir a app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> para o dispositivo <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Neste momento, está a transmitir a app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> para um dispositivo próximo"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Neste momento, está a transmitir para o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Neste momento, está a transmitir para um dispositivo próximo"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Parar transmissão"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Fechar"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Registador de problemas"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"A proc. registo de problemas"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificação em curso de uma sessão de recolha de problemas"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Erro ao guardar o registo de problemas"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Erro ao iniciar o registo de problemas"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualização de ecrã inteiro"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Para sair, deslize rapidamente para baixo a partir da parte superior do ecrã"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Anterior"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Página inicial"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Proteção ecrã"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Não incomodar"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Modos de prioridade"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Sem dispositivos sincronizados disponíveis"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toque para associar ou desassociar um dispositivo"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Guardado"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desassociar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ativar"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Ativar automaticamente amanhã"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funcionalidades como a Partilha rápida e o serviço Localizar o meu dispositivo usam o Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"O Bluetooth vai ser ativado amanhã de manhã"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Partilhar áudio"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"selecionar widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remover widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"posicionar widget selecionado"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgets do ecrã de bloqueio"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Todos podem pode ver widgets no ecrã de bloqueio, mesmo com o tablet bloqueado."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets do ecrã de bloqueio"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir uma app através de um widget, vai ter de validar a sua identidade. Além disso, tenha em atenção que qualquer pessoa pode ver os widgets, mesmo quando o tablet estiver bloqueado. Alguns widgets podem não se destinar ao ecrã de bloqueio e pode ser inseguro adicioná-los aqui."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mudar utilizador"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pendente"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todas as apps e dados desta sessão serão eliminados."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Predefinição"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Sem som ou vibração"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sem som ou vibração e aparece na parte inferior na secção de conversas"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Pode tocar ou vibrar com base nas definições do dispositivo"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Pode tocar ou vibrar com base nas definições do dispositivo. As conversas da app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem como um balão por predefinição."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Faça com que o sistema determine se esta notificação deve emitir um som ou uma vibração"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Página para cima"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Página para baixo"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Eliminar"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Início"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fim"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Inserir"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ecrã dividido"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App atual"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos de teclado"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atalhos de pesquisa"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícone de reduzir"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícone de expandir"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ou"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto para retroceder"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto para aceder ao ecrã principal"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla de ação"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluir"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Muito bem!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para retroceder, deslize rapidamente para a esquerda ou direita com três dedos em qualquer parte do touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad a mostrar três dedos a moverem-se para a direita e esquerda"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Controlos domésticos"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Use controlos domésticos como proteção de ecrã"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"Anular"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
index 34a5ed7..d7a245a 100644
--- a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Desligado"</item>
<item msgid="4875147066469902392">"Ligado"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Indisponível"</item>
+ <item msgid="2004750556637773692">"Desativado"</item>
+ <item msgid="8968530753931637871">"Ativado"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Indisponível"</item>
<item msgid="5044688398303285224">"Desligada"</item>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 29b8452..1ab30c3 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Toque para ver"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Erro ao salvar a gravação da tela"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Erro ao iniciar a gravação de tela"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Você vai parar de gravar o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Parar gravação?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Você está gravando a tela inteira"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Você está gravando o app <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Parar gravação"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Compartilhando a tela"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Você vai parar de compartilhar o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Transmitindo a tela"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Você vai parar de transmitir o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Parar o compartilhamento de tela?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Você está compartilhando a tela inteira com o app <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Você está compartilhando a tela inteira com um app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Você está compartilhando o app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Você está compartilhando um app"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Interromper compartilhamento"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Transmitindo a tela"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Parar transmissão?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Você está transmitindo a tela inteira para o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Você está transmitindo a tela inteira para um dispositivo por perto"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Você está transmitindo o app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> para o <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Você está transmitindo o app <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> para um dispositivo por perto"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Você está transmitindo para o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Você está transmitindo para um dispositivo por perto"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Interromper transmissão"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Fechar"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Gravador de problemas"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Processando a gravação do problema"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificação em andamento para uma sessão de coleta de problemas"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Erro ao salvar a gravação do problema"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Erro ao iniciar a gravação do problema"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visualização em tela cheia"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Para sair, deslize de cima para baixo na tela"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Entendi"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Voltar"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Página inicial"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Protetor de tela"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Não perturbe"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Não há dispositivos pareados disponíveis"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Toque para conectar ou desconectar um dispositivo"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Salvo"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"desconectar"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"ativar"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Ativar automaticamente amanhã"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Recursos como o Quick Share e o Encontre Meu Dispositivo usam Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"O Bluetooth será ativado amanhã de manhã"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Compartilhar áudio"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"selecionar widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"remover widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"posicionar widget selecionado"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Widgets da tela de bloqueio"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Todos podem ver os widgets na tela de bloqueio, mesmo com o tablet bloqueado."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgets da tela de bloqueio"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para abrir um app usando um widget, você precisará confirmar sua identidade. Além disso, não se esqueça que qualquer pessoa pode ver os widgets, mesmo quando o tablet está bloqueado. Alguns widgets podem não ter sido criados para ficar na tela de bloqueio e fazer isso talvez não seja seguro."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Entendi"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Padrão"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Som e vibração desativados"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"O som e a vibração estão desativados, e o balão aparece na parte inferior da seção de conversa"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Pode vibrar ou tocar com base nas configurações do dispositivo"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Pode vibrar ou tocar com base nas configurações do dispositivo. As conversas do app <xliff:g id="APP_NAME">%1$s</xliff:g> aparecem em balões por padrão."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Faça com que o sistema determine se a notificação resultará em som ou vibração"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Tela dividida"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App atual"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos do teclado"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Atalhos de pesquisa"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ícone \"Fechar\""</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ícone \"Abrir\""</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ou"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto de volta"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto de início"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla de ação"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Muito bem!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para voltar, deslize para a esquerda ou direita usando 3 dedos em qualquer lugar do touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad mostrando 3 dedos deslizando para a direita e esquerda"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nível %1$d de %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Automação residencial"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Controles de automação residencial no protetor de tela"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt/tiles_states_strings.xml b/packages/SystemUI/res/values-pt/tiles_states_strings.xml
index 3526c77..b881142 100644
--- a/packages/SystemUI/res/values-pt/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-pt/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Desativado"</item>
<item msgid="4875147066469902392">"Ativado"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Indisponível"</item>
<item msgid="5044688398303285224">"Desativada"</item>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 4da9b70..285a3ca 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Atinge pentru a afișa"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Eroare la salvarea înregistrării ecranului"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Eroare la începerea înregistrării ecranului"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Nu vei mai înregistra <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Oprește înregistrarea"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Se permite accesul la ecran"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Oprești accesul la ecran?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Nu vei mai permite accesul la <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Se proiectează ecranul"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Nu mai permite accesul"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Se proiectează ecranul"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Oprești proiectarea?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Nu vei mai proiecta <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Oprește proiectarea"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Închide"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Instrument de înregistrare a problemelor"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Se procesează înregistrarea problemei"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Notificare în curs pentru o sesiune de înregistrare a problemei"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Eroare la salvarea înregistrării problemei"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Eroare la începerea înregistrării problemei"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Vizualizare pe ecran complet"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Pentru a ieși, glisează în jos din partea de sus a ecranului"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Înapoi"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Ecranul de pornire"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Screensaver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Nu deranja"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Niciun dispozitiv conectat disponibil"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Atinge pentru a conecta sau deconecta un dispozitiv"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Salvat"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"deconectează"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"activează"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Activează automat mâine"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funcții precum Quick Share și Găsește-mi dispozitivul folosesc Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth se va activa mâine dimineață"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Trimite audio"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"selectează un widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"elimină widgetul"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"plasează widgetul selectat"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgeturi pe ecranul de blocare"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Pentru a deschide o aplicație folosind un widget, va trebui să-ți confirmi identitatea. În plus, reține că oricine poate să vadă widgeturile, chiar dacă tableta este blocată. Este posibil ca unele widgeturi să nu fi fost create pentru ecranul de blocare și poate fi nesigur să le adaugi aici."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Schimbă utilizatorul"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"meniu vertical"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toate aplicațiile și datele din această sesiune vor fi șterse."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Prestabilite"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automat"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Fără sunet sau vibrații"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Fără sunet sau vibrații și apare în partea de jos a secțiunii de conversație"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Poate să sune sau să vibreze, în funcție de setările dispozitivului"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Poate să sune sau să vibreze, în funcție de setările dispozitivului. Conversațiile din balonul <xliff:g id="APP_NAME">%1$s</xliff:g> în mod prestabilit."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Solicită-i sistemului să stabilească dacă această notificare e sonoră sau cu vibrații."</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"O pagină mai sus"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"O pagină mai jos"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Șterge"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"La început"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"La final"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Inserează"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ecran împărțit"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Intrare"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Comenzi rapide pentru aplicații"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilitate"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Comenzi rapide de la tastatură"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Comenzi directe de căutare"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Pictograma de restrângere"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Pictograma de extindere"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"sau"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gestul Înapoi"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gestul Ecran de pornire"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tastă de acțiuni"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gata"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Excelent!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Înapoi"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Pentru a reveni, glisează spre stânga sau spre dreapta cu trei degete oriunde pe touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad cu trei degete care se mișcă spre dreapta și spre stânga"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivelul %1$d din %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Comenzi pentru locuință"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Accesează comenzile pentru locuință ca screensaver"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ro/tiles_states_strings.xml b/packages/SystemUI/res/values-ro/tiles_states_strings.xml
index a68f140..25a2959 100644
--- a/packages/SystemUI/res/values-ro/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ro/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Dezactivată"</item>
<item msgid="4875147066469902392">"Activată"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Indisponibilă"</item>
<item msgid="5044688398303285224">"Dezactivată"</item>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 4e28df5..507b8d1 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Нажмите, чтобы посмотреть."</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Не удалось сохранить запись видео с экрана."</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Не удалось начать запись видео с экрана."</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Запись в приложении <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> будет прекращена."</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Остановить запись?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Вы записываете свой экран."</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Вы записываете экран приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Остановить запись"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Демонстрация экрана"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Демонстрация экрана приложения <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> будет прекращена."</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Трансляция экрана"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Трансляция из приложения <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> будет прекращена."</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Закрыть совместный доступ к экрану?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Вы демонстрируете свой экран в приложении \"<xliff:g id="HOST_APP_NAME">%1$s</xliff:g>\"."</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Вы демонстрируете свой экран в приложении."</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Вы демонстрируете экран приложения \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\"."</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Вы демонстрируете экран приложения."</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Закрыть доступ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Трансляция экрана"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Прекратить трансляцию?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Вы транслируете свой экран на устройство \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Вы транслируете свой экран на устройство поблизости."</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Вы транслируете приложение \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\" на устройство \"<xliff:g id="DEVICE_NAME">%2$s</xliff:g>\"."</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Вы транслируете приложение \"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>\" на устройство поблизости."</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Вы транслируете на устройство \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Вы транслируете на устройство поблизости."</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Остановить трансляцию"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Закрыть"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Запись проблем на видео"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Обрабатываем запись"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Текущее уведомление о записи проблемы на видео"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Не удалось сохранить запись."</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Не удалось начать запись."</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Полноэкранный режим"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Чтобы выйти, проведите вниз от верхнего края экрана"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"ОК"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Назад"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Главный экран"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Заставка"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Не беспокоить"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Нет доступных сопряженных устройств"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Нажмите, чтобы подключить или отключить устройство."</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Сохранено"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"отключить"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активировать"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Включить автоматически завтра"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Bluetooth используется в таких функциях и сервисах, как \"Быстрая отправка\" и \"Найти устройство\""</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth включится завтра утром"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Отправить аудио"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"выбрать виджет"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"удалить виджет"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"разместить выбранный виджет"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Виджеты на заблокированном экране"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Они видны всем, даже если планшет заблокирован."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Виджеты на заблокированном экране"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Чтобы открыть приложение, используя виджет, вам нужно будет подтвердить свою личность. Обратите внимание, что виджеты видны всем, даже если планшет заблокирован. Некоторые виджеты не предназначены для использования на заблокированном экране. Добавлять их туда может быть небезопасно."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"ОК"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Сменить пользователя."</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"раскрывающееся меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Все приложения и данные этого профиля будут удалены."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"По умолчанию"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автоматически"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звука и вибрации"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звука или вибрации, появляется в нижней части списка разговоров"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Звонок или вибрация в зависимости от настроек устройства"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Звонок или вибрация в зависимости от настроек устройства. Разговоры из приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" по умолчанию появляются в виде всплывающего чата."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Система будет сама определять, включать ли звуковой сигнал или вибрацию для уведомления"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Разделение экрана"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ввод"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ярлыки приложений"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Специальные возможности"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Быстрые клавиши"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Найти быстрые клавиши"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Значок \"Свернуть\""</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Значок \"Развернуть\""</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"или"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Жест \"назад\""</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Жест \"на главный экран\""</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Клавиша действия"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Отлично!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Чтобы вернуться, проведите тремя пальцами влево или вправо по сенсорной панели."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Три пальца двигаются вправо и влево по сенсорной панели"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Уровень %1$d из %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Управление домом"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Быстрый доступ к управлению домом через заставку"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ru/tiles_states_strings.xml b/packages/SystemUI/res/values-ru/tiles_states_strings.xml
index 592937c..2a0314e 100644
--- a/packages/SystemUI/res/values-ru/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ru/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Откл."</item>
<item msgid="4875147066469902392">"Вкл."</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Функция недоступна"</item>
<item msgid="5044688398303285224">"Откл."</item>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index bd9488d..ebcfa9d 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"බැලීමට තට්ටු කරන්න"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"තිර පටිගත කිරීම සුරැකීමේ දෝෂයකි"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"තිර පටිගත කිරීම ආරම්භ කිරීමේ දෝෂයකි"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"ඔබ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> පටිගත කිරීම නතර කරනු ඇත"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"පටිගත කිරීම නවත්වන්න"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"තිරය බෙදා ගැනීම"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"තිරය බෙදා ගැනීම නවත්වන්න ද?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"ඔබ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> බෙදා ගැනීම නතර කරනු ඇත"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"විකාශ තිරය"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"බෙදා ගැනීම නවත්වන්න"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"විකාශ තිරය"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"විකාශය නවතන්න ද?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"ඔබ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> විකාශය නතර කරනු ඇත"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"විකාශය නවතන්න"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"වසන්න"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ගැටලු රෙකෝඩරය"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ගැටලු වාර්තාව සැකසුම් කිරීම"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ගැටලු එකතු කිරීමේ සැසියක් සඳහා දැනට පවතින දැනුම්දීම"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ගැටලුව සටහන් කිරීම සුරැකීමේ දෝෂය"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ගැටලුව වාර්තා කිරීම ආරම්භ කිරීමේ දෝෂය"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"මුළු තිරය බලමින්"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"පිටවීමට, ඔබේ තිරයෙහි ඉහළ සිට පහළට ස්වයිප් කරන්න"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"තේරුණා"</string>
<string name="accessibility_back" msgid="6530104400086152611">"ආපසු"</string>
<string name="accessibility_home" msgid="5430449841237966217">"මුල් පිටුව"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"තිර සුරැකුම"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ඊතර නෙට්"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"බාධා නොකරන්න"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"බ්ලූටූත්"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"යුගල කළ උපාංග නොතිබේ"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"උපාංගයක් සම්බන්ධ කිරීමට හෝ විසන්ධි කිරීමට තට්ටු කරන්න"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"සුරැකිණි"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"විසන්ධි කරන්න"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"සක්රිය කරන්න"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"හෙට ස්වයංක්රීයව ක්රියාත්මක කරන්න"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ඉක්මන් බෙදා ගැනීම සහ මගේ උපාංගය සෙවීම වැනි විශේෂාංග බ්ලූටූත් භාවිත කරයි"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"බ්ලූටූත් හෙට උදේ සක්රීය වෙයි"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ශ්රව්ය බෙදා ගන්න"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"විජට්ටුව තෝරන්න"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"විජට්ටුව ඉවත් කරන්න"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"තෝරන ලද විජට්ටුව තබන්න"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"අගුළු තිර විජට්"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"විජට් එකක් භාවිතයෙන් යෙදුමක් විවෘත කිරීමට, ඔබට ඒ ඔබ බව සත්යාපනය කිරීමට අවශ්ය වනු ඇත. එසේම, ඔබේ ටැබ්ලටය අගුළු දමා ඇති විට පවා ඕනෑම කෙනෙකුට ඒවා බැලිය හැකි බව මතක තබා ගන්න. සමහර විජට් ඔබේ අගුළු තිරය සඳහා අදහස් කර නොතිබිය හැකි අතර මෙහි එක් කිරීමට අනාරක්ෂිත විය හැක."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"තේරුණා"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"පරිශීලක මාරුව"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"නිපතන මෙනුව"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"මෙම සැසියේ සියළුම යෙදුම් සහ දත්ත මකාවී."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"පෙරනිමි"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ස්වයංක්රිය"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"හඬක් හෝ කම්පනයක් නැත"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"හඬක් හෝ කම්පනයක් නැති අතර සංවාද කොටසේ පහළම දිස් වේ"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"උපාංග සැකසීම් මත පදනම්ව නාද වීමට හෝ කම්පනය විය හැක"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"උපාංග සැකසීම් මත පදනම්ව නාද වීමට හෝ කම්පනය විය හැක. <xliff:g id="APP_NAME">%1$s</xliff:g> වෙතින් සංවාද පෙරනිමියෙන් බුබුළු දමයි."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"මෙම දැනුම් දීම ශබ්දයක් හෝ කම්පනයක් ඇති කළ යුතු ද යන්න පද්ධතිය මගින් තීරණය කර තිබේද"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up යතුර"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down යතුර"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete යතුර"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home යතුර"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End යතුර"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert යතුර"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"බෙදුම් තිරය"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ආදානය"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"යෙදුම් කෙටිමං"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ප්රවේශ්යතාව"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"යතුරු පුවරු කෙටි මං"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"කෙටි මං සොයන්න"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"හැකුළුම් නිරූපකය"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"දිගහැරීම් නිරූපකය"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"හෝ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ආපසු අභිනය"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"නිවෙස් අභිනය"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ක්රියා යතුර"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"නිමයි"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"අනර්ඝ වැඩක්!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ආපස්සට යන්න"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"ආපසු යාමට, ස්පර්ශ පුවරුවේ ඕනෑම තැනක ඇඟිලි තුනක් භාවිතයෙන් වමට හෝ දකුණට ස්වයිප් කරන්න."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ඇඟිලි තුනක් දකුණට සහ වමට චලනය වන බව පෙන්වන ස්පර්ශක පුවරුව"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dන් %1$d වැනි මට්ටම"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"නිවෙස් පාලන"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"තිර සුරැකුමක් ලෙස ඔබේ නිවසේ පාලන වෙත ඉක්මනින් ප්රවේශ වන්න"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-si/tiles_states_strings.xml b/packages/SystemUI/res/values-si/tiles_states_strings.xml
index 681f3d5..8d1f261 100644
--- a/packages/SystemUI/res/values-si/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-si/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"අක්රියයි"</item>
<item msgid="4875147066469902392">"සක්රියයි"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"නොමැත"</item>
<item msgid="5044688398303285224">"අක්රියයි"</item>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 796b2e1..2f99316 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Zobrazte klepnutím"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Pri ukladaní nahrávky obrazovky sa vyskytla chyba"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Pri spustení nahrávania obrazovky sa vyskytla chyba"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Prestante zaznamenávať obsah aplikácie <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Zastaviť nahrávanie"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Zdieľa sa obrazovka"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Chcete prestať zdieľať obrazovku?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Prestanete zdieľať obsah aplikácie <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Prenáša sa obrazovka"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Prestať zdieľať"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Prenáša sa obrazovka"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Chcete zastaviť prenos?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Prestanete prenášať obsah aplikácie <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Zastaviť prenos"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zavrieť"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Nástroj na zaznamenávanie problémov"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Záznam problému sa spracúva"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Upozornenie na prebiehajúcu aktivitu týkajúcu sa relácie zhromažďovania problémov"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Pri ukladaní záznamu problému sa vyskytla chyba"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Pri spúšťaní záznamu problému sa vyskytla chyba"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Zobrazenie na celú obrazovku"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Ukončíte potiahnutím zhora obrazovky nadol"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Dobre"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Späť"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Plocha"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Šetrič obrazovky"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Režim bez vyrušení"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nie sú k dispozícii žiadne spárované zariadenia"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Klepnutím pripojíte alebo odpojíte zariadenie"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Uložené"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"odpojiť"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivovať"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Automaticky zapnúť zajtra"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funkcie ako Quick Share a Nájdi moje zariadenie používajú Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth sa zapne zajtra ráno"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Zdieľať zvuk"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"vybrať miniaplikáciu"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"odstrániť miniaplikáciu"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"prepnúť vybranú miniaplikáciu"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Miniaplikácie na uzamknutej obrazovke"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ak chcete otvoriť aplikáciu pomocou miniaplikácie, budete musieť overiť svoju totožnosť. Pamätajte, že si miniaplikáciu môže pozrieť ktokoľvek, aj keď máte tablet uzamknutý. Niektoré miniaplikácie možno nie sú určené pre uzamknutú obrazovku a ich pridanie tu môže byť nebezpečné."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Dobre"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Prepnutie používateľa"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbaľovacia ponuka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Všetky aplikácie a údaje v tejto relácii budú odstránené."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Predvolené"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automaticky"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Žiadny zvuk ani vibrácie"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Žiadny zvuk ani vibrácie a zobrazuje sa nižšie v sekcii konverzácií"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Môže zvoniť či vibrovať podľa nastavení v zariadení"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Môže zvoniť alebo vibrovať podľa nastavení v zariadení. Predvolene sa zobrazia konverzácie z bubliny aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Nechajte systém určiť, či má toto upozornenie vydávať zvuk alebo vibrovať"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Posunúť o stranu vyššie"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Posunúť o stranu nižšie"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Odstrániť"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Domov"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Ukončiť"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Vložiť"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Rozdelená obrazovka"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vstup"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Odkazy do aplikácií"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Dostupnosť"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Klávesové skratky"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Vyhľadávacie odkazy"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona zbalenia"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona rozbalenia"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"alebo"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gesto prechodu späť"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gesto prechodu domov"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Akčný kláves"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Skvelé!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Prejsť späť"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Ak chcete prejsť späť, potiahnite doľava alebo doprava troma prstami kdekoľvek na touchpade."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Tri prsty na touchpade pohybujúce sa doprava a doľava"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. úroveň z %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Ovládanie domácnosti"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Rýchly prístup k ovládaniu domácnosti z šetriča obrazovky"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sk/tiles_states_strings.xml b/packages/SystemUI/res/values-sk/tiles_states_strings.xml
index 6b5af80..340af48 100644
--- a/packages/SystemUI/res/values-sk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sk/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Vypnuté"</item>
<item msgid="4875147066469902392">"Zapnuté"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nie je k dispozícii"</item>
<item msgid="5044688398303285224">"Vypnuté"</item>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 2b8d8af..ac78905 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Dotaknite se za ogled."</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Napaka pri shranjevanju posnetka zaslona"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Napaka pri začenjanju snemanja zaslona"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Ustavili boste snemanje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Želite ustaviti snemanje?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Trenutno snemate celotni zaslon"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Trenutno snemate aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Ustavi snemanje"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Deljenje zaslona"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Ustavili boste deljenje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Predvajanje vsebine zaslona"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Ustavili boste predvajanje aplikacije <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Želite ustaviti deljenje zaslona?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Trenutno delite celotni zaslon z aplikacijo <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Trenutno delite celotni zaslon z eno od aplikacij"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Trenutno delite aplikacijo <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Trenutno delite eno od aplikacij"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Ustavi deljenje"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Predvajanje vsebine zaslona"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Želite ustaviti predvajanje?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Trenutno predvajate celotni zaslon v napravi <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Trenutno predvajate celotni zaslon v napravi v bližini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Trenutno predvajate aplikacijo <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> v napravi <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Trenutno predvajate aplikacijo <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> v napravi v bližini"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Trenutno predvajate v napravi <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Trenutno predvajate v napravi v bližini"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Ustavi predvajanje"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Zapri"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Snemalnik težav"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Obdelovanje posnetka težave"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Obvestilo o aktivni dejavnosti za sejo zbiranja težav"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Napaka pri shranjevanju posnetka težave"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Napaka pri zagonu snemanja težave"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Vklopljen je celozaslonski način."</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Če želite zapreti, povlecite navzdol z vrha zaslona"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Razumem"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Nazaj"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Začetni zaslon"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Ohranjeval. zaslona"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ne moti"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Prednostni načini"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Na voljo ni nobene seznanjene naprave"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Dotaknite se za vzpostavitev ali prekinitev povezave z napravo"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Shranjeno"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"prekinitev povezave"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktiviranje"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Samodejno vklopi jutri"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funkcije, kot sta Hitro deljenje in Poišči mojo napravo, uporabljajo Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth se bo vklopil jutri zjutraj"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Deli zvok"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"izberite pripomoček"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"odstranitev pripomočka"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"postavitev izbranega pripomočka"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Pripomočki na zaklenjenem zaslonu"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Pripomočki na zaklenjenem zaslonu so vidni vsem, tudi če je tablica zaklenjena."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Pripomočki na zaklenjenem zaslonu"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Če želite aplikacijo odpreti s pripomočkom, morate potrditi, da ste to vi. Upoštevajte tudi, da si jih lahko ogledajo vsi, tudi ko je tablični računalnik zaklenjen. Nekateri pripomočki morda niso predvideni za uporabo na zaklenjenem zaslonu, zato jih tukaj morda ni varno dodati."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Razumem"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Preklop med uporabniki"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"spustni meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Vse aplikacije in podatki v tej seji bodo izbrisani."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Privzeto"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Samodejno"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Brez zvočnega opozarjanja ali vibriranja."</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Brez zvočnega opozarjanja ali vibriranja, prikaz nižje v razdelku Pogovor."</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Zvonjenje ali vibriranje je omogočeno na podlagi nastavitev naprave."</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Zvonjenje ali vibriranje je omogočeno na podlagi nastavitev naprave. Pogovori v aplikaciji <xliff:g id="APP_NAME">%1$s</xliff:g> so privzeto prikazani v oblačkih."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Naj sistem določi, ali ob prejemu tega obvestila naprava predvaja zvok ali zavibrira"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Stran gor"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Stran dol"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Izbriši"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Začetek"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Konec"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Vstavi"</string>
@@ -1361,22 +1357,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Razdeljen zaslon"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Vnos"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Bližnjice do aplikacij"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Trenutna aplikacija"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Dostopnost"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Bližnjične tipke"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Bližnjice za iskanje"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona za strnitev"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona za razširitev"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ali"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Poteza za pomik nazaj"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Poteza za začetni zaslon"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Gumb za dejanje"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Končano"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Odlično!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazaj"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Za pomik nazaj povlecite levo ali desno s tremi prsti kjer koli na sledilni ploščici."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Sledilna ploščica s tremi prsti, ki se premikajo desno in levo"</string>
@@ -1385,4 +1377,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Stopnja %1$d od %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrolniki za dom"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Hiter dostop do kontrolnikov za dom na ohranjevalniku zaslona"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"Razveljavi"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sl/tiles_states_strings.xml b/packages/SystemUI/res/values-sl/tiles_states_strings.xml
index 5f60ffd..e57b87b 100644
--- a/packages/SystemUI/res/values-sl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sl/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Izklopljeno"</item>
<item msgid="4875147066469902392">"Vklopljeno"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Ni na voljo"</item>
+ <item msgid="2004750556637773692">"Izklopljeno"</item>
+ <item msgid="8968530753931637871">"Vklopljeno"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Ni na voljo"</item>
<item msgid="5044688398303285224">"Izklopljeno"</item>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 27d2c6c..926a73f 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Trokit për të parë"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Gabim gjatë ruajtjes së regjistrimit të ekranit"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Gabim gjatë nisjes së regjistrimit të ekranit"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Do të ndalosh regjistrimin me <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Ndalo regjistrimin"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ekrani po ndahet"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Të ndalohet ndarja e ekranit?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Do të ndalosh ndarjen e <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Po transmeton ekranin"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Ndalo ndarjen"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Po transmeton ekranin"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Të ndalohet transmetimi?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Do të ndalosh transmetimin e <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Ndalo transmetimin"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Mbyll"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Regjistruesi i problemeve"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Regjistrimi i problemeve me përpunimin"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Njoftim në vazhdim për një seancë për mbledhjen e problemeve"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Gabim gjatë ruajtjes së regjistrimit të problemit"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Gabim gjatë nisjes së regjistrimit të problemit"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Po shikon ekranin e plotë"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Për të dalë, rrëshqit shpejt poshtë nga kreu i ekranit"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"E kuptova"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Prapa"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Faqja bazë"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Mbrojtësi i ekranit"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Eternet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Mos shqetëso"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth-i"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Nuk ofrohet për përdorim asnjë pajisje e çiftuar"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Trokit për të lidhur ose shkëputur një pajisje"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Ruajtur"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"shkëput"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivizo"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Aktivizo automatikisht nesër"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Veçoritë e tilla si \"Ndarja e shpejtë\" dhe \"Gjej pajisjen time\" përdorin Bluetooth-in"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth-i do të aktivizohet nesër në mëngjes"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Ndaj audion"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"zgjidh miniaplikacionin"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"hiq miniaplikacionin"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"vendos miniaplikacionin e zgjedhur"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Kyç miniaplikacionet e ekranit"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Për të hapur një aplikacion duke përdorur një miniaplikacion, do të duhet të verifikosh që je ti. Ki parasysh gjithashtu që çdo person mund t\'i shikojë, edhe kur tableti yt është i kyçur. Disa miniaplikacione mund të mos jenë planifikuar për ekranin tënd të kyçjes dhe mund të mos jetë e sigurt t\'i shtosh këtu."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"E kuptova"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ndërro përdorues"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyja me tërheqje poshtë"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Të gjitha aplikacionet dhe të dhënat në këtë sesion do të fshihen."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"E parazgjedhur"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatike"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Asnjë tingull ose dridhje"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Asnjë tingull ose dridhje dhe shfaqet më poshtë në seksionin e bisedave"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Mund të bjerë zilja ose të dridhet në bazë të cilësimeve të pajisjes"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Mund të bjerë zilja ose të dridhet në bazë të cilësimeve të pajisjes. Bisedat nga flluska e <xliff:g id="APP_NAME">%1$s</xliff:g> si parazgjedhje."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Kërkoji sistemit të përcaktojë nëse ky njoftim duhet të lëshojë tingull apo dridhje"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Faqja lart"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Faqja poshtë"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Fshi"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Kreu"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Fundi"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Fut"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ekrani i ndarë"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Hyrja"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Shkurtoret e aplikacionit"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qasshmëria"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Shkurtoret e tastierës"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Kërko për shkurtoret"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona e palosjes"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikona e zgjerimit"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ose"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Gjesti i kthimit prapa"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Gjesti për të shkuar tek ekrani bazë"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tasti i veprimit"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"U krye"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Punë e shkëlqyer!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kthehu prapa"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Për t\'u kthyer prapa, rrëshqit shpejt majtas ose djathtas duke përdorur tre gishta kudo në bllokun me prekje."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Blloku me prekje që tregon tre gishta që lëvizin djathtas dhe majtas"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Niveli: %1$d nga %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Kontrollet e shtëpisë"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Qasu te kontrollet e shtëpisë si mbrojtës ekrani"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sq/tiles_states_strings.xml b/packages/SystemUI/res/values-sq/tiles_states_strings.xml
index 9b5032e..4f42c30 100644
--- a/packages/SystemUI/res/values-sq/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sq/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Joaktiv"</item>
<item msgid="4875147066469902392">"Aktiv"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Nuk ofrohet"</item>
<item msgid="5044688398303285224">"Joaktiv"</item>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index a1ede04..e5b9445 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Додирните да бисте прегледали"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Грешка при чувању снимка екрана"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Грешка при покретању снимања екрана"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Зауставићете снимање за: <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Желите да зауставите снимање?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Тренутно снимате цео екран"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Тренутно снимате: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Заустави снимање"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Екран се дели"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Зауставићете дељење за: <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Пребацује се екран"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Зауставићете пребацивање за: <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Желите да зауставите дељење екрана?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Тренутно делите цео екран са: <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Тренутно делите цео екран са апликацијом"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Тренутно делите: <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Тренутно делите апликацију"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Заустави дељење"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Пребацује се екран"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Желите да зауставите пребацивање?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Тренутно пребацујете цео екран на: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Тренутно пребацујете цео екран на уређај у близини"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> се тренутно пребацује на: <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> се тренутно пребацује на уређај у близини"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Тренутно пребацујете на: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Тренутно пребацујете на уређај у близини"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Заустави пребацивање"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Затвори"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Снимач проблема"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Обрађује се снимак проблема"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"обавештење о активности у току за сесију прикупљања података о проблему"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Грешка при чувању снимка проблема"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Грешка при покретању снимања проблема"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Приказује се цео екран"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Да бисте затворили, превуците надоле од врха екрана"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Важи"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Назад"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Почетна"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Чувар екрана"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Етернет"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Не узнемиравај"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Није доступан ниједан упарени уређај"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Додирните да бисте повезали уређај или прекинули везу"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Сачувано"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"прекините везу"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активирајте"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Аутоматски укључи сутра"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Функције као што су Quick Share и Пронађи мој уређај користе Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ће се укључити сутра ујутру"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Дели звук"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"изаберите виџет"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"уклоните виџет"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"поставите изабрани виџет"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Виџети за закључани екран"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Сви могу да виде веџете на закључаном екрану, чак и када је таблет закључан."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Виџети за закључани екран"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Да бисте отворили апликацију која користи виџет, треба да потврдите да сте то ви. Имајте у виду да свако може да га види, чак и када је таблет закључан. Неки виџети можда нису намењени за закључани екран и можда није безбедно да их тамо додате."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Важи"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Замени корисника"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падајући мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Све апликације и подаци у овој сесији ће бити избрисани."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Подразумевано"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Аутоматска"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звука и вибрирања"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звука и вибрирања и приказује се у наставку одељка за конверзације"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Може да звони или вибрира у зависности од подешавања уређаја"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Може да звони или вибрира у зависности од подешавања уређаја. Конверзације из апликације <xliff:g id="APP_NAME">%1$s</xliff:g> подразумевано се приказују у облачићима."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Нека систем утврди да ли ово обавештење треба да емитује звук или да вибрира"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Тастер за страницу нагоре"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Тастер за страницу надоле"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Тастер за брисање"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Тастер Почетна"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Тастер за крај"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Тастер за уметање"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Подељени екран"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Унос"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Пречице за апликације"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Актуелна апликација"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Приступачност"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Тастерске пречице"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Пречице претраге"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Икона за скупљање"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Икона за проширивање"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"или"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Покрет за враћање"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Покрет за почетну страницу"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Тастер радњи"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Одлично!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Да бисте се вратили, превуците улево или удесно са три прста било где на тачпеду."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Тачпед са приказом три прста који се померају удесно и улево"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%1$d. ниво од %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Контроле за дом"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Брз приступ контролама за дом као чувару екрана"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sr/tiles_states_strings.xml b/packages/SystemUI/res/values-sr/tiles_states_strings.xml
index 2acf1d2..904fb23 100644
--- a/packages/SystemUI/res/values-sr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sr/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Искључено"</item>
<item msgid="4875147066469902392">"Укључено"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Недоступно"</item>
<item msgid="5044688398303285224">"Искључено"</item>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 1824a40..68063d6 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Tryck för att visa"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Det gick inte att spara skärminspelningen"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Det gick inte att starta skärminspelningen"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Du slutar att spela in <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Sluta spela in"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Skärmen delas"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Vill du sluta dela skärmen?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Du slutar att dela <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Skärmen castas"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Sluta dela"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Skärmen castas"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Vill du sluta att casta?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Du slutar att casta <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Sluta casta"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Stäng"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Probleminspelare"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Behandlar probleminspelning"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Avisering om pågående probleminsamlingssession"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Det gick inte att spara probleminspelning"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Det gick inte att starta probleminspelning"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Visar på fullskärm"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Svep nedåt från skärmens överkant för att avsluta"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Tillbaka"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Startsida"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Skärmsläckare"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Stör ej"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Det finns inga kopplade enheter tillgängliga"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Tryck för att ansluta eller koppla från en enhet"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Sparad"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"koppla från"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"aktivera"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Aktivera automatiskt i morgon"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Funktioner som Snabbdelning och Hitta min enhet använder Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth aktiveras i morgon bitti"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Dela ljud"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"välj widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ta bort widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"placera vald widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Widgetar för låsskärm"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Du måste verifiera din identitet innan du öppnar en app med en widget. Tänk också på att alla kan se dem, även när surfplattan är låst. Vissa widgetar kanske inte är avsedda för låsskärmen och det kan vara osäkert att lägga till dem här."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Byt användare"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullgardinsmeny"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alla appar och data i denna session kommer att raderas."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Standard"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatiskt"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Inga ljud eller vibrationer"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Inga ljud eller vibrationer och visas längre ned bland konversationerna"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Kan ringa eller vibrera beroende på inställningarna på enheten"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Kan ringa eller vibrera beroende på inställningarna på enheten. Konversationer från <xliff:g id="APP_NAME">%1$s</xliff:g> visas i bubblor som standard."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Låt systemet avgöra om den här aviseringen ska låta eller vibrera"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Sida upp"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Sida ned"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Radera"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Start"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Slut"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Infoga"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Delad skärm"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ingång"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Genvägar till appar"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Tillgänglighet"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Kortkommandon"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Sökgenvägar"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikonen Komprimera"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Ikonen Utöka"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"eller"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Tillbaka-rörelse"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Rörelse för att öppna startskärmen"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Åtgärdstangent"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klar"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Bra jobbat!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Tillbaka"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Gå tillbaka genom att svepa åt vänster eller höger med tre fingrar var som helst på styrplattan."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Tre fingrar rör sig åt höger och vänster på en styrplatta"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Nivå %1$d av %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Hemstyrning"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Kom snabbt åt hemstyrningen via skärmsläckaren"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sv/tiles_states_strings.xml b/packages/SystemUI/res/values-sv/tiles_states_strings.xml
index cf49f8d..bd62fc1 100644
--- a/packages/SystemUI/res/values-sv/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sv/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Av"</item>
<item msgid="4875147066469902392">"På"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Inte tillgängligt"</item>
<item msgid="5044688398303285224">"Av"</item>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index a01dd71..986e00e 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Gusa ili uangalie"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Hitilafu imetokea wakati wa kuhifadhi rekodi ya skrini"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Hitilafu imetokea wakati wa kuanza kurekodi skrini"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Utaacha kurekodi maudhui ya <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Acha kurekodi"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Inaruhusu ufikiaji kwenye skrini"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Ungependa kuacha kuonyesha skrini?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Utakomesha ufikiaji wa maudhui ya <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Inatuma skrini"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Acha kuonyesha skrini"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Inatuma skrini"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Ungependa kuacha kutuma?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Utaacha kutuma maudhui ya <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Acha kutuma maudhui"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Funga"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Kifaa cha Kurekodi Hitilafu"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Mchakato wa kurekodi hitilafu unaendelea"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Arifa inayoendelea kuhusu kipindi cha ukusanyaji wa data ya hitilafu"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Hitilafu imetokea wakati wa kuhifadhi rekodi ya hitilafu"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Hitilafu imetokea wakati wa kuanza kurekodi hitilafu"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Unatazama kwenye skrini nzima"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Telezesha kidole chini kutoka sehemu ya juu ya skrini yako ili ufunge"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Nimeelewa"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Nyuma"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Nyumbani"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Taswira ya skrini"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Usinisumbue"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Hakuna vifaa vilivyooanishwa vinavyopatikana"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Gusa ili uunganishe au utenganishe kifaa"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Imehifadhiwa"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ondoa"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"anza kutumia"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Washa kesho kiotomatiki"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Vipengele kama vile Kutuma Haraka na Tafuta Kifaa Changu hutumia Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth itawaka kesho asubuhi"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Sikiliza pamoja na wengine"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"chagua wijeti"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ondoa wijeti"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"weka wijeti uliyochagua"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Wijeti zinazoonekana kwenye skrini iliyofungwa"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Utahitaji kuthibitisha kuwa ni wewe ili ufungue programu ukitumia wijeti. Pia, kumbuka kuwa mtu yeyote anaweza kuziona, hata kishikwambi chako kikiwa kimefungwa. Huenda baadhi ya wijeti hazikukusudiwa kutumika kwenye skrini yako iliyofungwa na huenda si salama kuziweka hapa."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Nimeelewa"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Badili mtumiaji"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyu ya kuvuta chini"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Data na programu zote katika kipindi hiki zitafutwa."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Chaguomsingi"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Otomatiki"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Hakuna sauti wala mtetemo"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Hakuna sauti wala mtetemo na huonekana upande wa chini katika sehemu ya mazungumzo"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Huenda ikalia au kutetema kulingana na mipangilio ya kifaa"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Huenda ikalia au kutetema kulingana na mipangilio ya kifaa. Mazungumzo kutoka kiputo cha <xliff:g id="APP_NAME">%1$s</xliff:g> kwa chaguomsingi."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Ruhusu mfumo ubainishe iwapo arifa hii inapaswa kutoa sauti au mtetemo"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Futa"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Mwanzo"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Mwisho"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Ingiza"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Gawa skrini"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Kifaa cha kuingiza data"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Njia za mikato za programu"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ufikivu"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Mikato ya kibodi"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Njia mkato za kutafutia"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Kunja aikoni"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Panua aikoni"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"au"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Ishara ya kurudi nyuma"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Mguso wa kurudi kwenye skrini ya kwanza"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Kitufe cha vitendo"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Nimemaliza"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Kazi nzuri!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Rudi nyuma"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Ili kurudi nyuma, telezesha vidole vitatu kushoto au kulia mahali popote kwenye padi ya kugusa."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Padi ya kugusa inayoonyesha vidole vitatu vikisonga kulia na kushoto"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Kiwango cha %1$d kati ya %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Dhibiti Vifaa Nyumbani"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Fikia haraka vidhibiti vya vifaa nyumbani vikiwa taswira ya skrini"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sw/tiles_states_strings.xml b/packages/SystemUI/res/values-sw/tiles_states_strings.xml
index 15de7f8..b291f0d 100644
--- a/packages/SystemUI/res/values-sw/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-sw/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Kimezimwa"</item>
<item msgid="4875147066469902392">"Kimewashwa"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Hakipatikani"</item>
<item msgid="5044688398303285224">"Kimezimwa"</item>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 93e47ff..315e198 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"பார்க்கத் தட்டவும்"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"ஸ்கிரீன் ரெக்கார்டிங்கைச் சேமிப்பதில் பிழை ஏற்பட்டது"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"ஸ்கிரீன் ரெக்கார்டிங்கைத் தொடங்குவதில் பிழை"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ஆப்ஸை ரெக்கார்டு செய்வதை நிறுத்துவீர்கள்"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ரெக்கார்டிங்கை நிறுத்து"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"திரையைப் பகிர்கிறது"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"திரையைப் பகிர்வதை நிறுத்தவா?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ஆப்ஸைப் பகிர்வதை நிறுத்துவீர்கள்"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"திரையை அலைபரப்புகிறது"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"பகிர்வதை நிறுத்து"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"திரையை அலைபரப்புகிறது"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"அலைபரப்பை நிறுத்தவா?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ஆப்ஸை அலைபரப்புவதை நிறுத்துவீர்கள்"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"அலைபரப்புவதை நிறுத்து"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"மூடு"</string>
<string name="issuerecord_title" msgid="286627115110121849">"சிக்கல் ரெக்கார்டர்"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"சிக்கல் ரெக்கார்டிங்கைச் செயலாக்குகிறது"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"சிக்கல் சேகரிப்பு அமர்வுக்கான பின்னணிச் செயல்பாட்டின் அறிவிப்பு"</string>
@@ -161,13 +170,12 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"சிக்கல் தொடர்பான ரெக்கார்டிங்கைச் சேமிப்பதில் பிழை ஏற்பட்டது"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"சிக்கலை ரெக்கார்டிங் செய்யத் தொடங்குவதில் பிழை ஏற்பட்டது"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"முழுத் திரையில் காட்டுகிறது"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"வெளியேற, உங்கள் திரையின் மேலிருந்து கீழ்நோக்கி ஸ்வைப் செய்யவும்"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"சரி"</string>
<string name="accessibility_back" msgid="6530104400086152611">"பின்செல்"</string>
<string name="accessibility_home" msgid="5430449841237966217">"முகப்பு"</string>
<string name="accessibility_menu" msgid="2701163794470513040">"மெனு"</string>
- <string name="accessibility_accessibility_button" msgid="4089042473497107709">"அணுகல்தன்மை"</string>
+ <string name="accessibility_accessibility_button" msgid="4089042473497107709">"மாற்றுத்திறன் வசதி"</string>
<string name="accessibility_rotate_button" msgid="1238584767612362586">"திரையைச் சுழற்று"</string>
<string name="accessibility_recent" msgid="901641734769533575">"மேலோட்டப் பார்வை"</string>
<string name="accessibility_camera_button" msgid="2938898391716647247">"கேமரா"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"ஸ்கிரீன் சேவர்"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ஈதர்நெட்"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"தொந்தரவு செய்ய வேண்டாம்"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"புளூடூத்"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"இணைக்கப்பட்ட சாதனங்கள் இல்லை"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"சாதனத்தை இணைக்க/துண்டிக்க தட்டவும்"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"சேமிக்கப்பட்டது"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"இணைப்பு நீக்கும்"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"செயல்படுத்தும்"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"தானாகவே நாளை இயக்கப்படும்"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"விரைவுப் பகிர்தல், Find My Device போன்ற அம்சங்கள் புளூடூத்தைப் பயன்படுத்துகின்றன"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"நாளை காலை புளூடூத் இயக்கப்படும்"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ஆடியோவைப் பகிர்"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"விட்ஜெட்டைத் தேர்ந்தெடுக்கும்"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"விட்ஜெட்டை அகற்றும்"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"தேர்ந்தெடுத்த விட்ஜெட்டைக் காட்சிப்படுத்தும்"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"பூட்டுத் திரை விட்ஜெட்கள்"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"விட்ஜெட்டைப் பயன்படுத்தி ஆப்ஸைத் திறக்க, அது நீங்கள்தான் என்பதை உறுதிசெய்ய வேண்டும். அத்துடன், உங்கள் டேப்லெட் பூட்டப்பட்டிருந்தாலும்கூட அவற்றை யார் வேண்டுமானாலும் பார்க்கலாம் என்பதை நினைவில்கொள்ளுங்கள். சில விட்ஜெட்கள் உங்கள் பூட்டுத் திரைக்காக உருவாக்கப்பட்டவை அல்ல என்பதையும் அவற்றை இங்கே சேர்ப்பது பாதுகாப்பற்றதாக இருக்கக்கூடும் என்பதையும் நினைவில்கொள்ளுங்கள்."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"சரி"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"பயனரை மாற்று"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"கீழ் இழுக்கும் மெனு"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"இந்த அமர்வின் எல்லா ஆப்ஸும் தரவும் நீக்கப்படும்."</string>
@@ -641,7 +651,7 @@
<string name="stream_notification" msgid="7930294049046243939">"அறிவிப்பு"</string>
<string name="stream_bluetooth_sco" msgid="6234562365528664331">"புளூடூத்"</string>
<string name="stream_dtmf" msgid="7322536356554673067">"டூயல் டோன் மல்டி ஃப்ரீக்வென்சி"</string>
- <string name="stream_accessibility" msgid="3873610336741987152">"அணுகல்தன்மை"</string>
+ <string name="stream_accessibility" msgid="3873610336741987152">"மாற்றுத்திறன் வசதி"</string>
<string name="volume_ringer_status_normal" msgid="1339039682222461143">"ஒலி"</string>
<string name="volume_ringer_status_vibrate" msgid="6970078708957857825">"அதிர்வு"</string>
<string name="volume_ringer_status_silent" msgid="3691324657849880883">"அமைதி"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"இயல்புநிலை"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"தானியங்கு"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ஒலி / அதிர்வு இல்லை"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ஒலி / அதிர்வு இல்லாமல் உரையாடல் பிரிவின் கீழ்ப் பகுதியில் தோன்றும்"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"சாதன அமைப்புகளைப் பொறுத்து ஒலிக்கக்கூடும் அல்லது அதிர்வடையக்கூடும்"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"சாதன அமைப்புகளைப் பொறுத்து ஒலிக்கக்கூடும் அல்லது அதிர்வடையக்கூடும். இயல்பாக, <xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸில் பெறப்படும் உரையாடல் அறிவிப்புகள் குமிழ்களாகத் தோன்றும்."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"இந்த அறிவிப்பு ஒலி எழுப்ப வேண்டுமா அதிர வேண்டுமா என்பதை சிஸ்டம் தீர்மானிக்கும்"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"பேஜ் அப்"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"பேஜ் டவுன்"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"டெலிட்"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"ஹோம்"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"என்ட்"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"இன்சர்ட்"</string>
@@ -947,7 +960,7 @@
<string name="notification_channel_setup" msgid="7660580986090760350">"அமைவு"</string>
<string name="notification_channel_storage" msgid="2720725707628094977">"சேமிப்பிடம்"</string>
<string name="notification_channel_hints" msgid="7703783206000346876">"குறிப்புகள்"</string>
- <string name="notification_channel_accessibility" msgid="8956203986976245820">"அணுகல்தன்மை"</string>
+ <string name="notification_channel_accessibility" msgid="8956203986976245820">"மாற்றுத்திறன் வசதி"</string>
<string name="instant_apps" msgid="8337185853050247304">"Instant Apps"</string>
<string name="instant_apps_title" msgid="8942706782103036910">"<xliff:g id="APP">%1$s</xliff:g> இயங்குகிறது"</string>
<string name="instant_apps_message" msgid="6112428971833011754">"நிறுவ வேண்டிய தேவையில்லாமல் ஆப்ஸ் திறக்கப்பட்டது."</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"திரைப் பிரிப்பு"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"உள்ளீடு"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ஆப்ஸ் ஷார்ட்கட்கள்"</string>
- <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"அணுகல்தன்மை"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
+ <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"மாற்றுத்திறன் வசதி"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"கீபோர்டு ஷார்ட்கட்கள்"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"தேடல் ஷார்ட்கட்கள்"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"சுருக்குவதற்கான ஐகான்"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"விரிவாக்குவதற்கான ஐகான்"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"அல்லது"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"பின்செல்வதற்கான சைகை"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"முகப்பிற்குச் செல்வதற்கான சைகை"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ஆக்ஷன் பட்டன்"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"முடிந்தது"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"அருமை!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"பின்செல்"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"பின்செல்ல, உங்கள் டச்பேடில் எங்கு வேண்டுமானாலும் இடது அல்லது வலதுபுறமாக மூன்று விரல்களால் ஸ்வைப் செய்யவும்."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"மூன்று விரல்கள் வலது மற்றும் இடதுபுறம் நகர்வதை டச்பேட் காட்டுகிறது"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"நிலை, %2$d இல் %1$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ஹோம் கன்ட்ரோல்கள்"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"ஹோம் கன்ட்ரோல்களை ஸ்கிரீன் சேவராக அணுகலாம்"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ta/tiles_states_strings.xml b/packages/SystemUI/res/values-ta/tiles_states_strings.xml
index a3b9538..a180f49 100644
--- a/packages/SystemUI/res/values-ta/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ta/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"முடக்கப்பட்டுள்ளது"</item>
<item msgid="4875147066469902392">"இயக்கப்பட்டுள்ளது"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"கிடைக்கவில்லை"</item>
<item msgid="5044688398303285224">"முடக்கப்பட்டுள்ளது"</item>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 759b6ca..87e205b 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"చూడటానికి ట్యాప్ చేయండి"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"స్క్రీన్ రికార్డింగ్ను సేవ్ చేయడంలో ఎర్రర్ ఏర్పడింది"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"స్క్రీన్ రికార్డింగ్ ప్రారంభించడంలో ఎర్రర్ ఏర్పడింది"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"మీరు <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ను రికార్డ్ చేయడం ఆపివేస్తారు"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"రికార్డింగ్ను ఆపివేయాలా?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"మీరు ప్రస్తుతం మీ మొత్తం స్క్రీన్ను రికార్డ్ చేస్తున్నారు"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"మీరు ప్రస్తుతం <xliff:g id="APP_NAME">%1$s</xliff:g>ను రికార్డ్ చేస్తున్నారు"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"రికార్డింగ్ను ఆపివేయండి"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"స్క్రీన్ను షేర్ చేస్తోంది"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"మీరు <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ను షేర్ చేయడం ఆపివేస్తారు"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"స్క్రీన్ను ప్రసారం చేస్తోంది"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"మీరు <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>ను ప్రసారం చేయడం ఆపివేస్తారు"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"స్క్రీన్ను షేర్ చేయడం ఆపివేయాలా?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"మీరు ప్రస్తుతం మీ మొత్తం స్క్రీన్ను <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>తో షేర్ చేస్తున్నారు"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"మీరు ప్రస్తుతం మీ మొత్తం స్క్రీన్ను యాప్తో షేర్ చేస్తున్నారు"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"మీరు ప్రస్తుతం <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>ను షేర్ చేస్తున్నారు"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"మీరు ప్రస్తుతం యాప్ను షేర్ చేస్తున్నారు"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"షేర్ చేయడాన్ని ఆపివేయండి"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"స్క్రీన్ను ప్రసారం చేస్తోంది"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"ప్రసారం చేయడం ఆపివేయాలా?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"మీరు ప్రస్తుతం మీ స్క్రీన్ మొత్తాన్ని <xliff:g id="DEVICE_NAME">%1$s</xliff:g>కు ప్రసారం చేస్తున్నారు"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"మీరు ప్రస్తుతం మీ స్క్రీన్ మొత్తాన్ని సమీపంలోని పరికరానికి ప్రసారం చేస్తున్నారు"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"మీరు ప్రస్తుతం <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>ను <xliff:g id="DEVICE_NAME">%2$s</xliff:g>కు ప్రసారం చేస్తున్నారు"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"మీరు ప్రస్తుతం <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>ను సమీపంలోని పరికరానికి ప్రసారం చేస్తున్నారు"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"మీరు ప్రస్తుతం <xliff:g id="DEVICE_NAME">%1$s</xliff:g>కు ప్రసారం చేస్తున్నారు"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"మీరు ప్రస్తుతం సమీపంలోని పరికరానికి ప్రసారం చేస్తున్నారు"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"ప్రసారాన్ని ఆపివేయండి"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"మూసివేయండి"</string>
<string name="issuerecord_title" msgid="286627115110121849">"సమస్య రికార్డర్"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"సమస్య రికార్డింగ్ ప్రాసెసింగ్"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"సమస్య సేకరణ సెషన్ కోసం కొనసాగుతోన్న నోటిఫికేషన్"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"సమస్య రికార్డింగ్ను సేవ్ చేయడంలో ఎర్రర్ ఏర్పడింది"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"సమస్య రికార్డింగ్ను ప్రారంభించడంలో ఎర్రర్ ఏర్పడింది"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"ఫుల్ స్క్రీన్లో చూస్తున్నారు"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"ఎగ్జిట్ అవ్వడానికి, మీ స్క్రీన్ పై నుండి కిందికి స్వైప్ చేయండి"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"సరే"</string>
<string name="accessibility_back" msgid="6530104400086152611">"వెనుకకు"</string>
<string name="accessibility_home" msgid="5430449841237966217">"హోమ్"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"స్క్రీన్ సేవర్"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ఈథర్నెట్"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"అంతరాయం కలిగించవద్దు"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"బ్లూటూత్"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"జత చేసిన పరికరాలు ఏవీ అందుబాటులో లేవు"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"పరికరాన్ని కనెక్ట్ చేయడానికి లేదా డిస్కనెక్ట్ చేయడానికి ట్యాప్ చేయండి"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"సేవ్ అయ్యింది"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"డిస్కనెక్ట్ చేయండి"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"యాక్టివేట్ చేయండి"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"రేపు ఆటోమేటిక్గా ఆన్ చేస్తుంది"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"క్విక్ షేర్, Find My Device వంటి ఫీచర్లు బ్లూటూత్ను ఉపయోగిస్తాయి"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"బ్లూటూత్ రేపు ఉదయం ఆన్ అవుతుంది"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"ఆడియోను షేర్ చేయండి"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"విడ్జెట్ను ఎంచుకోండి"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"విడ్జెట్ను తీసివేయండి"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ఎంచుకున్న విడ్జెట్ కోసం ప్లేస్ను ఎంచుకోండి"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"లాక్ స్క్రీన్ విడ్జెట్లు"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"మీ టాబ్లెట్ లాక్ చేసి ఉన్నా, మీ లాక్ స్క్రీన్లో విడ్జెట్లను ఎవరైనా చూడవచ్చు."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"లాక్ స్క్రీన్ విడ్జెట్లు"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"విడ్జెట్ను ఉపయోగించి యాప్ను తెరవడానికి, ఇది మీరేనని వెరిఫై చేయాల్సి ఉంటుంది. అలాగే, మీ టాబ్లెట్ లాక్ చేసి ఉన్నప్పటికీ, ఎవరైనా వాటిని చూడగలరని గుర్తుంచుకోండి. కొన్ని విడ్జెట్లు మీ లాక్ స్క్రీన్కు తగినవి కాకపోవచ్చు, వాటిని ఇక్కడ జోడించడం సురక్షితం కాకపోవచ్చు."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"అర్థమైంది"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"వినియోగదారుని మార్చు"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"పుల్డౌన్ మెనూ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ఈ సెషన్లోని అన్ని యాప్లు మరియు డేటా తొలగించబడతాయి."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ఆటోమేటిక్ సెట్టింగ్"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"ఆటోమేటిక్"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"సౌండ్ లేదా వైబ్రేషన్లు ఏవీ ఉండవు"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"శబ్దం లేదా వైబ్రేషన్ లేదు, సంభాషణ విభాగం దిగువన కనిపిస్తుంది"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"పరికర సెట్టింగ్ల ఆధారంగా రింగ్ లేదా వైబ్రేట్ కావచ్చు"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"పరికర సెట్టింగ్ల ఆధారంగా రింగ్ లేదా వైబ్రేట్ కావచ్చు. <xliff:g id="APP_NAME">%1$s</xliff:g> నుండి సంభాషణలు ఆటోమేటిక్గా బబుల్లో కనిపిస్తాయి."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ఈ నోటిఫికేషన్ వచ్చినప్పుడు శబ్దం చేయాలా లేదా వైబ్రేట్ చేయాలా అనేది నిర్ణయించడానికి సిస్టమ్కు అనుమతి ఇవ్వండి"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"స్ప్లిట్ స్క్రీన్"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ఇన్పుట్"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"యాప్ షార్ట్కట్లు"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ప్రస్తుత యాప్"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"యాక్సెసిబిలిటీ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"కీబోర్డ్ షార్ట్కట్లు"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"సెర్చ్ షార్ట్కట్లు"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"కుదించండి చిహ్నం"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"విస్తరించండి చిహ్నం"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"లేదా"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"వెనుకకు పంపే సంజ్ఞ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"హోమ్కు పంపే సంజ్ఞ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"యాక్షన్ కీ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"పూర్తయింది"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"విజయవంతమైంది!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"వెనుకకు"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"వెనుకకు వెళ్లడానికి, టచ్ప్యాడ్లో ఎక్కడైనా మూడు వేళ్లను ఉపయోగించి ఎడమ లేదా కుడికి స్వైప్ చేయండి."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"మూడు వేళ్లు కుడి, ఎడమకు కదులుతున్నట్లు చూపే టచ్ప్యాడ్"</string>
@@ -1385,4 +1378,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$dలో %1$dవ స్థాయి"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"హోమ్ కంట్రోల్స్"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"హోమ్ కంట్రోల్స్ను స్క్రీన్ సేవర్గా చేసి వేగంగా యాక్సెస్ పొందండి"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-te/tiles_states_strings.xml b/packages/SystemUI/res/values-te/tiles_states_strings.xml
index 6584cdd..609a846cd 100644
--- a/packages/SystemUI/res/values-te/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-te/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"ఆఫ్లో ఉంది"</item>
<item msgid="4875147066469902392">"ఆన్లో ఉంది"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"అందుబాటులో లేదు"</item>
<item msgid="5044688398303285224">"ఆఫ్లో ఉంది"</item>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 4ed8a03..6449dd8 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"แตะเพื่อดู"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"เกิดข้อผิดพลาดในการบันทึกหน้าจอ"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"เกิดข้อผิดพลาดขณะเริ่มบันทึกหน้าจอ"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"คุณจะหยุดการบันทึก <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"หยุดบันทึกใช่ไหม"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"คุณกำลังบันทึกทั้งหน้าจอ"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"คุณกำลังบันทึก <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"หยุดบันทึก"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"กำลังแชร์หน้าจอ"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"คุณจะหยุดการแชร์ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"กำลังแคสต์หน้าจอ"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"คุณจะหยุดการแคสต์ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"หยุดแชร์หน้าจอไหม"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"คุณกำลังแชร์ทั้งหน้าจอกับ <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"คุณกำลังแชร์ทั้งหน้าจอกับแอป"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"คุณกำลังแชร์ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"คุณกำลังแชร์แอป"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"หยุดแชร์"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"กำลังแคสต์หน้าจอ"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"หยุดการแคสต์ไหม"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"คุณกำลังแคสต์ทั้งหน้าจอไปยัง <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"คุณกำลังแคสต์ทั้งหน้าจอไปยังอุปกรณ์ที่อยู่ใกล้เคียง"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"คุณกำลังแคสต์ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ไปยัง <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"คุณกำลังแคสต์ <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ไปยังอุปกรณ์ที่อยู่ใกล้เคียง"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"คุณกำลังแคสต์ไปยัง <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"คุณกำลังแคสต์ไปยังอุปกรณ์ที่อยู่ใกล้เคียง"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"หยุดแคสต์"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"ปิด"</string>
<string name="issuerecord_title" msgid="286627115110121849">"โปรแกรมบันทึกปัญหา"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"กำลังประมวลผลการบันทึกปัญหา"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"การแจ้งเตือนต่อเนื่องสำหรับเซสชันการรวบรวมปัญหา"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"เกิดข้อผิดพลาดในการบันทึกไฟล์บันทึกปัญหา"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"เกิดข้อผิดพลาดในการเริ่มบันทึกปัญหา"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"กำลังดูแบบเต็มหน้าจอ"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"หากต้องการออก ให้ปัดลงจากด้านบนของหน้าจอ"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"รับทราบ"</string>
<string name="accessibility_back" msgid="6530104400086152611">"กลับ"</string>
<string name="accessibility_home" msgid="5430449841237966217">"หน้าแรก"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"ภาพพักหน้าจอ"</string>
<string name="ethernet_label" msgid="2203544727007463351">"อีเทอร์เน็ต"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ห้ามรบกวน"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"โหมดสำคัญ"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"บลูทูธ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ไม่มีอุปกรณ์ที่จับคู่ที่สามารถใช้ได้"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"แตะเพื่อเชื่อมต่อหรือยกเลิกการเชื่อมต่ออุปกรณ์"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"บันทึกแล้ว"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ยกเลิกการเชื่อมต่อ"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"เปิดใช้งาน"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"เปิดอัตโนมัติในวันพรุ่งนี้"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"ฟีเจอร์ต่างๆ เช่น Quick Share และ \"หาอุปกรณ์ของฉัน\" ใช้บลูทูธ"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"บลูทูธจะเปิดพรุ่งนี้เช้า"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"แชร์เสียง"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"เลือกวิดเจ็ต"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"นำวิดเจ็ตออก"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"จัดวางวิดเจ็ตที่เลือก"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"วิดเจ็ตในหน้าจอล็อก"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"ทุกคนจะดูวิดเจ็ตที่อยู่ในหน้าจอล็อกของคุณได้ แม้ว่าแท็บเล็ตจะล็อกอยู่ก็ตาม"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"วิดเจ็ตในหน้าจอล็อก"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"หากต้องการเปิดแอปโดยใช้วิดเจ็ต คุณจะต้องยืนยันตัวตนของคุณ นอกจากนี้ โปรดทราบว่าผู้อื่นจะดูวิดเจ็ตเหล่านี้ได้แม้ว่าแท็บเล็ตจะล็อกอยู่ก็ตาม วิดเจ็ตบางอย่างอาจไม่ได้มีไว้สำหรับหน้าจอล็อกของคุณ และอาจไม่ปลอดภัยที่จะเพิ่มที่นี่"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"รับทราบ"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"สลับผู้ใช้"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"เมนูแบบเลื่อนลง"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ระบบจะลบแอปและข้อมูลทั้งหมดในเซสชันนี้"</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ค่าเริ่มต้น"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"อัตโนมัติ"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ไม่มีเสียงหรือการสั่น"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"ไม่มีเสียงหรือการสั่น และปรากฏต่ำลงมาในส่วนการสนทนา"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"อาจส่งเสียงหรือสั่นโดยขึ้นอยู่กับการตั้งค่าอุปกรณ์"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"อาจส่งเสียงหรือสั่นโดยขึ้นอยู่กับการตั้งค่าอุปกรณ์ การสนทนาจาก <xliff:g id="APP_NAME">%1$s</xliff:g> จะแสดงเป็นบับเบิลโดยค่าเริ่มต้น"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ให้ระบบพิจารณาว่าจะให้การแจ้งเตือนนี้ส่งเสียงหรือสั่นหรือไม่"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"เลื่อนหน้าขึ้น"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"เลื่อนหน้าลง"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"ลบ"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"แทรก"</string>
@@ -1361,22 +1357,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"แยกหน้าจอ"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"อินพุต"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"แป้นพิมพ์ลัดของแอป"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"การช่วยเหลือพิเศษ"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"แป้นพิมพ์ลัด"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"ค้นหาแป้นพิมพ์ลัด"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"ไอคอนยุบ"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"ไอคอนขยาย"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"หรือ"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"ท่าทางสัมผัสสำหรับย้อนกลับ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ท่าทางสัมผัสสำหรับหน้าแรก"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ปุ่มดำเนินการ"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"เสร็จสิ้น"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"เก่งมาก"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ย้อนกลับ"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"หากต้องการย้อนกลับ ให้ใช้ 3 นิ้วปัดไปทางซ้ายหรือขวาที่ใดก็ได้บนทัชแพด"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ทัชแพดแสดงภาพ 3 นิ้วเลื่อนไปทางขวาและซ้าย"</string>
@@ -1385,4 +1378,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"ระดับที่ %1$d จาก %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ระบบควบคุมอุปกรณ์สมาร์ทโฮม"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"เข้าถึงระบบควบคุมอุปกรณ์สมาร์ทโฮมได้อย่างรวดเร็วผ่านภาพพักหน้าจอ"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"เลิกทำ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-th/tiles_states_strings.xml b/packages/SystemUI/res/values-th/tiles_states_strings.xml
index 8b7187b..20f66da 100644
--- a/packages/SystemUI/res/values-th/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-th/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"ปิด"</item>
<item msgid="4875147066469902392">"เปิด"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"ไม่พร้อมใช้งาน"</item>
+ <item msgid="2004750556637773692">"ปิด"</item>
+ <item msgid="8968530753931637871">"เปิด"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"ไม่พร้อมใช้งาน"</item>
<item msgid="5044688398303285224">"ปิด"</item>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 421283c..e52ebcc 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"I-tap para tingnan"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Nagka-error sa pag-save ng recording ng screen"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Nagkaroon ng error sa pagsisimula ng pag-record ng screen"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Hihinto ka sa pag-record ng <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Ihinto ang pag-record?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Kasalukuyan mong nire-record ang iyong buong screen"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Kasalukuyan mong nire-record ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Huminto sa pag-record"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ibinabahagi ang screen"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Hihinto ka sa pagbabahagi ng <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Kina-cast ang screen"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Hihinto ka sa pag-cast ng <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Ihinto ang pagbabahagi ng screen?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Kasalukuyan mong ibinabahagi ang iyong buong screen sa <xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Kasalukuyan mong ibinabahagi ang iyong buong screen sa isang app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Kasalukuyan kang nagbabahagi ng <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Kasalukuyan kang nagbabahagi ng app"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Ihinto ang pagbabahagi"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Kina-cast ang screen"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Ihinto ang pag-cast?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Kasalukuyan mong kina-cast ang iyong buong screen sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Kasalukuyan mong kina-cast ang iyong buong screen sa isang kalapit na device"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Kasalukuyan kang nagka-cast ng <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> sa <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Kasalukuyan kang nagka-cast ng <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> sa isang kalapit na device"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Kasalukuyan kang nagka-cast sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Kasalukuyan kang nagka-cast sa isang kalapit na device"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Ihinto ang pag-cast"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Isara"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Recorder ng Isyu"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Pinoproseso: recording ng isyu"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Kasalukuyang notification para sa session ng pangongolekta ng isyu"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Nagkaroon ng error sa pag-save ng recording ng isyu"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Nagkaroon ng error sa pagsisimula ng pag-record ng isyu"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Nanonood sa full screen"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Para lumabas, mag-swipe pababa mula sa itaas ng iyong screen"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Bumalik"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Home"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"Screen saver"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Huwag Istorbohin"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"Mga mode ng priyoridad"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Walang available na mga magkapares na device"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Mag-tap para magkonekta o magdiskonekta ng device"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Na-save"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"idiskonekta"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"i-activate"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Awtomatikong i-on bukas"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Gumagamit ng Bluetooth ang mga feature tulad ng Quick Share at Hanapin ang Aking Device"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Mag-o-on ang Bluetooth bukas ng umaga"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Ibahagi ang audio"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"pumili ng widget"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"alisin ang widget"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"ilagay ang napiling widget"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Mga widget ng lock screen"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Makikita ng sinuman ang mga widget sa lock screen, kahit naka-lock ang tablet."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Mga widget ng lock screen"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Para magbukas ng app gamit ang isang widget, kakailanganin mong i-verify na ikaw iyan. Bukod pa rito, tandaang puwedeng tingnan ng kahit na sino ang mga ito, kahit na naka-lock ang iyong tablet. Posibleng hindi para sa iyong lock screen ang ilang widget at posibleng hindi ligtas ang mga ito na idagdag dito."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Magpalit ng user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ide-delete ang lahat ng app at data sa session na ito."</string>
@@ -722,7 +716,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Default"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Awtomatiko"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Walang tunog o pag-vibrate"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Walang tunog o pag-vibrate at lumalabas nang mas mababa sa seksyon ng pag-uusap"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Puwedeng mag-ring o mag-vibrate batay sa mga setting ng device"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Puwedeng mag-ring o mag-vibrate batay sa mga setting ng device. Mga pag-uusap mula sa <xliff:g id="APP_NAME">%1$s</xliff:g> bubble bilang default."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Ipatukoy sa system kung dapat gumawa ng tunog o pag-vibrate ang notification na ito"</string>
@@ -779,6 +774,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1357,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Split screen"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Input"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Mga shortcut ng app"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Mga keyboard shortcut"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Mga shortcut ng paghahanap"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"I-collapse ang icon"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"I-expand ang icon"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"o"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Galaw para bumalik"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Galaw para sa Home"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Action key"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tapos na"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Magaling!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Bumalik"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Para bumalik, mag-swipe pakaliwa o pakanan gamit ang tatlong daliri kahit saan sa touchpad."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Touchpad na nagpapakita ng tatlong daliring gumagalaw pakanan at pakaliwa"</string>
@@ -1385,4 +1378,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Level %1$d sa %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Mga Home Control"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Mabilis i-access ang home control bilang screensaver"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"I-undo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tl/tiles_states_strings.xml b/packages/SystemUI/res/values-tl/tiles_states_strings.xml
index fe2827f..85c4cfa 100644
--- a/packages/SystemUI/res/values-tl/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-tl/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"Naka-off"</item>
<item msgid="4875147066469902392">"Naka-on"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"Hindi available"</item>
+ <item msgid="2004750556637773692">"Naka-off"</item>
+ <item msgid="8968530753931637871">"Naka-on"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Hindi available"</item>
<item msgid="5044688398303285224">"Naka-off"</item>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 8ad6dee..2c429d8 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Görüntülemek için dokunun"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Ekran kaydı saklanırken hata oluştu"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Ekran kaydı başlatılırken hata oluştu"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> içeriğini kaydetmeyi durdurursunuz"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Kaydı durdur"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ekran paylaşılıyor"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Ekran paylaşımı durdurulsun mu?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> içeriğini paylaşmayı durdurursunuz"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Ekran yayınlanıyor"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Paylaşımı durdur"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Ekran yayınlanıyor"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Yayın durdurulsun mu?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> içeriğini yayınlamayı durdurursunuz"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Yayını durdur"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Kapat"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Sorun Kaydedici"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Sorun kaydı işleniyor"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Sorun toplama oturumuyla ilgili devam eden görev bildirimi"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Sorun kaydı saklanırken hata oluştu"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Sorun kaydı başlatılırken hata oluştu"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Tam ekran olarak görüntüleme"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Çıkmak için ekranın üst kısmından aşağı doğru kaydırın"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Anladım"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Geri"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Ana sayfa"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Ekran koruyucu"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Rahatsız Etmeyin"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Kullanılabilir eşlenmiş cihaz yok"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Cihaz bağlamak veya cihazın bağlantısını kesmek için dokunun"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Kaydedildi"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"bağlantıyı kes"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"etkinleştir"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Yarın otomatik olarak aç"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Quick Share ve Cihazımı Bul gibi özellikler Bluetooth\'u kullanır"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth yarın sabah açılacak"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Sesi paylaş"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"widget seçin"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"widget\'ı kaldır"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"seçilen widget\'ı yerleştir"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Kilit ekranı widget\'ları"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Widget kullanarak bir uygulamayı açmak için kimliğinizi doğrulamanız gerekir. Ayrıca, tabletiniz kilitliyken bile widget\'ların herkes tarafından görüntülenebileceğini unutmayın. Bazı widget\'lar kilit ekranınız için tasarlanmamış olabileceğinden buraya eklenmeleri güvenli olmayabilir."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Anladım"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"açılır menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu oturumdaki tüm uygulamalar ve veriler silinecek."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Varsayılan"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Otomatik"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Sessiz veya titreşim yok"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Ses veya titreşim yok, görüşme bölümünün altında görünür"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Cihaz ayarlarına bağlı olarak zili çalabilir veya titreyebilir"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Cihaz ayarlarına bağlı olarak zili çalabilir veya titreyebilir <xliff:g id="APP_NAME">%1$s</xliff:g> adlı uygulamadan görüşmeler varsayılan olarak baloncukla gösterilir."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Bu bildirimin ses çıkarması veya titreşmesi gerekip gerekmediğine sistem karar versin"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Sayfa Yukarı"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Sayfa Aşağı"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Bölünmüş ekran"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Giriş"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Uygulama kısayolları"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Erişilebilirlik"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Klavye kısayolları"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Arama kısayolları"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Daralt simgesi"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Genişlet simgesi"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"veya"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Geri hareketi"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Ana sayfa hareketi"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Eylem tuşu"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Bitti"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Tebrikler!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Geri dön"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Geri dönmek için dokunmatik alanın herhangi bir yerinde üç parmağınızla sola veya sağa kaydırın."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Sağa ve sola hareket eden üç parmağın gösterildiği dokunmatik alan"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Seviye %1$d / %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Ev Kontrolleri"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Ekran koruyucu olarak ev kontrollerinize hızla erişin"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-tr/tiles_states_strings.xml b/packages/SystemUI/res/values-tr/tiles_states_strings.xml
index 1ed106f..b26588b 100644
--- a/packages/SystemUI/res/values-tr/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-tr/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Kapalı"</item>
<item msgid="4875147066469902392">"Açık"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Kullanılamıyor"</item>
<item msgid="5044688398303285224">"Kapalı"</item>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 17931cff4..3ebb787 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Натисніть, щоб переглянути"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Не вдалося зберегти запис відео з екрана"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Не вдалося почати запис екрана"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Ви зупините запис контенту з додатка <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Зупинити запис"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Показ екрана"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Зупинити показ екрана?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Ви зупините надсилання контенту з додатка <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Трансляція екрана"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Зупинити показ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Трансляція екрана"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Зупинити трансляцію?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Ви зупините трансляцію контенту з додатка <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Припинити трансляцію"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Закрити"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Засіб запису проблем"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Обробка запису проблеми"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Поточне сповіщення про сеанс збирання даних про проблему"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Не вдалося зберегти запис проблеми"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Не вдалося почати запис проблеми"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Перегляд на весь екран"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Щоб вийти, проведіть пальцем униз від верхнього краю екрана"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Назад"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Головна"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Заставка"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Не турбувати"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Немає спарених пристроїв"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Натисніть, щоб під’єднати або від’єднати пристрій"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Збережено"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"від’єднати"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"активувати"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Автоматично ввімкнути завтра"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Такі функції, як швидкий обмін і \"Знайти пристрій\", використовують Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth увімкнеться завтра вранці"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Поділитись аудіо"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"виберіть віджет"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"видалити віджет"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"розмістити вибраний віджет"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Віджети для заблокованого екрана"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Щоб відкрити додаток за допомогою віджета, вам потрібно буде підтвердити особу. Пам’ятайте також, що бачити віджети можуть усі, навіть коли планшет заблоковано. Можливо, деякі віджети не призначені для заблокованого екрана, і додавати їх на нього може бути небезпечно."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Змінити користувача"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"спадне меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усі додатки й дані з цього сеансу буде видалено."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"За умовчанням"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Автоматично"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Без звуку чи вібрації"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Без звуку чи вібрації, з\'являється нижче в розділі розмов"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Дзвінок або вібрація залежно від налаштувань пристрою"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Може дзвонити або вібрувати залежно від налаштувань пристрою. Показує спливаючі розмови з додатка <xliff:g id="APP_NAME">%1$s</xliff:g> за умовчанням."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Дозволити системі визначати, чи має сповіщення супроводжуватися звуком або вібрацією"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Сторінка вгору"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Сторінка вниз"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Розділити екран"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Введення"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Комбінації клавіш для додатків"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Доступність"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Комбінації клавіш"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Комбінації клавіш для пошуку"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Значок згортання"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Значок розгортання"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"або"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Жест \"Назад\""</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Жест переходу на головний екран"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Клавіша дії"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Чудово!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Щоб перейти назад, проведіть трьома пальцями вліво або вправо по сенсорній панелі."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Сенсорна панель із зображенням трьох пальців, що рухаються вправо й уліво"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Рівень %1$d з %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Автоматизація дому"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Швидкий доступ до керування домом через заставку"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-uk/tiles_states_strings.xml b/packages/SystemUI/res/values-uk/tiles_states_strings.xml
index 61e62e4..2d86916 100644
--- a/packages/SystemUI/res/values-uk/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-uk/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Вимкнено"</item>
<item msgid="4875147066469902392">"Увімкнено"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Недоступно"</item>
<item msgid="5044688398303285224">"Вимкнено"</item>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index d597d49..fe8eb4d 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"دیکھنے کے لیے تھپتھپائیں"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"اسکرین ریکارڈنگ محفوظ کرنے میں خرابی"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"اسکرین ریکارڈنگ شروع کرنے میں خرابی"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"آپ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو ریکارڈ نہیں کر پائیں گے"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"ریکارڈنگ روکیں؟"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"آپ فی الحال اپنی پوری اسکرین ریکارڈ کر رہے ہیں"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"آپ فی الحال <xliff:g id="APP_NAME">%1$s</xliff:g> ریکارڈ کر رہے ہیں"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"ریکارڈنگ روکیں"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"اسکرین کا اشتراک ہو رہا ہے"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"آپ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کا اشتراک نہیں کر پائیں گے"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"اسکرین کاسٹ ہو رہی ہے"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"آپ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> کو کاسٹ نہیں کر پائیں گے"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"اسکرین کا اشتراک روکیں؟"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"آپ فی الحال <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> کے ساتھ اپنی پوری اسکرین کا اشتراک کر رہے ہیں"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"آپ فی الحال ایک ایپ کے ساتھ اپنی پوری اسکرین کا اشتراک کر رہے ہیں"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"آپ فی الحال <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> کا اشتراک کر رہے ہیں"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"آپ فی الحال ایک ایپ کا اشتراک کر رہے ہیں"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"اشتراک کرنا روکیں"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"اسکرین کاسٹ ہو رہی ہے"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"کاسٹ کرنا بند کریں؟"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"آپ فی الحال اپنی پوری اسکرین کو <xliff:g id="DEVICE_NAME">%1$s</xliff:g> پر کاسٹ کر رہے ہیں"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"آپ فی الحال اپنی پوری اسکرین کو ایک قریبی آلہ پر کاسٹ کر رہے ہیں"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"آپ فی الحال <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> کو <xliff:g id="DEVICE_NAME">%2$s</xliff:g> پر کاسٹ کر رہے ہیں"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"آپ فی الحال <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> کو ایک قریبی آلہ پر کاسٹ کر رہے ہیں"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"آپ فی الحال <xliff:g id="DEVICE_NAME">%1$s</xliff:g> پر کاسٹ کر رہے ہیں"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"آپ فی الحال ایک قریبی آلہ پر کاسٹ کر رہے ہیں"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"کاسٹ کرنا بند کریں"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"بند کریں"</string>
<string name="issuerecord_title" msgid="286627115110121849">"ایشو ریکارڈر"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"ایشو ریکارڈنگ پروسیس ہو رہی ہے"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"ایشو کلیکشن سیشن کے لیے جاری اطلاع"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"ایشو ریکارڈنگ محفوظ کرنے میں خرابی"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"ایشو ریکارڈنگ شروع کرنے میں خرابی"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"فُل اسکرین میں دیکھ رہے ہیں"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"باہر نکلنے کے لیے اپنی اسکرین کے اوپری حصے سے نیچے کی طرف سوائپ کریں"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"سمجھ آ گئی"</string>
<string name="accessibility_back" msgid="6530104400086152611">"واپس جائیں"</string>
<string name="accessibility_home" msgid="5430449841237966217">"ہوم"</string>
@@ -295,6 +290,7 @@
<string name="start_dreams" msgid="9131802557946276718">"اسکرین سیور"</string>
<string name="ethernet_label" msgid="2203544727007463351">"ایتھرنیٹ"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"ڈسٹرب نہ کریں"</string>
+ <string name="quick_settings_modes_label" msgid="5407025818652750501">"ترجیحی وضع"</string>
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"بلوٹوتھ"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"کوئی جوڑا بنائے ہوئے آلات دستیاب نہیں ہیں"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"کسی آلے کو منسلک یا غیر منسلک کرنے کے لیے تھپتھپائیں"</string>
@@ -306,8 +302,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"محفوظ ہے"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"غیر منسلک کریں"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"فعال کریں"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"خودکار طور پر کل آن کریں"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"فوری اشتراک اور \'میرا آلہ ڈھونڈیں\' جیسی خصوصیات بلوٹوتھ کا استعمال کرتی ہیں"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"بلوٹوتھ کل صبح آن ہو جائے گا"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"آڈیو کا اشتراک کریں"</string>
@@ -495,12 +490,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"ویجیٹ منتخب کریں"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"ویجیٹ ہٹائیں"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"منتخب ویجیٹ رکھیں"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"مقفل اسکرین کے ویجیٹس"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"کوئی بھی آپ کی مقفل اسکرین پر ویجیٹ دیکھ سکتا ہے اگرچہ آپ کا ٹیبلیٹ مقفل ہو۔"</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"مقفل اسکرین کے ویجیٹس"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"ویجیٹ کے ذریعے ایپ کھولنے کے لیے آپ کو تصدیق کرنی ہوگی کہ یہ آپ ہی ہیں۔ نیز، ذہن میں رکھیں کہ کوئی بھی انہیں دیکھ سکتا ہے، یہاں تک کہ جب آپ کا ٹیبلیٹ مقفل ہو۔ ہو سکتا ہے کچھ ویجٹس آپ کی لاک اسکرین کے لیے نہ بنائے گئے ہوں اور یہاں شامل کرنا غیر محفوظ ہو سکتا ہے۔"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"سمجھ آ گئی"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"صارف سوئچ کریں"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"پل ڈاؤن مینیو"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"اس سیشن میں موجود سبھی ایپس اور ڈیٹا کو حذف کر دیا جائے گا۔"</string>
@@ -726,7 +720,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"ڈیفالٹ"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"خودکار"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"کوئی آواز یا وائبریشن نہیں"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"کوئی آواز یا وائبریشن نہیں اور گفتگو کے سیکشن میں نیچے ظاہر ہوتا ہے"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"آلے کی ترتیبات کی بنیاد پر وائبریٹ یا گھنٹی بج سکتی ہے"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"آلے کی ترتیبات بنیاد پر وائبریٹ یا گھنٹی بج سکتی ہے۔ بذریعہ ڈیفالٹ <xliff:g id="APP_NAME">%1$s</xliff:g> بلبلہ سے گفتگوئیں۔"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"سسٹم کو اس بات کا تعین کرنے دیں کہ آیا اس اطلاع کی آواز ہو یا وائبریٹ ہونا چاہیے"</string>
@@ -783,6 +778,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1365,22 +1361,18 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"اسپلٹ اسکرین"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"ان پٹ"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"ایپ شارٹ کٹس"</string>
+ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"موجودہ ایپ"</string>
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ایکسیسبیلٹی"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"کی بورڈ شارٹ کٹس"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"تلاش کے شارٹ کٹس"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"آئیکن سکیڑیں"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"آئیکن پھیلائیں"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"یا"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"پیچھے جانے کا اشارہ"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"ہوم کا اشارہ"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"ایکشن کلید"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ہو گیا"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"بہترین!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"واپس جائیں"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"واپس جانے کے لیے، ٹچ پیڈ پر کہیں بھی تین انگلیوں کی مدد سے دائیں یا بائیں سوائپ کریں۔"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"ٹچ پیڈ دائیں اور بائیں حرکت کرتی ہوئی تین انگلیاں دکھا رہا ہے"</string>
@@ -1389,4 +1381,5 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"%2$d میں سے %1$d کا لیول"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"ہوم کنٹرولز"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"اسکرین سیور کے بطور اپنے ہوم کنٹرولز تک فوری رسائی حاصل کریں"</string>
+ <string name="volume_undo_action" msgid="5815519725211877114">"کالعدم کریں"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ur/tiles_states_strings.xml b/packages/SystemUI/res/values-ur/tiles_states_strings.xml
index ebbc30e..e398b2f 100644
--- a/packages/SystemUI/res/values-ur/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-ur/tiles_states_strings.xml
@@ -56,6 +56,11 @@
<item msgid="5376619709702103243">"آف ہے"</item>
<item msgid="4875147066469902392">"آن ہے"</item>
</string-array>
+ <string-array name="tile_states_modes">
+ <item msgid="7764936419245199023">"دستیاب نہیں ہے"</item>
+ <item msgid="2004750556637773692">"آف ہے"</item>
+ <item msgid="8968530753931637871">"آن ہے"</item>
+ </string-array>
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"دستیاب نہیں ہے"</item>
<item msgid="5044688398303285224">"آف ہے"</item>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 6ef4026..7e9466c 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Koʻrish uchun bosing"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Ekran yozuvi saqlanmadi"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Ekranni yozib olish boshlanmadi"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> yozib olinishini toʻxtatasiz"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Yozuv toʻxtatilsinmi?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Hozir butun ekran yozib olinmoqda"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Hozir <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi yozib olinmoqda"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Yozuvni toʻxtatish"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Ekran ulashilmoqda"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ulashuvini toʻxtatasiz"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Ekran namoyish qilinmoqda"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> translatsiyasini toʻxtatasiz"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Ekran namoyishi toʻxtatilsinmi?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Hozir butun ekran <xliff:g id="HOST_APP_NAME">%1$s</xliff:g> ilovasiga ulashilmoqda"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Hozir butun ekran ilovaga ulashilmoqda"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Hozir <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ilovasiga kontent ulashilmoqda"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Hozir ilovaga kontent ulashilmoqda"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Namoyishni toʻxtatish"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Ekran translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Toʻxtatilsinmi?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Hozir butun ekran <xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasiga translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Hozir butun ekran atrofdagi qurilmaga translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Hozir <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ilovasi <xliff:g id="DEVICE_NAME">%2$s</xliff:g> qurilmasiga translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Hozir <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ilovasi atrofdagi qurilmaga translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Hozir <xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasiga kontent translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Hozir atrofdagi qurilmaga kontent translatsiya qilinmoqda"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Toʻxtatish"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Yopish"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Muammoni yozib olish vositasi"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Yozuv qayta ishlanmoqda"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Muammo toʻplash seansi uchun faol bildirishnoma"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Yozuv saqlanmadi"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Yozib olish boshlanmadi"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Butun ekran rejimi"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Chiqish uchun ekranning tepasidan pastga suring"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"OK"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Orqaga"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Uyga"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Ekran lavhasi"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Bezovta qilinmasin"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Ulangan qurilmalar topilmadi"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Qurilma ulash yoki uzish uchun tegining"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Saqlangan"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"uzish"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"faollashtirish"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Ertaga avtomatik yoqilsin"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Tezkor ulashuv va Qurilmamni top kabi funksiyalar Bluetooth ishlatadi"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth ertaga ertalab yoqiladi"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Audioni ulashish"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"vidjet tanlash"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"vidjetni olib tashlash"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"tanlangan vidjetni joylash"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Ekran qulfi vidjetlari"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Ekran quflidagi vidjetlar hammaga koʻrinadi, hatto planshet qulflanganda ham."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Ekran qulfi vidjetlari"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ilovani vidjet orqali ochish uchun shaxsingizni tasdiqlashingiz kerak. Shuningdek, planshet qulflanganda ham bu axborotlar hammaga koʻrinishini unutmang. Ayrim vidjetlar ekran qulfiga moslanmagan va ularni bu yerda chiqarish xavfli boʻlishi mumkin."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"OK"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Foydalanuvchini almashtirish"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"tortib tushiriladigan menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ushbu seansdagi barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Standart"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Avtomatik"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Tovush yoki tebranishsiz"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Tovush yoki tebranishsiz hamda suhbatlar ruknining pastida chiqadi"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Qurilma sozlamalari asosida jiringlashi yoki tebranishi mumkin"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Qurilma sozlamalari asosida jiringlashi yoki tebranishi mumkin. <xliff:g id="APP_NAME">%1$s</xliff:g> suhbatlari standart holatda bulutcha shaklida chiqadi."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Bu bildirishnoma jiringlashi yoki tebranishini hal qilsin"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ekranni ikkiga ajratish"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Kiritish"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Ilova yorliqlari"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qulayliklar"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Tezkor tugmalar"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Tezkor tugmalar qidiruvi"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Yigʻish belgisi"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Yoyish belgisi"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"yoki"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Orqaga qaytish ishorasi"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Asosiy ekran ishorasi"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Amal tugmasi"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tayyor"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Barakalla!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Orqaga qaytish"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Ortga qaytish uchun sensorli panelda uchta barmoqni chapga yoki oʻngga suring."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Sensorli panelda uchta barmoq chapga va oʻngga harakatlanishi"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Daraja: %1$d / %2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Uy boshqaruvi"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Uy boshqaruvi tugmalarini ekran lavhasida tezkor oching"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-uz/tiles_states_strings.xml b/packages/SystemUI/res/values-uz/tiles_states_strings.xml
index 2ae81123..da9c98f 100644
--- a/packages/SystemUI/res/values-uz/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-uz/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Oʻchiq"</item>
<item msgid="4875147066469902392">"Yoniq"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Ishlamaydi"</item>
<item msgid="5044688398303285224">"Oʻchiq"</item>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 88fe436..42909c9 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Nhấn để xem"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Có lỗi xảy ra khi lưu video ghi màn hình"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Lỗi khi bắt đầu ghi màn hình"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Bạn sẽ dừng ghi âm nội dung của <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Dừng ghi"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Đang chia sẻ màn hình"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Dừng chia sẻ màn hình?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Bạn sẽ dừng chia sẻ nội dung của <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Đang truyền màn hình"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Dừng chia sẻ"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Đang truyền màn hình"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Dừng truyền?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Bạn sẽ dừng truyền nội dung của <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Dừng truyền"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Đóng"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Trình ghi sự cố"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Đang xử lý bản ghi sự cố"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Thông báo hiển thị liên tục cho một phiên thu thập sự cố"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Đã xảy ra lỗi khi lưu bản ghi sự cố"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Đã xảy ra lỗi khi bắt đầu ghi sự cố"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Xem toàn màn hình"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Để thoát, hãy vuốt xuống từ đầu màn hình"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Tôi hiểu"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Quay lại"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Trang chủ"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Trình bảo vệ m.hình"</string>
<string name="ethernet_label" msgid="2203544727007463351">"Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Không làm phiền"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Không có thiết bị nào được ghép nối"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Nhấn để kết nối/ngắt kết nối với một thiết bị"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Đã lưu"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"ngắt kết nối"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"kích hoạt"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Tự động bật vào ngày mai"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Các tính năng như Chia sẻ nhanh và Tìm thiết bị của tôi đều sử dụng Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"Bluetooth sẽ bật vào sáng mai"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Chia sẻ âm thanh"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"chọn tiện ích"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"xoá tiện ích"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"đặt tiện ích đã chọn vào vị trí"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Tiện ích trên màn hình khoá"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Để dùng tiện ích mở một ứng dụng, bạn cần xác minh danh tính của mình. Ngoài ra, hãy lưu ý rằng bất kỳ ai cũng có thể xem các tiện ích này, ngay cả khi máy tính bảng của bạn được khoá. Một số tiện ích có thể không dành cho màn hình khoá và không an toàn khi thêm vào đây."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Tôi hiểu"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Chuyển đổi người dùng"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"trình đơn kéo xuống"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tất cả ứng dụng và dữ liệu trong phiên này sẽ bị xóa."</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Mặc định"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Tự động"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Không phát âm thanh hoặc rung"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Không phát âm thanh hoặc rung và xuất hiện phía dưới trong phần cuộc trò chuyện"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Có thể đổ chuông hoặc rung tuỳ theo chế độ cài đặt trên thiết bị"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Có thể đổ chuông hoặc rung tuỳ theo chế độ cài đặt trên thiết bị. Theo mặc định, các cuộc trò chuyện từ <xliff:g id="APP_NAME">%1$s</xliff:g> sẽ hiển thị dưới dạng bong bóng."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Cho phép hệ thống quyết định xem thông báo này phát âm thanh hay rung"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Cuối"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Chia đôi màn hình"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Phương thức nhập"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Lối tắt ứng dụng"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Hỗ trợ tiếp cận"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Phím tắt"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Lối tắt tìm kiếm"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Biểu tượng Thu gọn"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Biểu tượng Mở rộng"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"hoặc"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Cử chỉ quay lại"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Cử chỉ chuyển đến màn hình chính"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Phím hành động"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Xong"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Tuyệt vời!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Quay lại"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Để quay lại, hãy vuốt sang trái hoặc sang phải bằng 3 ngón tay ở vị trí bất kỳ trên bàn di chuột."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Minh hoạ thao tác di chuyển sang phải và sang trái bằng 3 ngón tay trên bàn di chuột"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Độ sáng %1$d/%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Điều khiển nhà"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Điều khiển nhà nhanh bằng trình bảo vệ màn hình"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-vi/tiles_states_strings.xml b/packages/SystemUI/res/values-vi/tiles_states_strings.xml
index d9d8af1..efcc373 100644
--- a/packages/SystemUI/res/values-vi/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-vi/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Đang tắt"</item>
<item msgid="4875147066469902392">"Đang bật"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Không hoạt động"</item>
<item msgid="5044688398303285224">"Đang tắt"</item>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 3a89e35..b21bd97 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"点按即可查看"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"保存屏幕录制内容时出错"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"启动屏幕录制时出错"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"将停止录制<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>的内容"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"停止录制"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"正在共享屏幕"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"要停止共享屏幕吗?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"将停止分享<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>的内容"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"正在投放屏幕"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"停止共享"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"正在投屏"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"停止投屏吗?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"将停止投放<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>的内容"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"停止投屏"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"关闭"</string>
<string name="issuerecord_title" msgid="286627115110121849">"问题录制器"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"正在处理问题录制"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"针对问题收集会话的持续性通知"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"保存问题录制内容时出错"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"启动问题录制时出错"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"目前处于全屏模式"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"若要退出,请从屏幕顶部向下滑动"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"知道了"</string>
<string name="accessibility_back" msgid="6530104400086152611">"返回"</string>
<string name="accessibility_home" msgid="5430449841237966217">"主屏幕"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"屏保"</string>
<string name="ethernet_label" msgid="2203544727007463351">"有线网络"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"勿扰"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"蓝牙"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"没有可用的配对设备"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"点按即可连接设备或断开设备连接"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"已保存"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"断开连接"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"启用"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"明天自动开启"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"快速分享、查找我的设备等功能会使用蓝牙"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"蓝牙将在明天早上开启"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"分享音频"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"选择微件"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"移除微件"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"放置所选微件"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"锁定的屏幕中的微件"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"若要使用微件打开应用,您需要验证是您本人在操作。另外请注意,任何人都可以查看此类微件,即使您的平板电脑已锁定。有些微件可能不适合显示在锁定的屏幕中,因此添加到这里可能不安全。"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"知道了"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切换用户"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉菜单"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"此会话中的所有应用和数据都将被删除。"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"默认"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"自动"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"不发出提示音,也不振动"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"不发出提示音,也不振动;显示在对话部分的靠下位置"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"可能会响铃或振动,取决于设备设置"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"可能会响铃或振动,取决于设备设置。默认情况下,来自<xliff:g id="APP_NAME">%1$s</xliff:g>的对话会以消息气泡的形式显示。"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"让系统决定是否应让设备在收到此通知时发出提示音或振动"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"向上翻页"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"PgDn"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"删除"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"分屏"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"输入"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"应用快捷键"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"无障碍功能"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"键盘快捷键"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜索快捷键"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收起图标"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"展开图标"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"或"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"返回手势"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"主屏幕手势"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"快捷操作按键"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"太棒了!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"如要返回,请使用三根手指在触控板上的任意位置左滑或右滑。"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"触控板,其中显示了三根手指右移和左移"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 级,共 %2$d 级"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"家居控制"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"通过屏保快速访问家居控制功能"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
index 0446a1b..a0d37b9 100644
--- a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"已关闭"</item>
<item msgid="4875147066469902392">"已开启"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"不可用"</item>
<item msgid="5044688398303285224">"已关闭"</item>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 1603b9b..daac54e 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"輕按即可查看"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"儲存螢幕錄影時發生錯誤"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"開始錄影畫面時發生錯誤"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"你將停止錄影「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"停止錄製"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"正在分享螢幕"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"要停止分享螢幕嗎?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"你將停止分享「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"正在投放螢幕"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"停止分享"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"正在投放螢幕"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"要停止投放嗎?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"你將停止投放「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"停止投放"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"關閉"</string>
<string name="issuerecord_title" msgid="286627115110121849">"問題記錄工具"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"正在處理問題記錄"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"問題收集工作階段的持續通知"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"儲存錄影問題時發生錯誤"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"開始記錄問題時發生錯誤"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"以全螢幕檢視"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"如要離開,請從螢幕頂部向下滑動"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"知道了"</string>
<string name="accessibility_back" msgid="6530104400086152611">"返回"</string>
<string name="accessibility_home" msgid="5430449841237966217">"首頁"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"螢幕保護程式"</string>
<string name="ethernet_label" msgid="2203544727007463351">"以太網"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"請勿騷擾"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"藍牙"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"找不到配對的裝置"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"輕按即可連結或解除連結裝置"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"已儲存"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"解除連結"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"啟動"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"明天自動開啟"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"「快速共享」和「尋找我的裝置」等功能都會使用藍牙"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"藍牙將於明天上午開啟"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"分享音訊"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"揀小工具"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"移除小工具"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"放置所選小工具"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"上鎖畫面小工具"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"如要使用小工具開啟應用程式,系統會要求你驗證身分。請注意,即使平板電腦已鎖定,所有人還是能查看小工具。部分小工具可能不適用於上鎖畫面,而且新增至這裡後可能會有安全疑慮。"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"知道了"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"這個工作階段中的所有應用程式和資料都會被刪除。"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"預設"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"自動"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"無音效或震動"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"無音效或震動,並在對話部分的較低位置顯示"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"可能會根據裝置設定發出鈴聲或震動"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"可能會根據裝置設定發出鈴聲或震動。根據預設,來自 <xliff:g id="APP_NAME">%1$s</xliff:g> 的對話會以對話氣泡顯示。"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"由系統判斷是否要讓此通知發出音效或震動"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"上一頁"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"下一頁"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"刪除"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"插入"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"分割螢幕"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"輸入"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"應用程式捷徑"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"無障礙功能"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"鍵盤快速鍵"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜尋快速鍵"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收合圖示"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"展開圖示"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"或"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"返去手勢"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"主畫面手勢"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"快捷操作鍵"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"太好了!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"用三隻手指在觸控板上任何一處左右滑動即可返回。"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"觸控板上有三隻手指左右移動"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 級,共 %2$d 級"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"智能家居"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"在螢幕保護程式畫面上控制智能家居"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
index cca7ac4..de07c6c 100644
--- a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"已關閉"</item>
<item msgid="4875147066469902392">"已開啟"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"無法使用"</item>
<item msgid="5044688398303285224">"已關閉"</item>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 3a1d369..a29d47b 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -126,31 +126,40 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"輕觸即可查看"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"儲存螢幕錄影內容時發生錯誤"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"開始錄製螢幕畫面時發生錯誤"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
+ <!-- no translation found for screenrecord_stop_dialog_title (8716193661764511095) -->
<skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
+ <!-- no translation found for screenrecord_stop_dialog_message (6262768207331626817) -->
<skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"系統將停止錄製「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」的內容"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
+ <!-- no translation found for screenrecord_stop_dialog_message_specific_app (5995770227684523244) -->
<skip />
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"停止錄音"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"正在分享畫面"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"要停止分享畫面嗎?"</string>
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen_with_host_app (522823522115375414) -->
<skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_entire_screen (5090115386271179270) -->
<skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"系統將停止分享「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」的內容"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_specific (5923772039347985172) -->
<skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"正在投放畫面"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
+ <!-- no translation found for share_to_app_stop_dialog_message_single_app_generic (6681016774654578261) -->
<skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"停止分享"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"正在投放畫面"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"要停止投放嗎?"</string>
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen_with_device (1474703115926205251) -->
<skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"系統將停止投放「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」的內容"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_entire_screen (8419219169553867625) -->
<skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app_with_device (2715934698604085519) -->
<skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_specific_app (8616103075630934513) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic_with_device (9213582497852420203) -->
+ <skip />
+ <!-- no translation found for cast_to_other_device_stop_dialog_message_generic (4100272100480415076) -->
+ <skip />
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"停止投放"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"關閉"</string>
<string name="issuerecord_title" msgid="286627115110121849">"問題記錄工具"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"正在處理問題記錄"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"問題收集工作階段的持續性通知"</string>
@@ -161,8 +170,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"儲存問題記錄時發生錯誤"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"開始記錄問題時發生錯誤"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"以全螢幕檢視"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"如要離開,請從螢幕頂端向下滑動"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"我知道了"</string>
<string name="accessibility_back" msgid="6530104400086152611">"返回"</string>
<string name="accessibility_home" msgid="5430449841237966217">"主畫面"</string>
@@ -295,6 +303,8 @@
<string name="start_dreams" msgid="9131802557946276718">"螢幕保護程式"</string>
<string name="ethernet_label" msgid="2203544727007463351">"乙太網路"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"零打擾"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"藍牙"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"找不到配對的裝置"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"輕觸即可連結/取消連結裝置"</string>
@@ -306,8 +316,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"已儲存"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"取消連結"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"啟用"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"明天自動開啟"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"「快速分享」和「尋找我的裝置」等功能都需要使用藍牙技術"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"藍牙會在明天早上開啟"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"分享音訊"</string>
@@ -495,12 +504,13 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"選取小工具"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"移除小工具"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"放置所選小工具"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
+ <!-- no translation found for communal_widget_picker_title (1953369090475731663) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
+ <!-- no translation found for communal_widget_picker_description (490515450110487871) -->
<skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"螢幕鎖定小工具"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"如要使用小工具開啟應用程式,系統會要求你驗證身分。請注意,即使平板電腦已鎖定,所有人還是能查看小工具。某些小工具可能不適用於螢幕鎖定畫面,而且新增到這裡可能有安全疑慮。"</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"我知道了"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"這個工作階段中的所有應用程式和資料都會刪除。"</string>
@@ -722,7 +732,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"預設"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"自動"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"不震動或發出聲音"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"不震動或發出聲音,並顯示在對話區的下方"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"根據裝置的設定響鈴或震動"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"根據裝置的設定響鈴或震動。根據預設,來自「<xliff:g id="APP_NAME">%1$s</xliff:g>」的對話會以對話框形式顯示。"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"由系統判斷要讓裝置在收到這則通知時震動還是發出音效"</string>
@@ -779,6 +790,8 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up 鍵"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down 鍵"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete 鍵"</string>
+ <!-- no translation found for keyboard_key_esc (6230365950511411322) -->
+ <skip />
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Home 鍵"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"End 鍵"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Insert 鍵"</string>
@@ -1361,22 +1374,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"分割畫面"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"輸入"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"應用程式捷徑"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"無障礙"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"鍵盤快速鍵"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"搜尋快速鍵"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"收合圖示"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"展開圖示"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"或"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"返回手勢"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"主畫面手勢"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"快捷操作鍵"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"太棒了!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"如要返回,請用三指在觸控板上向左或右滑動。"</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"動畫顯示三指正在觸控板上向左右移動"</string>
@@ -1385,4 +1395,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"第 %1$d 級,共 %2$d 級"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"居家控制"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"在螢幕保護程式畫面上快速存取居家控制功能"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
index 4cc5804..cbbea41 100644
--- a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"已關閉"</item>
<item msgid="4875147066469902392">"已開啟"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"無法使用"</item>
<item msgid="5044688398303285224">"已關閉"</item>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 7aa4288..a23c69f 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -126,31 +126,27 @@
<string name="screenrecord_save_text" msgid="3008973099800840163">"Thepha ukuze ubuke"</string>
<string name="screenrecord_save_error" msgid="5862648532560118815">"Iphutha lokulondoloza okokuqopha iskrini"</string>
<string name="screenrecord_start_error" msgid="2200660692479682368">"Iphutha lokuqala ukurekhoda isikrini"</string>
- <!-- no translation found for screenrecord_stop_dialog_title (2685522129492260887) -->
- <skip />
- <!-- no translation found for screenrecord_stop_dialog_message (1926783607059442889) -->
- <skip />
- <string name="screenrecord_stop_dialog_message_specific_app" msgid="5285148796772616326">"Uzoyeka ukurekhoda <b>i-<xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for screenrecord_stop_dialog_button (2883812564938194350) -->
- <skip />
+ <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"Misa ukurekhoda?"</string>
+ <string name="screenrecord_stop_dialog_message" msgid="6262768207331626817">"Njengamanje urekhoda sonke isikrini sakho"</string>
+ <string name="screenrecord_stop_dialog_message_specific_app" msgid="5995770227684523244">"Njengamanje urekhoda i-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="screenrecord_stop_dialog_button" msgid="2883812564938194350">"Misa ukurekhoda"</string>
<string name="share_to_app_chip_accessibility_label" msgid="4210256229976947065">"Yabelana ngesikrini"</string>
- <!-- no translation found for share_to_app_stop_dialog_title (9212915050910250438) -->
- <skip />
- <!-- no translation found for share_to_app_stop_dialog_message (3181723638915877339) -->
- <skip />
- <string name="share_to_app_stop_dialog_message_specific_app" msgid="124371406810544777">"Uzoyeka ukwaba <b>i-<xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for share_to_app_stop_dialog_button (6334056916284230217) -->
- <skip />
- <string name="cast_to_other_device_chip_accessibility_label" msgid="1680650146639059938">"Isikrini sokusakaza"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_title (1910372600290258193) -->
- <skip />
- <!-- no translation found for cast_to_other_device_stop_dialog_message (1502520537030715412) -->
- <skip />
- <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="4891536209254041850">"Uzoyeka ukusakaza <b>i-<xliff:g id="APP_NAME">%1$s</xliff:g></b>"</string>
- <!-- no translation found for cast_to_other_device_stop_dialog_button (6420183747435521834) -->
- <skip />
- <!-- no translation found for close_dialog_button (4749497706540104133) -->
- <skip />
+ <string name="share_to_app_stop_dialog_title" msgid="9212915050910250438">"Misa ukwabelana ngeskrini?"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen_with_host_app" msgid="522823522115375414">"Njengamanje wabelana ngaso sonke isikrini sakho ne-<xliff:g id="HOST_APP_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_entire_screen" msgid="5090115386271179270">"Njengamanje wabelana ngaso sonke isikrini sakho ne-app"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_specific" msgid="5923772039347985172">"Njengamanje wabelana nge-<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string>
+ <string name="share_to_app_stop_dialog_message_single_app_generic" msgid="6681016774654578261">"Njengamanje wabelana nge-app"</string>
+ <string name="share_to_app_stop_dialog_button" msgid="6334056916284230217">"Misa ukwabelana"</string>
+ <string name="cast_screen_to_other_device_chip_accessibility_label" msgid="4687917476203009885">"Isikrini sokusakaza"</string>
+ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Misa ukusakaza?"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Njengamanje usakaza sonke isikrini sakho ku-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Njengamanje usakaza sonke isikrini sakho kudivayisi eseduzane"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Njengamanje usakaza i-<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> ku-<xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Njengamanje usakaza i-<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g> kudivayisi eseduzane"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Njengamanje usakaza ku-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Njengamanje usakaza kudivayisi eseduzane"</string>
+ <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"Misa ukusakaza"</string>
+ <string name="close_dialog_button" msgid="4749497706540104133">"Vala"</string>
<string name="issuerecord_title" msgid="286627115110121849">"Ushicilelo Lokurekhoda"</string>
<string name="issuerecord_background_processing_label" msgid="1666840264959336876">"Icubungula ushicilelo lokurekhoda"</string>
<string name="issuerecord_channel_description" msgid="6142326363431474632">"Isaziso esiqhubekayo seqoqo leseshini yoshicilelo"</string>
@@ -161,8 +157,7 @@
<string name="issuerecord_save_error" msgid="6913040083446722726">"Iphutha ekulondolozeni ushicilelo lokurekhoda"</string>
<string name="issuerecord_start_error" msgid="3402782952722871190">"Iphutha lokuqalisa ushicilelo lokurekhoda"</string>
<string name="immersive_cling_title" msgid="8372056499315585941">"Ukubuka isikrini esigcwele"</string>
- <!-- no translation found for immersive_cling_description (2717426731830851921) -->
- <skip />
+ <string name="immersive_cling_description" msgid="2717426731830851921">"Ukuze uphume, swayiphela phansi kusukela phezulu esikrinini sakho"</string>
<string name="immersive_cling_positive" msgid="3076681691468978568">"Ngiyezwa"</string>
<string name="accessibility_back" msgid="6530104400086152611">"Emuva"</string>
<string name="accessibility_home" msgid="5430449841237966217">"Ekhaya"</string>
@@ -295,6 +290,8 @@
<string name="start_dreams" msgid="9131802557946276718">"Isigciniskrini"</string>
<string name="ethernet_label" msgid="2203544727007463351">"I-Ethernet"</string>
<string name="quick_settings_dnd_label" msgid="7728690179108024338">"Ungaphazamisi"</string>
+ <!-- no translation found for quick_settings_modes_label (5407025818652750501) -->
+ <skip />
<string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"I-Bluetooth"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"Awekho amadivayisi abhanqiwe atholakalayo"</string>
<string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"Thepha ukuze uxhumae noma ungaxhumi idivaysi"</string>
@@ -306,8 +303,7 @@
<string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Ilondoloziwe"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"nqamula"</string>
<string name="accessibility_quick_settings_bluetooth_device_tap_to_activate" msgid="3724301751036877403">"yenza kusebenze"</string>
- <!-- no translation found for turn_on_bluetooth_auto_tomorrow (3345758139235739006) -->
- <skip />
+ <string name="turn_on_bluetooth_auto_tomorrow" msgid="3345758139235739006">"Vula ngokuzenzekelayo kusasa"</string>
<string name="turn_on_bluetooth_auto_info_disabled" msgid="682984290339848844">"Izakhi ezifana nokuthi Ukwabelana Ngokushesha kanye nokuthi Thola Idivayisi Yami zisebenzisa i-Bluetooth"</string>
<string name="turn_on_bluetooth_auto_info_enabled" msgid="7440944034584560279">"IBluetooth izovuleka kusasa ekuseni"</string>
<string name="quick_settings_bluetooth_audio_sharing_button" msgid="7545274861795853838">"Yabelana ngomsindo"</string>
@@ -495,12 +491,11 @@
<string name="accessibility_action_label_select_widget" msgid="8897281501387398191">"khetha iwijethi"</string>
<string name="accessibility_action_label_remove_widget" msgid="3373779447448758070">"susa iwijethi"</string>
<string name="accessibility_action_label_place_widget" msgid="1914197458644168978">"beka iwijethi ekhethiwe"</string>
- <!-- no translation found for communal_widgets_disclaimer_title (1150954395585308868) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_text (1423545475160506349) -->
- <skip />
- <!-- no translation found for communal_widgets_disclaimer_button (4423059765740780753) -->
- <skip />
+ <string name="communal_widget_picker_title" msgid="1953369090475731663">"Amawijethi wesikrini esikhiyiwe"</string>
+ <string name="communal_widget_picker_description" msgid="490515450110487871">"Noma ubani angabuka amawijethi ngisho noma ithebulethi ikhiyiwe."</string>
+ <string name="communal_widgets_disclaimer_title" msgid="1150954395585308868">"Amawijethi wesikrini esikhiyiwe"</string>
+ <string name="communal_widgets_disclaimer_text" msgid="1423545475160506349">"Ukuze uvule i-app usebenzisa iwijethi, uzodinga ukuqinisekisa ukuthi nguwe. Futhi, khumbula ukuthi noma ubani angakwazi ukuzibuka, nanoma ithebhulethi yakho ikhiyiwe. Amanye amawijethi kungenzeka abengahloselwe ukukhiya isikrini sakho futhi kungenzeka awaphephile ukuthi angafakwa lapha."</string>
+ <string name="communal_widgets_disclaimer_button" msgid="4423059765740780753">"Ngiyezwa"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Shintsha umsebenzisi"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"imenyu yokudonsela phansi"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Wonke ama-app nedatha kulesi sikhathi azosuswa."</string>
@@ -722,7 +717,8 @@
<string name="notification_alert_title" msgid="3656229781017543655">"Okuzenzekelayo"</string>
<string name="notification_automatic_title" msgid="3745465364578762652">"Okuzenzekelayo"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Awukho umsindo noma ukudlidliza"</string>
- <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Awukho umsindo noma ukudlidliza futhi ivela ngezansi esigabeni sengxoxo"</string>
+ <!-- no translation found for notification_conversation_summary_low (3855696451919728790) -->
+ <skip />
<string name="notification_channel_summary_default" msgid="777294388712200605">"Ingase ikhale noma idlidlize ngokusekelwe kumasethingi edivayisi"</string>
<string name="notification_channel_summary_default_with_bubbles" msgid="3482483084451555344">"Ingase ikhale noma idlidlize kuya ngamasethingi wedivayisi. Izingxoxo ezivela ku-<xliff:g id="APP_NAME">%1$s</xliff:g> ziba yibhamuza ngokuzenzakalela."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Vumela isistimu inqume uma lesi saziso kufanele senze umsindo noma sidlidlize"</string>
@@ -779,6 +775,7 @@
<string name="keyboard_key_page_up" msgid="173914303254199845">"Ikhasi phezulu"</string>
<string name="keyboard_key_page_down" msgid="9035902490071829731">"Ikhasi phansi"</string>
<string name="keyboard_key_forward_del" msgid="5325501825762733459">"Susa"</string>
+ <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string>
<string name="keyboard_key_move_home" msgid="3496502501803911971">"Ekhaya"</string>
<string name="keyboard_key_move_end" msgid="99190401463834854">"Phelisa"</string>
<string name="keyboard_key_insert" msgid="4621692715704410493">"Faka"</string>
@@ -1361,22 +1358,19 @@
<string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Hlukanisa isikrini"</string>
<string name="shortcut_helper_category_input" msgid="8674018654124839566">"Okokufaka"</string>
<string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Izinqamuleli Zohlelo lokusebenza"</string>
+ <!-- no translation found for shortcut_helper_category_current_app_shortcuts (4017840565974573628) -->
+ <skip />
<string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ukufinyeleleka"</string>
<string name="shortcut_helper_title" msgid="8567500639300970049">"Izinqamuleli zekhibhodi"</string>
<string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Sesha izinqamuleli"</string>
<string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Goqa isithonjana"</string>
<string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Nweba isithonjana"</string>
<string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"noma"</string>
- <!-- no translation found for touchpad_tutorial_back_gesture_button (2746834288077265946) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_home_gesture_button (7640544867625955304) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_action_key_button (3220074511852927267) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_done_button (176168488821755503) -->
- <skip />
- <!-- no translation found for touchpad_tutorial_gesture_done (4784438360736821255) -->
- <skip />
+ <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Ukunyakazisa umzimba kwangemuva"</string>
+ <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Ukunyakazisa umzimba kwasekhaya"</string>
+ <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Inkinobho yokufinyelela"</string>
+ <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kwenziwe"</string>
+ <string name="touchpad_tutorial_gesture_done" msgid="4784438360736821255">"Umsebenzi omuhle!"</string>
<string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Buyela emuva"</string>
<string name="touchpad_back_gesture_guidance" msgid="4222430588599527272">"Ukuze ubuyele emuva, swayiphela kwesokunxele noma kwesokudla usebenzisa iminwe emithathu noma yikuphi ephedini yokuthinta."</string>
<string name="touchpad_back_gesture_animation_content_description" msgid="2646107450922379918">"Iphedi yokuthinta ebonisa iminwe emithathu iya kwesokudla nakwesokunxele"</string>
@@ -1385,4 +1379,6 @@
<string name="keyboard_backlight_value" msgid="7336398765584393538">"Ileveli %1$d ka-%2$d"</string>
<string name="home_controls_dream_label" msgid="6567105701292324257">"Izilawuli Zasekhaya"</string>
<string name="home_controls_dream_description" msgid="4644150952104035789">"Finyelela ngokushesha izilawuli zakho zasekhaya njengesigcini-skrini"</string>
+ <!-- no translation found for volume_undo_action (5815519725211877114) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zu/tiles_states_strings.xml b/packages/SystemUI/res/values-zu/tiles_states_strings.xml
index a795ee8..8d6b843 100644
--- a/packages/SystemUI/res/values-zu/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values-zu/tiles_states_strings.xml
@@ -56,6 +56,9 @@
<item msgid="5376619709702103243">"Valiwe"</item>
<item msgid="4875147066469902392">"Vuliwe"</item>
</string-array>
+ <!-- no translation found for tile_states_modes:0 (7764936419245199023) -->
+ <!-- no translation found for tile_states_modes:1 (2004750556637773692) -->
+ <!-- no translation found for tile_states_modes:2 (8968530753931637871) -->
<string-array name="tile_states_flashlight">
<item msgid="3465257127433353857">"Akutholakali"</item>
<item msgid="5044688398303285224">"Valiwe"</item>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java
index c225cbc..f289988 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java
@@ -128,19 +128,20 @@
mTmpDestinationRect.inset(insets);
// Scale by the shortest edge and offset such that the top/left of the scaled inset
// source rect aligns with the top/left of the destination bounds
- final float scale = sourceBounds.width() <= sourceBounds.height()
- ? (float) destinationBounds.width() / sourceBounds.width()
- : (float) destinationBounds.height() / sourceBounds.height();
+ final float scale = Math.max((float) destinationBounds.width() / sourceBounds.width(),
+ (float) destinationBounds.height() / sourceBounds.height());
mTmpTransform.setRotate(degree, 0, 0);
mTmpTransform.postScale(scale, scale);
final float cornerRadius = getScaledCornerRadius(mTmpDestinationRect, destinationBounds);
// adjust the positions, take account also the insets
final float adjustedPositionX, adjustedPositionY;
if (degree < 0) {
- adjustedPositionX = positionX + insets.top * scale;
+ // Counter-clockwise rotation.
+ adjustedPositionX = positionX - insets.top * scale;
adjustedPositionY = positionY + insets.left * scale;
} else {
- adjustedPositionX = positionX - insets.top * scale;
+ // Clockwise rotation.
+ adjustedPositionX = positionX + insets.top * scale;
adjustedPositionY = positionY - insets.left * scale;
}
tx.setMatrix(leash, mTmpTransform, mTmpFloat9)
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java
index 10d1891..0f61233 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java
@@ -34,6 +34,7 @@
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.keyguard.domain.interactor.KeyguardKeyboardInteractor;
+import com.android.systemui.Flags;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.res.R;
@@ -130,7 +131,10 @@
verifyPasswordAndUnlock();
}
});
- okButton.setOnHoverListener(mLiftToActivateListener);
+
+ if (!Flags.simPinTalkbackFixForDoubleSubmit()) {
+ okButton.setOnHoverListener(mLiftToActivateListener);
+ }
}
if (pinInputFieldStyledFocusState()) {
collectFlow(mPasswordEntry, mKeyguardKeyboardInteractor.isAnyKeyboardConnected(),
diff --git a/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java b/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java
index fcd7ef5..f1fb45c 100644
--- a/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/ambient/touch/ShadeTouchHandler.java
@@ -26,7 +26,7 @@
import androidx.annotation.NonNull;
-import com.android.systemui.Flags;
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor;
import com.android.systemui.shade.ShadeViewController;
import com.android.systemui.statusbar.phone.CentralSurfaces;
@@ -44,6 +44,8 @@
private final ShadeViewController mShadeViewController;
private final DreamManager mDreamManager;
private final int mInitiationHeight;
+ private final CommunalSettingsInteractor
+ mCommunalSettingsInteractor;
/**
* Tracks whether or not we are capturing a given touch. Will be null before and after a touch.
@@ -54,10 +56,12 @@
ShadeTouchHandler(Optional<CentralSurfaces> centralSurfaces,
ShadeViewController shadeViewController,
DreamManager dreamManager,
+ CommunalSettingsInteractor communalSettingsInteractor,
@Named(NOTIFICATION_SHADE_GESTURE_INITIATION_HEIGHT) int initiationHeight) {
mSurfaces = centralSurfaces;
mShadeViewController = shadeViewController;
mDreamManager = dreamManager;
+ mCommunalSettingsInteractor = communalSettingsInteractor;
mInitiationHeight = initiationHeight;
}
@@ -107,7 +111,7 @@
}
private void sendTouchEvent(MotionEvent event) {
- if (Flags.communalHub() && !mDreamManager.isDreaming()) {
+ if (mCommunalSettingsInteractor.isCommunalFlagEnabled() && !mDreamManager.isDreaming()) {
// Send touches to central surfaces only when on the glanceable hub while not dreaming.
// While sending touches where while dreaming will open the shade, the shade
// while closing if opened then closed in the same gesture.
diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java b/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java
index 56273eb..6e25744 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java
@@ -33,6 +33,7 @@
import android.view.animation.PathInterpolator;
import android.widget.FrameLayout;
+import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.systemui.assist.AssistLogger;
@@ -66,7 +67,7 @@
protected InvocationLightsView mInvocationLightsView;
protected final AssistLogger mAssistLogger;
- private final WindowManager mWindowManager;
+ private final ViewCaptureAwareWindowManager mWindowManager;
private final MetricsLogger mMetricsLogger;
private final Lazy<AssistManager> mAssistManagerLazy;
private final WindowManager.LayoutParams mLayoutParams;
@@ -80,12 +81,12 @@
@Inject
public DefaultUiController(Context context, AssistLogger assistLogger,
- WindowManager windowManager, MetricsLogger metricsLogger,
- Lazy<AssistManager> assistManagerLazy,
+ ViewCaptureAwareWindowManager viewCaptureAwareWindowManager,
+ MetricsLogger metricsLogger, Lazy<AssistManager> assistManagerLazy,
NavigationBarController navigationBarController) {
mAssistLogger = assistLogger;
mRoot = new FrameLayout(context);
- mWindowManager = windowManager;
+ mWindowManager = viewCaptureAwareWindowManager;
mMetricsLogger = metricsLogger;
mAssistManagerLazy = assistManagerLazy;
diff --git a/packages/SystemUI/src/com/android/systemui/authentication/data/repository/AuthenticationRepository.kt b/packages/SystemUI/src/com/android/systemui/authentication/data/repository/AuthenticationRepository.kt
index a9f985f..468737d 100644
--- a/packages/SystemUI/src/com/android/systemui/authentication/data/repository/AuthenticationRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/authentication/data/repository/AuthenticationRepository.kt
@@ -288,6 +288,7 @@
override suspend fun reportAuthenticationAttempt(isSuccessful: Boolean) {
withContext(backgroundDispatcher) {
if (isSuccessful) {
+ lockPatternUtils.userPresent(selectedUserId)
lockPatternUtils.reportSuccessfulPasswordAttempt(selectedUserId)
_hasLockoutOccurred.value = false
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt
index d2c6227..c95a94e 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthRippleController.kt
@@ -61,14 +61,16 @@
/**
* Controls two ripple effects:
- * 1. Unlocked ripple: shows when authentication is successful
- * 2. UDFPS dwell ripple: shows when the user has their finger down on the UDFPS area and reacts
- * to errors and successes
+ * 1. Unlocked ripple: shows when authentication is successful
+ * 2. UDFPS dwell ripple: shows when the user has their finger down on the UDFPS area and reacts to
+ * errors and successes
*
* The ripple uses the accent color of the current theme.
*/
@SysUISingleton
-class AuthRippleController @Inject constructor(
+class AuthRippleController
+@Inject
+constructor(
private val sysuiContext: Context,
private val authController: AuthController,
private val configurationController: ConfigurationController,
@@ -92,8 +94,7 @@
KeyguardStateController.Callback,
WakefulnessLifecycle.Observer {
- @VisibleForTesting
- internal var startLightRevealScrimOnKeyguardFadingAway = false
+ @VisibleForTesting internal var startLightRevealScrimOnKeyguardFadingAway = false
var lightRevealScrimAnimator: ValueAnimator? = null
var fingerprintSensorLocation: Point? = null
private var faceSensorLocation: Point? = null
@@ -141,15 +142,17 @@
private val biometricModeListener =
object : BiometricUnlockController.BiometricUnlockEventsListener {
override fun onBiometricUnlockedWithKeyguardDismissal(
- biometricSourceType: BiometricSourceType?
+ biometricSourceType: BiometricSourceType?
) {
DeviceEntryUdfpsRefactor.assertInLegacyMode()
if (biometricSourceType != null) {
showUnlockRippleInternal(biometricSourceType)
} else {
- logger.log(TAG,
- LogLevel.ERROR,
- "Unexpected scenario where biometricSourceType is null")
+ logger.log(
+ TAG,
+ LogLevel.ERROR,
+ "Unexpected scenario where biometricSourceType is null"
+ )
}
}
}
@@ -168,16 +171,16 @@
notificationShadeWindowController.setForcePluginOpen(false, this)
}
- @Deprecated("Update authRippleInteractor.showUnlockRipple instead of calling this.")
- fun showUnlockRipple(biometricSourceType: BiometricSourceType) {
- DeviceEntryUdfpsRefactor.assertInLegacyMode()
- showUnlockRippleInternal(biometricSourceType)
- }
+ @Deprecated("Update authRippleInteractor.showUnlockRipple instead of calling this.")
+ fun showUnlockRipple(biometricSourceType: BiometricSourceType) {
+ DeviceEntryUdfpsRefactor.assertInLegacyMode()
+ showUnlockRippleInternal(biometricSourceType)
+ }
private fun showUnlockRippleInternal(biometricSourceType: BiometricSourceType) {
val keyguardNotShowing = !keyguardStateController.isShowing
- val unlockNotAllowed = !keyguardUpdateMonitor
- .isUnlockingWithBiometricAllowed(biometricSourceType)
+ val unlockNotAllowed =
+ !keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(biometricSourceType)
if (keyguardNotShowing || unlockNotAllowed) {
logger.notShowingUnlockRipple(keyguardNotShowing, unlockNotAllowed)
return
@@ -187,30 +190,32 @@
if (biometricSourceType == BiometricSourceType.FINGERPRINT) {
fingerprintSensorLocation?.let {
mView.setFingerprintSensorLocation(it, udfpsRadius)
- circleReveal = CircleReveal(
+ circleReveal =
+ CircleReveal(
it.x,
it.y,
0,
Math.max(
- Math.max(it.x, displayMetrics.widthPixels - it.x),
- Math.max(it.y, displayMetrics.heightPixels - it.y)
+ Math.max(it.x, displayMetrics.widthPixels - it.x),
+ Math.max(it.y, displayMetrics.heightPixels - it.y)
)
- )
+ )
logger.showingUnlockRippleAt(it.x, it.y, "FP sensor radius: $udfpsRadius")
showUnlockedRipple()
}
} else if (biometricSourceType == BiometricSourceType.FACE) {
faceSensorLocation?.let {
mView.setSensorLocation(it)
- circleReveal = CircleReveal(
+ circleReveal =
+ CircleReveal(
it.x,
it.y,
0,
Math.max(
- Math.max(it.x, displayMetrics.widthPixels - it.x),
- Math.max(it.y, displayMetrics.heightPixels - it.y)
+ Math.max(it.x, displayMetrics.widthPixels - it.x),
+ Math.max(it.y, displayMetrics.heightPixels - it.y)
)
- )
+ )
logger.showingUnlockRippleAt(it.x, it.y, "Face unlock ripple")
showUnlockedRipple()
}
@@ -234,9 +239,7 @@
mView.startUnlockedRipple(
/* end runnable */
- Runnable {
- notificationShadeWindowController.setForcePluginOpen(false, this)
- }
+ Runnable { notificationShadeWindowController.setForcePluginOpen(false, this) }
)
}
@@ -248,32 +251,36 @@
if (keyguardStateController.isKeyguardFadingAway) {
if (startLightRevealScrimOnKeyguardFadingAway) {
lightRevealScrimAnimator?.cancel()
- lightRevealScrimAnimator = ValueAnimator.ofFloat(.1f, 1f).apply {
- interpolator = Interpolators.LINEAR_OUT_SLOW_IN
- duration = RIPPLE_ANIMATION_DURATION
- startDelay = keyguardStateController.keyguardFadingAwayDelay
- addUpdateListener { animator ->
- if (lightRevealScrim.revealEffect != circleReveal) {
- // if something else took over the reveal, let's cancel ourselves
- cancel()
- return@addUpdateListener
- }
- lightRevealScrim.revealAmount = animator.animatedValue as Float
- }
- addListener(object : AnimatorListenerAdapter() {
- override fun onAnimationEnd(animation: Animator) {
- // Reset light reveal scrim to the default, so the CentralSurfaces
- // can handle any subsequent light reveal changes
- // (ie: from dozing changes)
- if (lightRevealScrim.revealEffect == circleReveal) {
- lightRevealScrim.revealEffect = LiftReveal
+ lightRevealScrimAnimator =
+ ValueAnimator.ofFloat(.1f, 1f).apply {
+ interpolator = Interpolators.LINEAR_OUT_SLOW_IN
+ duration = RIPPLE_ANIMATION_DURATION
+ startDelay = keyguardStateController.keyguardFadingAwayDelay
+ addUpdateListener { animator ->
+ if (lightRevealScrim.revealEffect != circleReveal) {
+ // if something else took over the reveal, let's cancel ourselves
+ cancel()
+ return@addUpdateListener
}
-
- lightRevealScrimAnimator = null
+ lightRevealScrim.revealAmount = animator.animatedValue as Float
}
- })
- start()
- }
+ addListener(
+ object : AnimatorListenerAdapter() {
+ override fun onAnimationEnd(animation: Animator) {
+ // Reset light reveal scrim to the default, so the
+ // CentralSurfaces
+ // can handle any subsequent light reveal changes
+ // (ie: from dozing changes)
+ if (lightRevealScrim.revealEffect == circleReveal) {
+ lightRevealScrim.revealEffect = LiftReveal
+ }
+
+ lightRevealScrimAnimator = null
+ }
+ }
+ )
+ start()
+ }
startLightRevealScrimOnKeyguardFadingAway = false
}
}
@@ -297,8 +304,9 @@
}
private fun updateRippleColor() {
- mView.setLockScreenColor(Utils.getColorAttrDefaultColor(sysuiContext,
- R.attr.wallpaperTextColorAccent))
+ mView.setLockScreenColor(
+ Utils.getColorAttrDefaultColor(sysuiContext, R.attr.wallpaperTextColorAccent)
+ )
}
private fun showDwellRipple() {
@@ -321,40 +329,43 @@
}
}
- override fun onBiometricAuthFailed(biometricSourceType: BiometricSourceType) {
- if (biometricSourceType == BiometricSourceType.FINGERPRINT) {
- mView.retractDwellRipple()
+ override fun onBiometricAuthFailed(biometricSourceType: BiometricSourceType) {
+ if (biometricSourceType == BiometricSourceType.FINGERPRINT) {
+ mView.retractDwellRipple()
+ }
}
- }
- override fun onBiometricAcquired(
- biometricSourceType: BiometricSourceType,
- acquireInfo: Int
- ) {
- if (biometricSourceType == BiometricSourceType.FINGERPRINT &&
- BiometricFingerprintConstants.shouldDisableUdfpsDisplayMode(acquireInfo) &&
- acquireInfo != BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_GOOD) {
- // received an 'acquiredBad' message, so immediately retract
- mView.retractDwellRipple()
+ override fun onBiometricAcquired(
+ biometricSourceType: BiometricSourceType,
+ acquireInfo: Int
+ ) {
+ if (
+ biometricSourceType == BiometricSourceType.FINGERPRINT &&
+ BiometricFingerprintConstants.shouldDisableUdfpsDisplayMode(acquireInfo) &&
+ acquireInfo != BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_GOOD
+ ) {
+ // received an 'acquiredBad' message, so immediately retract
+ mView.retractDwellRipple()
+ }
}
- }
- override fun onKeyguardBouncerStateChanged(bouncerIsOrWillBeShowing: Boolean) {
- if (bouncerIsOrWillBeShowing) {
- mView.fadeDwellRipple()
+ override fun onKeyguardBouncerStateChanged(bouncerIsOrWillBeShowing: Boolean) {
+ if (bouncerIsOrWillBeShowing) {
+ mView.fadeDwellRipple()
+ }
}
}
- }
private val configurationChangedListener =
object : ConfigurationController.ConfigurationListener {
override fun onUiModeChanged() {
updateRippleColor()
}
+
override fun onThemeChanged() {
updateRippleColor()
}
- }
+ }
private val udfpsControllerCallback =
object : UdfpsController.Callback {
@@ -402,9 +413,11 @@
when (args[0]) {
"dwell" -> {
showDwellRipple()
- pw.println("lock screen dwell ripple: " +
+ pw.println(
+ "lock screen dwell ripple: " +
"\n\tsensorLocation=$fingerprintSensorLocation" +
- "\n\tudfpsRadius=$udfpsRadius")
+ "\n\tudfpsRadius=$udfpsRadius"
+ )
}
"fingerprint" -> {
pw.println("fingerprint ripple sensorLocation=$fingerprintSensorLocation")
@@ -416,9 +429,11 @@
showUnlockRippleInternal(BiometricSourceType.FACE)
}
"custom" -> {
- if (args.size != 3 ||
- args[1].toFloatOrNull() == null ||
- args[2].toFloatOrNull() == null) {
+ if (
+ args.size != 3 ||
+ args[1].toFloatOrNull() == null ||
+ args[2].toFloatOrNull() == null
+ ) {
invalidCommand(pw)
return
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDebouncer.kt b/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDebouncer.kt
new file mode 100644
index 0000000..1685f49
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDebouncer.kt
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.biometrics
+
+import android.util.Log
+import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
+
+/**
+ * Debounces face help messages with parameters:
+ * - window: Window of time (in milliseconds) to analyze face acquired messages)
+ * - startWindow: Window of time on start required before showing the first help message
+ * - shownFaceMessageFrequencyBoost: Frequency boost given to messages that are currently shown to
+ * the user
+ */
+class FaceHelpMessageDebouncer(
+ private val window: Long = DEFAULT_WINDOW_MS,
+ private val startWindow: Long = window,
+ private val shownFaceMessageFrequencyBoost: Int = 4,
+) {
+ private val TAG = "FaceHelpMessageDebouncer"
+ private var startTime = 0L
+ private var helpFaceAuthStatuses: MutableList<HelpFaceAuthenticationStatus> = mutableListOf()
+ private var lastMessageIdShown: Int? = null
+
+ /** Remove messages that are outside of the time [window]. */
+ private fun removeOldMessages(currTimestamp: Long) {
+ var numToRemove = 0
+ // This works under the assumption that timestamps are ordered from first to last
+ // in chronological order
+ for (index in helpFaceAuthStatuses.indices) {
+ if ((helpFaceAuthStatuses[index].createdAt + window) >= currTimestamp) {
+ break // all timestamps from here and on are within the window
+ }
+ numToRemove += 1
+ }
+
+ // Remove all outside time window
+ repeat(numToRemove) { helpFaceAuthStatuses.removeFirst() }
+
+ if (numToRemove > 0) {
+ Log.v(TAG, "removedFirst=$numToRemove")
+ }
+ }
+
+ private fun getMostFrequentHelpMessage(): HelpFaceAuthenticationStatus? {
+ // freqMap: msgId => frequency
+ val freqMap = helpFaceAuthStatuses.groupingBy { it.msgId }.eachCount().toMutableMap()
+
+ // Give shownFaceMessageFrequencyBoost to lastMessageIdShown
+ if (lastMessageIdShown != null) {
+ freqMap.computeIfPresent(lastMessageIdShown!!) { _, value ->
+ value + shownFaceMessageFrequencyBoost
+ }
+ }
+ // Go through all msgId keys & find the highest frequency msgId
+ val msgIdWithHighestFrequency =
+ freqMap.entries
+ .maxWithOrNull { (msgId1, freq1), (msgId2, freq2) ->
+ // ties are broken by more recent message
+ if (freq1 == freq2) {
+ helpFaceAuthStatuses
+ .findLast { it.msgId == msgId1 }!!
+ .createdAt
+ .compareTo(
+ helpFaceAuthStatuses.findLast { it.msgId == msgId2 }!!.createdAt
+ )
+ } else {
+ freq1.compareTo(freq2)
+ }
+ }
+ ?.key
+ return helpFaceAuthStatuses.findLast { it.msgId == msgIdWithHighestFrequency }
+ }
+
+ fun addMessage(helpFaceAuthStatus: HelpFaceAuthenticationStatus) {
+ helpFaceAuthStatuses.add(helpFaceAuthStatus)
+ Log.v(TAG, "added message=$helpFaceAuthStatus")
+ }
+
+ fun getMessageToShow(atTimestamp: Long): HelpFaceAuthenticationStatus? {
+ if (helpFaceAuthStatuses.isEmpty() || (atTimestamp - startTime) < startWindow) {
+ // there's not enough time that has passed to determine whether to show anything yet
+ Log.v(TAG, "No message; haven't made initial threshold window OR no messages")
+ return null
+ }
+ removeOldMessages(atTimestamp)
+ val messageToShow = getMostFrequentHelpMessage()
+ if (lastMessageIdShown != messageToShow?.msgId) {
+ Log.v(
+ TAG,
+ "showMessage previousLastMessageId=$lastMessageIdShown" +
+ "\n\tmessageToShow=$messageToShow " +
+ "\n\thelpFaceAuthStatusesSize=${helpFaceAuthStatuses.size}" +
+ "\n\thelpFaceAuthStatuses=$helpFaceAuthStatuses"
+ )
+ lastMessageIdShown = messageToShow?.msgId
+ }
+ return messageToShow
+ }
+
+ fun startNewFaceAuthSession(faceAuthStartedTime: Long) {
+ Log.d(TAG, "startNewFaceAuthSession at startTime=$startTime")
+ startTime = faceAuthStartedTime
+ helpFaceAuthStatuses.clear()
+ lastMessageIdShown = null
+ }
+
+ companion object {
+ const val DEFAULT_WINDOW_MS = 200L
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
index c868d01..430887d 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
@@ -94,8 +94,16 @@
val textColorError =
view.resources.getColor(R.color.biometric_dialog_error, view.context.theme)
+
+ val attributes =
+ view.context.obtainStyledAttributes(
+ R.style.TextAppearance_AuthCredential_Indicator,
+ intArrayOf(android.R.attr.textColor)
+ )
val textColorHint =
- view.resources.getColor(R.color.biometric_dialog_gray, view.context.theme)
+ if (constraintBp()) attributes.getColor(0, 0)
+ else view.resources.getColor(R.color.biometric_dialog_gray, view.context.theme)
+ attributes.recycle()
val logoView = view.requireViewById<ImageView>(R.id.logo)
val logoDescriptionView = view.requireViewById<TextView>(R.id.logo_description)
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt
index 3c5e571..c28bce2 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt
@@ -134,7 +134,7 @@
// TODO(b/243695312): Encapsulate all of the show logic for the bouncer.
/** Show the bouncer if necessary and set the relevant states. */
@JvmOverloads
- fun show(isScrimmed: Boolean) {
+ fun show(isScrimmed: Boolean): Boolean {
// When the scene container framework is enabled, instead of calling this, call
// SceneInteractor#changeScene(Scenes.Bouncer, ...).
SceneContainerFlag.assertInLegacyMode()
@@ -146,44 +146,48 @@
"primaryBouncerDelegate is set. Let's exit early so we don't " +
"set the wrong primaryBouncer state."
)
- return
+ return false
}
- // Reset some states as we show the bouncer.
- repository.setKeyguardAuthenticatedBiometrics(null)
- repository.setPrimaryStartingToHide(false)
+ try {
+ Trace.beginSection("KeyguardBouncer#show")
+ // Reset some states as we show the bouncer.
+ repository.setKeyguardAuthenticatedBiometrics(null)
+ repository.setPrimaryStartingToHide(false)
- val resumeBouncer =
- (isBouncerShowing() || repository.primaryBouncerShowingSoon.value) &&
- needsFullscreenBouncer()
+ val resumeBouncer =
+ (isBouncerShowing() || repository.primaryBouncerShowingSoon.value) &&
+ needsFullscreenBouncer()
- Trace.beginSection("KeyguardBouncer#show")
- repository.setPrimaryScrimmed(isScrimmed)
- if (isScrimmed) {
- setPanelExpansion(KeyguardBouncerConstants.EXPANSION_VISIBLE)
+ repository.setPrimaryScrimmed(isScrimmed)
+ if (isScrimmed) {
+ setPanelExpansion(KeyguardBouncerConstants.EXPANSION_VISIBLE)
+ }
+
+ // In this special case, we want to hide the bouncer and show it again. We want to emit
+ // show(true) again so that we can reinflate the new view.
+ if (resumeBouncer) {
+ repository.setPrimaryShow(false)
+ }
+
+ if (primaryBouncerView.delegate?.showNextSecurityScreenOrFinish() == true) {
+ // Keyguard is done.
+ return false
+ }
+
+ repository.setPrimaryShowingSoon(true)
+ if (usePrimaryBouncerPassiveAuthDelay()) {
+ Log.d(TAG, "delay bouncer, passive auth may succeed")
+ mainHandler.postDelayed(showRunnable, passiveAuthBouncerDelay)
+ } else {
+ DejankUtils.postAfterTraversal(showRunnable)
+ }
+ keyguardStateController.notifyPrimaryBouncerShowing(true)
+ primaryBouncerCallbackInteractor.dispatchStartingToShow()
+ return true
+ } finally {
+ Trace.endSection()
}
-
- // In this special case, we want to hide the bouncer and show it again. We want to emit
- // show(true) again so that we can reinflate the new view.
- if (resumeBouncer) {
- repository.setPrimaryShow(false)
- }
-
- if (primaryBouncerView.delegate?.showNextSecurityScreenOrFinish() == true) {
- // Keyguard is done.
- return
- }
-
- repository.setPrimaryShowingSoon(true)
- if (usePrimaryBouncerPassiveAuthDelay()) {
- Log.d(TAG, "delay bouncer, passive auth may succeed")
- mainHandler.postDelayed(showRunnable, passiveAuthBouncerDelay)
- } else {
- DejankUtils.postAfterTraversal(showRunnable)
- }
- keyguardStateController.notifyPrimaryBouncerShowing(true)
- primaryBouncerCallbackInteractor.dispatchStartingToShow()
- Trace.endSection()
}
/** Sets the correct bouncer states to hide the bouncer. */
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModel.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModel.kt
index 6cb9b16..810b6d1 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModel.kt
@@ -32,7 +32,7 @@
import com.android.systemui.deviceentry.domain.interactor.BiometricMessageInteractor
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFingerprintAuthInteractor
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
+import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason
import com.android.systemui.deviceentry.shared.model.FaceFailureMessage
import com.android.systemui.deviceentry.shared.model.FaceLockoutMessage
@@ -75,7 +75,7 @@
private val clock: SystemClock,
private val biometricMessageInteractor: BiometricMessageInteractor,
private val faceAuthInteractor: DeviceEntryFaceAuthInteractor,
- private val deviceEntryInteractor: DeviceEntryInteractor,
+ private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
private val fingerprintInteractor: DeviceEntryFingerprintAuthInteractor,
flags: ComposeBouncerFlags,
) {
@@ -119,7 +119,7 @@
}
} else if (authMethod.isSecure) {
combine(
- deviceEntryInteractor.deviceEntryRestrictionReason,
+ deviceUnlockedInteractor.deviceEntryRestrictionReason,
lockoutMessage,
fingerprintInteractor.isFingerprintCurrentlyAllowedOnBouncer,
resetToDefault,
@@ -413,7 +413,7 @@
clock: SystemClock,
biometricMessageInteractor: BiometricMessageInteractor,
faceAuthInteractor: DeviceEntryFaceAuthInteractor,
- deviceEntryInteractor: DeviceEntryInteractor,
+ deviceUnlockedInteractor: DeviceUnlockedInteractor,
fingerprintInteractor: DeviceEntryFingerprintAuthInteractor,
flags: ComposeBouncerFlags,
userSwitcherViewModel: UserSwitcherViewModel,
@@ -427,7 +427,7 @@
clock = clock,
biometricMessageInteractor = biometricMessageInteractor,
faceAuthInteractor = faceAuthInteractor,
- deviceEntryInteractor = deviceEntryInteractor,
+ deviceUnlockedInteractor = deviceUnlockedInteractor,
fingerprintInteractor = fingerprintInteractor,
flags = flags,
selectedUser = userSwitcherViewModel.selectedUser,
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/DraggableConstraintLayout.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java
similarity index 100%
rename from packages/SystemUI/src/com/android/systemui/screenshot/DraggableConstraintLayout.java
rename to packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java
diff --git a/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt b/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt
index 38f51da..0582cc2 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/CommunalDreamStartable.kt
@@ -19,9 +19,9 @@
import android.annotation.SuppressLint
import android.app.DreamManager
import com.android.systemui.CoreStartable
-import com.android.systemui.Flags.communalHub
import com.android.systemui.Flags.glanceableHubAllowKeyguardWhenDreaming
import com.android.systemui.Flags.restartDreamOnUnocclude
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
@@ -48,6 +48,7 @@
@Inject
constructor(
private val powerInteractor: PowerInteractor,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
private val keyguardInteractor: KeyguardInteractor,
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
private val dreamManager: DreamManager,
@@ -55,7 +56,7 @@
) : CoreStartable {
@SuppressLint("MissingPermission")
override fun start() {
- if (!communalHub()) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/CommunalOngoingContentStartable.kt b/packages/SystemUI/src/com/android/systemui/communal/CommunalOngoingContentStartable.kt
index 78016c6..b1b02ce 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/CommunalOngoingContentStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/CommunalOngoingContentStartable.kt
@@ -20,10 +20,9 @@
import com.android.systemui.communal.data.repository.CommunalMediaRepository
import com.android.systemui.communal.data.repository.CommunalSmartspaceRepository
import com.android.systemui.communal.domain.interactor.CommunalInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
-import com.android.systemui.flags.FeatureFlagsClassic
-import com.android.systemui.flags.Flags
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
@@ -35,15 +34,12 @@
@Background val bgScope: CoroutineScope,
private val communalInteractor: CommunalInteractor,
private val communalMediaRepository: CommunalMediaRepository,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
private val communalSmartspaceRepository: CommunalSmartspaceRepository,
- private val featureFlags: FeatureFlagsClassic,
) : CoreStartable {
override fun start() {
- if (
- !featureFlags.isEnabled(Flags.COMMUNAL_SERVICE_ENABLED) ||
- !com.android.systemui.Flags.communalHub()
- ) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/CommunalSceneStartable.kt b/packages/SystemUI/src/com/android/systemui/communal/CommunalSceneStartable.kt
index 6b58c07..e9b2385 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/CommunalSceneStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/CommunalSceneStartable.kt
@@ -20,9 +20,9 @@
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.TransitionKey
import com.android.systemui.CoreStartable
-import com.android.systemui.Flags.communalHub
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalTransitionKeys
import com.android.systemui.dagger.SysUISingleton
@@ -31,7 +31,6 @@
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dock.DockManager
import com.android.systemui.flags.FeatureFlagsClassic
-import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -72,6 +71,7 @@
constructor(
private val dockManager: DockManager,
private val communalInteractor: CommunalInteractor,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
private val communalSceneInteractor: CommunalSceneInteractor,
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
private val keyguardInteractor: KeyguardInteractor,
@@ -91,12 +91,8 @@
private val centralSurfaces: CentralSurfaces? by centralSurfacesOpt
- private val flagEnabled: Boolean by lazy {
- featureFlagsClassic.isEnabled(Flags.COMMUNAL_SERVICE_ENABLED) && communalHub()
- }
-
override fun start() {
- if (!flagEnabled) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt
index 748c4fa..7b54815 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalSettingsRepository.kt
@@ -52,6 +52,14 @@
/** A [CommunalEnabledState] for the specified user. */
fun getEnabledState(user: UserInfo): Flow<CommunalEnabledState>
+ /**
+ * Returns true if both the communal trunk-stable flag and resource flag are enabled.
+ *
+ * The trunk-stable flag is controlled by server rollout and is on all devices. The resource
+ * flag is enabled via resource overlay only on products we want the hub to be present on.
+ */
+ fun getFlagEnabled(): Boolean
+
/** Keyguard widgets enabled state by Device Policy Manager for the specified user. */
fun getAllowedByDevicePolicy(user: UserInfo): Flow<Boolean>
@@ -70,15 +78,15 @@
private val devicePolicyManager: DevicePolicyManager,
) : CommunalSettingsRepository {
- private val flagEnabled: Boolean by lazy {
- featureFlagsClassic.isEnabled(Flags.COMMUNAL_SERVICE_ENABLED) && communalHub()
+ override fun getFlagEnabled(): Boolean {
+ return featureFlagsClassic.isEnabled(Flags.COMMUNAL_SERVICE_ENABLED) && communalHub()
}
override fun getEnabledState(user: UserInfo): Flow<CommunalEnabledState> {
if (!user.isMain) {
return flowOf(CommunalEnabledState(DISABLED_REASON_INVALID_USER))
}
- if (!flagEnabled) {
+ if (!getFlagEnabled()) {
return flowOf(CommunalEnabledState(DISABLED_REASON_FLAG))
}
return combine(
diff --git a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSettingsInteractor.kt b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSettingsInteractor.kt
index 3b01aec..0cdbad4 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSettingsInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalSettingsInteractor.kt
@@ -69,6 +69,18 @@
// Start this eagerly since the value is accessed synchronously in many places.
.stateIn(scope = bgScope, started = SharingStarted.Eagerly, initialValue = false)
+ /**
+ * Returns true if both the communal trunk-stable flag and resource flag are enabled.
+ *
+ * The trunk-stable flag is controlled by server rollout and is on all devices. The resource
+ * flag is enabled via resource overlay only on products we want the hub to be present on.
+ *
+ * If this is false, then the hub is definitely not available on the device. If this is true,
+ * refer to [isCommunalEnabled] which takes into account other factors that can change at
+ * runtime.
+ */
+ fun isCommunalFlagEnabled(): Boolean = repository.getFlagEnabled()
+
/** The type of background to use for the hub. Used to experiment with different backgrounds */
val communalBackground: Flow<CommunalBackgroundType> =
userInteractor.selectedUserInfo
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
index 02ecfe1..1e087f7 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalViewModel.kt
@@ -17,6 +17,7 @@
package com.android.systemui.communal.ui.viewmodel
import android.content.res.Resources
+import android.os.Bundle
import android.view.View
import android.view.accessibility.AccessibilityNodeInfo
import com.android.systemui.communal.domain.interactor.CommunalInteractor
@@ -209,6 +210,20 @@
)
)
}
+
+ override fun performAccessibilityAction(
+ host: View,
+ action: Int,
+ args: Bundle?
+ ): Boolean {
+ when (action) {
+ AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id -> {
+ onOpenWidgetEditor()
+ return true
+ }
+ }
+ return super.performAccessibilityAction(host, action, args)
+ }
}
private val _isEnableWidgetDialogShowing: MutableStateFlow<Boolean> = MutableStateFlow(false)
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
index fa52dad..9460eaf 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
@@ -57,16 +57,13 @@
import com.android.systemui.log.SessionTracker
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.power.domain.interactor.PowerInteractor
-import com.android.systemui.res.R
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.UserRepository
import com.google.errorprone.annotations.CompileTimeConstant
import java.io.PrintWriter
-import java.util.Arrays
import java.util.concurrent.Executor
-import java.util.stream.Collectors
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
@@ -170,7 +167,6 @@
) : DeviceEntryFaceAuthRepository, Dumpable {
private var authCancellationSignal: CancellationSignal? = null
private var detectCancellationSignal: CancellationSignal? = null
- private var faceAcquiredInfoIgnoreList: Set<Int>
private var retryCount = 0
private var pendingAuthenticateRequest = MutableStateFlow<AuthenticationRequest?>(null)
@@ -240,14 +236,6 @@
faceManager?.addLockoutResetCallback(faceLockoutResetCallback)
faceAuthLogger.addLockoutResetCallbackDone()
}
- faceAcquiredInfoIgnoreList =
- Arrays.stream(
- context.resources.getIntArray(
- R.array.config_face_acquire_device_entry_ignorelist
- )
- )
- .boxed()
- .collect(Collectors.toSet())
dumpManager.registerCriticalDumpable("DeviceEntryFaceAuthRepositoryImpl", this)
canRunFaceAuth =
@@ -485,10 +473,8 @@
}
override fun onAuthenticationHelp(code: Int, helpStr: CharSequence?) {
- if (faceAcquiredInfoIgnoreList.contains(code)) {
- return
- }
- _authenticationStatus.value = HelpFaceAuthenticationStatus(code, helpStr.toString())
+ _authenticationStatus.value =
+ HelpFaceAuthenticationStatus(code, helpStr?.toString())
}
override fun onAuthenticationSucceeded(result: FaceManager.AuthenticationResult) {
@@ -731,7 +717,6 @@
pw.println(" _pendingAuthenticateRequest: ${pendingAuthenticateRequest.value}")
pw.println(" authCancellationSignal: $authCancellationSignal")
pw.println(" detectCancellationSignal: $detectCancellationSignal")
- pw.println(" faceAcquiredInfoIgnoreList: $faceAcquiredInfoIgnoreList")
pw.println(" _authenticationStatus: ${_authenticationStatus.value}")
pw.println(" _detectionStatus: ${_detectionStatus.value}")
pw.println(" currentUserId: $currentUserId")
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepository.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepository.kt
index 0f18978..e2ad774 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryRepository.kt
@@ -39,12 +39,6 @@
* the lockscreen.
*/
val isBypassEnabled: StateFlow<Boolean>
-
- /**
- * Reports, to system server, that the user is "present" now. This is a signal that system
- * server uses to know that the device has been entered.
- */
- suspend fun reportUserPresent()
}
/** Encapsulates application state for device entry. */
@@ -84,17 +78,6 @@
SharingStarted.Eagerly,
initialValue = keyguardBypassController.bypassEnabled,
)
-
- override suspend fun reportUserPresent() {
- withContext(backgroundDispatcher) {
- val selectedUserId = userRepository.selectedUser.value.userInfo.id
- lockPatternUtils.userPresent(selectedUserId)
- }
- }
-
- companion object {
- private const val TAG = "DeviceEntryRepositoryImpl"
- }
}
@Module
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractor.kt
new file mode 100644
index 0000000..34b1544
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractor.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.deviceentry.domain.interactor
+
+import android.content.res.Resources
+import android.hardware.biometrics.BiometricFaceConstants
+import com.android.systemui.biometrics.FaceHelpMessageDebouncer
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.deviceentry.data.repository.DeviceEntryFaceAuthRepository
+import com.android.systemui.deviceentry.shared.model.AcquiredFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.FaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
+import com.android.systemui.res.R
+import java.util.Arrays
+import java.util.stream.Collectors
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.flow.transform
+
+/**
+ * Process face authentication statuses.
+ * - Ignores face help messages based on R.array.config_face_acquire_device_entry_ignorelist.
+ * - Uses FaceHelpMessageDebouncer to debounce flickery help messages.
+ */
+@SysUISingleton
+class DeviceEntryFaceAuthStatusInteractor
+@Inject
+constructor(
+ repository: DeviceEntryFaceAuthRepository,
+ @Main private val resources: Resources,
+ @Application private val applicationScope: CoroutineScope,
+) {
+ private val faceHelpMessageDebouncer = FaceHelpMessageDebouncer()
+ private var faceAcquiredInfoIgnoreList: Set<Int> =
+ Arrays.stream(resources.getIntArray(R.array.config_face_acquire_device_entry_ignorelist))
+ .boxed()
+ .collect(Collectors.toSet())
+
+ val authenticationStatus: StateFlow<FaceAuthenticationStatus?> =
+ repository.authenticationStatus
+ .transform { authenticationStatus ->
+ if (authenticationStatus is AcquiredFaceAuthenticationStatus) {
+ if (
+ authenticationStatus.acquiredInfo ==
+ BiometricFaceConstants.FACE_ACQUIRED_START
+ ) {
+ faceHelpMessageDebouncer.startNewFaceAuthSession(
+ authenticationStatus.createdAt
+ )
+ }
+ }
+
+ if (authenticationStatus is HelpFaceAuthenticationStatus) {
+ if (!faceAcquiredInfoIgnoreList.contains(authenticationStatus.msgId)) {
+ faceHelpMessageDebouncer.addMessage(authenticationStatus)
+ }
+
+ val messageToShow =
+ faceHelpMessageDebouncer.getMessageToShow(
+ atTimestamp = authenticationStatus.createdAt,
+ )
+ if (messageToShow != null) {
+ emit(messageToShow)
+ }
+
+ return@transform
+ }
+
+ emit(authenticationStatus)
+ }
+ .stateIn(
+ scope = applicationScope,
+ started = SharingStarted.WhileSubscribed(),
+ initialValue = null,
+ )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
index 425bb96..ea0e59b 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
@@ -16,33 +16,24 @@
package com.android.systemui.deviceentry.domain.interactor
-import androidx.annotation.VisibleForTesting
import com.android.systemui.authentication.domain.interactor.AuthenticationInteractor
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.deviceentry.data.repository.DeviceEntryRepository
-import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason
-import com.android.systemui.flags.SystemPropertiesHelper
-import com.android.systemui.keyguard.domain.interactor.TrustInteractor
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Scenes
-import com.android.systemui.util.kotlin.Quad
import com.android.systemui.utils.coroutines.flow.mapLatestConflated
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.flow.flatMapLatest
-import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
@@ -61,12 +52,7 @@
private val repository: DeviceEntryRepository,
private val authenticationInteractor: AuthenticationInteractor,
private val sceneInteractor: SceneInteractor,
- faceAuthInteractor: DeviceEntryFaceAuthInteractor,
- private val fingerprintAuthInteractor: DeviceEntryFingerprintAuthInteractor,
- private val biometricSettingsInteractor: DeviceEntryBiometricSettingsInteractor,
- private val trustInteractor: TrustInteractor,
private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
- private val systemPropertiesHelper: SystemPropertiesHelper,
private val alternateBouncerInteractor: AlternateBouncerInteractor,
) {
/**
@@ -109,11 +95,6 @@
false
}
}
- .onEach { isDeviceEntered ->
- if (isDeviceEntered) {
- repository.reportUserPresent()
- }
- }
.stateIn(
scope = applicationScope,
started = SharingStarted.Eagerly,
@@ -156,70 +137,6 @@
initialValue = null,
)
- private val faceEnrolledAndEnabled = biometricSettingsInteractor.isFaceAuthEnrolledAndEnabled
- private val fingerprintEnrolledAndEnabled =
- biometricSettingsInteractor.isFingerprintAuthEnrolledAndEnabled
- private val trustAgentEnabled = trustInteractor.isEnrolledAndEnabled
-
- private val faceOrFingerprintOrTrustEnabled: Flow<Triple<Boolean, Boolean, Boolean>> =
- combine(faceEnrolledAndEnabled, fingerprintEnrolledAndEnabled, trustAgentEnabled, ::Triple)
-
- /**
- * Reason why device entry is restricted to certain authentication methods for the current user.
- *
- * Emits null when there are no device entry restrictions active.
- */
- val deviceEntryRestrictionReason: Flow<DeviceEntryRestrictionReason?> =
- faceOrFingerprintOrTrustEnabled.flatMapLatest {
- (faceEnabled, fingerprintEnabled, trustEnabled) ->
- if (faceEnabled || fingerprintEnabled || trustEnabled) {
- combine(
- biometricSettingsInteractor.authenticationFlags,
- faceAuthInteractor.isLockedOut,
- fingerprintAuthInteractor.isLockedOut,
- trustInteractor.isTrustAgentCurrentlyAllowed,
- ::Quad
- )
- .map { (authFlags, isFaceLockedOut, isFingerprintLockedOut, trustManaged) ->
- when {
- authFlags.isPrimaryAuthRequiredAfterReboot &&
- wasRebootedForMainlineUpdate ->
- DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate
- authFlags.isPrimaryAuthRequiredAfterReboot ->
- DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot
- authFlags.isPrimaryAuthRequiredAfterDpmLockdown ->
- DeviceEntryRestrictionReason.PolicyLockdown
- authFlags.isInUserLockdown -> DeviceEntryRestrictionReason.UserLockdown
- authFlags.isPrimaryAuthRequiredForUnattendedUpdate ->
- DeviceEntryRestrictionReason.UnattendedUpdate
- authFlags.isPrimaryAuthRequiredAfterTimeout ->
- DeviceEntryRestrictionReason.SecurityTimeout
- authFlags.isPrimaryAuthRequiredAfterLockout ->
- DeviceEntryRestrictionReason.BouncerLockedOut
- isFingerprintLockedOut ->
- DeviceEntryRestrictionReason.StrongBiometricsLockedOut
- isFaceLockedOut && faceAuthInteractor.isFaceAuthStrong() ->
- DeviceEntryRestrictionReason.StrongBiometricsLockedOut
- isFaceLockedOut -> DeviceEntryRestrictionReason.NonStrongFaceLockedOut
- authFlags.isSomeAuthRequiredAfterAdaptiveAuthRequest ->
- DeviceEntryRestrictionReason.AdaptiveAuthRequest
- (trustEnabled && !trustManaged) &&
- (authFlags.someAuthRequiredAfterTrustAgentExpired ||
- authFlags.someAuthRequiredAfterUserRequest) ->
- DeviceEntryRestrictionReason.TrustAgentDisabled
- authFlags.strongerAuthRequiredAfterNonStrongBiometricsTimeout ->
- DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout
- else -> null
- }
- }
- } else {
- flowOf(null)
- }
- }
-
- /** Whether the device is in lockdown mode, where bouncer input is required to unlock. */
- val isInLockdown: Flow<Boolean> = deviceEntryRestrictionReason.map { it.isInLockdown() }
-
/**
* Attempt to enter the device and dismiss the lockscreen. If authentication is required to
* unlock the device it will transition to bouncer.
@@ -268,27 +185,6 @@
return repository.isLockscreenEnabled()
}
- fun DeviceEntryRestrictionReason?.isInLockdown(): Boolean {
- return when (this) {
- DeviceEntryRestrictionReason.UserLockdown -> true
- DeviceEntryRestrictionReason.PolicyLockdown -> true
-
- // Add individual enum value instead of using "else" so new reasons are guaranteed
- // to be added here at compile-time.
- null -> false
- DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot -> false
- DeviceEntryRestrictionReason.BouncerLockedOut -> false
- DeviceEntryRestrictionReason.AdaptiveAuthRequest -> false
- DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout -> false
- DeviceEntryRestrictionReason.TrustAgentDisabled -> false
- DeviceEntryRestrictionReason.StrongBiometricsLockedOut -> false
- DeviceEntryRestrictionReason.SecurityTimeout -> false
- DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate -> false
- DeviceEntryRestrictionReason.UnattendedUpdate -> false
- DeviceEntryRestrictionReason.NonStrongFaceLockedOut -> false
- }
- }
-
/**
* Whether lockscreen bypass is enabled. When enabled, the lockscreen will be automatically
* dismissed once the authentication challenge is completed. For example, completing a biometric
@@ -296,12 +192,4 @@
* lockscreen.
*/
val isBypassEnabled: StateFlow<Boolean> = repository.isBypassEnabled
-
- private val wasRebootedForMainlineUpdate
- get() = systemPropertiesHelper.get(SYS_BOOT_REASON_PROP) == REBOOT_MAINLINE_UPDATE
-
- companion object {
- @VisibleForTesting const val SYS_BOOT_REASON_PROP = "sys.boot.reason.last"
- @VisibleForTesting const val REBOOT_MAINLINE_UPDATE = "reboot,mainline_update"
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt
index 5141690..e17e530 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractor.kt
@@ -16,20 +16,26 @@
package com.android.systemui.deviceentry.domain.interactor
+import androidx.annotation.VisibleForTesting
import com.android.systemui.authentication.domain.interactor.AuthenticationInteractor
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.deviceentry.data.repository.DeviceEntryRepository
+import com.android.systemui.deviceentry.shared.model.DeviceEntryRestrictionReason
import com.android.systemui.deviceentry.shared.model.DeviceUnlockSource
import com.android.systemui.deviceentry.shared.model.DeviceUnlockStatus
+import com.android.systemui.flags.SystemPropertiesHelper
import com.android.systemui.keyguard.domain.interactor.TrustInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
+import com.android.systemui.utils.coroutines.flow.flatMapLatestConflated
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
@@ -49,6 +55,8 @@
faceAuthInteractor: DeviceEntryFaceAuthInteractor,
fingerprintAuthInteractor: DeviceEntryFingerprintAuthInteractor,
private val powerInteractor: PowerInteractor,
+ private val biometricSettingsInteractor: DeviceEntryBiometricSettingsInteractor,
+ private val systemPropertiesHelper: SystemPropertiesHelper,
) {
private val deviceUnlockSource =
@@ -69,6 +77,75 @@
.map { DeviceUnlockSource.BouncerInput }
)
+ private val faceEnrolledAndEnabled = biometricSettingsInteractor.isFaceAuthEnrolledAndEnabled
+ private val fingerprintEnrolledAndEnabled =
+ biometricSettingsInteractor.isFingerprintAuthEnrolledAndEnabled
+ private val trustAgentEnabled = trustInteractor.isEnrolledAndEnabled
+
+ private val faceOrFingerprintOrTrustEnabled: Flow<Triple<Boolean, Boolean, Boolean>> =
+ combine(faceEnrolledAndEnabled, fingerprintEnrolledAndEnabled, trustAgentEnabled, ::Triple)
+
+ /**
+ * Reason why device entry is restricted to certain authentication methods for the current user.
+ *
+ * Emits null when there are no device entry restrictions active.
+ */
+ val deviceEntryRestrictionReason: Flow<DeviceEntryRestrictionReason?> =
+ faceOrFingerprintOrTrustEnabled.flatMapLatest {
+ (faceEnabled, fingerprintEnabled, trustEnabled) ->
+ if (faceEnabled || fingerprintEnabled || trustEnabled) {
+ combine(
+ biometricSettingsInteractor.authenticationFlags,
+ faceAuthInteractor.isLockedOut,
+ fingerprintAuthInteractor.isLockedOut,
+ trustInteractor.isTrustAgentCurrentlyAllowed,
+ ) { authFlags, isFaceLockedOut, isFingerprintLockedOut, trustManaged ->
+ when {
+ authFlags.isPrimaryAuthRequiredAfterReboot &&
+ wasRebootedForMainlineUpdate() ->
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate
+ authFlags.isPrimaryAuthRequiredAfterReboot ->
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot
+ authFlags.isPrimaryAuthRequiredAfterDpmLockdown ->
+ DeviceEntryRestrictionReason.PolicyLockdown
+ authFlags.isInUserLockdown -> DeviceEntryRestrictionReason.UserLockdown
+ authFlags.isPrimaryAuthRequiredForUnattendedUpdate ->
+ DeviceEntryRestrictionReason.UnattendedUpdate
+ authFlags.isPrimaryAuthRequiredAfterTimeout ->
+ DeviceEntryRestrictionReason.SecurityTimeout
+ authFlags.isPrimaryAuthRequiredAfterLockout ->
+ DeviceEntryRestrictionReason.BouncerLockedOut
+ isFingerprintLockedOut ->
+ DeviceEntryRestrictionReason.StrongBiometricsLockedOut
+ isFaceLockedOut && faceAuthInteractor.isFaceAuthStrong() ->
+ DeviceEntryRestrictionReason.StrongBiometricsLockedOut
+ isFaceLockedOut -> DeviceEntryRestrictionReason.NonStrongFaceLockedOut
+ authFlags.isSomeAuthRequiredAfterAdaptiveAuthRequest ->
+ DeviceEntryRestrictionReason.AdaptiveAuthRequest
+ (trustEnabled && !trustManaged) &&
+ (authFlags.someAuthRequiredAfterTrustAgentExpired ||
+ authFlags.someAuthRequiredAfterUserRequest) ->
+ DeviceEntryRestrictionReason.TrustAgentDisabled
+ authFlags.strongerAuthRequiredAfterNonStrongBiometricsTimeout ->
+ DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout
+ else -> null
+ }
+ }
+ } else {
+ biometricSettingsInteractor.authenticationFlags.map { authFlags ->
+ when {
+ authFlags.isInUserLockdown -> DeviceEntryRestrictionReason.UserLockdown
+ authFlags.isPrimaryAuthRequiredAfterDpmLockdown ->
+ DeviceEntryRestrictionReason.PolicyLockdown
+ else -> null
+ }
+ }
+ }
+ }
+
+ /** Whether the device is in lockdown mode, where bouncer input is required to unlock. */
+ val isInLockdown: Flow<Boolean> = deviceEntryRestrictionReason.map { it.isInLockdown() }
+
/**
* Whether the device is unlocked or not, along with the information about the authentication
* method that was used to unlock the device.
@@ -90,13 +167,18 @@
// Device is locked if SIM is locked.
flowOf(DeviceUnlockStatus(false, null))
} else {
- powerInteractor.isAsleep.flatMapLatest { isAsleep ->
- if (isAsleep) {
- flowOf(DeviceUnlockStatus(false, null))
- } else {
- deviceUnlockSource.map { DeviceUnlockStatus(true, it) }
+ combine(
+ powerInteractor.isAsleep,
+ isInLockdown,
+ ::Pair,
+ )
+ .flatMapLatestConflated { (isAsleep, isInLockdown) ->
+ if (isAsleep || isInLockdown) {
+ flowOf(DeviceUnlockStatus(false, null))
+ } else {
+ deviceUnlockSource.map { DeviceUnlockStatus(true, it) }
+ }
}
- }
}
}
.stateIn(
@@ -104,4 +186,34 @@
started = SharingStarted.Eagerly,
initialValue = DeviceUnlockStatus(false, null),
)
+
+ private fun DeviceEntryRestrictionReason?.isInLockdown(): Boolean {
+ return when (this) {
+ DeviceEntryRestrictionReason.UserLockdown -> true
+ DeviceEntryRestrictionReason.PolicyLockdown -> true
+
+ // Add individual enum value instead of using "else" so new reasons are guaranteed
+ // to be added here at compile-time.
+ null -> false
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceReboot -> false
+ DeviceEntryRestrictionReason.BouncerLockedOut -> false
+ DeviceEntryRestrictionReason.AdaptiveAuthRequest -> false
+ DeviceEntryRestrictionReason.NonStrongBiometricsSecurityTimeout -> false
+ DeviceEntryRestrictionReason.TrustAgentDisabled -> false
+ DeviceEntryRestrictionReason.StrongBiometricsLockedOut -> false
+ DeviceEntryRestrictionReason.SecurityTimeout -> false
+ DeviceEntryRestrictionReason.DeviceNotUnlockedSinceMainlineUpdate -> false
+ DeviceEntryRestrictionReason.UnattendedUpdate -> false
+ DeviceEntryRestrictionReason.NonStrongFaceLockedOut -> false
+ }
+ }
+
+ private fun wasRebootedForMainlineUpdate(): Boolean {
+ return systemPropertiesHelper.get(SYS_BOOT_REASON_PROP) == REBOOT_MAINLINE_UPDATE
+ }
+
+ companion object {
+ @VisibleForTesting const val SYS_BOOT_REASON_PROP = "sys.boot.reason.last"
+ @VisibleForTesting const val REBOOT_MAINLINE_UPDATE = "reboot,mainline_update"
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt
index d12ea45..c536d6b 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt
@@ -90,6 +90,7 @@
private val powerInteractor: PowerInteractor,
private val biometricSettingsRepository: BiometricSettingsRepository,
private val trustManager: TrustManager,
+ deviceEntryFaceAuthStatusInteractor: DeviceEntryFaceAuthStatusInteractor,
) : DeviceEntryFaceAuthInteractor {
private val listeners: MutableList<FaceAuthenticationListener> = mutableListOf()
@@ -276,9 +277,13 @@
}
private val faceAuthenticationStatusOverride = MutableStateFlow<FaceAuthenticationStatus?>(null)
+
/** Provide the status of face authentication */
override val authenticationStatus =
- merge(faceAuthenticationStatusOverride.filterNotNull(), repository.authenticationStatus)
+ merge(
+ faceAuthenticationStatusOverride.filterNotNull(),
+ deviceEntryFaceAuthStatusInteractor.authenticationStatus.filterNotNull(),
+ )
/** Provide the status of face detection */
override val detectionStatus = repository.detectionStatus
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/ShortcutHelperCategoriesRepository.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/ShortcutHelperCategoriesRepository.kt
index 49817b2..495e8f3 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/ShortcutHelperCategoriesRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/repository/ShortcutHelperCategoriesRepository.kt
@@ -233,7 +233,7 @@
Log.wtf(TAG, "Unsupported modifiers remaining: $remainingModifiers")
return null
}
- if (info.keycode != 0) {
+ if (info.keycode != 0 || info.baseCharacter > Char.MIN_VALUE) {
keys += toShortcutKey(keyCharacterMap, info.keycode, info.baseCharacter) ?: return null
}
if (keys.isEmpty()) {
@@ -253,7 +253,7 @@
return ShortcutKey.Icon(iconResId)
}
if (baseCharacter > Char.MIN_VALUE) {
- return ShortcutKey.Text(baseCharacter.toString())
+ return ShortcutKey.Text(baseCharacter.uppercase())
}
val specialKeyLabel = ShortcutHelperKeys.specialKeyLabels[keyCode]
if (specialKeyLabel != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSource.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSource.kt
index d7cb7db..d6c6d5b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSource.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSource.kt
@@ -16,92 +16,29 @@
package com.android.systemui.keyboard.shortcut.data.source
-import android.content.Intent
-import android.content.res.Resources
-import android.view.KeyEvent
import android.view.KeyboardShortcutGroup
-import android.view.KeyboardShortcutInfo
-import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.res.R
-import com.android.systemui.util.icons.AppCategoryIconProvider
+import android.view.WindowManager
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.keyboard.shortcut.extensions.copy
import javax.inject.Inject
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.withContext
class AppCategoriesShortcutsSource
@Inject
constructor(
- private val appCategoryIconProvider: AppCategoryIconProvider,
- @Main private val resources: Resources,
+ private val windowManager: WindowManager,
+ @Background private val backgroundDispatcher: CoroutineDispatcher,
) : KeyboardShortcutGroupsSource {
- override suspend fun shortcutGroups(deviceId: Int) =
- listOf(
- KeyboardShortcutGroup(
- /* label = */ resources.getString(R.string.keyboard_shortcut_group_applications),
- /* items = */ shortcuts()
- )
- )
-
- private suspend fun shortcuts(): List<KeyboardShortcutInfo> =
- listOfNotNull(
- assistantAppShortcutInfo(),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_BROWSER,
- R.string.keyboard_shortcut_group_applications_browser,
- KeyEvent.KEYCODE_B
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_CONTACTS,
- R.string.keyboard_shortcut_group_applications_contacts,
- KeyEvent.KEYCODE_C
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_EMAIL,
- R.string.keyboard_shortcut_group_applications_email,
- KeyEvent.KEYCODE_E
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_CALENDAR,
- R.string.keyboard_shortcut_group_applications_calendar,
- KeyEvent.KEYCODE_K
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_MAPS,
- R.string.keyboard_shortcut_group_applications_maps,
- KeyEvent.KEYCODE_M
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_MUSIC,
- R.string.keyboard_shortcut_group_applications_music,
- KeyEvent.KEYCODE_P
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_MESSAGING,
- R.string.keyboard_shortcut_group_applications_sms,
- KeyEvent.KEYCODE_S
- ),
- appCategoryShortcutInfo(
- Intent.CATEGORY_APP_CALCULATOR,
- R.string.keyboard_shortcut_group_applications_calculator,
- KeyEvent.KEYCODE_U
- ),
- )
- .sortedBy { it.label!!.toString().lowercase() }
-
- private suspend fun assistantAppShortcutInfo(): KeyboardShortcutInfo? {
- val assistantIcon = appCategoryIconProvider.assistantAppIcon() ?: return null
- return KeyboardShortcutInfo(
- /* label = */ resources.getString(R.string.keyboard_shortcut_group_applications_assist),
- /* icon = */ assistantIcon,
- /* keycode = */ KeyEvent.KEYCODE_A,
- /* modifiers = */ KeyEvent.META_META_ON,
- )
- }
-
- private suspend fun appCategoryShortcutInfo(category: String, labelResId: Int, keycode: Int) =
- KeyboardShortcutInfo(
- /* label = */ resources.getString(labelResId),
- /* icon = */ appCategoryIconProvider.categoryAppIcon(category),
- /* keycode = */ keycode,
- /* modifiers = */ KeyEvent.META_META_ON,
- )
+ override suspend fun shortcutGroups(deviceId: Int): List<KeyboardShortcutGroup> =
+ withContext(backgroundDispatcher) {
+ val group = windowManager.getApplicationLaunchKeyboardShortcuts(deviceId)
+ return@withContext if (group == null) {
+ emptyList()
+ } else {
+ val sortedShortcutItems = group.items.sortedBy { it.label!!.toString().lowercase() }
+ listOf(group.copy(items = sortedShortcutItems))
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/extensions/KeyboardShortcutGroupExtensions.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/extensions/KeyboardShortcutGroupExtensions.kt
new file mode 100644
index 0000000..3a120bd
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/extensions/KeyboardShortcutGroupExtensions.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyboard.shortcut.extensions
+
+import android.view.KeyboardShortcutGroup
+import android.view.KeyboardShortcutInfo
+
+fun KeyboardShortcutGroup.copy(
+ label: CharSequence = getLabel(),
+ items: List<KeyboardShortcutInfo> = getItems(),
+ isSystemGroup: Boolean = isSystemGroup(),
+ packageName: CharSequence? = getPackageName(),
+) = KeyboardShortcutGroup(label, items, isSystemGroup).also { it.packageName = packageName }
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
index b482862..869f00c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/shortcut/ui/composable/ShortcutHelper.kt
@@ -70,12 +70,15 @@
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.Shape
@@ -642,8 +645,10 @@
@OptIn(ExperimentalMaterial3Api::class)
private fun ShortcutsSearchBar() {
var query by remember { mutableStateOf("") }
+ val focusRequester = remember { FocusRequester() }
+ LaunchedEffect(Unit) { focusRequester.requestFocus() }
SearchBar(
- modifier = Modifier.fillMaxWidth(),
+ modifier = Modifier.fillMaxWidth().focusRequester(focusRequester),
colors = SearchBarDefaults.colors(containerColor = MaterialTheme.colorScheme.surfaceBright),
query = query,
active = false,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
index 1b201ce..aaeeb39 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
@@ -252,7 +252,10 @@
return@withContext null
}
?: run {
- emitTransition(TransitionStep(info, startingValue, TransitionState.STARTED))
+ emitTransition(
+ nextStep = TransitionStep(info, startingValue, TransitionState.STARTED),
+ isManual = true,
+ )
// No animator, so it's manual. Provide a mechanism to callback
updateTransitionId = UUID.randomUUID()
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt
index cfb161c..453401d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt
@@ -19,7 +19,7 @@
import android.animation.ValueAnimator
import com.android.app.animation.Interpolators
import com.android.app.tracing.coroutines.launch
-import com.android.systemui.Flags.communalHub
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
@@ -58,6 +58,7 @@
@Main mainDispatcher: CoroutineDispatcher,
keyguardInteractor: KeyguardInteractor,
private val glanceableHubTransitions: GlanceableHubTransitions,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
powerInteractor: PowerInteractor,
keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
private val deviceEntryInteractor: DeviceEntryInteractor,
@@ -95,7 +96,7 @@
}
private fun listenForDreamingToGlanceableHub() {
- if (!communalHub()) return
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) return
// TODO(b/336576536): Check if adaptation for scene framework is needed
if (SceneContainerFlag.isEnabled) return
scope.launch("$TAG#listenForDreamingToGlanceableHub", mainDispatcher) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
index 2eca9e1..1a7012a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
@@ -19,7 +19,7 @@
import android.animation.ValueAnimator
import com.android.app.animation.Interpolators
import com.android.app.tracing.coroutines.launch
-import com.android.systemui.Flags
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
@@ -48,6 +48,7 @@
@Main mainDispatcher: CoroutineDispatcher,
@Background bgDispatcher: CoroutineDispatcher,
private val glanceableHubTransitions: GlanceableHubTransitions,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
keyguardInteractor: KeyguardInteractor,
override val transitionRepository: KeyguardTransitionRepository,
override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
@@ -68,7 +69,7 @@
override fun start() {
// TODO(b/336576536): Check if adaptation for scene framework is needed
if (SceneContainerFlag.isEnabled) return
- if (!Flags.communalHub()) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
listenForHubToLockscreenOrDreaming()
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
index 343a135..5c7adf0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
@@ -20,7 +20,7 @@
import android.util.MathUtils
import com.android.app.animation.Interpolators
import com.android.app.tracing.coroutines.launch
-import com.android.systemui.Flags
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
@@ -66,6 +66,7 @@
private val shadeRepository: ShadeRepository,
powerInteractor: PowerInteractor,
private val glanceableHubTransitions: GlanceableHubTransitions,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
private val swipeToDismissInteractor: SwipeToDismissInteractor,
keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
) :
@@ -349,7 +350,7 @@
private fun listenForLockscreenToGlanceableHub() {
// TODO(b/336576536): Check if adaptation for scene framework is needed
if (SceneContainerFlag.isEnabled) return
- if (!Flags.communalHub()) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
scope.launch(mainDispatcher) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt
index bbc3d76..89c7178 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt
@@ -168,8 +168,7 @@
*/
@Deprecated("Will be merged into maybeStartTransitionToOccludedOrInsecureCamera")
suspend fun maybeHandleInsecurePowerGesture(): Boolean {
- // TODO(b/336576536): Check if adaptation for scene framework is needed
- if (SceneContainerFlag.isEnabled) return true
+ if (SceneContainerFlag.isEnabled) return false
if (keyguardOcclusionInteractor.shouldTransitionFromPowerButtonGesture()) {
if (keyguardInteractor.isKeyguardDismissible.value) {
startTransitionTo(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/SideFpsProgressBar.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/SideFpsProgressBar.kt
index 853f176..1fd609d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/SideFpsProgressBar.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/SideFpsProgressBar.kt
@@ -26,6 +26,7 @@
import android.view.WindowManager
import android.widget.ProgressBar
import androidx.core.view.isGone
+import com.android.app.viewcapture.ViewCaptureAwareWindowManager
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.res.R
import javax.inject.Inject
@@ -37,7 +38,7 @@
@Inject
constructor(
private val layoutInflater: LayoutInflater,
- private val windowManager: WindowManager,
+ private val windowManager: ViewCaptureAwareWindowManager,
) {
private var overlayView: View? = null
@@ -90,7 +91,7 @@
) {
if (overlayView == null) {
overlayView = layoutInflater.inflate(R.layout.sidefps_progress_bar, null, false)
- windowManager.addView(overlayView, overlayViewParams)
+ windowManager.addView(requireNotNull(overlayView), overlayViewParams)
progressBar?.pivotX = 0.0f
progressBar?.pivotY = 0.0f
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AccessibilityActionsSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AccessibilityActionsSection.kt
index 5e5330e..717a898 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AccessibilityActionsSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AccessibilityActionsSection.kt
@@ -21,7 +21,7 @@
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
-import com.android.systemui.Flags
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.binder.AccessibilityActionsViewBinder
import com.android.systemui.keyguard.ui.viewmodel.AccessibilityActionsViewModel
@@ -38,12 +38,13 @@
@Inject
constructor(
private val context: Context,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
private val accessibilityActionsViewModel: AccessibilityActionsViewModel,
) : KeyguardSection() {
private var accessibilityActionsViewHandle: DisposableHandle? = null
override fun addViews(constraintLayout: ConstraintLayout) {
- if (!communalEnabled(context)) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
val view = View(constraintLayout.context).apply { id = R.id.accessibility_actions_view }
@@ -51,7 +52,7 @@
}
override fun bindData(constraintLayout: ConstraintLayout) {
- if (!communalEnabled(context)) {
+ if (!communalSettingsInteractor.isCommunalFlagEnabled()) {
return
}
accessibilityActionsViewHandle =
@@ -100,7 +101,3 @@
constraintLayout.removeView(R.id.accessibility_actions_view)
}
}
-
-private fun communalEnabled(context: Context): Boolean {
- return context.resources.getBoolean(R.bool.config_communalServiceEnabled) && Flags.communalHub()
-}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
index 91e48b5..c8fe55d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
@@ -25,7 +25,6 @@
import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.GONE
-import androidx.constraintlayout.widget.ConstraintSet.MATCH_CONSTRAINT
import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
@@ -184,7 +183,11 @@
getDimen(ENHANCED_SMARTSPACE_HEIGHT)
connect(R.id.lockscreen_clock_view_large, TOP, PARENT_ID, TOP, largeClockTopMargin)
constrainWidth(R.id.lockscreen_clock_view_large, WRAP_CONTENT)
- constrainHeight(R.id.lockscreen_clock_view_large, MATCH_CONSTRAINT)
+
+ // The following two lines make lockscreen_clock_view_large is constrained to available
+ // height when it goes beyond constraints; otherwise, it use WRAP_CONTENT
+ constrainHeight(R.id.lockscreen_clock_view_large, WRAP_CONTENT)
+ constrainMaxHeight(R.id.lockscreen_clock_view_large, 0)
constrainWidth(R.id.lockscreen_clock_view, WRAP_CONTENT)
constrainHeight(
R.id.lockscreen_clock_view,
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt
index 18358a7..d8c13b6 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt
@@ -33,6 +33,7 @@
import androidx.core.os.postDelayed
import androidx.core.view.isVisible
import androidx.dynamicanimation.animation.DynamicAnimation
+import com.android.app.viewcapture.ViewCaptureAwareWindowManager
import com.android.internal.jank.Cuj
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.util.LatencyTracker
@@ -83,7 +84,7 @@
class BackPanelController
internal constructor(
context: Context,
- private val windowManager: WindowManager,
+ private val windowManager: ViewCaptureAwareWindowManager,
private val viewConfiguration: ViewConfiguration,
private val mainHandler: Handler,
private val systemClock: SystemClock,
@@ -102,7 +103,7 @@
class Factory
@Inject
constructor(
- private val windowManager: WindowManager,
+ private val windowManager: ViewCaptureAwareWindowManager,
private val viewConfiguration: ViewConfiguration,
@BackPanelUiThread private val uiThreadContext: UiThreadContext,
private val systemClock: SystemClock,
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
index c9be993..947336d 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
@@ -91,6 +91,7 @@
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.TaskStackChangeListeners;
+import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.util.concurrency.BackPanelUiThread;
import com.android.systemui.util.concurrency.UiThreadContext;
@@ -297,6 +298,7 @@
private Date mTmpLogDate = new Date();
private final GestureNavigationSettingsObserver mGestureNavigationSettingsObserver;
+ private final NotificationShadeWindowController mNotificationShadeWindowController;
private final NavigationEdgeBackPlugin.BackCallback mBackCallback =
new NavigationEdgeBackPlugin.BackCallback() {
@@ -423,7 +425,8 @@
Optional<DesktopMode> desktopModeOptional,
FalsingManager falsingManager,
Provider<BackGestureTfClassifierProvider> backGestureTfClassifierProviderProvider,
- Provider<LightBarController> lightBarControllerProvider) {
+ Provider<LightBarController> lightBarControllerProvider,
+ NotificationShadeWindowController notificationShadeWindowController) {
mContext = context;
mDisplayId = context.getDisplayId();
mUiThreadContext = uiThreadContext;
@@ -479,6 +482,7 @@
this::onNavigationSettingsChanged);
updateCurrentUserResources();
+ mNotificationShadeWindowController = notificationShadeWindowController;
}
public void setStateChangeCallback(Runnable callback) {
@@ -1297,6 +1301,9 @@
mBackAnimation.setPilferPointerCallback(() -> {
pilferPointers();
});
+ mBackAnimation.setTopUiRequestCallback(
+ (requestTopUi, tag) -> mUiThreadContext.getExecutor().execute(() ->
+ mNotificationShadeWindowController.setRequestTopUi(requestTopUi, tag)));
updateBackAnimationThresholds();
if (mLightBarControllerProvider.get() != null) {
mBackAnimation.setStatusBarCustomizer((appearance) -> {
@@ -1333,6 +1340,7 @@
private final Provider<BackGestureTfClassifierProvider>
mBackGestureTfClassifierProviderProvider;
private final Provider<LightBarController> mLightBarControllerProvider;
+ private final NotificationShadeWindowController mNotificationShadeWindowController;
@Inject
public Factory(OverviewProxyService overviewProxyService,
@@ -1353,7 +1361,8 @@
FalsingManager falsingManager,
Provider<BackGestureTfClassifierProvider>
backGestureTfClassifierProviderProvider,
- Provider<LightBarController> lightBarControllerProvider) {
+ Provider<LightBarController> lightBarControllerProvider,
+ NotificationShadeWindowController notificationShadeWindowController) {
mOverviewProxyService = overviewProxyService;
mSysUiState = sysUiState;
mPluginManager = pluginManager;
@@ -1372,6 +1381,7 @@
mFalsingManager = falsingManager;
mBackGestureTfClassifierProviderProvider = backGestureTfClassifierProviderProvider;
mLightBarControllerProvider = lightBarControllerProvider;
+ mNotificationShadeWindowController = notificationShadeWindowController;
}
/** Construct a {@link EdgeBackGestureHandler}. */
@@ -1396,7 +1406,8 @@
mDesktopModeOptional,
mFalsingManager,
mBackGestureTfClassifierProviderProvider,
- mLightBarControllerProvider));
+ mLightBarControllerProvider,
+ mNotificationShadeWindowController));
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBarView.java
index 0f36097..c4abcd2 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBarView.java
@@ -19,7 +19,6 @@
import static android.inputmethodservice.InputMethodService.canImeRenderGesturalNavButtons;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
-import static com.android.systemui.Flags.enableViewCaptureTracing;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SEARCH_DISABLED;
@@ -38,7 +37,6 @@
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
-import android.media.permission.SafeCloseable;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.AttributeSet;
@@ -56,24 +54,24 @@
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
+import android.view.inputmethod.Flags;
import android.widget.FrameLayout;
import androidx.annotation.Nullable;
import com.android.app.animation.Interpolators;
-import com.android.app.viewcapture.ViewCaptureFactory;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.Utils;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.ScreenPinningNotify;
+import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.navigationbar.views.buttons.ButtonDispatcher;
import com.android.systemui.navigationbar.views.buttons.ContextualButton;
import com.android.systemui.navigationbar.views.buttons.ContextualButtonGroup;
import com.android.systemui.navigationbar.views.buttons.DeadZone;
import com.android.systemui.navigationbar.views.buttons.KeyButtonDrawable;
import com.android.systemui.navigationbar.views.buttons.NearestTouchFrame;
-import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.recents.Recents;
import com.android.systemui.res.R;
import com.android.systemui.settings.DisplayTracker;
@@ -181,7 +179,6 @@
private boolean mOverviewProxyEnabled;
private boolean mShowSwipeUpUi;
private UpdateActiveTouchRegionsCallback mUpdateActiveTouchRegionsCallback;
- private SafeCloseable mViewCaptureCloseable;
private class NavTransitionListener implements TransitionListener {
private boolean mBackTransitioning;
@@ -289,8 +286,11 @@
// Set up the context group of buttons
mContextualButtonGroup = new ContextualButtonGroup(R.id.menu_container);
+ final int switcherResId = Flags.imeSwitcherRevamp()
+ ? com.android.internal.R.drawable.ic_ime_switcher_new
+ : R.drawable.ic_ime_switcher_default;
final ContextualButton imeSwitcherButton = new ContextualButton(R.id.ime_switcher,
- mLightContext, R.drawable.ic_ime_switcher_default);
+ mLightContext, switcherResId);
final ContextualButton accessibilityButton =
new ContextualButton(R.id.accessibility_button, mLightContext,
R.drawable.ic_sysbar_accessibility_button);
@@ -1082,10 +1082,6 @@
}
updateNavButtonIcons();
- if (enableViewCaptureTracing()) {
- mViewCaptureCloseable = ViewCaptureFactory.getInstance(getContext())
- .startCapture(getRootView(), ".NavigationBarView");
- }
}
@Override
@@ -1098,9 +1094,6 @@
mFloatingRotationButton.hide();
mRotationButtonController.unregisterListeners();
}
- if (mViewCaptureCloseable != null) {
- mViewCaptureCloseable.close();
- }
}
void dump(PrintWriter pw) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
index df7430a..158eb6e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
@@ -65,6 +65,7 @@
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
+import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -184,7 +185,7 @@
private GlobalSettings mGlobalSettings;
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private ConnectivityManager.NetworkCallback mConnectivityManagerNetworkCallback;
- private WindowManager mWindowManager;
+ private ViewCaptureAwareWindowManager mWindowManager;
private ToastFactory mToastFactory;
private SignalDrawable mSignalDrawable;
private SignalDrawable mSecondarySignalDrawable; // For the secondary mobile data sub in DSDS
@@ -246,7 +247,7 @@
@Main Handler handler, @Main Executor mainExecutor,
BroadcastDispatcher broadcastDispatcher, KeyguardUpdateMonitor keyguardUpdateMonitor,
GlobalSettings globalSettings, KeyguardStateController keyguardStateController,
- WindowManager windowManager, ToastFactory toastFactory,
+ ViewCaptureAwareWindowManager viewCaptureAwareWindowManager, ToastFactory toastFactory,
@Background Handler workerHandler,
CarrierConfigTracker carrierConfigTracker,
LocationController locationController,
@@ -278,7 +279,7 @@
mAccessPointController = accessPointController;
mWifiIconInjector = new WifiUtils.InternetIconInjector(mContext);
mConnectivityManagerNetworkCallback = new DataConnectivityListener();
- mWindowManager = windowManager;
+ mWindowManager = viewCaptureAwareWindowManager;
mToastFactory = toastFactory;
mSignalDrawable = new SignalDrawable(mContext);
mSecondarySignalDrawable = new SignalDrawable(mContext);
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
index 1f4820a..8711e88 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
@@ -665,7 +665,7 @@
keyguardEnabledInteractor.isKeyguardEnabled
.sample(
combine(
- deviceEntryInteractor.isInLockdown,
+ deviceUnlockedInteractor.isInLockdown,
deviceEntryInteractor.isDeviceEntered,
::Pair,
)
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java b/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java
deleted file mode 100644
index 9e68c48..0000000
--- a/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.screenshot;
-
-import static java.util.Objects.requireNonNull;
-
-import android.app.ActivityOptions;
-import android.app.BroadcastOptions;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.graphics.drawable.Icon;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.systemui.res.R;
-
-/**
- * View for a chip with an icon and text.
- */
-public class OverlayActionChip extends FrameLayout {
-
- private static final String TAG = "ScreenshotActionChip";
-
- private ImageView mIconView;
- private TextView mTextView;
- private boolean mIsPending = false;
-
- public OverlayActionChip(Context context) {
- this(context, null);
- }
-
- public OverlayActionChip(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public OverlayActionChip(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs, defStyleAttr, 0);
- }
-
- public OverlayActionChip(
- Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- @Override
- protected void onFinishInflate() {
- mIconView = requireNonNull(findViewById(R.id.overlay_action_chip_icon));
- mTextView = requireNonNull(findViewById(R.id.overlay_action_chip_text));
- updatePadding(mTextView.getText().length() > 0);
- }
-
- @Override
- public void setPressed(boolean pressed) {
- // override pressed state to true if there is an action pending
- super.setPressed(mIsPending || pressed);
- }
-
- /**
- * Set chip icon and whether to tint with theme color
- */
- public void setIcon(Icon icon, boolean tint) {
- mIconView.setImageIcon(icon);
- if (!tint) {
- mIconView.setImageTintList(null);
- }
- }
-
- /**
- * Set chip text
- */
- public void setText(CharSequence text) {
- mTextView.setText(text);
- updatePadding(text.length() > 0);
- }
-
- /**
- * Set PendingIntent to be sent and Runnable to be run, when chip is clicked
- */
- public void setPendingIntent(PendingIntent intent, Runnable finisher) {
- setOnClickListener(v -> {
- try {
- BroadcastOptions options = BroadcastOptions.makeBasic();
- options.setInteractive(true);
- options.setPendingIntentBackgroundActivityStartMode(
- ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
- intent.send(options.toBundle());
- finisher.run();
- } catch (PendingIntent.CanceledException e) {
- Log.e(TAG, "Intent cancelled", e);
- }
- });
- }
-
- /**
- * Set pressed state of chip (to be used when chip is clicked before underlying intent is ready)
- */
- public void setIsPending(boolean isPending) {
- mIsPending = isPending;
- setPressed(mIsPending);
- }
-
- private void updatePadding(boolean hasText) {
- LinearLayout.LayoutParams iconParams =
- (LinearLayout.LayoutParams) mIconView.getLayoutParams();
- LinearLayout.LayoutParams textParams =
- (LinearLayout.LayoutParams) mTextView.getLayoutParams();
- if (hasText) {
- int paddingStart = mContext.getResources().getDimensionPixelSize(
- R.dimen.overlay_action_chip_padding_start);
- int spacing = mContext.getResources().getDimensionPixelSize(
- R.dimen.overlay_action_chip_spacing);
- int paddingEnd = mContext.getResources().getDimensionPixelSize(
- R.dimen.overlay_action_chip_padding_end);
- iconParams.setMarginStart(paddingStart);
- iconParams.setMarginEnd(spacing);
- textParams.setMarginEnd(paddingEnd);
- } else {
- int paddingHorizontal = mContext.getResources().getDimensionPixelSize(
- R.dimen.overlay_action_chip_icon_only_padding_horizontal);
- iconParams.setMarginStart(paddingHorizontal);
- iconParams.setMarginEnd(paddingHorizontal);
- }
- mIconView.setLayoutParams(iconParams);
- mTextView.setLayoutParams(textParams);
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java b/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java
index abf258c..693cc4a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java
@@ -485,9 +485,8 @@
final boolean intersectsTopCutout = topDisplayCutout.intersects(
width - (windowWidth / 2), 0,
width + (windowWidth / 2), topDisplayCutout.bottom);
- if (mClingWindow != null &&
- (windowWidth < 0 || (width > 0 && intersectsTopCutout))) {
- final View iconView = mClingWindow.findViewById(R.id.immersive_cling_icon);
+ if (windowWidth < 0 || (width > 0 && intersectsTopCutout)) {
+ final View iconView = findViewById(R.id.immersive_cling_icon);
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)
iconView.getLayoutParams();
lp.topMargin = topDisplayCutout.bottom;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt
index 11ccdff..59fd0ca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/call/ui/viewmodel/CallChipViewModel.kt
@@ -57,7 +57,7 @@
interactor.ongoingCallState
.map { state ->
when (state) {
- is OngoingCallModel.NoCall -> OngoingActivityChipModel.Hidden
+ is OngoingCallModel.NoCall -> OngoingActivityChipModel.Hidden()
is OngoingCallModel.InCall -> {
// This block mimics OngoingCallController#updateChip.
if (state.startTimeMs <= 0L) {
@@ -82,7 +82,7 @@
}
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden)
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
private fun getOnClickListener(state: OngoingCallModel.InCall): View.OnClickListener? {
if (state.intent == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt
index bafec38..6ea72b9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndCastScreenToOtherDeviceDialogDelegate.kt
@@ -44,9 +44,10 @@
// No custom on-click, because the dialog will automatically be dismissed when the
// button is clicked anyway.
setNegativeButton(R.string.close_dialog_button, /* onClick= */ null)
- setPositiveButton(R.string.cast_to_other_device_stop_dialog_button) { _, _ ->
- stopAction.invoke()
- }
+ setPositiveButton(
+ R.string.cast_to_other_device_stop_dialog_button,
+ endMediaProjectionDialogHelper.wrapStopAction(stopAction),
+ )
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt
index 7dc9b25..b0c8321 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/view/EndGenericCastToOtherDeviceDialogDelegate.kt
@@ -55,9 +55,10 @@
// No custom on-click, because the dialog will automatically be dismissed when the
// button is clicked anyway.
setNegativeButton(R.string.close_dialog_button, /* onClick= */ null)
- setPositiveButton(R.string.cast_to_other_device_stop_dialog_button) { _, _ ->
- stopAction.invoke()
- }
+ setPositiveButton(
+ R.string.cast_to_other_device_stop_dialog_button,
+ endMediaProjectionDialogHelper.wrapStopAction(stopAction),
+ )
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt
index afa9cce..d9b0504 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModel.kt
@@ -18,6 +18,9 @@
import android.content.Context
import androidx.annotation.DrawableRes
+import com.android.internal.jank.Cuj
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.SysUISingleton
@@ -35,6 +38,7 @@
import com.android.systemui.statusbar.chips.mediaprojection.ui.view.EndMediaProjectionDialogHelper
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.viewmodel.ChipTransitionHelper
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickListener
import com.android.systemui.util.time.SystemClock
@@ -60,6 +64,7 @@
private val mediaProjectionChipInteractor: MediaProjectionChipInteractor,
private val mediaRouterChipInteractor: MediaRouterChipInteractor,
private val systemClock: SystemClock,
+ private val dialogTransitionAnimator: DialogTransitionAnimator,
private val endMediaProjectionDialogHelper: EndMediaProjectionDialogHelper,
@StatusBarChipsLog private val logger: LogBuffer,
) : OngoingActivityChipViewModel {
@@ -74,18 +79,18 @@
mediaProjectionChipInteractor.projection
.map { projectionModel ->
when (projectionModel) {
- is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Hidden
+ is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Hidden()
is ProjectionChipModel.Projecting -> {
if (projectionModel.type != ProjectionChipModel.Type.CAST_TO_OTHER_DEVICE) {
- OngoingActivityChipModel.Hidden
+ OngoingActivityChipModel.Hidden()
} else {
createCastScreenToOtherDeviceChip(projectionModel)
}
}
}
}
- // See b/347726238.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden)
+ // See b/347726238 for [SharingStarted.Lazily] reasoning.
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
/**
* The cast chip to show, based only on MediaRouter API events.
@@ -109,7 +114,7 @@
mediaRouterChipInteractor.mediaRouterCastingState
.map { routerModel ->
when (routerModel) {
- is MediaRouterCastModel.DoingNothing -> OngoingActivityChipModel.Hidden
+ is MediaRouterCastModel.DoingNothing -> OngoingActivityChipModel.Hidden()
is MediaRouterCastModel.Casting -> {
// A consequence of b/269975671 is that MediaRouter will mark a device as
// casting before casting has actually started. To alleviate this bug a bit,
@@ -123,9 +128,9 @@
}
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden)
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
- override val chip: StateFlow<OngoingActivityChipModel> =
+ private val internalChip: StateFlow<OngoingActivityChipModel> =
combine(projectionChip, routerChip) { projection, router ->
logger.log(
TAG,
@@ -159,17 +164,24 @@
router
}
}
- .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden)
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
+
+ private val hideChipDuringDialogTransitionHelper = ChipTransitionHelper(scope)
+
+ override val chip: StateFlow<OngoingActivityChipModel> =
+ hideChipDuringDialogTransitionHelper.createChipFlow(internalChip)
/** Stops the currently active projection. */
- private fun stopProjecting() {
- logger.log(TAG, LogLevel.INFO, {}, { "Stop casting requested (projection)" })
+ private fun stopProjectingFromDialog() {
+ logger.log(TAG, LogLevel.INFO, {}, { "Stop casting requested from dialog (projection)" })
+ hideChipDuringDialogTransitionHelper.onActivityStoppedFromDialog()
mediaProjectionChipInteractor.stopProjecting()
}
/** Stops the currently active media route. */
- private fun stopMediaRouterCasting() {
- logger.log(TAG, LogLevel.INFO, {}, { "Stop casting requested (router)" })
+ private fun stopMediaRouterCastingFromDialog() {
+ logger.log(TAG, LogLevel.INFO, {}, { "Stop casting requested from dialog (router)" })
+ hideChipDuringDialogTransitionHelper.onActivityStoppedFromDialog()
mediaRouterChipInteractor.stopCasting()
}
@@ -190,6 +202,8 @@
startTimeMs = systemClock.elapsedRealtime(),
createDialogLaunchOnClickListener(
createCastScreenToOtherDeviceDialogDelegate(state),
+ dialogTransitionAnimator,
+ DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Cast to other device"),
logger,
TAG,
),
@@ -207,6 +221,11 @@
colors = ColorsModel.Red,
createDialogLaunchOnClickListener(
createGenericCastToOtherDeviceDialogDelegate(deviceName),
+ dialogTransitionAnimator,
+ DialogCuj(
+ Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP,
+ tag = "Cast to other device audio only",
+ ),
logger,
TAG,
),
@@ -219,7 +238,7 @@
EndCastScreenToOtherDeviceDialogDelegate(
endMediaProjectionDialogHelper,
context,
- stopAction = this::stopProjecting,
+ stopAction = this::stopProjectingFromDialog,
state,
)
@@ -228,7 +247,7 @@
endMediaProjectionDialogHelper,
context,
deviceName,
- stopAction = this::stopMediaRouterCasting,
+ stopAction = this::stopMediaRouterCastingFromDialog,
)
companion object {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelper.kt
index 6004365..2d9ccb7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelper.kt
@@ -17,7 +17,9 @@
package com.android.systemui.statusbar.chips.mediaprojection.ui.view
import android.app.ActivityManager
+import android.content.DialogInterface
import android.content.pm.PackageManager
+import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.mediaprojection.data.model.MediaProjectionState
import com.android.systemui.statusbar.phone.SystemUIDialog
@@ -29,6 +31,7 @@
@Inject
constructor(
private val dialogFactory: SystemUIDialog.Factory,
+ private val dialogTransitionAnimator: DialogTransitionAnimator,
private val packageManager: PackageManager,
) {
/** Creates a new [SystemUIDialog] using the given delegate. */
@@ -36,6 +39,28 @@
return dialogFactory.create(delegate)
}
+ /**
+ * Returns the click listener that should be invoked if a user clicks "Stop" on the end media
+ * projection dialog.
+ *
+ * The click listener will invoke [stopAction] and also do some UI manipulation.
+ *
+ * @param stopAction an action that, when invoked, should notify system API(s) that the media
+ * projection should be stopped.
+ */
+ fun wrapStopAction(stopAction: () -> Unit): DialogInterface.OnClickListener {
+ return DialogInterface.OnClickListener { _, _ ->
+ // If the projection is stopped, then the chip will disappear, so we don't want the
+ // dialog to animate back into the chip just for the chip to disappear in a few frames.
+ dialogTransitionAnimator.disableAllCurrentDialogsExitAnimations()
+ stopAction.invoke()
+ // TODO(b/332662551): If the projection is stopped, there's a brief moment where the
+ // dialog closes and the chip re-shows because the system APIs haven't come back and
+ // told SysUI that the projection has officially stopped. It would be great for the chip
+ // to not re-show at all.
+ }
+ }
+
fun getAppName(state: MediaProjectionState.Projecting): CharSequence? {
val specificTaskInfo =
if (state is MediaProjectionState.Projecting.SingleTask) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt
index 1eca827..72656ca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/view/EndScreenRecordingDialogDelegate.kt
@@ -52,9 +52,10 @@
// No custom on-click, because the dialog will automatically be dismissed when the
// button is clicked anyway.
setNegativeButton(R.string.close_dialog_button, /* onClick= */ null)
- setPositiveButton(R.string.screenrecord_stop_dialog_button) { _, _ ->
- stopAction.invoke()
- }
+ setPositiveButton(
+ R.string.screenrecord_stop_dialog_button,
+ endMediaProjectionDialogHelper.wrapStopAction(stopAction),
+ )
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt
index 0c34981..fcf3de4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModel.kt
@@ -19,6 +19,9 @@
import android.app.ActivityManager
import android.content.Context
import androidx.annotation.DrawableRes
+import com.android.internal.jank.Cuj
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.SysUISingleton
@@ -32,8 +35,10 @@
import com.android.systemui.statusbar.chips.screenrecord.domain.interactor.ScreenRecordChipInteractor
import com.android.systemui.statusbar.chips.screenrecord.domain.model.ScreenRecordChipModel
import com.android.systemui.statusbar.chips.screenrecord.ui.view.EndScreenRecordingDialogDelegate
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.viewmodel.ChipTransitionHelper
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickListener
import com.android.systemui.util.time.SystemClock
@@ -52,15 +57,18 @@
@Application private val scope: CoroutineScope,
private val context: Context,
private val interactor: ScreenRecordChipInteractor,
+ private val shareToAppChipViewModel: ShareToAppChipViewModel,
private val systemClock: SystemClock,
private val endMediaProjectionDialogHelper: EndMediaProjectionDialogHelper,
+ private val dialogTransitionAnimator: DialogTransitionAnimator,
@StatusBarChipsLog private val logger: LogBuffer,
) : OngoingActivityChipViewModel {
- override val chip: StateFlow<OngoingActivityChipModel> =
+
+ private val internalChip =
interactor.screenRecordState
.map { state ->
when (state) {
- is ScreenRecordChipModel.DoingNothing -> OngoingActivityChipModel.Hidden
+ is ScreenRecordChipModel.DoingNothing -> OngoingActivityChipModel.Hidden()
is ScreenRecordChipModel.Starting -> {
OngoingActivityChipModel.Shown.Countdown(
colors = ColorsModel.Red,
@@ -80,6 +88,11 @@
startTimeMs = systemClock.elapsedRealtime(),
createDialogLaunchOnClickListener(
createDelegate(state.recordedTask),
+ dialogTransitionAnimator,
+ DialogCuj(
+ Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP,
+ tag = "Screen record",
+ ),
logger,
TAG,
),
@@ -87,8 +100,13 @@
}
}
}
- // See b/347726238.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden)
+ // See b/347726238 for [SharingStarted.Lazily] reasoning.
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+
+ private val chipTransitionHelper = ChipTransitionHelper(scope)
+
+ override val chip: StateFlow<OngoingActivityChipModel> =
+ chipTransitionHelper.createChipFlow(internalChip)
private fun createDelegate(
recordedTask: ActivityManager.RunningTaskInfo?
@@ -96,13 +114,15 @@
return EndScreenRecordingDialogDelegate(
endMediaProjectionDialogHelper,
context,
- stopAction = this::stopRecording,
+ stopAction = this::stopRecordingFromDialog,
recordedTask,
)
}
- private fun stopRecording() {
- logger.log(TAG, LogLevel.INFO, {}, { "Stop recording requested" })
+ private fun stopRecordingFromDialog() {
+ logger.log(TAG, LogLevel.INFO, {}, { "Stop recording requested from dialog" })
+ chipTransitionHelper.onActivityStoppedFromDialog()
+ shareToAppChipViewModel.onRecordingStoppedFromDialog()
interactor.stopRecording()
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareToAppDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareToAppDialogDelegate.kt
index 564f20e..d10bd77 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareToAppDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/view/EndShareToAppDialogDelegate.kt
@@ -44,9 +44,10 @@
// No custom on-click, because the dialog will automatically be dismissed when the
// button is clicked anyway.
setNegativeButton(R.string.close_dialog_button, /* onClick= */ null)
- setPositiveButton(R.string.share_to_app_stop_dialog_button) { _, _ ->
- stopAction.invoke()
- }
+ setPositiveButton(
+ R.string.share_to_app_stop_dialog_button,
+ endMediaProjectionDialogHelper.wrapStopAction(stopAction),
+ )
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt
index ddebd3a..85973fc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModel.kt
@@ -18,6 +18,9 @@
import android.content.Context
import androidx.annotation.DrawableRes
+import com.android.internal.jank.Cuj
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.dagger.SysUISingleton
@@ -32,6 +35,7 @@
import com.android.systemui.statusbar.chips.sharetoapp.ui.view.EndShareToAppDialogDelegate
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.viewmodel.ChipTransitionHelper
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickListener
import com.android.systemui.util.time.SystemClock
@@ -55,28 +59,49 @@
private val mediaProjectionChipInteractor: MediaProjectionChipInteractor,
private val systemClock: SystemClock,
private val endMediaProjectionDialogHelper: EndMediaProjectionDialogHelper,
+ private val dialogTransitionAnimator: DialogTransitionAnimator,
@StatusBarChipsLog private val logger: LogBuffer,
) : OngoingActivityChipViewModel {
- override val chip: StateFlow<OngoingActivityChipModel> =
+ private val internalChip =
mediaProjectionChipInteractor.projection
.map { projectionModel ->
when (projectionModel) {
- is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Hidden
+ is ProjectionChipModel.NotProjecting -> OngoingActivityChipModel.Hidden()
is ProjectionChipModel.Projecting -> {
if (projectionModel.type != ProjectionChipModel.Type.SHARE_TO_APP) {
- OngoingActivityChipModel.Hidden
+ OngoingActivityChipModel.Hidden()
} else {
createShareToAppChip(projectionModel)
}
}
}
}
- // See b/347726238.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden)
+ // See b/347726238 for [SharingStarted.Lazily] reasoning.
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
+
+ private val chipTransitionHelper = ChipTransitionHelper(scope)
+
+ override val chip: StateFlow<OngoingActivityChipModel> =
+ chipTransitionHelper.createChipFlow(internalChip)
+
+ /**
+ * Notifies this class that the user just stopped a screen recording from the dialog that's
+ * shown when you tap the recording chip.
+ */
+ fun onRecordingStoppedFromDialog() {
+ // When a screen recording is active, share-to-app is also active (screen recording is just
+ // a special case of share-to-app, where the specific app receiving the share is System UI).
+ // When a screen recording is stopped, we immediately hide the screen recording chip in
+ // [com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel.ScreenRecordChipViewModel].
+ // We *also* need to immediately hide the share-to-app chip so it doesn't briefly show.
+ // See b/350891338.
+ chipTransitionHelper.onActivityStoppedFromDialog()
+ }
/** Stops the currently active projection. */
- private fun stopProjecting() {
- logger.log(TAG, LogLevel.INFO, {}, { "Stop sharing requested" })
+ private fun stopProjectingFromDialog() {
+ logger.log(TAG, LogLevel.INFO, {}, { "Stop sharing requested from dialog" })
+ chipTransitionHelper.onActivityStoppedFromDialog()
mediaProjectionChipInteractor.stopProjecting()
}
@@ -92,7 +117,16 @@
colors = ColorsModel.Red,
// TODO(b/332662551): Maybe use a MediaProjection API to fetch this time.
startTimeMs = systemClock.elapsedRealtime(),
- createDialogLaunchOnClickListener(createShareToAppDialogDelegate(state), logger, TAG),
+ createDialogLaunchOnClickListener(
+ createShareToAppDialogDelegate(state),
+ dialogTransitionAnimator,
+ DialogCuj(
+ Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP,
+ tag = "Share to app",
+ ),
+ logger,
+ TAG,
+ ),
)
}
@@ -100,7 +134,7 @@
EndShareToAppDialogDelegate(
endMediaProjectionDialogHelper,
context,
- stopAction = this::stopProjecting,
+ stopAction = this::stopProjectingFromDialog,
state,
)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
index 40f86f9..17cf60b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/OngoingActivityChipModel.kt
@@ -24,9 +24,15 @@
/** Condensed name representing the model, used for logs. */
abstract val logName: String
- /** This chip shouldn't be shown. */
- data object Hidden : OngoingActivityChipModel() {
- override val logName = "Hidden"
+ /**
+ * This chip shouldn't be shown.
+ *
+ * @property shouldAnimate true if the transition from [Shown] to [Hidden] should be animated,
+ * and false if that transition should *not* be animated (i.e. the chip view should
+ * immediately disappear).
+ */
+ data class Hidden(val shouldAnimate: Boolean = true) : OngoingActivityChipModel() {
+ override val logName = "Hidden(anim=$shouldAnimate)"
}
/** This chip should be shown with the given information. */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt
new file mode 100644
index 0000000..92e72c2
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelper.kt
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.chips.ui.viewmodel
+
+import android.annotation.SuppressLint
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.flow.transformLatest
+import kotlinx.coroutines.launch
+
+/**
+ * A class that can help [OngoingActivityChipViewModel] instances with various transition states.
+ *
+ * For now, this class's only functionality is immediately hiding the chip if the user has tapped an
+ * activity chip and then clicked "Stop" on the resulting dialog. There's a bit of a delay between
+ * when the user clicks "Stop" and when the system services notify SysUI that the activity has
+ * indeed stopped. We don't want the chip to briefly show for a few frames during that delay, so
+ * this class helps us immediately hide the chip as soon as the user clicks "Stop" in the dialog.
+ * See b/353249803#comment4.
+ */
+@OptIn(ExperimentalCoroutinesApi::class)
+class ChipTransitionHelper(@Application private val scope: CoroutineScope) {
+ /** A flow that emits each time the user has clicked "Stop" on the dialog. */
+ @SuppressLint("SharedFlowCreation")
+ private val activityStoppedFromDialogEvent = MutableSharedFlow<Unit>()
+
+ /** True if the user recently stopped the activity from the dialog. */
+ private val wasActivityRecentlyStoppedFromDialog: Flow<Boolean> =
+ activityStoppedFromDialogEvent
+ .transformLatest {
+ // Give system services 500ms to stop the activity and notify SysUI. Once more than
+ // 500ms has elapsed, we should go back to using the current system service
+ // information as the source of truth.
+ emit(true)
+ delay(500)
+ emit(false)
+ }
+ // Use stateIn so that the flow created in [createChipFlow] is guaranteed to
+ // emit. (`combine`s require that all input flows have emitted.)
+ .stateIn(scope, SharingStarted.Lazily, false)
+
+ /**
+ * Notifies this class that the user just clicked "Stop" on the stop dialog that's shown when
+ * the chip is tapped.
+ *
+ * Call this method in order to immediately hide the chip.
+ */
+ fun onActivityStoppedFromDialog() {
+ // Because this event causes UI changes, make sure it's launched on the main thread scope.
+ scope.launch { activityStoppedFromDialogEvent.emit(Unit) }
+ }
+
+ /**
+ * Creates a flow that will forcibly hide the chip if the user recently stopped the activity
+ * (see [onActivityStoppedFromDialog]). In general, this flow just uses value in [chip].
+ */
+ fun createChipFlow(chip: Flow<OngoingActivityChipModel>): StateFlow<OngoingActivityChipModel> {
+ return combine(
+ chip,
+ wasActivityRecentlyStoppedFromDialog,
+ ) { chipModel, activityRecentlyStopped ->
+ if (activityRecentlyStopped) {
+ // There's a bit of a delay between when the user stops an activity via
+ // SysUI and when the system services notify SysUI that the activity has
+ // indeed stopped. Prevent the chip from showing during this delay by
+ // immediately hiding it without any animation.
+ OngoingActivityChipModel.Hidden(shouldAnimate = false)
+ } else {
+ chipModel
+ }
+ }
+ .stateIn(scope, SharingStarted.WhileSubscribed(), OngoingActivityChipModel.Hidden())
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModel.kt
index ee010f7..2fc366b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModel.kt
@@ -17,10 +17,14 @@
package com.android.systemui.statusbar.chips.ui.viewmodel
import android.view.View
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
+import com.android.systemui.res.R
import com.android.systemui.statusbar.chips.StatusBarChipsLog
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
import com.android.systemui.statusbar.phone.SystemUIDialog
import kotlinx.coroutines.flow.StateFlow
@@ -36,13 +40,19 @@
/** Creates a chip click listener that launches a dialog created by [dialogDelegate]. */
fun createDialogLaunchOnClickListener(
dialogDelegate: SystemUIDialog.Delegate,
+ dialogTransitionAnimator: DialogTransitionAnimator,
+ cuj: DialogCuj,
@StatusBarChipsLog logger: LogBuffer,
tag: String,
): View.OnClickListener {
- return View.OnClickListener { _ ->
+ return View.OnClickListener { view ->
logger.log(tag, LogLevel.INFO, {}, { "Chip clicked" })
val dialog = dialogDelegate.createDialog()
- dialog.show()
+ val launchableView =
+ view.requireViewById<ChipBackgroundContainer>(
+ R.id.ongoing_activity_chip_background
+ )
+ dialogTransitionAnimator.showFromView(dialog, launchableView, cuj)
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt
index 15c348e..b0d897d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt
@@ -26,11 +26,14 @@
import com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel.ScreenRecordChipViewModel
import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.ShareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.util.kotlin.pairwise
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
/**
@@ -50,49 +53,132 @@
callChipViewModel: CallChipViewModel,
@StatusBarChipsLog private val logger: LogBuffer,
) {
+ private enum class ChipType {
+ ScreenRecord,
+ ShareToApp,
+ CastToOtherDevice,
+ Call,
+ }
+
+ /** Model that helps us internally track the various chip states from each of the types. */
+ private sealed interface InternalChipModel {
+ /**
+ * Represents that we've internally decided to show the chip with type [type] with the given
+ * [model] information.
+ */
+ data class Shown(val type: ChipType, val model: OngoingActivityChipModel.Shown) :
+ InternalChipModel
+
+ /**
+ * Represents that all chip types would like to be hidden. Each value specifies *how* that
+ * chip type should get hidden.
+ */
+ data class Hidden(
+ val screenRecord: OngoingActivityChipModel.Hidden,
+ val shareToApp: OngoingActivityChipModel.Hidden,
+ val castToOtherDevice: OngoingActivityChipModel.Hidden,
+ val call: OngoingActivityChipModel.Hidden,
+ ) : InternalChipModel
+ }
+
+ private val internalChip: Flow<InternalChipModel> =
+ combine(
+ screenRecordChipViewModel.chip,
+ shareToAppChipViewModel.chip,
+ castToOtherDeviceChipViewModel.chip,
+ callChipViewModel.chip,
+ ) { screenRecord, shareToApp, castToOtherDevice, call ->
+ logger.log(
+ TAG,
+ LogLevel.INFO,
+ {
+ str1 = screenRecord.logName
+ str2 = shareToApp.logName
+ str3 = castToOtherDevice.logName
+ },
+ { "Chips: ScreenRecord=$str1 > ShareToApp=$str2 > CastToOther=$str3..." },
+ )
+ logger.log(TAG, LogLevel.INFO, { str1 = call.logName }, { "... > Call=$str1" })
+ // This `when` statement shows the priority order of the chips.
+ when {
+ // Screen recording also activates the media projection APIs, so whenever the
+ // screen recording chip is active, the media projection chip would also be
+ // active. We want the screen-recording-specific chip shown in this case, so we
+ // give the screen recording chip priority. See b/296461748.
+ screenRecord is OngoingActivityChipModel.Shown ->
+ InternalChipModel.Shown(ChipType.ScreenRecord, screenRecord)
+ shareToApp is OngoingActivityChipModel.Shown ->
+ InternalChipModel.Shown(ChipType.ShareToApp, shareToApp)
+ castToOtherDevice is OngoingActivityChipModel.Shown ->
+ InternalChipModel.Shown(ChipType.CastToOtherDevice, castToOtherDevice)
+ call is OngoingActivityChipModel.Shown ->
+ InternalChipModel.Shown(ChipType.Call, call)
+ else -> {
+ // We should only get here if all chip types are hidden
+ check(screenRecord is OngoingActivityChipModel.Hidden)
+ check(shareToApp is OngoingActivityChipModel.Hidden)
+ check(castToOtherDevice is OngoingActivityChipModel.Hidden)
+ check(call is OngoingActivityChipModel.Hidden)
+ InternalChipModel.Hidden(
+ screenRecord = screenRecord,
+ shareToApp = shareToApp,
+ castToOtherDevice = castToOtherDevice,
+ call = call,
+ )
+ }
+ }
+ }
+
/**
* A flow modeling the chip that should be shown in the status bar after accounting for possibly
- * multiple ongoing activities.
+ * multiple ongoing activities and animation requirements.
*
* [com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment] is responsible for
* actually displaying the chip.
*/
val chip: StateFlow<OngoingActivityChipModel> =
- combine(
- screenRecordChipViewModel.chip,
- shareToAppChipViewModel.chip,
- castToOtherDeviceChipViewModel.chip,
- callChipViewModel.chip,
- ) { screenRecord, shareToApp, castToOtherDevice, call ->
- logger.log(
- TAG,
- LogLevel.INFO,
- {
- str1 = screenRecord.logName
- str2 = shareToApp.logName
- str3 = castToOtherDevice.logName
- },
- { "Chips: ScreenRecord=$str1 > ShareToApp=$str2 > CastToOther=$str3..." },
- )
- logger.log(TAG, LogLevel.INFO, { str1 = call.logName }, { "... > Call=$str1" })
- // This `when` statement shows the priority order of the chips
- when {
- // Screen recording also activates the media projection APIs, so whenever the
- // screen recording chip is active, the media projection chip would also be
- // active. We want the screen-recording-specific chip shown in this case, so we
- // give the screen recording chip priority. See b/296461748.
- screenRecord is OngoingActivityChipModel.Shown -> screenRecord
- shareToApp is OngoingActivityChipModel.Shown -> shareToApp
- castToOtherDevice is OngoingActivityChipModel.Shown -> castToOtherDevice
- else -> call
+ internalChip
+ .pairwise(initialValue = DEFAULT_INTERNAL_HIDDEN_MODEL)
+ .map { (old, new) ->
+ if (old is InternalChipModel.Shown && new is InternalChipModel.Hidden) {
+ // If we're transitioning from showing the chip to hiding the chip, different
+ // chips require different animation behaviors. For example, the screen share
+ // chips shouldn't animate if the user stopped the screen share from the dialog
+ // (see b/353249803#comment4), but the call chip should always animate.
+ //
+ // This `when` block makes sure that when we're transitioning from Shown to
+ // Hidden, we check what chip type was previously showing and we use that chip
+ // type's hide animation behavior.
+ when (old.type) {
+ ChipType.ScreenRecord -> new.screenRecord
+ ChipType.ShareToApp -> new.shareToApp
+ ChipType.CastToOtherDevice -> new.castToOtherDevice
+ ChipType.Call -> new.call
+ }
+ } else if (new is InternalChipModel.Shown) {
+ // If we have a chip to show, always show it.
+ new.model
+ } else {
+ // In the Hidden -> Hidden transition, it shouldn't matter which hidden model we
+ // choose because no animation should happen regardless.
+ OngoingActivityChipModel.Hidden()
}
}
// Some of the chips could have timers in them and we don't want the start time
// for those timers to get reset for any reason. So, as soon as any subscriber has
- // requested the chip information, we need to maintain it forever. See b/347726238.
- .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden)
+ // requested the chip information, we maintain it forever by using
+ // [SharingStarted.Lazily]. See b/347726238.
+ .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden())
companion object {
private const val TAG = "ChipsViewModel"
+
+ private val DEFAULT_INTERNAL_HIDDEN_MODEL =
+ InternalChipModel.Hidden(
+ screenRecord = OngoingActivityChipModel.Hidden(),
+ shareToApp = OngoingActivityChipModel.Hidden(),
+ castToOtherDevice = OngoingActivityChipModel.Hidden(),
+ call = OngoingActivityChipModel.Hidden(),
+ )
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt
index 55c6790..b1b2a65 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.kt
@@ -16,62 +16,15 @@
package com.android.systemui.statusbar.notification.collection.coordinator
-import android.app.NotificationManager
-import android.os.UserHandle
-import android.provider.Settings
-import androidx.annotation.VisibleForTesting
-import com.android.systemui.Dumpable
-import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.dagger.qualifiers.Background
-import com.android.systemui.dump.DumpManager
-import com.android.systemui.keyguard.data.repository.KeyguardRepository
-import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
-import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.plugins.statusbar.StatusBarStateController
-import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.StatusBarState
-import com.android.systemui.statusbar.expansionChanges
-import com.android.systemui.statusbar.notification.collection.GroupEntry
-import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter
-import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter
-import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
-import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider
-import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor
import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider
-import com.android.systemui.statusbar.notification.shared.NotificationMinimalismPrototype
-import com.android.systemui.statusbar.notification.stack.BUCKET_TOP_ONGOING
-import com.android.systemui.statusbar.notification.stack.BUCKET_TOP_UNSEEN
-import com.android.systemui.statusbar.policy.HeadsUpManager
-import com.android.systemui.statusbar.policy.headsUpEvents
-import com.android.systemui.util.asIndenting
-import com.android.systemui.util.indentIfPossible
-import com.android.systemui.util.settings.SecureSettings
-import com.android.systemui.util.settings.SettingsProxyExt.observerFlow
-import java.io.PrintWriter
import javax.inject.Inject
-import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.flow.collectLatest
-import kotlinx.coroutines.flow.conflate
-import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.flowOf
-import kotlinx.coroutines.flow.flowOn
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onEach
-import kotlinx.coroutines.flow.onStart
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.yield
/**
* Filters low priority and privacy-sensitive notifications from the lockscreen, and hides section
@@ -82,24 +35,10 @@
class KeyguardCoordinator
@Inject
constructor(
- @Background private val bgDispatcher: CoroutineDispatcher,
- private val dumpManager: DumpManager,
- private val headsUpManager: HeadsUpManager,
private val keyguardNotificationVisibilityProvider: KeyguardNotificationVisibilityProvider,
- private val keyguardRepository: KeyguardRepository,
- private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
- private val logger: KeyguardCoordinatorLogger,
- @Application private val scope: CoroutineScope,
private val sectionHeaderVisibilityProvider: SectionHeaderVisibilityProvider,
- private val secureSettings: SecureSettings,
- private val seenNotificationsInteractor: SeenNotificationsInteractor,
private val statusBarStateController: StatusBarStateController,
-) : Coordinator, Dumpable {
-
- private val unseenNotifications = mutableSetOf<NotificationEntry>()
- private val unseenEntryAdded = MutableSharedFlow<NotificationEntry>(extraBufferCapacity = 1)
- private val unseenEntryRemoved = MutableSharedFlow<NotificationEntry>(extraBufferCapacity = 1)
- private var unseenFilterEnabled = false
+) : Coordinator {
override fun attach(pipeline: NotifPipeline) {
setupInvalidateNotifListCallbacks()
@@ -107,385 +46,14 @@
pipeline.addFinalizeFilter(notifFilter)
keyguardNotificationVisibilityProvider.addOnStateChangedListener(::invalidateListFromFilter)
updateSectionHeadersVisibility()
- attachUnseenFilter(pipeline)
}
- private fun attachUnseenFilter(pipeline: NotifPipeline) {
- if (NotificationMinimalismPrototype.V2.isEnabled) {
- pipeline.addPromoter(unseenNotifPromoter)
- pipeline.addOnBeforeTransformGroupsListener(::pickOutTopUnseenNotifs)
- }
- pipeline.addFinalizeFilter(unseenNotifFilter)
- pipeline.addCollectionListener(collectionListener)
- scope.launch { trackUnseenFilterSettingChanges() }
- dumpManager.registerDumpable(this)
- }
-
- private suspend fun trackSeenNotifications() {
- // Whether or not keyguard is visible (or occluded).
- val isKeyguardPresent: Flow<Boolean> =
- keyguardTransitionInteractor
- .transitionValue(
- scene = Scenes.Gone,
- stateWithoutSceneContainer = KeyguardState.GONE,
- )
- .map { it == 0f }
- .distinctUntilChanged()
- .onEach { trackingUnseen -> logger.logTrackingUnseen(trackingUnseen) }
-
- // Separately track seen notifications while the device is locked, applying once the device
- // is unlocked.
- val notificationsSeenWhileLocked = mutableSetOf<NotificationEntry>()
-
- // Use [collectLatest] to cancel any running jobs when [trackingUnseen] changes.
- isKeyguardPresent.collectLatest { isKeyguardPresent: Boolean ->
- if (isKeyguardPresent) {
- // Keyguard is not gone, notifications need to be visible for a certain threshold
- // before being marked as seen
- trackSeenNotificationsWhileLocked(notificationsSeenWhileLocked)
- } else {
- // Mark all seen-while-locked notifications as seen for real.
- if (notificationsSeenWhileLocked.isNotEmpty()) {
- unseenNotifications.removeAll(notificationsSeenWhileLocked)
- logger.logAllMarkedSeenOnUnlock(
- seenCount = notificationsSeenWhileLocked.size,
- remainingUnseenCount = unseenNotifications.size
- )
- notificationsSeenWhileLocked.clear()
- }
- unseenNotifFilter.invalidateList("keyguard no longer showing")
- // Keyguard is gone, notifications can be immediately marked as seen when they
- // become visible.
- trackSeenNotificationsWhileUnlocked()
- }
- }
- }
-
- /**
- * Keep [notificationsSeenWhileLocked] updated to represent which notifications have actually
- * been "seen" while the device is on the keyguard.
- */
- private suspend fun trackSeenNotificationsWhileLocked(
- notificationsSeenWhileLocked: MutableSet<NotificationEntry>,
- ) = coroutineScope {
- // Remove removed notifications from the set
- launch {
- unseenEntryRemoved.collect { entry ->
- if (notificationsSeenWhileLocked.remove(entry)) {
- logger.logRemoveSeenOnLockscreen(entry)
- }
- }
- }
- // Use collectLatest so that the timeout delay is cancelled if the device enters doze, and
- // is restarted when doze ends.
- keyguardRepository.isDozing.collectLatest { isDozing ->
- if (!isDozing) {
- trackSeenNotificationsWhileLockedAndNotDozing(notificationsSeenWhileLocked)
- }
- }
- }
-
- /**
- * Keep [notificationsSeenWhileLocked] updated to represent which notifications have actually
- * been "seen" while the device is on the keyguard and not dozing. Any new and existing unseen
- * notifications are not marked as seen until they are visible for the [SEEN_TIMEOUT] duration.
- */
- private suspend fun trackSeenNotificationsWhileLockedAndNotDozing(
- notificationsSeenWhileLocked: MutableSet<NotificationEntry>
- ) = coroutineScope {
- // All child tracking jobs will be cancelled automatically when this is cancelled.
- val trackingJobsByEntry = mutableMapOf<NotificationEntry, Job>()
-
- /**
- * Wait for the user to spend enough time on the lock screen before removing notification
- * from unseen set upon unlock.
- */
- suspend fun trackSeenDurationThreshold(entry: NotificationEntry) {
- if (notificationsSeenWhileLocked.remove(entry)) {
- logger.logResetSeenOnLockscreen(entry)
- }
- delay(SEEN_TIMEOUT)
- notificationsSeenWhileLocked.add(entry)
- trackingJobsByEntry.remove(entry)
- logger.logSeenOnLockscreen(entry)
- }
-
- /** Stop any unseen tracking when a notification is removed. */
- suspend fun stopTrackingRemovedNotifs(): Nothing =
- unseenEntryRemoved.collect { entry ->
- trackingJobsByEntry.remove(entry)?.let {
- it.cancel()
- logger.logStopTrackingLockscreenSeenDuration(entry)
- }
- }
-
- /** Start tracking new notifications when they are posted. */
- suspend fun trackNewUnseenNotifs(): Nothing = coroutineScope {
- unseenEntryAdded.collect { entry ->
- logger.logTrackingLockscreenSeenDuration(entry)
- // If this is an update, reset the tracking.
- trackingJobsByEntry[entry]?.let {
- it.cancel()
- logger.logResetSeenOnLockscreen(entry)
- }
- trackingJobsByEntry[entry] = launch { trackSeenDurationThreshold(entry) }
- }
- }
-
- // Start tracking for all notifications that are currently unseen.
- logger.logTrackingLockscreenSeenDuration(unseenNotifications)
- unseenNotifications.forEach { entry ->
- trackingJobsByEntry[entry] = launch { trackSeenDurationThreshold(entry) }
- }
-
- launch { trackNewUnseenNotifs() }
- launch { stopTrackingRemovedNotifs() }
- }
-
- // Track "seen" notifications, marking them as such when either shade is expanded or the
- // notification becomes heads up.
- private suspend fun trackSeenNotificationsWhileUnlocked() {
- coroutineScope {
- launch { clearUnseenNotificationsWhenShadeIsExpanded() }
- launch { markHeadsUpNotificationsAsSeen() }
- }
- }
-
- private suspend fun clearUnseenNotificationsWhenShadeIsExpanded() {
- statusBarStateController.expansionChanges.collectLatest { isExpanded ->
- // Give keyguard events time to propagate, in case this expansion is part of the
- // keyguard transition and not the user expanding the shade
- yield()
- if (isExpanded) {
- logger.logShadeExpanded()
- unseenNotifications.clear()
- }
- }
- }
-
- private suspend fun markHeadsUpNotificationsAsSeen() {
- headsUpManager.allEntries
- .filter { it.isRowPinned }
- .forEach { unseenNotifications.remove(it) }
- headsUpManager.headsUpEvents.collect { (entry, isHun) ->
- if (isHun) {
- logger.logUnseenHun(entry.key)
- unseenNotifications.remove(entry)
- }
- }
- }
-
- private fun unseenFeatureEnabled(): Flow<Boolean> {
- if (
- NotificationMinimalismPrototype.V1.isEnabled ||
- NotificationMinimalismPrototype.V2.isEnabled
- ) {
- return flowOf(true)
- }
- return secureSettings
- // emit whenever the setting has changed
- .observerFlow(
- UserHandle.USER_ALL,
- Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
- )
- // perform a query immediately
- .onStart { emit(Unit) }
- // for each change, lookup the new value
- .map {
- secureSettings.getIntForUser(
- name = Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
- def = 0,
- userHandle = UserHandle.USER_CURRENT,
- ) == 1
- }
- // don't emit anything if nothing has changed
- .distinctUntilChanged()
- // perform lookups on the bg thread pool
- .flowOn(bgDispatcher)
- // only track the most recent emission, if events are happening faster than they can be
- // consumed
- .conflate()
- }
-
- private suspend fun trackUnseenFilterSettingChanges() {
- unseenFeatureEnabled().collectLatest { setting ->
- // update local field and invalidate if necessary
- if (setting != unseenFilterEnabled) {
- unseenFilterEnabled = setting
- unseenNotifFilter.invalidateList("unseen setting changed")
- }
- // if the setting is enabled, then start tracking and filtering unseen notifications
- if (setting) {
- trackSeenNotifications()
- }
- }
- }
-
- private val collectionListener =
- object : NotifCollectionListener {
- override fun onEntryAdded(entry: NotificationEntry) {
- if (
- keyguardRepository.isKeyguardShowing() || !statusBarStateController.isExpanded
- ) {
- logger.logUnseenAdded(entry.key)
- unseenNotifications.add(entry)
- unseenEntryAdded.tryEmit(entry)
- }
- }
-
- override fun onEntryUpdated(entry: NotificationEntry) {
- if (
- keyguardRepository.isKeyguardShowing() || !statusBarStateController.isExpanded
- ) {
- logger.logUnseenUpdated(entry.key)
- unseenNotifications.add(entry)
- unseenEntryAdded.tryEmit(entry)
- }
- }
-
- override fun onEntryRemoved(entry: NotificationEntry, reason: Int) {
- if (unseenNotifications.remove(entry)) {
- logger.logUnseenRemoved(entry.key)
- unseenEntryRemoved.tryEmit(entry)
- }
- }
- }
-
- private fun pickOutTopUnseenNotifs(list: List<ListEntry>) {
- if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return
- // Only ever elevate a top unseen notification on keyguard, not even locked shade
- if (statusBarStateController.state != StatusBarState.KEYGUARD) {
- seenNotificationsInteractor.setTopOngoingNotification(null)
- seenNotificationsInteractor.setTopUnseenNotification(null)
- return
- }
- // On keyguard pick the top-ranked unseen or ongoing notification to elevate
- val nonSummaryEntries: Sequence<NotificationEntry> =
- list
- .asSequence()
- .flatMap {
- when (it) {
- is NotificationEntry -> listOfNotNull(it)
- is GroupEntry -> it.children
- else -> error("unhandled type of $it")
- }
- }
- .filter { it.importance >= NotificationManager.IMPORTANCE_DEFAULT }
- seenNotificationsInteractor.setTopOngoingNotification(
- nonSummaryEntries
- .filter { ColorizedFgsCoordinator.isRichOngoing(it) }
- .minByOrNull { it.ranking.rank }
- )
- seenNotificationsInteractor.setTopUnseenNotification(
- nonSummaryEntries
- .filter { !ColorizedFgsCoordinator.isRichOngoing(it) && it in unseenNotifications }
- .minByOrNull { it.ranking.rank }
- )
- }
-
- @VisibleForTesting
- internal val unseenNotifPromoter =
- object : NotifPromoter("$TAG-unseen") {
- override fun shouldPromoteToTopLevel(child: NotificationEntry): Boolean =
- if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) false
- else if (!NotificationMinimalismPrototype.V2.ungroupTopUnseen) false
- else
- seenNotificationsInteractor.isTopOngoingNotification(child) ||
- seenNotificationsInteractor.isTopUnseenNotification(child)
- }
-
- val topOngoingSectioner =
- object : NotifSectioner("TopOngoing", BUCKET_TOP_ONGOING) {
- override fun isInSection(entry: ListEntry): Boolean {
- if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return false
- return entry.anyEntry { notificationEntry ->
- seenNotificationsInteractor.isTopOngoingNotification(notificationEntry)
- }
- }
- }
-
- val topUnseenSectioner =
- object : NotifSectioner("TopUnseen", BUCKET_TOP_UNSEEN) {
- override fun isInSection(entry: ListEntry): Boolean {
- if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return false
- return entry.anyEntry { notificationEntry ->
- seenNotificationsInteractor.isTopUnseenNotification(notificationEntry)
- }
- }
- }
-
- private fun ListEntry.anyEntry(predicate: (NotificationEntry?) -> Boolean) =
- when {
- predicate(representativeEntry) -> true
- this !is GroupEntry -> false
- else -> children.any(predicate)
- }
-
- @VisibleForTesting
- internal val unseenNotifFilter =
- object : NotifFilter("$TAG-unseen") {
-
- var hasFilteredAnyNotifs = false
-
- /**
- * Encapsulates a definition of "being on the keyguard". Note that these two definitions
- * are wildly different: [StatusBarState.KEYGUARD] is when on the lock screen and does
- * not include shade or occluded states, whereas [KeyguardRepository.isKeyguardShowing]
- * is any state where the keyguard has not been dismissed, including locked shade and
- * occluded lock screen.
- *
- * Returning false for locked shade and occluded states means that this filter will
- * allow seen notifications to appear in the locked shade.
- */
- private fun isOnKeyguard(): Boolean =
- if (NotificationMinimalismPrototype.V2.isEnabled) {
- false // disable this feature under this prototype
- } else if (
- NotificationMinimalismPrototype.V1.isEnabled &&
- NotificationMinimalismPrototype.V1.showOnLockedShade
- ) {
- statusBarStateController.state == StatusBarState.KEYGUARD
- } else {
- keyguardRepository.isKeyguardShowing()
- }
-
- override fun shouldFilterOut(entry: NotificationEntry, now: Long): Boolean =
- when {
- // Don't apply filter if the setting is disabled
- !unseenFilterEnabled -> false
- // Don't apply filter if the keyguard isn't currently showing
- !isOnKeyguard() -> false
- // Don't apply the filter if the notification is unseen
- unseenNotifications.contains(entry) -> false
- // Don't apply the filter to (non-promoted) group summaries
- // - summary will be pruned if necessary, depending on if children are filtered
- entry.parent?.summary == entry -> false
- // Check that the entry satisfies certain characteristics that would bypass the
- // filter
- shouldIgnoreUnseenCheck(entry) -> false
- else -> true
- }.also { hasFiltered -> hasFilteredAnyNotifs = hasFilteredAnyNotifs || hasFiltered }
-
- override fun onCleanup() {
- logger.logProviderHasFilteredOutSeenNotifs(hasFilteredAnyNotifs)
- seenNotificationsInteractor.setHasFilteredOutSeenNotifications(hasFilteredAnyNotifs)
- hasFilteredAnyNotifs = false
- }
- }
-
private val notifFilter: NotifFilter =
object : NotifFilter(TAG) {
override fun shouldFilterOut(entry: NotificationEntry, now: Long): Boolean =
keyguardNotificationVisibilityProvider.shouldHideNotification(entry)
}
- private fun shouldIgnoreUnseenCheck(entry: NotificationEntry): Boolean =
- when {
- entry.isMediaNotification -> true
- entry.sbn.isOngoing -> true
- else -> false
- }
-
// TODO(b/206118999): merge this class with SensitiveContentCoordinator which also depends on
// these same updates
private fun setupInvalidateNotifListCallbacks() {}
@@ -502,22 +70,7 @@
sectionHeaderVisibilityProvider.sectionHeadersVisible = showSections
}
- override fun dump(pw: PrintWriter, args: Array<out String>) =
- with(pw.asIndenting()) {
- println(
- "notificationListInteractor.hasFilteredOutSeenNotifications.value=" +
- seenNotificationsInteractor.hasFilteredOutSeenNotifications.value
- )
- println("unseen notifications:")
- indentIfPossible {
- for (notification in unseenNotifications) {
- println(notification.key)
- }
- }
- }
-
companion object {
private const val TAG = "KeyguardCoordinator"
- private val SEEN_TIMEOUT = 5.seconds
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
index e038982..99327d1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
@@ -17,7 +17,11 @@
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags.LOCKSCREEN_WALLPAPER_DREAM_ENABLED
-import com.android.systemui.statusbar.notification.collection.*
+import com.android.systemui.statusbar.notification.collection.NotifPipeline
+import com.android.systemui.statusbar.notification.collection.NotificationClassificationFlag
+import com.android.systemui.statusbar.notification.collection.PipelineDumpable
+import com.android.systemui.statusbar.notification.collection.PipelineDumper
+import com.android.systemui.statusbar.notification.collection.SortBySectionTimeFlag
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
import com.android.systemui.statusbar.notification.collection.provider.SectionStyleProvider
@@ -42,6 +46,7 @@
hideLocallyDismissedNotifsCoordinator: HideLocallyDismissedNotifsCoordinator,
hideNotifsForOtherUsersCoordinator: HideNotifsForOtherUsersCoordinator,
keyguardCoordinator: KeyguardCoordinator,
+ unseenKeyguardCoordinator: OriginalUnseenKeyguardCoordinator,
rankingCoordinator: RankingCoordinator,
colorizedFgsCoordinator: ColorizedFgsCoordinator,
deviceProvisionedCoordinator: DeviceProvisionedCoordinator,
@@ -82,6 +87,7 @@
mCoordinators.add(hideLocallyDismissedNotifsCoordinator)
mCoordinators.add(hideNotifsForOtherUsersCoordinator)
mCoordinators.add(keyguardCoordinator)
+ mCoordinators.add(unseenKeyguardCoordinator)
mCoordinators.add(rankingCoordinator)
mCoordinators.add(colorizedFgsCoordinator)
mCoordinators.add(deviceProvisionedCoordinator)
@@ -115,11 +121,11 @@
// Manually add Ordered Sections
if (NotificationMinimalismPrototype.V2.isEnabled) {
- mOrderedSections.add(keyguardCoordinator.topOngoingSectioner) // Top Ongoing
+ mOrderedSections.add(unseenKeyguardCoordinator.topOngoingSectioner) // Top Ongoing
}
mOrderedSections.add(headsUpCoordinator.sectioner) // HeadsUp
if (NotificationMinimalismPrototype.V2.isEnabled) {
- mOrderedSections.add(keyguardCoordinator.topUnseenSectioner) // Top Unseen
+ mOrderedSections.add(unseenKeyguardCoordinator.topUnseenSectioner) // Top Unseen
}
mOrderedSections.add(colorizedFgsCoordinator.sectioner) // ForegroundService
if (PriorityPeopleSection.isEnabled) {
@@ -131,10 +137,10 @@
}
mOrderedSections.add(rankingCoordinator.alertingSectioner) // Alerting
if (NotificationClassificationFlag.isEnabled) {
- mOrderedSections.add(bundleCoordinator.newsSectioner);
- mOrderedSections.add(bundleCoordinator.socialSectioner);
- mOrderedSections.add(bundleCoordinator.recsSectioner);
- mOrderedSections.add(bundleCoordinator.promoSectioner);
+ mOrderedSections.add(bundleCoordinator.newsSectioner)
+ mOrderedSections.add(bundleCoordinator.socialSectioner)
+ mOrderedSections.add(bundleCoordinator.recsSectioner)
+ mOrderedSections.add(bundleCoordinator.promoSectioner)
}
mOrderedSections.add(rankingCoordinator.silentSectioner) // Silent
mOrderedSections.add(rankingCoordinator.minimizedSectioner) // Minimized
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt
new file mode 100644
index 0000000..5dd1663
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt
@@ -0,0 +1,490 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.notification.collection.coordinator
+
+import android.annotation.SuppressLint
+import android.app.NotificationManager
+import android.os.UserHandle
+import android.provider.Settings
+import androidx.annotation.VisibleForTesting
+import com.android.systemui.Dumpable
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.dump.DumpManager
+import com.android.systemui.keyguard.data.repository.KeyguardRepository
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.plugins.statusbar.StatusBarStateController
+import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.statusbar.StatusBarState
+import com.android.systemui.statusbar.expansionChanges
+import com.android.systemui.statusbar.notification.collection.GroupEntry
+import com.android.systemui.statusbar.notification.collection.ListEntry
+import com.android.systemui.statusbar.notification.collection.NotifPipeline
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
+import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor
+import com.android.systemui.statusbar.notification.shared.NotificationMinimalismPrototype
+import com.android.systemui.statusbar.notification.stack.BUCKET_TOP_ONGOING
+import com.android.systemui.statusbar.notification.stack.BUCKET_TOP_UNSEEN
+import com.android.systemui.statusbar.policy.HeadsUpManager
+import com.android.systemui.statusbar.policy.headsUpEvents
+import com.android.systemui.util.asIndenting
+import com.android.systemui.util.indentIfPossible
+import com.android.systemui.util.settings.SecureSettings
+import com.android.systemui.util.settings.SettingsProxyExt.observerFlow
+import java.io.PrintWriter
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.seconds
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.flow.onStart
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.yield
+
+/**
+ * Filters low priority and privacy-sensitive notifications from the lockscreen, and hides section
+ * headers on the lockscreen. If enabled, it will also track and hide seen notifications on the
+ * lockscreen.
+ */
+@CoordinatorScope
+@SuppressLint("SharedFlowCreation")
+class OriginalUnseenKeyguardCoordinator
+@Inject
+constructor(
+ @Background private val bgDispatcher: CoroutineDispatcher,
+ private val dumpManager: DumpManager,
+ private val headsUpManager: HeadsUpManager,
+ private val keyguardRepository: KeyguardRepository,
+ private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
+ private val logger: KeyguardCoordinatorLogger,
+ @Application private val scope: CoroutineScope,
+ private val secureSettings: SecureSettings,
+ private val seenNotificationsInteractor: SeenNotificationsInteractor,
+ private val statusBarStateController: StatusBarStateController,
+) : Coordinator, Dumpable {
+
+ private val unseenNotifications = mutableSetOf<NotificationEntry>()
+ private val unseenEntryAdded = MutableSharedFlow<NotificationEntry>(extraBufferCapacity = 1)
+ private val unseenEntryRemoved = MutableSharedFlow<NotificationEntry>(extraBufferCapacity = 1)
+ private var unseenFilterEnabled = false
+
+ override fun attach(pipeline: NotifPipeline) {
+ if (NotificationMinimalismPrototype.V2.isEnabled) {
+ pipeline.addPromoter(unseenNotifPromoter)
+ pipeline.addOnBeforeTransformGroupsListener(::pickOutTopUnseenNotifs)
+ }
+ pipeline.addFinalizeFilter(unseenNotifFilter)
+ pipeline.addCollectionListener(collectionListener)
+ scope.launch { trackUnseenFilterSettingChanges() }
+ dumpManager.registerDumpable(this)
+ }
+
+ private suspend fun trackSeenNotifications() {
+ // Whether or not keyguard is visible (or occluded).
+ val isKeyguardPresentFlow: Flow<Boolean> =
+ keyguardTransitionInteractor
+ .transitionValue(
+ scene = Scenes.Gone,
+ stateWithoutSceneContainer = KeyguardState.GONE,
+ )
+ .map { it == 0f }
+ .distinctUntilChanged()
+ .onEach { trackingUnseen -> logger.logTrackingUnseen(trackingUnseen) }
+
+ // Separately track seen notifications while the device is locked, applying once the device
+ // is unlocked.
+ val notificationsSeenWhileLocked = mutableSetOf<NotificationEntry>()
+
+ // Use [collectLatest] to cancel any running jobs when [trackingUnseen] changes.
+ isKeyguardPresentFlow.collectLatest { isKeyguardPresent: Boolean ->
+ if (isKeyguardPresent) {
+ // Keyguard is not gone, notifications need to be visible for a certain threshold
+ // before being marked as seen
+ trackSeenNotificationsWhileLocked(notificationsSeenWhileLocked)
+ } else {
+ // Mark all seen-while-locked notifications as seen for real.
+ if (notificationsSeenWhileLocked.isNotEmpty()) {
+ unseenNotifications.removeAll(notificationsSeenWhileLocked)
+ logger.logAllMarkedSeenOnUnlock(
+ seenCount = notificationsSeenWhileLocked.size,
+ remainingUnseenCount = unseenNotifications.size
+ )
+ notificationsSeenWhileLocked.clear()
+ }
+ unseenNotifFilter.invalidateList("keyguard no longer showing")
+ // Keyguard is gone, notifications can be immediately marked as seen when they
+ // become visible.
+ trackSeenNotificationsWhileUnlocked()
+ }
+ }
+ }
+
+ /**
+ * Keep [notificationsSeenWhileLocked] updated to represent which notifications have actually
+ * been "seen" while the device is on the keyguard.
+ */
+ private suspend fun trackSeenNotificationsWhileLocked(
+ notificationsSeenWhileLocked: MutableSet<NotificationEntry>,
+ ) = coroutineScope {
+ // Remove removed notifications from the set
+ launch {
+ unseenEntryRemoved.collect { entry ->
+ if (notificationsSeenWhileLocked.remove(entry)) {
+ logger.logRemoveSeenOnLockscreen(entry)
+ }
+ }
+ }
+ // Use collectLatest so that the timeout delay is cancelled if the device enters doze, and
+ // is restarted when doze ends.
+ keyguardRepository.isDozing.collectLatest { isDozing ->
+ if (!isDozing) {
+ trackSeenNotificationsWhileLockedAndNotDozing(notificationsSeenWhileLocked)
+ }
+ }
+ }
+
+ /**
+ * Keep [notificationsSeenWhileLocked] updated to represent which notifications have actually
+ * been "seen" while the device is on the keyguard and not dozing. Any new and existing unseen
+ * notifications are not marked as seen until they are visible for the [SEEN_TIMEOUT] duration.
+ */
+ private suspend fun trackSeenNotificationsWhileLockedAndNotDozing(
+ notificationsSeenWhileLocked: MutableSet<NotificationEntry>
+ ) = coroutineScope {
+ // All child tracking jobs will be cancelled automatically when this is cancelled.
+ val trackingJobsByEntry = mutableMapOf<NotificationEntry, Job>()
+
+ /**
+ * Wait for the user to spend enough time on the lock screen before removing notification
+ * from unseen set upon unlock.
+ */
+ suspend fun trackSeenDurationThreshold(entry: NotificationEntry) {
+ if (notificationsSeenWhileLocked.remove(entry)) {
+ logger.logResetSeenOnLockscreen(entry)
+ }
+ delay(SEEN_TIMEOUT)
+ notificationsSeenWhileLocked.add(entry)
+ trackingJobsByEntry.remove(entry)
+ logger.logSeenOnLockscreen(entry)
+ }
+
+ /** Stop any unseen tracking when a notification is removed. */
+ suspend fun stopTrackingRemovedNotifs(): Nothing =
+ unseenEntryRemoved.collect { entry ->
+ trackingJobsByEntry.remove(entry)?.let {
+ it.cancel()
+ logger.logStopTrackingLockscreenSeenDuration(entry)
+ }
+ }
+
+ /** Start tracking new notifications when they are posted. */
+ suspend fun trackNewUnseenNotifs(): Nothing = coroutineScope {
+ unseenEntryAdded.collect { entry ->
+ logger.logTrackingLockscreenSeenDuration(entry)
+ // If this is an update, reset the tracking.
+ trackingJobsByEntry[entry]?.let {
+ it.cancel()
+ logger.logResetSeenOnLockscreen(entry)
+ }
+ trackingJobsByEntry[entry] = launch { trackSeenDurationThreshold(entry) }
+ }
+ }
+
+ // Start tracking for all notifications that are currently unseen.
+ logger.logTrackingLockscreenSeenDuration(unseenNotifications)
+ unseenNotifications.forEach { entry ->
+ trackingJobsByEntry[entry] = launch { trackSeenDurationThreshold(entry) }
+ }
+
+ launch { trackNewUnseenNotifs() }
+ launch { stopTrackingRemovedNotifs() }
+ }
+
+ // Track "seen" notifications, marking them as such when either shade is expanded or the
+ // notification becomes heads up.
+ private suspend fun trackSeenNotificationsWhileUnlocked() {
+ coroutineScope {
+ launch { clearUnseenNotificationsWhenShadeIsExpanded() }
+ launch { markHeadsUpNotificationsAsSeen() }
+ }
+ }
+
+ private suspend fun clearUnseenNotificationsWhenShadeIsExpanded() {
+ statusBarStateController.expansionChanges.collectLatest { isExpanded ->
+ // Give keyguard events time to propagate, in case this expansion is part of the
+ // keyguard transition and not the user expanding the shade
+ yield()
+ if (isExpanded) {
+ logger.logShadeExpanded()
+ unseenNotifications.clear()
+ }
+ }
+ }
+
+ private suspend fun markHeadsUpNotificationsAsSeen() {
+ headsUpManager.allEntries
+ .filter { it.isRowPinned }
+ .forEach { unseenNotifications.remove(it) }
+ headsUpManager.headsUpEvents.collect { (entry, isHun) ->
+ if (isHun) {
+ logger.logUnseenHun(entry.key)
+ unseenNotifications.remove(entry)
+ }
+ }
+ }
+
+ private fun unseenFeatureEnabled(): Flow<Boolean> {
+ if (
+ NotificationMinimalismPrototype.V1.isEnabled ||
+ NotificationMinimalismPrototype.V2.isEnabled
+ ) {
+ return flowOf(true)
+ }
+ return secureSettings
+ // emit whenever the setting has changed
+ .observerFlow(
+ UserHandle.USER_ALL,
+ Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
+ )
+ // perform a query immediately
+ .onStart { emit(Unit) }
+ // for each change, lookup the new value
+ .map {
+ secureSettings.getIntForUser(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
+ def = 0,
+ userHandle = UserHandle.USER_CURRENT,
+ ) == 1
+ }
+ // don't emit anything if nothing has changed
+ .distinctUntilChanged()
+ // perform lookups on the bg thread pool
+ .flowOn(bgDispatcher)
+ // only track the most recent emission, if events are happening faster than they can be
+ // consumed
+ .conflate()
+ }
+
+ private suspend fun trackUnseenFilterSettingChanges() {
+ unseenFeatureEnabled().collectLatest { setting ->
+ // update local field and invalidate if necessary
+ if (setting != unseenFilterEnabled) {
+ unseenFilterEnabled = setting
+ unseenNotifFilter.invalidateList("unseen setting changed")
+ }
+ // if the setting is enabled, then start tracking and filtering unseen notifications
+ if (setting) {
+ trackSeenNotifications()
+ }
+ }
+ }
+
+ private val collectionListener =
+ object : NotifCollectionListener {
+ override fun onEntryAdded(entry: NotificationEntry) {
+ if (
+ keyguardRepository.isKeyguardShowing() || !statusBarStateController.isExpanded
+ ) {
+ logger.logUnseenAdded(entry.key)
+ unseenNotifications.add(entry)
+ unseenEntryAdded.tryEmit(entry)
+ }
+ }
+
+ override fun onEntryUpdated(entry: NotificationEntry) {
+ if (
+ keyguardRepository.isKeyguardShowing() || !statusBarStateController.isExpanded
+ ) {
+ logger.logUnseenUpdated(entry.key)
+ unseenNotifications.add(entry)
+ unseenEntryAdded.tryEmit(entry)
+ }
+ }
+
+ override fun onEntryRemoved(entry: NotificationEntry, reason: Int) {
+ if (unseenNotifications.remove(entry)) {
+ logger.logUnseenRemoved(entry.key)
+ unseenEntryRemoved.tryEmit(entry)
+ }
+ }
+ }
+
+ private fun pickOutTopUnseenNotifs(list: List<ListEntry>) {
+ if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return
+ // Only ever elevate a top unseen notification on keyguard, not even locked shade
+ if (statusBarStateController.state != StatusBarState.KEYGUARD) {
+ seenNotificationsInteractor.setTopOngoingNotification(null)
+ seenNotificationsInteractor.setTopUnseenNotification(null)
+ return
+ }
+ // On keyguard pick the top-ranked unseen or ongoing notification to elevate
+ val nonSummaryEntries: Sequence<NotificationEntry> =
+ list
+ .asSequence()
+ .flatMap {
+ when (it) {
+ is NotificationEntry -> listOfNotNull(it)
+ is GroupEntry -> it.children
+ else -> error("unhandled type of $it")
+ }
+ }
+ .filter { it.importance >= NotificationManager.IMPORTANCE_DEFAULT }
+ seenNotificationsInteractor.setTopOngoingNotification(
+ nonSummaryEntries
+ .filter { ColorizedFgsCoordinator.isRichOngoing(it) }
+ .minByOrNull { it.ranking.rank }
+ )
+ seenNotificationsInteractor.setTopUnseenNotification(
+ nonSummaryEntries
+ .filter { !ColorizedFgsCoordinator.isRichOngoing(it) && it in unseenNotifications }
+ .minByOrNull { it.ranking.rank }
+ )
+ }
+
+ @VisibleForTesting
+ val unseenNotifPromoter =
+ object : NotifPromoter("$TAG-unseen") {
+ override fun shouldPromoteToTopLevel(child: NotificationEntry): Boolean =
+ if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) false
+ else if (!NotificationMinimalismPrototype.V2.ungroupTopUnseen) false
+ else
+ seenNotificationsInteractor.isTopOngoingNotification(child) ||
+ seenNotificationsInteractor.isTopUnseenNotification(child)
+ }
+
+ val topOngoingSectioner =
+ object : NotifSectioner("TopOngoing", BUCKET_TOP_ONGOING) {
+ override fun isInSection(entry: ListEntry): Boolean {
+ if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return false
+ return entry.anyEntry { notificationEntry ->
+ seenNotificationsInteractor.isTopOngoingNotification(notificationEntry)
+ }
+ }
+ }
+
+ val topUnseenSectioner =
+ object : NotifSectioner("TopUnseen", BUCKET_TOP_UNSEEN) {
+ override fun isInSection(entry: ListEntry): Boolean {
+ if (NotificationMinimalismPrototype.V2.isUnexpectedlyInLegacyMode()) return false
+ return entry.anyEntry { notificationEntry ->
+ seenNotificationsInteractor.isTopUnseenNotification(notificationEntry)
+ }
+ }
+ }
+
+ private fun ListEntry.anyEntry(predicate: (NotificationEntry?) -> Boolean) =
+ when {
+ predicate(representativeEntry) -> true
+ this !is GroupEntry -> false
+ else -> children.any(predicate)
+ }
+
+ @VisibleForTesting
+ val unseenNotifFilter =
+ object : NotifFilter("$TAG-unseen") {
+
+ var hasFilteredAnyNotifs = false
+
+ /**
+ * Encapsulates a definition of "being on the keyguard". Note that these two definitions
+ * are wildly different: [StatusBarState.KEYGUARD] is when on the lock screen and does
+ * not include shade or occluded states, whereas [KeyguardRepository.isKeyguardShowing]
+ * is any state where the keyguard has not been dismissed, including locked shade and
+ * occluded lock screen.
+ *
+ * Returning false for locked shade and occluded states means that this filter will
+ * allow seen notifications to appear in the locked shade.
+ */
+ private fun isOnKeyguard(): Boolean =
+ if (NotificationMinimalismPrototype.V2.isEnabled) {
+ false // disable this feature under this prototype
+ } else if (
+ NotificationMinimalismPrototype.V1.isEnabled &&
+ NotificationMinimalismPrototype.V1.showOnLockedShade
+ ) {
+ statusBarStateController.state == StatusBarState.KEYGUARD
+ } else {
+ keyguardRepository.isKeyguardShowing()
+ }
+
+ override fun shouldFilterOut(entry: NotificationEntry, now: Long): Boolean =
+ when {
+ // Don't apply filter if the setting is disabled
+ !unseenFilterEnabled -> false
+ // Don't apply filter if the keyguard isn't currently showing
+ !isOnKeyguard() -> false
+ // Don't apply the filter if the notification is unseen
+ unseenNotifications.contains(entry) -> false
+ // Don't apply the filter to (non-promoted) group summaries
+ // - summary will be pruned if necessary, depending on if children are filtered
+ entry.parent?.summary == entry -> false
+ // Check that the entry satisfies certain characteristics that would bypass the
+ // filter
+ shouldIgnoreUnseenCheck(entry) -> false
+ else -> true
+ }.also { hasFiltered -> hasFilteredAnyNotifs = hasFilteredAnyNotifs || hasFiltered }
+
+ override fun onCleanup() {
+ logger.logProviderHasFilteredOutSeenNotifs(hasFilteredAnyNotifs)
+ seenNotificationsInteractor.setHasFilteredOutSeenNotifications(hasFilteredAnyNotifs)
+ hasFilteredAnyNotifs = false
+ }
+ }
+
+ private fun shouldIgnoreUnseenCheck(entry: NotificationEntry): Boolean =
+ when {
+ entry.isMediaNotification -> true
+ entry.sbn.isOngoing -> true
+ else -> false
+ }
+
+ override fun dump(pw: PrintWriter, args: Array<out String>) =
+ with(pw.asIndenting()) {
+ println(
+ "notificationListInteractor.hasFilteredOutSeenNotifications.value=" +
+ seenNotificationsInteractor.hasFilteredOutSeenNotifications.value
+ )
+ println("unseen notifications:")
+ indentIfPossible {
+ for (notification in unseenNotifications) {
+ println(notification.key)
+ }
+ }
+ }
+
+ companion object {
+ private const val TAG = "OriginalUnseenKeyguardCoordinator"
+ private val SEEN_TIMEOUT = 5.seconds
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
index fbddc06..7c3072d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
@@ -66,6 +66,8 @@
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private float mStackTop;
private float mStackCutoff;
+ private float mHeadsUpTop;
+ private float mHeadsUpBottom;
private int mScrollY;
private float mOverScrollTopAmount;
private float mOverScrollBottomAmount;
@@ -377,6 +379,30 @@
this.mStackCutoff = stackCutoff;
}
+ /** y coordinate of the top position of a pinned HUN */
+ public float getHeadsUpTop() {
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return 0f;
+ return mHeadsUpTop;
+ }
+
+ /** @see #getHeadsUpTop() */
+ public void setHeadsUpTop(float mHeadsUpTop) {
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return;
+ this.mHeadsUpTop = mHeadsUpTop;
+ }
+
+ /** the bottom-most y position where we can draw pinned HUNs */
+ public float getHeadsUpBottom() {
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return 0f;
+ return mHeadsUpBottom;
+ }
+
+ /** @see #getHeadsUpBottom() */
+ public void setHeadsUpBottom(float headsUpBottom) {
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return;
+ mHeadsUpBottom = headsUpBottom;
+ }
+
public int getScrollY() {
return mScrollY;
}
@@ -784,7 +810,9 @@
@Override
public void dump(PrintWriter pw, String[] args) {
pw.println("mStackTop=" + mStackTop);
- pw.println("mStackCutoff" + mStackCutoff);
+ pw.println("mStackCutoff=" + mStackCutoff);
+ pw.println("mHeadsUpTop=" + mHeadsUpTop);
+ pw.println("mHeadsUpBottom=" + mHeadsUpBottom);
pw.println("mTopPadding=" + mTopPadding);
pw.println("mStackTopMargin=" + mStackTopMargin);
pw.println("mStackTranslation=" + mStackTranslation);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index 1789ad6..cec1ef3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -834,7 +834,7 @@
y = (int) mAmbientState.getStackCutoff();
drawDebugInfo(canvas, y, Color.MAGENTA, /* label= */ "getStackCutoff() = " + y);
- y = (int) mScrollViewFields.getHeadsUpTop();
+ y = (int) mAmbientState.getHeadsUpTop();
drawDebugInfo(canvas, y, Color.GREEN, /* label= */ "getHeadsUpTop() = " + y);
y += getTopHeadsUpHeight();
@@ -1222,7 +1222,12 @@
@Override
public void setHeadsUpTop(float headsUpTop) {
- mScrollViewFields.setHeadsUpTop(headsUpTop);
+ mAmbientState.setHeadsUpTop(headsUpTop);
+ }
+
+ @Override
+ public void setHeadsUpBottom(float headsUpBottom) {
+ mAmbientState.setHeadsUpBottom(headsUpBottom);
}
@Override
@@ -3519,7 +3524,7 @@
// Only when scene container is enabled, mark that we are being dragged so that we start
// dispatching the rest of the gesture to scene container.
void startOverscrollAfterExpanding() {
- SceneContainerFlag.isUnexpectedlyInLegacyMode();
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return;
getExpandHelper().finishExpanding();
setIsBeingDragged(true);
}
@@ -3527,7 +3532,7 @@
// Only when scene container is enabled, mark that we are being dragged so that we start
// dispatching the rest of the gesture to scene container.
void startDraggingOnHun() {
- SceneContainerFlag.isUnexpectedlyInLegacyMode();
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return;
setIsBeingDragged(true);
}
@@ -4894,6 +4899,7 @@
* @param bottomBarHeight the height of the bar on the bottom
*/
public void setHeadsUpBoundaries(int height, int bottomBarHeight) {
+ SceneContainerFlag.assertInLegacyMode();
mAmbientState.setMaxHeadsUpTranslation(height - bottomBarHeight);
mStackScrollAlgorithm.setHeadsUpAppearHeightBottom(height);
mStateAnimator.setHeadsUpAppearHeightBottom(height);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
index 726fdee..a072ea6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
@@ -2034,6 +2034,7 @@
hunWantsIt = mHeadsUpTouchHelper.onInterceptTouchEvent(ev);
if (hunWantsIt) {
mView.startDraggingOnHun();
+ mHeadsUpManager.unpinAll(true);
}
}
boolean swipeWantsIt = false;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ScrollViewFields.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ScrollViewFields.kt
index 97ec391..383d8b3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ScrollViewFields.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ScrollViewFields.kt
@@ -32,8 +32,6 @@
class ScrollViewFields {
/** Used to produce the clipping path */
var scrimClippingShape: ShadeScrimShape? = null
- /** Y coordinate in view pixels of the top of the HUN */
- var headsUpTop: Float = 0f
/** Whether the notifications are scrolled all the way to the top (i.e. when freshly opened) */
var isScrolledToTop: Boolean = true
@@ -74,7 +72,6 @@
fun dump(pw: IndentingPrintWriter) {
pw.printSection("StackViewStates") {
pw.println("scrimClippingShape", scrimClippingShape)
- pw.println("headsUpTop", headsUpTop)
pw.println("isScrolledToTop", isScrolledToTop)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index 4282fa2..b801e5d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -79,9 +79,7 @@
private int mHeadsUpAppearHeightBottom;
private int mHeadsUpCyclingPadding;
- public StackScrollAlgorithm(
- Context context,
- ViewGroup hostView) {
+ public StackScrollAlgorithm(Context context, ViewGroup hostView) {
mHostView = hostView;
initView(context);
}
@@ -865,7 +863,10 @@
// Move the tracked heads up into position during the appear animation, by interpolating
// between the HUN inset (where it will appear as a HUN) and the end position in the shade
- float headsUpTranslation = mHeadsUpInset - ambientState.getStackTopMargin();
+ float headsUpTranslation =
+ SceneContainerFlag.isEnabled()
+ ? ambientState.getHeadsUpTop()
+ : mHeadsUpInset - ambientState.getStackTopMargin();
ExpandableNotificationRow trackedHeadsUpRow = ambientState.getTrackedHeadsUpRow();
if (trackedHeadsUpRow != null) {
ExpandableViewState childState = trackedHeadsUpRow.getViewState();
@@ -894,21 +895,44 @@
boolean isTopEntry = topHeadsUpEntry == row;
float unmodifiedEndLocation = childState.getYTranslation() + childState.height;
if (mIsExpanded) {
- if (shouldHunBeVisibleWhenScrolled(row.mustStayOnScreen(),
- childState.headsUpIsVisible, row.showingPulsing(),
- ambientState.isOnKeyguard(), row.getEntry().isStickyAndNotDemoted())) {
- // Ensure that the heads up is always visible even when scrolled off.
- // NSSL y starts at top of screen in non-split-shade, but below the qs offset
- // in split shade, so we only need to inset by the scrim padding in split shade.
- // TODO(b/332574413) get the clamp inset from HeadsUpNotificationPlaceholder
- final float clampInset = ambientState.getUseSplitShade()
- ? mNotificationScrimPadding : mQuickQsOffsetHeight;
- clampHunToTop(clampInset, ambientState.getStackTranslation(),
- row.getCollapsedHeight(), childState);
- if (isTopEntry && row.isAboveShelf()) {
- // the first hun can't get off screen.
- clampHunToMaxTranslation(ambientState, row, childState);
- childState.hidden = false;
+ if (SceneContainerFlag.isEnabled()) {
+ if (shouldHunBeVisibleWhenScrolled(row.mustStayOnScreen(),
+ childState.headsUpIsVisible, row.showingPulsing(),
+ ambientState.isOnKeyguard(), row.getEntry().isStickyAndNotDemoted())) {
+ clampHunToTop(
+ /* headsUpTop = */ headsUpTranslation,
+ /* collapsedHeight = */ row.getCollapsedHeight(),
+ /* viewState = */ childState
+ );
+ if (isTopEntry && row.isAboveShelf()) {
+ clampHunToMaxTranslation(
+ /* headsUpTop = */ headsUpTranslation,
+ /* headsUpBottom = */ ambientState.getHeadsUpBottom(),
+ /* viewState = */ childState
+ );
+ updateCornerRoundnessForPinnedHun(row, ambientState.getStackTop());
+ childState.hidden = false;
+ }
+ }
+ } else {
+ if (shouldHunBeVisibleWhenScrolled(row.mustStayOnScreen(),
+ childState.headsUpIsVisible, row.showingPulsing(),
+ ambientState.isOnKeyguard(), row.getEntry().isStickyAndNotDemoted())) {
+ // Ensure that the heads up is always visible even when scrolled off.
+ // NSSL y starts at top of screen in non-split-shade, but below the qs
+ // offset
+ // in split shade, so we only need to inset by the scrim padding in split
+ // shade.
+ final float clampInset = ambientState.getUseSplitShade()
+ ? mNotificationScrimPadding : mQuickQsOffsetHeight;
+ clampHunToTop(clampInset, ambientState.getStackTranslation(),
+ row.getCollapsedHeight(), childState);
+ if (isTopEntry && row.isAboveShelf()) {
+ // the first hun can't get off screen.
+ clampHunToMaxTranslation(ambientState, row, childState);
+ updateCornerRoundnessForPinnedHun(row, ambientState.getStackY());
+ childState.hidden = false;
+ }
}
}
}
@@ -1005,9 +1029,13 @@
@VisibleForTesting
void clampHunToTop(float clampInset, float stackTranslation, float collapsedHeight,
ExpandableViewState viewState) {
+ SceneContainerFlag.assertInLegacyMode();
+ clampHunToTop(clampInset + stackTranslation, collapsedHeight, viewState);
+ }
- final float newTranslation = Math.max(clampInset + stackTranslation,
- viewState.getYTranslation());
+ @VisibleForTesting
+ void clampHunToTop(float headsUpTop, float collapsedHeight, ExpandableViewState viewState) {
+ final float newTranslation = Math.max(headsUpTop, viewState.getYTranslation());
// Transition from collapsed pinned state to fully expanded state
// when the pinned HUN approaches its actual location (when scrolling back to top).
@@ -1020,9 +1048,12 @@
// while the rest of notifications are scrolled offscreen.
private void clampHunToMaxTranslation(AmbientState ambientState, ExpandableNotificationRow row,
ExpandableViewState childState) {
+ SceneContainerFlag.assertInLegacyMode();
float maxHeadsUpTranslation = ambientState.getMaxHeadsUpTranslation();
- final float maxShelfPosition = ambientState.getInnerHeight() + ambientState.getTopPadding()
- + ambientState.getStackTranslation();
+ final float maxShelfPosition =
+ ambientState.getInnerHeight()
+ + ambientState.getTopPadding()
+ + ambientState.getStackTranslation();
maxHeadsUpTranslation = Math.min(maxHeadsUpTranslation, maxShelfPosition);
final float bottomPosition = maxHeadsUpTranslation - row.getCollapsedHeight();
@@ -1030,13 +1061,20 @@
childState.height = (int) Math.min(childState.height, maxHeadsUpTranslation
- newTranslation);
childState.setYTranslation(newTranslation);
+ }
+ private void clampHunToMaxTranslation(float headsUpTop, float headsUpBottom,
+ ExpandableViewState viewState) {
+ if (SceneContainerFlag.isUnexpectedlyInLegacyMode()) return;
+ final float maxHeight = headsUpTop - headsUpBottom;
+ viewState.setYTranslation(Math.min(headsUpTop, viewState.getYTranslation()));
+ viewState.height = (int) Math.min(maxHeight, viewState.height);
+ }
+
+ private void updateCornerRoundnessForPinnedHun(ExpandableNotificationRow row, float stackTop) {
// Animate pinned HUN bottom corners to and from original roundness.
final float originalCornerRadius =
row.isLastInSection() ? 1f : (mSmallCornerRadius / mLargeCornerRadius);
- final float stackTop = SceneContainerFlag.isEnabled()
- ? ambientState.getStackTop()
- : ambientState.getStackY();
final float bottomValue = computeCornerRoundnessForPinnedHun(mHostView.getHeight(),
stackTop, getMaxAllowedChildHeight(row), originalCornerRadius);
row.requestBottomRoundness(bottomValue, STACK_SCROLL_ALGO);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationScrollView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationScrollView.kt
index 762c507..6226fe7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationScrollView.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/NotificationScrollView.kt
@@ -59,6 +59,9 @@
/** set the y position in px of the top of the HUN in this view's coordinates */
fun setHeadsUpTop(headsUpTop: Float)
+ /** set the bottom-most y position in px, where we can draw HUNs in this view's coordinates */
+ fun setHeadsUpBottom(headsUpBottom: Float)
+
/** set whether the view has been scrolled all the way to the top */
fun setScrolledToTop(scrolledToTop: Boolean)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
index 6881d11..0541550 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
@@ -20,9 +20,9 @@
import android.view.WindowInsets
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
-import com.android.systemui.Flags.communalHub
import com.android.systemui.common.ui.view.onApplyWindowInsets
import com.android.systemui.common.ui.view.onLayoutChanged
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
@@ -53,6 +53,7 @@
private val controller: NotificationStackScrollLayoutController,
private val notificationStackSizeCalculator: NotificationStackSizeCalculator,
private val notificationScrollViewBinder: NotificationScrollViewBinder,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
@Main private val mainImmediateDispatcher: CoroutineDispatcher,
) {
@@ -164,7 +165,7 @@
}
}
- if (communalHub()) {
+ if (communalSettingsInteractor.isCommunalFlagEnabled()) {
launch {
viewModel.glanceableHubAlpha.collect {
controller.setMaxAlphaForGlanceableHub(it)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
index eb1f778..1a7bc16 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt
@@ -110,6 +110,11 @@
interactor.setScrolledToTop(scrolledToTop)
}
+ /** Sets whether the heads up notification is animating away. */
+ fun setHeadsUpAnimatingAway(animatingAway: Boolean) {
+ headsUpNotificationInteractor.setHeadsUpAnimatingAway(animatingAway)
+ }
+
/** Snooze the currently pinned HUN. */
fun snoozeHun() {
headsUpNotificationInteractor.snooze()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index d1d5d30..99f7a75 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -187,7 +187,6 @@
interactor.configurationBasedDimensions
.map {
when {
- !it.useSplitShade -> 0
it.useLargeScreenHeader -> it.marginTopLargeScreen
else -> it.marginTop
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java
index 7f16e18..26bd7ac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpTouchHelper.java
@@ -124,7 +124,6 @@
mPanel.setHeadsUpDraggingStartingHeight(startHeight);
mPanel.startExpand(x, y, true /* startTracking */, startHeight);
- // TODO(b/340514839): Figure out where to move this side effect in flexiglass
if (!SceneContainerFlag.isEnabled()) {
// This call needs to be after the expansion start otherwise we will get a
// flicker of one frame as it's not expanded yet.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
index de76b10d..e69a78f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyActivityStarterInternalImpl.kt
@@ -33,13 +33,13 @@
import android.view.WindowManager
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.ActivityIntentHelper
-import com.android.systemui.Flags.communalHub
import com.android.systemui.Flags.mediaLockscreenLaunchAnimation
import com.android.systemui.animation.ActivityTransitionAnimator
import com.android.systemui.animation.DelegateTransitionAnimatorController
import com.android.systemui.assist.AssistManager
import com.android.systemui.camera.CameraIntents
import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.DisplayId
@@ -94,6 +94,7 @@
private val activityIntentHelper: ActivityIntentHelper,
@Main private val mainExecutor: DelayableExecutor,
private val communalSceneInteractor: CommunalSceneInteractor,
+ private val communalSettingsInteractor: CommunalSettingsInteractor,
) : ActivityStarterInternal {
private val centralSurfaces: CentralSurfaces?
get() = centralSurfacesOptLazy.get().getOrNull()
@@ -561,7 +562,7 @@
override fun onTransitionAnimationStart(isExpandingFullyAbove: Boolean) {
super.onTransitionAnimationStart(isExpandingFullyAbove)
- if (communalHub()) {
+ if (communalSettingsInteractor.isCommunalFlagEnabled()) {
communalSceneInteractor.snapToScene(
CommunalScenes.Blank,
ActivityTransitionAnimator.TIMINGS.totalDuration
@@ -658,7 +659,7 @@
}
private fun isCommunalWidgetLaunch(): Boolean {
- return communalHub() &&
+ return communalSettingsInteractor.isCommunalFlagEnabled() &&
communalSceneInteractor.isCommunalVisible.value &&
communalSceneInteractor.isLaunchingWidget.value
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 96127b6..8f2ad40 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -55,6 +55,7 @@
import com.android.keyguard.KeyguardViewController;
import com.android.keyguard.TrustGrantFlags;
import com.android.keyguard.ViewMediatorCallback;
+import com.android.systemui.Flags;
import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerCallbackInteractor;
@@ -708,15 +709,30 @@
* {@link #needsFullscreenBouncer()}.
*/
protected void showBouncerOrKeyguard(boolean hideBouncerWhenShowing) {
- if (needsFullscreenBouncer() && !mDozing) {
+ boolean isDozing = mDozing;
+ if (Flags.simPinRaceConditionOnRestart()) {
+ KeyguardState toState = mKeyguardTransitionInteractor.getTransitionState().getValue()
+ .getTo();
+ isDozing = mDozing || toState == KeyguardState.DOZING || toState == KeyguardState.AOD;
+ }
+ if (needsFullscreenBouncer() && !isDozing) {
// The keyguard might be showing (already). So we need to hide it.
if (!primaryBouncerIsShowing()) {
- mCentralSurfaces.hideKeyguard();
if (SceneContainerFlag.isEnabled()) {
+ mCentralSurfaces.hideKeyguard();
mSceneInteractorLazy.get().changeScene(
Scenes.Bouncer, "StatusBarKeyguardViewManager.showBouncerOrKeyguard");
} else {
- mPrimaryBouncerInteractor.show(/* isScrimmed= */ true);
+ if (Flags.simPinRaceConditionOnRestart()) {
+ if (mPrimaryBouncerInteractor.show(/* isScrimmed= */ true)) {
+ mCentralSurfaces.hideKeyguard();
+ } else {
+ mCentralSurfaces.showKeyguard();
+ }
+ } else {
+ mCentralSurfaces.hideKeyguard();
+ mPrimaryBouncerInteractor.show(/* isScrimmed= */ true);
+ }
}
} else {
Log.e(TAG, "Attempted to show the sim bouncer when it is already showing.");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
index aced0be..0320a7a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
@@ -528,9 +528,10 @@
}
@Override
- public void onOngoingActivityStatusChanged(boolean hasOngoingActivity) {
+ public void onOngoingActivityStatusChanged(
+ boolean hasOngoingActivity, boolean shouldAnimate) {
mHasOngoingActivity = hasOngoingActivity;
- updateStatusBarVisibilities(/* animate= */ true);
+ updateStatusBarVisibilities(shouldAnimate);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/CollapsedStatusBarViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/CollapsedStatusBarViewBinder.kt
index ae1898b..4c97854 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/CollapsedStatusBarViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/CollapsedStatusBarViewBinder.kt
@@ -122,7 +122,8 @@
// Notify listeners
listener.onOngoingActivityStatusChanged(
- hasOngoingActivity = true
+ hasOngoingActivity = true,
+ shouldAnimate = true,
)
}
is OngoingActivityChipModel.Hidden -> {
@@ -130,7 +131,8 @@
// b/192243808 and [Chronometer.start].
chipTimeView.stop()
listener.onOngoingActivityStatusChanged(
- hasOngoingActivity = false
+ hasOngoingActivity = false,
+ shouldAnimate = chipModel.shouldAnimate,
)
}
}
@@ -266,8 +268,13 @@
/** Called when a transition from lockscreen to dream has started. */
fun onTransitionFromLockscreenToDreamStarted()
- /** Called when the status of the ongoing activity chip (active or not active) has changed. */
- fun onOngoingActivityStatusChanged(hasOngoingActivity: Boolean)
+ /**
+ * Called when the status of the ongoing activity chip (active or not active) has changed.
+ *
+ * @param shouldAnimate true if the chip should animate in/out, and false if the chip should
+ * immediately appear/disappear.
+ */
+ fun onOngoingActivityStatusChanged(hasOngoingActivity: Boolean, shouldAnimate: Boolean)
/**
* Called when the scene state has changed such that the home status bar is newly allowed or no
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt
index 43ab337..40799583 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AvalancheController.kt
@@ -91,7 +91,11 @@
}
/** Run or delay Runnable for given HeadsUpEntry */
- fun update(entry: HeadsUpEntry?, runnable: Runnable, label: String) {
+ fun update(entry: HeadsUpEntry?, runnable: Runnable?, label: String) {
+ if (runnable == null) {
+ log { "Runnable is NULL, stop update." }
+ return
+ }
if (!NotificationThrottleHun.isEnabled) {
runnable.run()
return
@@ -147,7 +151,11 @@
* Run or ignore Runnable for given HeadsUpEntry. If entry was never shown, ignore and delete
* all Runnables associated with that entry.
*/
- fun delete(entry: HeadsUpEntry?, runnable: Runnable, label: String) {
+ fun delete(entry: HeadsUpEntry?, runnable: Runnable?, label: String) {
+ if (runnable == null) {
+ log { "Runnable is NULL, stop delete." }
+ return
+ }
if (!NotificationThrottleHun.isEnabled) {
runnable.run()
return
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/BackGestureTutorialScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
similarity index 98%
rename from packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/BackGestureTutorialScreen.kt
rename to packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
index 04a4798..396c6b8 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/BackGestureTutorialScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/BackGestureTutorialScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.systemui.touchpad.tutorial.ui.view
+package com.android.systemui.touchpad.tutorial.ui.composable
import androidx.activity.compose.BackHandler
import androidx.annotation.StringRes
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TutorialComponents.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/TutorialComponents.kt
similarity index 95%
rename from packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TutorialComponents.kt
rename to packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/TutorialComponents.kt
index 16fa91d..f2276c8 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TutorialComponents.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/TutorialComponents.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.systemui.touchpad.tutorial.ui.view
+package com.android.systemui.touchpad.tutorial.ui.composable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TutorialSelectionScreen.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/TutorialSelectionScreen.kt
similarity index 98%
rename from packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TutorialSelectionScreen.kt
rename to packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/TutorialSelectionScreen.kt
index 877bbe1..14355fa 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TutorialSelectionScreen.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/composable/TutorialSelectionScreen.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.systemui.touchpad.tutorial.ui.view
+package com.android.systemui.touchpad.tutorial.ui.composable
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt
index 93c2658..088a8fd 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/view/TouchpadTutorialActivity.kt
@@ -27,10 +27,12 @@
import androidx.lifecycle.Lifecycle.State.STARTED
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.theme.PlatformTheme
-import com.android.systemui.touchpad.tutorial.ui.Screen.BACK_GESTURE
-import com.android.systemui.touchpad.tutorial.ui.Screen.HOME_GESTURE
-import com.android.systemui.touchpad.tutorial.ui.Screen.TUTORIAL_SELECTION
-import com.android.systemui.touchpad.tutorial.ui.TouchpadTutorialViewModel
+import com.android.systemui.touchpad.tutorial.ui.composable.BackGestureTutorialScreen
+import com.android.systemui.touchpad.tutorial.ui.composable.TutorialSelectionScreen
+import com.android.systemui.touchpad.tutorial.ui.viewmodel.Screen.BACK_GESTURE
+import com.android.systemui.touchpad.tutorial.ui.viewmodel.Screen.HOME_GESTURE
+import com.android.systemui.touchpad.tutorial.ui.viewmodel.Screen.TUTORIAL_SELECTION
+import com.android.systemui.touchpad.tutorial.ui.viewmodel.TouchpadTutorialViewModel
import javax.inject.Inject
class TouchpadTutorialActivity
diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModel.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/viewmodel/TouchpadTutorialViewModel.kt
similarity index 96%
rename from packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModel.kt
rename to packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/viewmodel/TouchpadTutorialViewModel.kt
index 9e6553a..11984af 100644
--- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/viewmodel/TouchpadTutorialViewModel.kt
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.android.systemui.touchpad.tutorial.ui
+package com.android.systemui.touchpad.tutorial.ui.viewmodel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.android.systemui.touchpad.tutorial.domain.interactor.TouchpadGesturesInteractor
+import javax.inject.Inject
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
-import javax.inject.Inject
class TouchpadTutorialViewModel(private val gesturesInteractor: TouchpadGesturesInteractor) :
ViewModel() {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt
index de8b9b1..eb2f71a1 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt
@@ -73,10 +73,19 @@
@Provides
@SysUISingleton
fun provideAudioSharingRepository(
+ @Application context: Context,
+ contentResolver: ContentResolver,
localBluetoothManager: LocalBluetoothManager?,
+ @Application coroutineScope: CoroutineScope,
@Background coroutineContext: CoroutineContext,
): AudioSharingRepository =
- AudioSharingRepositoryImpl(localBluetoothManager, coroutineContext)
+ AudioSharingRepositoryImpl(
+ context,
+ contentResolver,
+ localBluetoothManager,
+ coroutineScope,
+ coroutineContext
+ )
@Provides
@SysUISingleton
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioSharingEmptyImplModule.kt b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioSharingEmptyImplModule.kt
new file mode 100644
index 0000000..2904092
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioSharingEmptyImplModule.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.dagger
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.volume.domain.interactor.AudioSharingInteractor
+import com.android.systemui.volume.domain.interactor.AudioSharingInteractorEmptyImpl
+import dagger.Module
+import dagger.Provides
+
+/** Dagger module for empty audio sharing impl for unnecessary volume overlay */
+@Module
+interface AudioSharingEmptyImplModule {
+
+ companion object {
+ @Provides
+ @SysUISingleton
+ fun provideAudioSharingInteractor(): AudioSharingInteractor =
+ AudioSharingInteractorEmptyImpl()
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioSharingModule.kt b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioSharingModule.kt
new file mode 100644
index 0000000..9f1e60e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioSharingModule.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.dagger
+
+import com.android.settingslib.volume.data.repository.AudioSharingRepository
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.volume.domain.interactor.AudioSharingInteractor
+import com.android.systemui.volume.domain.interactor.AudioSharingInteractorImpl
+import dagger.Module
+import dagger.Provides
+import kotlinx.coroutines.CoroutineScope
+
+/** Dagger module for audio sharing code in the volume package */
+@Module
+interface AudioSharingModule {
+
+ companion object {
+ @Provides
+ @SysUISingleton
+ fun provideAudioSharingInteractor(
+ @Application coroutineScope: CoroutineScope,
+ repository: AudioSharingRepository
+ ): AudioSharingInteractor = AudioSharingInteractorImpl(coroutineScope, repository)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java b/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
index 5420988..ebb9ce9 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/VolumeModule.java
@@ -59,6 +59,7 @@
@Module(
includes = {
AudioModule.class,
+ AudioSharingModule.class,
AncModule.class,
CaptioningModule.class,
MediaDevicesModule.class,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt
new file mode 100644
index 0000000..4d29788
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.domain.interactor
+
+import android.bluetooth.BluetoothCsipSetCoordinator
+import androidx.annotation.IntRange
+import com.android.settingslib.volume.data.repository.AudioSharingRepository
+import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MAX
+import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MIN
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.emptyFlow
+import kotlinx.coroutines.launch
+
+interface AudioSharingInteractor {
+ /** Audio sharing secondary headset volume changes. */
+ val volume: Flow<Int?>
+
+ /** Audio sharing secondary headset min volume. */
+ val volumeMin: Int
+
+ /** Audio sharing secondary headset max volume. */
+ val volumeMax: Int
+
+ /** Set the volume of the secondary headset in audio sharing. */
+ fun setStreamVolume(
+ @IntRange(from = AUDIO_SHARING_VOLUME_MIN.toLong(), to = AUDIO_SHARING_VOLUME_MAX.toLong())
+ level: Int
+ )
+}
+
+@SysUISingleton
+class AudioSharingInteractorImpl
+@Inject
+constructor(
+ @Application private val coroutineScope: CoroutineScope,
+ private val audioSharingRepository: AudioSharingRepository
+) : AudioSharingInteractor {
+
+ override val volume: Flow<Int?> =
+ combine(audioSharingRepository.secondaryGroupId, audioSharingRepository.volumeMap) {
+ secondaryGroupId,
+ volumeMap ->
+ if (secondaryGroupId == BluetoothCsipSetCoordinator.GROUP_ID_INVALID) null
+ else volumeMap.getOrDefault(secondaryGroupId, DEFAULT_VOLUME)
+ }
+
+ override val volumeMin: Int = AUDIO_SHARING_VOLUME_MIN
+
+ override val volumeMax: Int = AUDIO_SHARING_VOLUME_MAX
+
+ override fun setStreamVolume(level: Int) {
+ coroutineScope.launch { audioSharingRepository.setSecondaryVolume(level) }
+ }
+
+ private companion object {
+ const val DEFAULT_VOLUME = 20
+ }
+}
+
+@SysUISingleton
+class AudioSharingInteractorEmptyImpl : AudioSharingInteractor {
+ override val volume: Flow<Int?> = emptyFlow()
+ override val volumeMin: Int = EMPTY_VOLUME
+ override val volumeMax: Int = EMPTY_VOLUME
+
+ override fun setStreamVolume(level: Int) {}
+
+ private companion object {
+ const val EMPTY_VOLUME = 0
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
index 79933ee..a94ef36 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
@@ -16,6 +16,7 @@
package com.android.keyguard
import android.content.BroadcastReceiver
+import android.platform.test.annotations.DisableFlags
import android.view.View
import android.view.ViewTreeObserver
import android.widget.FrameLayout
@@ -263,9 +264,9 @@
}
@Test
+ @DisableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun keyguardCallback_visibilityChanged_clockDozeCalled() =
runBlocking(IMMEDIATE) {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
val captor = argumentCaptor<KeyguardUpdateMonitorCallback>()
verify(keyguardUpdateMonitor).registerCallback(capture(captor))
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
index 1d78168..892375d 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
@@ -29,6 +29,7 @@
import android.database.ContentObserver;
import android.os.UserHandle;
+import android.platform.test.annotations.DisableFlags;
import android.provider.Settings;
import android.view.View;
@@ -48,11 +49,10 @@
@SmallTest
@RunWith(AndroidJUnit4.class)
+@DisableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public class KeyguardClockSwitchControllerTest extends KeyguardClockSwitchControllerBaseTest {
@Test
public void testInit_viewAlreadyAttached() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mController.init();
verifyAttachment(times(1));
@@ -60,8 +60,6 @@
@Test
public void testInit_viewNotYetAttached() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
ArgumentCaptor<View.OnAttachStateChangeListener> listenerArgumentCaptor =
ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class);
@@ -78,16 +76,12 @@
@Test
public void testInitSubControllers() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mController.init();
verify(mKeyguardSliceViewController).init();
}
@Test
public void testInit_viewDetached() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
ArgumentCaptor<View.OnAttachStateChangeListener> listenerArgumentCaptor =
ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class);
mController.init();
@@ -101,8 +95,6 @@
@Test
public void testPluginPassesStatusBarState() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
ArgumentCaptor<ClockRegistry.ClockChangeListener> listenerArgumentCaptor =
ArgumentCaptor.forClass(ClockRegistry.ClockChangeListener.class);
@@ -116,8 +108,6 @@
@Test
public void testSmartspaceEnabledRemovesKeyguardStatusArea() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mSmartspaceController.isEnabled()).thenReturn(true);
mController.init();
@@ -126,8 +116,6 @@
@Test
public void onLocaleListChangedRebuildsSmartspaceView() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mSmartspaceController.isEnabled()).thenReturn(true);
mController.init();
@@ -138,8 +126,6 @@
@Test
public void onLocaleListChanged_rebuildsSmartspaceViews_whenDecouplingEnabled() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mSmartspaceController.isEnabled()).thenReturn(true);
when(mSmartspaceController.isDateWeatherDecoupled()).thenReturn(true);
mController.init();
@@ -153,8 +139,6 @@
@Test
public void testSmartspaceDisabledShowsKeyguardStatusArea() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mSmartspaceController.isEnabled()).thenReturn(false);
mController.init();
@@ -163,8 +147,6 @@
@Test
public void testRefresh() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mController.refresh();
verify(mSmartspaceController).requestSmartspaceUpdate();
@@ -172,8 +154,6 @@
@Test
public void testChangeToDoubleLineClockSetsSmallClock() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mSecureSettings.getIntForUser(Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1,
UserHandle.USER_CURRENT))
.thenReturn(0);
@@ -197,15 +177,11 @@
@Test
public void testGetClock_ForwardsToClock() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
assertEquals(mClockController, mController.getClock());
}
@Test
public void testGetLargeClockBottom_returnsExpectedValue() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mLargeClockFrame.getVisibility()).thenReturn(View.VISIBLE);
when(mLargeClockFrame.getHeight()).thenReturn(100);
when(mSmallClockFrame.getHeight()).thenReturn(50);
@@ -218,8 +194,6 @@
@Test
public void testGetSmallLargeClockBottom_returnsExpectedValue() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mLargeClockFrame.getVisibility()).thenReturn(View.GONE);
when(mLargeClockFrame.getHeight()).thenReturn(100);
when(mSmallClockFrame.getHeight()).thenReturn(50);
@@ -232,16 +206,12 @@
@Test
public void testGetClockBottom_nullClock_returnsZero() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mClockEventController.getClock()).thenReturn(null);
assertEquals(0, mController.getClockBottom(10));
}
@Test
public void testChangeLockscreenWeatherEnabledSetsWeatherViewVisible() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mSmartspaceController.isWeatherEnabled()).thenReturn(true);
ArgumentCaptor<ContentObserver> observerCaptor =
ArgumentCaptor.forClass(ContentObserver.class);
@@ -260,8 +230,6 @@
@Test
public void testChangeClockDateWeatherEnabled_SetsDateWeatherViewVisibility() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
ArgumentCaptor<ClockRegistry.ClockChangeListener> listenerArgumentCaptor =
ArgumentCaptor.forClass(ClockRegistry.ClockChangeListener.class);
when(mSmartspaceController.isEnabled()).thenReturn(true);
@@ -284,15 +252,11 @@
@Test
public void testGetClock_nullClock_returnsNull() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
when(mClockEventController.getClock()).thenReturn(null);
assertNull(mController.getClock());
}
private void verifyAttachment(VerificationMode times) {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
verify(mClockRegistry, times).registerClockChangeListener(
any(ClockRegistry.ClockChangeListener.class));
verify(mClockEventController, times).registerListeners(mView);
@@ -300,8 +264,6 @@
@Test
public void testSplitShadeEnabledSetToSmartspaceController() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mController.setSplitShadeEnabled(true);
verify(mSmartspaceController, times(1)).setSplitShadeEnabled(true);
verify(mSmartspaceController, times(0)).setSplitShadeEnabled(false);
@@ -309,8 +271,6 @@
@Test
public void testSplitShadeDisabledSetToSmartspaceController() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mController.setSplitShadeEnabled(false);
verify(mSmartspaceController, times(1)).setSplitShadeEnabled(false);
verify(mSmartspaceController, times(0)).setSplitShadeEnabled(true);
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
index 83443be..0bf9d12 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
@@ -30,6 +30,7 @@
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.platform.test.annotations.DisableFlags;
import android.testing.TestableLooper.RunWithLooper;
import android.util.AttributeSet;
import android.view.LayoutInflater;
@@ -60,6 +61,7 @@
// the main thread before acquiring a wake lock. This class is constructed when
// the keyguard_clock_switch layout is inflated.
@RunWithLooper(setAsMainLooper = true)
+@DisableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public class KeyguardClockSwitchTest extends SysuiTestCase {
@Mock
ViewGroup mMockKeyguardSliceView;
@@ -81,8 +83,6 @@
@Before
public void setUp() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
MockitoAnnotations.initMocks(this);
when(mMockKeyguardSliceView.getContext()).thenReturn(mContext);
when(mMockKeyguardSliceView.findViewById(R.id.keyguard_status_area))
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerBaseTest.java
index b09357f..c51aa04 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/LegacyLockIconViewControllerBaseTest.java
@@ -151,6 +151,7 @@
if (!SceneContainerFlag.isEnabled()) {
mSetFlagsRule.disableFlags(Flags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR);
+ //TODO move this to use @DisableFlags annotation if needed
mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/FaceHelpMessageDebouncerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/FaceHelpMessageDebouncerTest.kt
new file mode 100644
index 0000000..baef620
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/FaceHelpMessageDebouncerTest.kt
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.biometrics
+
+import android.hardware.biometrics.BiometricFaceConstants
+import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+@TestableLooper.RunWithLooper
+class FaceHelpMessageDebouncerTest : SysuiTestCase() {
+ private lateinit var underTest: FaceHelpMessageDebouncer
+ private val window = 9L
+ private val startWindow = 4L
+ private val shownFaceMessageFrequencyBoost = 2
+
+ @Before
+ fun setUp() {
+ underTest =
+ FaceHelpMessageDebouncer(
+ window = window,
+ startWindow = startWindow,
+ shownFaceMessageFrequencyBoost = shownFaceMessageFrequencyBoost,
+ )
+ }
+
+ @Test
+ fun getMessageBeforeStartWindow_null() {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "testTooClose",
+ 0
+ )
+ )
+ assertThat(underTest.getMessageToShow(0)).isNull()
+ }
+
+ @Test
+ fun getMessageAfterStartWindow() {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ 0
+ )
+ )
+
+ assertThat(underTest.getMessageToShow(startWindow)?.msgId)
+ .isEqualTo(BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE)
+ assertThat(underTest.getMessageToShow(startWindow)?.msg).isEqualTo("tooClose")
+ }
+
+ @Test
+ fun getMessageAfterMessagesCleared_null() {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ 0
+ )
+ )
+ underTest.startNewFaceAuthSession(0)
+
+ assertThat(underTest.getMessageToShow(startWindow)).isNull()
+ }
+
+ @Test
+ fun messagesBeforeWindowRemoved() {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ 0
+ )
+ )
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ 0
+ )
+ )
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ window - 1
+ )
+ )
+ val lastMessage =
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT,
+ "tooBright",
+ window
+ )
+ underTest.addMessage(lastMessage)
+
+ assertThat(underTest.getMessageToShow(window + 1)).isEqualTo(lastMessage)
+ }
+
+ @Test
+ fun getMessageTieGoesToMostRecent() {
+ for (i in 1..window step 2) {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ i
+ )
+ )
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT,
+ "tooBright",
+ i + 1
+ )
+ )
+ }
+
+ assertThat(underTest.getMessageToShow(window)?.msgId)
+ .isEqualTo(BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT)
+ assertThat(underTest.getMessageToShow(window)?.msg).isEqualTo("tooBright")
+ }
+
+ @Test
+ fun boostCurrentlyShowingMessage() {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT,
+ "tooBright",
+ 0
+ )
+ )
+
+ val lastMessageShown = underTest.getMessageToShow(startWindow)
+ assertThat(lastMessageShown?.msgId)
+ .isEqualTo(BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT)
+
+ for (i in 1..<shownFaceMessageFrequencyBoost) {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ startWindow
+ )
+ )
+ }
+
+ // although technically there's a different msgId with a higher frequency count now, the
+ // shownFaceMessageFrequencyBoost causes the last message shown to get a "boost"
+ // to keep showing
+ assertThat(underTest.getMessageToShow(startWindow)).isEqualTo(lastMessageShown)
+ }
+
+ @Test
+ fun overcomeBoostedCurrentlyShowingMessage() {
+ // Comments are assuming shownFaceMessageFrequencyBoost = 2
+ // [B], weights: B=1
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT,
+ "tooBright",
+ 0
+ )
+ )
+
+ // [B], showing messageB, weights: B=3
+ val messageB = underTest.getMessageToShow(startWindow)
+
+ // [B, C, C], showing messageB, weights: B=3, C=2
+ for (i in 1..shownFaceMessageFrequencyBoost) {
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ startWindow
+ )
+ )
+ }
+ // messageB is getting boosted to continue to show
+ assertThat(underTest.getMessageToShow(startWindow)).isEqualTo(messageB)
+
+ // receive one more FACE_ACQUIRED_TOO_CLOSE acquired info to pass the boost
+ // [C, C, C], showing messageB, weights: B=2, C=3
+ underTest.addMessage(
+ HelpFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE,
+ "tooClose",
+ startWindow
+ )
+ )
+
+ // Now FACE_ACQUIRED_TOO_CLOSE has surpassed the boosted messageB frequency
+ // [C, C, C], showing messageC, weights: C=5
+ assertThat(underTest.getMessageToShow(startWindow)?.msgId)
+ .isEqualTo(BiometricFaceConstants.FACE_ACQUIRED_TOO_CLOSE)
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
index 431fef6..6fd8660 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
@@ -24,6 +24,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
+import com.android.systemui.biometrics.FaceHelpMessageDebouncer
import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository
import com.android.systemui.biometrics.domain.faceHelpMessageDeferral
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
@@ -45,6 +46,7 @@
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Test
import org.junit.runner.RunWith
@@ -264,11 +266,20 @@
biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
- // WHEN authentication status help
+ // WHEN authentication status help past debouncer
faceAuthRepository.setAuthenticationStatus(
HelpFaceAuthenticationStatus(
msg = "Move left",
msgId = FACE_ACQUIRED_TOO_RIGHT,
+ createdAt = 0L,
+ )
+ )
+ runCurrent()
+ faceAuthRepository.setAuthenticationStatus(
+ HelpFaceAuthenticationStatus(
+ msg = "Move left",
+ msgId = FACE_ACQUIRED_TOO_RIGHT,
+ createdAt = FaceHelpMessageDebouncer.DEFAULT_WINDOW_MS,
)
)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
index 529cd6e..0b7a3ed 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt
@@ -90,6 +90,7 @@
private val keyguardUpdateMonitor = kosmos.keyguardUpdateMonitor
private val faceWakeUpTriggersConfig = kosmos.fakeFaceWakeUpTriggersConfig
private val trustManager = kosmos.trustManager
+ private val deviceEntryFaceAuthStatusInteractor = kosmos.deviceEntryFaceAuthStatusInteractor
@Before
fun setup() {
@@ -112,6 +113,7 @@
powerInteractor,
fakeBiometricSettingsRepository,
trustManager,
+ deviceEntryFaceAuthStatusInteractor,
)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt
new file mode 100644
index 0000000..6022d9c
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorTest.kt
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.deviceentry.domain.interactor
+
+import android.hardware.biometrics.BiometricFaceConstants
+import android.hardware.face.FaceManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.biometrics.FaceHelpMessageDebouncer.Companion.DEFAULT_WINDOW_MS
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.deviceentry.shared.model.AcquiredFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus
+import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFaceAuthRepository
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.res.R
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito.mock
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class DeviceEntryFaceAuthStatusInteractorTest : SysuiTestCase() {
+ private val kosmos = testKosmos()
+ private val testScope: TestScope = kosmos.testScope
+ private lateinit var underTest: DeviceEntryFaceAuthStatusInteractor
+ private val ignoreHelpMessageId = 1
+
+ @Before
+ fun setup() {
+ overrideResource(
+ R.array.config_face_acquire_device_entry_ignorelist,
+ intArrayOf(ignoreHelpMessageId)
+ )
+ underTest = kosmos.deviceEntryFaceAuthStatusInteractor
+ }
+
+ @Test
+ fun successAuthenticationStatus() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ val successStatus =
+ SuccessFaceAuthenticationStatus(
+ successResult = mock(FaceManager.AuthenticationResult::class.java)
+ )
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(successStatus)
+ assertThat(authenticationStatus).isEqualTo(successStatus)
+ }
+
+ @Test
+ fun acquiredFaceAuthenticationStatus() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ val acquiredStatus = AcquiredFaceAuthenticationStatus(acquiredInfo = 0)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(acquiredStatus)
+ assertThat(authenticationStatus).isEqualTo(acquiredStatus)
+ }
+
+ @Test
+ fun failedFaceAuthenticationStatus() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ val failedStatus = FailedFaceAuthenticationStatus()
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(failedStatus)
+ assertThat(authenticationStatus).isEqualTo(failedStatus)
+ }
+
+ @Test
+ fun errorFaceAuthenticationStatus() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ val errorStatus = ErrorFaceAuthenticationStatus(0, "test")
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(errorStatus)
+ assertThat(authenticationStatus).isEqualTo(errorStatus)
+ }
+
+ @Test
+ fun firstHelpFaceAuthenticationStatus_noUpdate() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
+ AcquiredFaceAuthenticationStatus(
+ BiometricFaceConstants.FACE_ACQUIRED_START,
+ createdAt = 0
+ )
+ )
+ val helpMessage = HelpFaceAuthenticationStatus(0, "test", 1)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(helpMessage)
+ assertThat(authenticationStatus).isNull()
+ }
+
+ @Test
+ fun helpFaceAuthenticationStatus_afterWindow() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
+ HelpFaceAuthenticationStatus(0, "test1", 0)
+ )
+ runCurrent()
+ val helpMessage = HelpFaceAuthenticationStatus(0, "test2", DEFAULT_WINDOW_MS)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(helpMessage)
+ runCurrent()
+ assertThat(authenticationStatus).isEqualTo(helpMessage)
+ }
+
+ @Test
+ fun helpFaceAuthenticationStatus_onlyIgnoredHelpMessages_afterWindow() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
+ HelpFaceAuthenticationStatus(ignoreHelpMessageId, "ignoredMsg", 0)
+ )
+ runCurrent()
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
+ HelpFaceAuthenticationStatus(ignoreHelpMessageId, "ignoredMsg", DEFAULT_WINDOW_MS)
+ )
+ runCurrent()
+ assertThat(authenticationStatus).isNull()
+ }
+
+ @Test
+ fun helpFaceAuthenticationStatus_afterWindow_onIgnoredMessage_showsOtherMessageInstead() =
+ testScope.runTest {
+ val authenticationStatus by collectLastValue(underTest.authenticationStatus)
+ val validHelpMessage = HelpFaceAuthenticationStatus(0, "validHelpMsg", 0)
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(validHelpMessage)
+ runCurrent()
+ // help message that should be ignored
+ kosmos.fakeDeviceEntryFaceAuthRepository.setAuthenticationStatus(
+ HelpFaceAuthenticationStatus(ignoreHelpMessageId, "ignoredMsg", DEFAULT_WINDOW_MS)
+ )
+ runCurrent()
+ assertThat(authenticationStatus).isEqualTo(validHelpMessage)
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSourceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSourceTest.kt
index e49e2b49..5d59208 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSourceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyboard/shortcut/data/source/AppCategoriesShortcutsSourceTest.kt
@@ -16,21 +16,17 @@
package com.android.systemui.keyboard.shortcut.data.source
-import android.content.Intent.CATEGORY_APP_BROWSER
-import android.content.Intent.CATEGORY_APP_CALCULATOR
-import android.content.Intent.CATEGORY_APP_CALENDAR
-import android.content.Intent.CATEGORY_APP_CONTACTS
-import android.content.Intent.CATEGORY_APP_EMAIL
-import android.content.Intent.CATEGORY_APP_MAPS
-import android.content.Intent.CATEGORY_APP_MESSAGING
-import android.content.Intent.CATEGORY_APP_MUSIC
+import android.view.KeyEvent
+import android.view.KeyboardShortcutGroup
+import android.view.KeyboardShortcutInfo
+import android.view.mockWindowManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.keyboard.shortcut.shortcutHelperAppCategoriesShortcutsSource
+import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
-import com.android.systemui.util.icons.fakeAppCategoryIconProvider
+import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Before
@@ -43,185 +39,43 @@
private val kosmos = testKosmos()
private val testScope = kosmos.testScope
- private val defaultAppIconsProvider = kosmos.fakeAppCategoryIconProvider
- private val source = kosmos.shortcutHelperAppCategoriesShortcutsSource
+ private val mockWindowManager = kosmos.mockWindowManager
+ private val source =
+ AppCategoriesShortcutsSource(kosmos.mockWindowManager, kosmos.testDispatcher)
+
+ private var appCategoriesGroup: KeyboardShortcutGroup? = null
@Before
fun setUp() {
- categoryApps.forEach { categoryAppIcon ->
- defaultAppIconsProvider.installCategoryApp(
- categoryAppIcon.category,
- categoryAppIcon.packageName,
- categoryAppIcon.iconResId
- )
- }
+ whenever(mockWindowManager.getApplicationLaunchKeyboardShortcuts(TEST_DEVICE_ID))
+ .thenAnswer { appCategoriesGroup }
}
@Test
- fun shortcutGroups_returnsSingleGroup() =
- testScope.runTest { assertThat(source.shortcutGroups(TEST_DEVICE_ID)).hasSize(1) }
+ fun shortcutGroups_nullResult_returnsEmptyList() =
+ testScope.runTest {
+ appCategoriesGroup = null
+
+ assertThat(source.shortcutGroups(TEST_DEVICE_ID)).isEmpty()
+ }
@Test
- fun shortcutGroups_hasAssistantIcon() =
+ fun shortcutGroups_returnsSortedList() =
testScope.runTest {
- defaultAppIconsProvider.installAssistantApp(ASSISTANT_PACKAGE, ASSISTANT_ICON_RES_ID)
+ val testItems =
+ listOf(
+ KeyboardShortcutInfo("Info 2", KeyEvent.KEYCODE_E, KeyEvent.META_META_ON),
+ KeyboardShortcutInfo("Info 1", KeyEvent.KEYCODE_E, KeyEvent.META_META_ON),
+ KeyboardShortcutInfo("Info 3", KeyEvent.KEYCODE_E, KeyEvent.META_META_ON),
+ )
+ appCategoriesGroup = KeyboardShortcutGroup("Test Group", testItems)
val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Assistant" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(ASSISTANT_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(ASSISTANT_ICON_RES_ID)
+ val shortcutLabels = shortcuts.map { it.label.toString() }
+ assertThat(shortcutLabels).containsExactly("Info 1", "Info 2", "Info 3").inOrder()
}
- @Test
- fun shortcutGroups_hasBrowserIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Browser" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(BROWSER_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(BROWSER_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasContactsIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Contacts" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(CONTACTS_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(CONTACTS_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasEmailIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Email" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(EMAIL_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(EMAIL_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasCalendarIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Calendar" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(CALENDAR_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(CALENDAR_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasMapsIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Maps" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(MAPS_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(MAPS_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasMessagingIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "SMS" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(MESSAGING_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(MESSAGING_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasMusicIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Music" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(MUSIC_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(MUSIC_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_hasCalculatorIcon() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutInfo = shortcuts.first { it.label == "Calculator" }
-
- assertThat(shortcutInfo.icon!!.resPackage).isEqualTo(CALCULATOR_PACKAGE)
- assertThat(shortcutInfo.icon!!.resId).isEqualTo(CALCULATOR_ICON_RES_ID)
- }
-
- @Test
- fun shortcutGroups_shortcutsSortedByLabelIgnoringCase() =
- testScope.runTest {
- val shortcuts = source.shortcutGroups(TEST_DEVICE_ID).first().items
-
- val shortcutLabels = shortcuts.map { it.label!!.toString() }
- assertThat(shortcutLabels).isEqualTo(shortcutLabels.sortedBy { it.lowercase() })
- }
-
- @Test
- fun shortcutGroups_noAssistantApp_excludesAssistantFromShortcuts() =
- testScope.runTest {
- val shortcutLabels =
- source.shortcutGroups(TEST_DEVICE_ID).first().items.map { it.label!!.toString() }
-
- assertThat(shortcutLabels).doesNotContain("Assistant")
- }
-
- private companion object {
- private const val ASSISTANT_PACKAGE = "the.assistant.app"
- private const val ASSISTANT_ICON_RES_ID = 123
-
- private const val BROWSER_PACKAGE = "com.test.browser"
- private const val BROWSER_ICON_RES_ID = 1
-
- private const val CONTACTS_PACKAGE = "app.test.contacts"
- private const val CONTACTS_ICON_RES_ID = 234
-
- private const val EMAIL_PACKAGE = "email.app.test"
- private const val EMAIL_ICON_RES_ID = 351
-
- private const val CALENDAR_PACKAGE = "app.test.calendar"
- private const val CALENDAR_ICON_RES_ID = 411
-
- private const val MAPS_PACKAGE = "maps.app.package"
- private const val MAPS_ICON_RES_ID = 999
-
- private const val MUSIC_PACKAGE = "com.android.music"
- private const val MUSIC_ICON_RES_ID = 101
-
- private const val MESSAGING_PACKAGE = "my.sms.app"
- private const val MESSAGING_ICON_RES_ID = 9191
-
- private const val CALCULATOR_PACKAGE = "that.calculator.app"
- private const val CALCULATOR_ICON_RES_ID = 314
-
- private val categoryApps =
- listOf(
- CategoryApp(CATEGORY_APP_BROWSER, BROWSER_PACKAGE, BROWSER_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_CONTACTS, CONTACTS_PACKAGE, CONTACTS_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_EMAIL, EMAIL_PACKAGE, EMAIL_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_CALENDAR, CALENDAR_PACKAGE, CALENDAR_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_MAPS, MAPS_PACKAGE, MAPS_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_MUSIC, MUSIC_PACKAGE, MUSIC_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_MESSAGING, MESSAGING_PACKAGE, MESSAGING_ICON_RES_ID),
- CategoryApp(CATEGORY_APP_CALCULATOR, CALCULATOR_PACKAGE, CALCULATOR_ICON_RES_ID),
- )
-
+ companion object {
private const val TEST_DEVICE_ID = 123
}
-
- private class CategoryApp(val category: String, val packageName: String, val iconResId: Int)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
index 3b0f623..fc3b35d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
@@ -33,7 +33,9 @@
import com.android.systemui.flags.BrokenWithSceneContainer
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.FakeFeatureFlags
+import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED
import com.android.systemui.flags.andSceneContainer
+import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.fakeCommandQueue
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
@@ -143,6 +145,7 @@
whenever(keyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(PIN)
mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB)
+ kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
if (!SceneContainerFlag.isEnabled) {
mSetFlagsRule.disableFlags(
Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt
index 693a877..7cc9185 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultDeviceEntrySectionTest.kt
@@ -18,6 +18,7 @@
package com.android.systemui.keyguard.ui.view.layout.sections
import android.graphics.Point
+import android.platform.test.annotations.DisableFlags
import android.view.WindowManager
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
@@ -106,8 +107,8 @@
}
@Test
+ @DisableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun addViewsConditionally_migrateFlagOff() {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
mSetFlagsRule.disableFlags(AConfigFlags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR)
mSetFlagsRule.disableFlags(AConfigFlags.FLAG_DEVICE_ENTRY_UDFPS_REFACTOR)
val constraintLayout = ConstraintLayout(context, null)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
index 201ee88..1c99eff 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.ui.view.layout.sections
+import android.platform.test.annotations.EnableFlags
import android.view.View
import android.widget.LinearLayout
import androidx.constraintlayout.widget.ConstraintLayout
@@ -48,6 +49,7 @@
@RunWith(AndroidJUnit4::class)
@SmallTest
+@EnableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
class SmartspaceSectionTest : SysuiTestCase() {
private lateinit var underTest: SmartspaceSection
@Mock private lateinit var keyguardClockViewModel: KeyguardClockViewModel
@@ -70,7 +72,6 @@
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
- mSetFlagsRule.enableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
underTest =
SmartspaceSection(
mContext,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt
index b169cc1..b4db6da 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt
@@ -27,6 +27,7 @@
import android.view.WindowManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.app.viewcapture.ViewCaptureAwareWindowManager
import com.android.internal.jank.Cuj
import com.android.internal.util.LatencyTracker
import com.android.systemui.SysuiTestCase
@@ -63,7 +64,7 @@
private var triggerThreshold: Float = 0.0f
private val touchSlop = ViewConfiguration.get(context).scaledEdgeSlop
@Mock private lateinit var vibratorHelper: VibratorHelper
- @Mock private lateinit var windowManager: WindowManager
+ @Mock private lateinit var viewCaptureAwareWindowManager: ViewCaptureAwareWindowManager
@Mock private lateinit var configurationController: ConfigurationController
@Mock private lateinit var latencyTracker: LatencyTracker
private val interactionJankMonitor by lazy { kosmos.interactionJankMonitor }
@@ -78,7 +79,7 @@
mBackPanelController =
BackPanelController(
context,
- windowManager,
+ viewCaptureAwareWindowManager,
ViewConfiguration.get(context),
Handler.createAsync(testableLooper.looper),
systemClock,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
index 5273495..eea02ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateControllerTest.java
@@ -61,6 +61,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.settingslib.wifi.WifiUtils;
@@ -160,7 +161,7 @@
@Mock
InternetDialogController.InternetDialogCallback mInternetDialogCallback;
@Mock
- private WindowManager mWindowManager;
+ private ViewCaptureAwareWindowManager mWindowManager;
@Mock
private ToastFactory mToastFactory;
@Mock
@@ -232,8 +233,9 @@
mSubscriptionManager, mTelephonyManager, mWifiManager,
mConnectivityManager, mHandler, mExecutor, mBroadcastDispatcher,
mock(KeyguardUpdateMonitor.class), mGlobalSettings, mKeyguardStateController,
- mWindowManager, mToastFactory, mWorkerHandler, mCarrierConfigTracker,
- mLocationController, mDialogTransitionAnimator, mWifiStateWorker, mFlags);
+ mWindowManager, mToastFactory, mWorkerHandler,
+ mCarrierConfigTracker, mLocationController, mDialogTransitionAnimator,
+ mWifiStateWorker, mFlags);
mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
mInternetDialogController.mOnSubscriptionsChangedListener);
mInternetDialogController.onStart(mInternetDialogCallback, true);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index b80d1a4..8a6b68f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -18,7 +18,6 @@
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
-import static com.android.keyguard.KeyguardClockSwitch.LARGE;
import static com.android.systemui.log.LogBufferHelperKt.logcatLogBuffer;
import static com.google.common.truth.Truth.assertThat;
@@ -404,7 +403,6 @@
mFeatureFlags.set(Flags.QS_USER_DETAIL_SHORTCUT, false);
mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR);
- mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_DEVICE_ENTRY_UDFPS_REFACTOR);
mMainDispatcher = getMainDispatcher();
@@ -801,7 +799,6 @@
.setHeadsUpAppearanceController(mock(HeadsUpAppearanceController.class));
verify(mNotificationStackScrollLayoutController)
.setOnEmptySpaceClickListener(mEmptySpaceClickListenerCaptor.capture());
- verify(mKeyguardStatusViewController).displayClock(LARGE, /* animate */ true);
reset(mKeyguardStatusViewController);
when(mNotificationPanelViewControllerLazy.get())
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
index 90e8ea5f..905cc4c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
@@ -92,6 +92,7 @@
* When the Back gesture starts (progress 0%), the scrim will stay at 100% scale (1.0f).
*/
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testBackGesture_min_scrimAtMaxScale() {
mNotificationPanelViewController.onBackProgressed(0.0f);
verify(mScrimController).applyBackScaling(1.0f);
@@ -101,6 +102,7 @@
* When the Back gesture is at max (progress 100%), the scrim will be scaled to its minimum.
*/
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testBackGesture_max_scrimAtMinScale() {
mNotificationPanelViewController.onBackProgressed(1.0f);
verify(mScrimController).applyBackScaling(
@@ -108,6 +110,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onNotificationHeightChangeWhileOnKeyguardWillComputeMaxKeyguardNotifications() {
mStatusBarStateController.setState(KEYGUARD);
ArgumentCaptor<OnHeightChangedListener> captor =
@@ -124,6 +127,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onNotificationHeightChangeWhileInShadeWillNotComputeMaxKeyguardNotifications() {
mStatusBarStateController.setState(SHADE);
ArgumentCaptor<OnHeightChangedListener> captor =
@@ -140,6 +144,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void computeMaxKeyguardNotifications_lockscreenToShade_returnsExistingMax() {
when(mAmbientState.getFractionToShade()).thenReturn(0.5f);
mNotificationPanelViewController.setMaxDisplayedNotifications(-1);
@@ -150,6 +155,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void computeMaxKeyguardNotifications_noTransition_updatesMax() {
when(mAmbientState.getFractionToShade()).thenReturn(0f);
mNotificationPanelViewController.setMaxDisplayedNotifications(-1);
@@ -196,6 +202,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getVerticalSpaceForLockscreenShelf_useLockIconBottomPadding_returnsShelfHeight() {
enableSplitShade(/* enabled= */ false);
setBottomPadding(/* stackScrollLayoutBottom= */ 100,
@@ -213,6 +220,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getVerticalSpaceForLockscreenShelf_useIndicationBottomPadding_returnsZero() {
enableSplitShade(/* enabled= */ false);
setBottomPadding(/* stackScrollLayoutBottom= */ 100,
@@ -230,6 +238,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getVerticalSpaceForLockscreenShelf_useAmbientBottomPadding_returnsZero() {
enableSplitShade(/* enabled= */ false);
setBottomPadding(/* stackScrollLayoutBottom= */ 100,
@@ -247,6 +256,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getVerticalSpaceForLockscreenShelf_useLockIconPadding_returnsLessThanShelfHeight() {
enableSplitShade(/* enabled= */ false);
setBottomPadding(/* stackScrollLayoutBottom= */ 100,
@@ -264,6 +274,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getVerticalSpaceForLockscreenShelf_splitShade() {
enableSplitShade(/* enabled= */ true);
setBottomPadding(/* stackScrollLayoutBottom= */ 100,
@@ -281,6 +292,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSetPanelScrimMinFractionWhenHeadsUpIsDragged() {
mNotificationPanelViewController.setHeadsUpDraggingStartingHeight(
mNotificationPanelViewController.getMaxPanelHeight() / 2);
@@ -288,6 +300,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSetDozing_notifiesNsslAndStateController() {
mNotificationPanelViewController.setDozing(true /* dozing */, false /* animate */);
verify(mNotificationStackScrollLayoutController).setDozing(eq(true), eq(false));
@@ -295,6 +308,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testOnDozeAmountChanged_positionClockAndNotificationsUsesUdfpsLocation() {
// GIVEN UDFPS is enrolled and we're on the keyguard
final Point udfpsLocationCenter = new Point(0, 100);
@@ -332,12 +346,14 @@
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSetExpandedHeight() {
mNotificationPanelViewController.setExpandedHeight(200);
assertThat((int) mNotificationPanelViewController.getExpandedHeight()).isEqualTo(200);
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testOnTouchEvent_expansionCanBeBlocked() {
onTouchEvent(MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, 0f, 0f, 0));
onTouchEvent(MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_MOVE, 0f, 200f, 0));
@@ -350,6 +366,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void test_pulsing_onTouchEvent_noTracking() {
// GIVEN device is pulsing
mNotificationPanelViewController.setPulsing(true);
@@ -367,6 +384,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void alternateBouncerVisible_onTouchEvent_notHandled() {
mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_DEVICE_ENTRY_UDFPS_REFACTOR);
// GIVEN alternate bouncer is visible
@@ -385,6 +403,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void test_onTouchEvent_startTracking() {
// GIVEN device is NOT pulsing
mNotificationPanelViewController.setPulsing(false);
@@ -402,9 +421,8 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onInterceptTouchEvent_nsslMigrationOff_userActivity() {
- mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mTouchHandler.onInterceptTouchEvent(MotionEvent.obtain(0L /* downTime */,
0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */,
0 /* metaState */));
@@ -413,9 +431,8 @@
}
@Test
+ @EnableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onInterceptTouchEvent_nsslMigrationOn_userActivity_not_called() {
- mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
-
mTouchHandler.onInterceptTouchEvent(MotionEvent.obtain(0L /* downTime */,
0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */,
0 /* metaState */));
@@ -424,6 +441,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testOnTouchEvent_expansionResumesAfterBriefTouch() {
mFalsingManager.setIsClassifierEnabled(true);
mFalsingManager.setIsFalseTouch(false);
@@ -460,6 +478,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testA11y_initializeNode() {
AccessibilityNodeInfo nodeInfo = new AccessibilityNodeInfo();
mAccessibilityDelegate.onInitializeAccessibilityNodeInfo(mView, nodeInfo);
@@ -473,6 +492,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testA11y_scrollForward() {
mAccessibilityDelegate.performAccessibilityAction(
mView,
@@ -483,6 +503,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testA11y_scrollUp() {
mAccessibilityDelegate.performAccessibilityAction(
mView,
@@ -493,6 +514,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testKeyguardStatusViewInSplitShade_changesConstraintsDependingOnNotifications() {
mStatusBarStateController.setState(KEYGUARD);
enableSplitShade(/* enabled= */ true);
@@ -511,6 +533,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_splitShade_dozing_alwaysDozingOn_isCentered() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -523,6 +546,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_splitShade_dozing_alwaysDozingOff_isNotCentered() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -535,6 +559,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_splitShade_notDozing_alwaysDozingOn_isNotCentered() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -547,6 +572,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_splitShade_pulsing_isNotCentered() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -560,6 +586,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_splitShade_notPulsing_isNotCentered() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -573,6 +600,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_singleShade_isCentered() {
enableSplitShade(/* enabled= */ false);
// The conditions below would make the clock NOT be centered on split shade.
@@ -587,6 +615,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_willPlayDelayedDoze_isCentered_thenNot() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -602,6 +631,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_willPlayDelayedDoze_notifiesKeyguardMediaController() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(true);
@@ -614,6 +644,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void keyguardStatusView_willPlayDelayedDoze_isCentered_thenStillCenteredIfNoNotifs() {
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0);
when(mActiveNotificationsInteractor.getAreAnyNotificationsPresentValue()).thenReturn(false);
@@ -629,6 +660,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onKeyguardStatusViewHeightChange_animatesNextTopPaddingChangeForNSSL() {
ArgumentCaptor<View.OnLayoutChangeListener> captor =
ArgumentCaptor.forClass(View.OnLayoutChangeListener.class);
@@ -646,6 +678,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testCanCollapsePanelOnTouch_trueForKeyGuard() {
mStatusBarStateController.setState(KEYGUARD);
@@ -653,6 +686,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testCanCollapsePanelOnTouch_trueWhenScrolledToBottom() {
mStatusBarStateController.setState(SHADE);
when(mNotificationStackScrollLayoutController.isScrolledToBottom()).thenReturn(true);
@@ -661,6 +695,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testCanCollapsePanelOnTouch_trueWhenInSettings() {
mStatusBarStateController.setState(SHADE);
when(mQsController.getExpanded()).thenReturn(true);
@@ -669,6 +704,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testCanCollapsePanelOnTouch_falseInDualPaneShade() {
mStatusBarStateController.setState(SHADE);
enableSplitShade(/* enabled= */ true);
@@ -695,6 +731,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testCancelSwipeWhileLocked_notifiesKeyguardState() {
mStatusBarStateController.setState(KEYGUARD);
@@ -707,6 +744,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSwipe_exactlyToTarget_notifiesNssl() {
// No over-expansion
mNotificationPanelViewController.setOverExpansion(0f);
@@ -722,6 +760,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testRotatingToSplitShadeWithQsExpanded_transitionsToShadeLocked() {
mStatusBarStateController.setState(KEYGUARD);
when(mQsController.getExpanded()).thenReturn(true);
@@ -732,6 +771,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testUnlockedSplitShadeTransitioningToKeyguard_closesQS() {
enableSplitShade(true);
mStatusBarStateController.setState(SHADE);
@@ -741,6 +781,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testLockedSplitShadeTransitioningToKeyguard_closesQS() {
enableSplitShade(true);
mStatusBarStateController.setState(SHADE_LOCKED);
@@ -750,6 +791,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSwitchesToCorrectClockInSinglePaneShade() {
mStatusBarStateController.setState(KEYGUARD);
@@ -765,6 +807,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSwitchesToCorrectClockInSplitShade() {
mStatusBarStateController.setState(KEYGUARD);
enableSplitShade(/* enabled= */ true);
@@ -785,6 +828,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testHasNotifications_switchesToLargeClockWhenEnteringSplitShade() {
mStatusBarStateController.setState(KEYGUARD);
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(1);
@@ -796,6 +840,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testNoNotifications_switchesToLargeClockWhenEnteringSplitShade() {
mStatusBarStateController.setState(KEYGUARD);
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0);
@@ -807,6 +852,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testHasNotifications_switchesToSmallClockWhenExitingSplitShade() {
mStatusBarStateController.setState(KEYGUARD);
enableSplitShade(/* enabled= */ true);
@@ -820,6 +866,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testNoNotifications_switchesToLargeClockWhenExitingSplitShade() {
mStatusBarStateController.setState(KEYGUARD);
enableSplitShade(/* enabled= */ true);
@@ -833,6 +880,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void clockSize_mediaShowing_inSplitShade_onAod_isLarge() {
when(mDozeParameters.getAlwaysOn()).thenReturn(true);
mStatusBarStateController.setState(KEYGUARD);
@@ -848,6 +896,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void clockSize_mediaShowing_inSplitShade_screenOff_notAod_isSmall() {
when(mDozeParameters.getAlwaysOn()).thenReturn(false);
mStatusBarStateController.setState(KEYGUARD);
@@ -863,6 +912,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onQsSetExpansionHeightCalled_qsFullyExpandedOnKeyguard_showNSSL() {
// GIVEN
mStatusBarStateController.setState(KEYGUARD);
@@ -883,6 +933,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onQsSetExpansionHeightCalled_qsFullyExpandedOnKeyguard_hideNSSL() {
// GIVEN
mStatusBarStateController.setState(KEYGUARD);
@@ -904,6 +955,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testSwitchesToBigClockInSplitShadeOnAodAnimateDisabled() {
when(mScreenOffAnimationController.shouldAnimateClockChange()).thenReturn(false);
mStatusBarStateController.setState(KEYGUARD);
@@ -919,6 +971,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void switchesToBigClockInSplitShadeOn_landFlagOn_ForceSmallClock() {
when(mScreenOffAnimationController.shouldAnimateClockChange()).thenReturn(false);
mStatusBarStateController.setState(KEYGUARD);
@@ -938,6 +991,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void switchesToBigClockInSplitShadeOn_landFlagOff_DontForceSmallClock() {
when(mScreenOffAnimationController.shouldAnimateClockChange()).thenReturn(false);
mStatusBarStateController.setState(KEYGUARD);
@@ -957,6 +1011,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testDisplaysSmallClockOnLockscreenInSplitShadeWhenMediaIsPlaying() {
mStatusBarStateController.setState(KEYGUARD);
enableSplitShade(/* enabled= */ true);
@@ -978,6 +1033,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testFoldToAodAnimationCleansupInAnimationEnd() {
ArgumentCaptor<Animator.AnimatorListener> animCaptor =
ArgumentCaptor.forClass(Animator.AnimatorListener.class);
@@ -997,6 +1053,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testExpandWithQsMethodIsUsingLockscreenTransitionController() {
enableSplitShade(/* enabled= */ true);
mStatusBarStateController.setState(KEYGUARD);
@@ -1008,6 +1065,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void setKeyguardStatusBarAlpha_setsAlphaOnKeyguardStatusBarController() {
float statusBarAlpha = 0.5f;
@@ -1017,6 +1075,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testQsToBeImmediatelyExpandedWhenOpeningPanelInSplitShade() {
enableSplitShade(/* enabled= */ true);
mShadeExpansionStateManager.updateState(STATE_OPEN);
@@ -1030,6 +1089,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testQsNotToBeImmediatelyExpandedWhenGoingFromUnlockedToLocked() {
enableSplitShade(/* enabled= */ true);
mShadeExpansionStateManager.updateState(STATE_CLOSED);
@@ -1042,6 +1102,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testQsImmediateResetsWhenPanelOpensOrCloses() {
mShadeExpansionStateManager.updateState(STATE_OPEN);
mShadeExpansionStateManager.updateState(STATE_CLOSED);
@@ -1049,6 +1110,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testQsExpansionChangedToDefaultWhenRotatingFromOrToSplitShade() {
when(mCommandQueue.panelsEnabled()).thenReturn(true);
@@ -1065,6 +1127,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testPanelClosedWhenClosingQsInSplitShade() {
mShadeExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
/* expanded= */ true, /* tracking= */ false);
@@ -1078,6 +1141,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getMaxPanelTransitionDistance_expanding_inSplitShade_returnsSplitShadeFullTransitionDistance() {
enableSplitShade(true);
mNotificationPanelViewController.expandToQs();
@@ -1088,6 +1152,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void isExpandingOrCollapsing_returnsTrue_whenQsLockscreenDragInProgress() {
when(mQsController.getLockscreenShadeDragProgress()).thenReturn(0.5f);
assertThat(mNotificationPanelViewController.isExpandingOrCollapsing()).isTrue();
@@ -1095,6 +1160,7 @@
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getMaxPanelTransitionDistance_inSplitShade_withHeadsUp_returnsBiggerValue() {
enableSplitShade(true);
mNotificationPanelViewController.expandToQs();
@@ -1111,6 +1177,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getMaxPanelTransitionDistance_expandingSplitShade_keyguard_returnsNonSplitShadeValue() {
mStatusBarStateController.setState(KEYGUARD);
enableSplitShade(true);
@@ -1122,6 +1189,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getMaxPanelTransitionDistance_expanding_notSplitShade_returnsNonSplitShadeValue() {
enableSplitShade(false);
mNotificationPanelViewController.expandToQs();
@@ -1132,6 +1200,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onLayoutChange_fullWidth_updatesQSWithFullWithTrue() {
setIsFullWidth(true);
@@ -1139,6 +1208,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onLayoutChange_notFullWidth_updatesQSWithFullWithFalse() {
setIsFullWidth(false);
@@ -1146,6 +1216,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onLayoutChange_qsNotSet_doesNotCrash() {
mQuickSettingsController.setQs(null);
@@ -1153,6 +1224,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onEmptySpaceClicked_notDozingAndOnKeyguard_requestsFaceAuth() {
StatusBarStateController.StateListener statusBarStateListener =
mNotificationPanelViewController.getStatusBarStateListener();
@@ -1167,8 +1239,8 @@
}
@Test
+ @EnableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void nsslFlagEnabled_allowOnlyExternalTouches() {
- mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
// This sets the dozing state that is read when onMiddleClicked is eventually invoked.
mTouchHandler.onTouch(mock(View.class), mDownMotionEvent);
@@ -1179,6 +1251,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onSplitShadeChanged_duringShadeExpansion_resetsOverScrollState() {
// There was a bug where there was left-over overscroll state after going from split shade
// to single shade.
@@ -1200,6 +1273,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onSplitShadeChanged_alwaysResetsOverScrollState() {
enableSplitShade(true);
enableSplitShade(false);
@@ -1217,6 +1291,7 @@
* to ensure scrollY can be correctly set to be 0
*/
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onShadeFlingClosingEnd_mAmbientStateSetClose_thenOnExpansionStopped() {
// Given: Shade is expanded
mNotificationPanelViewController.notifyExpandingFinished();
@@ -1237,6 +1312,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void onShadeFlingEnd_mExpandImmediateShouldBeReset() {
mNotificationPanelViewController.onFlingEnd(false);
@@ -1244,6 +1320,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void inUnlockedSplitShade_transitioningMaxTransitionDistance_makesShadeFullyExpanded() {
mStatusBarStateController.setState(SHADE);
enableSplitShade(true);
@@ -1253,6 +1330,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeFullyExpanded_inShadeState() {
mStatusBarStateController.setState(SHADE);
@@ -1265,6 +1343,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeFullyExpanded_onKeyguard() {
mStatusBarStateController.setState(KEYGUARD);
@@ -1274,12 +1353,14 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeFullyExpanded_onShadeLocked() {
mStatusBarStateController.setState(SHADE_LOCKED);
assertThat(mNotificationPanelViewController.isShadeFullyExpanded()).isTrue();
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeExpanded_whenHasHeight() {
int transitionDistance = mNotificationPanelViewController.getMaxPanelTransitionDistance();
mNotificationPanelViewController.setExpandedHeight(transitionDistance);
@@ -1287,6 +1368,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeExpanded_whenInstantExpanding() {
mNotificationPanelViewController.expand(true);
assertThat(mNotificationPanelViewController.isExpanded()).isTrue();
@@ -1300,12 +1382,14 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeExpanded_whenUnlockedOffscreenAnimationRunning() {
when(mUnlockedScreenOffAnimationController.isAnimationPlaying()).thenReturn(true);
assertThat(mNotificationPanelViewController.isExpanded()).isTrue();
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeExpanded_whenInputFocusTransferStarted() {
when(mCommandQueue.panelsEnabled()).thenReturn(true);
@@ -1315,6 +1399,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void shadeNotExpanded_whenInputFocusTransferStartedButPanelsDisabled() {
when(mCommandQueue.panelsEnabled()).thenReturn(false);
@@ -1324,6 +1409,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void cancelInputFocusTransfer_shadeCollapsed() {
when(mCommandQueue.panelsEnabled()).thenReturn(true);
mNotificationPanelViewController.startInputFocusTransfer();
@@ -1334,6 +1420,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void finishInputFocusTransfer_shadeFlingingOpen() {
when(mCommandQueue.panelsEnabled()).thenReturn(true);
mNotificationPanelViewController.startInputFocusTransfer();
@@ -1344,6 +1431,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getFalsingThreshold_deviceNotInteractive_isQsThreshold() {
PowerInteractor.Companion.setAsleepForTest(
mPowerInteractor, PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON);
@@ -1353,6 +1441,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getFalsingThreshold_lastWakeNotDueToTouch_isQsThreshold() {
PowerInteractor.Companion.setAwakeForTest(
mPowerInteractor, PowerManager.WAKE_REASON_POWER_BUTTON);
@@ -1362,6 +1451,7 @@
}
@Test
+ @DisableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void getFalsingThreshold_lastWakeDueToTouch_greaterThanQsThreshold() {
PowerInteractor.Companion.setAwakeForTest(mPowerInteractor, PowerManager.WAKE_REASON_TAP);
when(mQsController.getFalsingThreshold()).thenReturn(14);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt
index e1d92e7..52af907 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt
@@ -18,6 +18,7 @@
package com.android.systemui.shade
+import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.testing.TestableLooper
import android.view.HapticFeedbackConstants
@@ -27,6 +28,7 @@
import androidx.test.filters.SmallTest
import com.android.internal.util.CollectionUtils
import com.android.keyguard.KeyguardClockSwitch.LARGE
+import com.android.systemui.Flags
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.res.R
import com.android.systemui.statusbar.StatusBarState.KEYGUARD
@@ -58,6 +60,7 @@
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
+@DisableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
class NotificationPanelViewControllerWithCoroutinesTest :
NotificationPanelViewControllerBaseTest() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
index 74a2999..6f2302a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
@@ -17,6 +17,8 @@
package com.android.systemui.shade
import android.content.Context
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
import android.platform.test.annotations.RequiresFlagsDisabled
import android.platform.test.flag.junit.FlagsParameterization
import android.testing.TestableLooper
@@ -31,6 +33,7 @@
import com.android.keyguard.LegacyLockIconViewController
import com.android.keyguard.dagger.KeyguardBouncerComponent
import com.android.systemui.Flags
+import com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
@@ -398,8 +401,8 @@
@Test
@DisableSceneContainer
+ @DisableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun handleDispatchTouchEvent_nsslMigrationOff_userActivity_not_called() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
underTest.setStatusBarViewController(phoneStatusBarViewController)
interactionEventHandler.handleDispatchTouchEvent(DOWN_EVENT)
@@ -408,8 +411,8 @@
}
@Test
+ @EnableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun handleDispatchTouchEvent_nsslMigrationOn_userActivity() {
- enableMigrateClocksFlag()
underTest.setStatusBarViewController(phoneStatusBarViewController)
interactionEventHandler.handleDispatchTouchEvent(DOWN_EVENT)
@@ -440,6 +443,7 @@
}
@Test
+ @EnableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun shouldInterceptTouchEvent_dozing_touchInLockIconArea_touchNotIntercepted() {
// GIVEN dozing
whenever(sysuiStatusBarStateController.isDozing).thenReturn(true)
@@ -452,13 +456,12 @@
// AND the lock icon wants the touch
whenever(lockIconViewController.willHandleTouchWhileDozing(DOWN_EVENT)).thenReturn(true)
- enableMigrateClocksFlag()
-
// THEN touch should NOT be intercepted by NotificationShade
assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isFalse()
}
@Test
+ @EnableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun shouldInterceptTouchEvent_dozing_touchNotInLockIconArea_touchIntercepted() {
// GIVEN dozing
whenever(sysuiStatusBarStateController.isDozing).thenReturn(true)
@@ -471,13 +474,12 @@
whenever(quickSettingsController.shouldQuickSettingsIntercept(any(), any(), any()))
.thenReturn(false)
- enableMigrateClocksFlag()
-
// THEN touch should be intercepted by NotificationShade
assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isTrue()
}
@Test
+ @EnableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun shouldInterceptTouchEvent_dozing_touchInStatusBar_touchIntercepted() {
// GIVEN dozing
whenever(sysuiStatusBarStateController.isDozing).thenReturn(true)
@@ -490,13 +492,12 @@
whenever(quickSettingsController.shouldQuickSettingsIntercept(any(), any(), any()))
.thenReturn(true)
- enableMigrateClocksFlag()
-
// THEN touch should be intercepted by NotificationShade
assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isTrue()
}
@Test
+ @EnableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun shouldInterceptTouchEvent_dozingAndPulsing_touchIntercepted() {
// GIVEN dozing
whenever(sysuiStatusBarStateController.isDozing).thenReturn(true)
@@ -517,8 +518,6 @@
whenever(shadeViewController.handleExternalInterceptTouch(DOWN_EVENT))
.thenReturn(true)
- enableMigrateClocksFlag()
-
// THEN touch should be intercepted by NotificationShade
assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isTrue()
}
@@ -652,19 +651,13 @@
}
@Test
+ @EnableFlags(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun cancelCurrentTouch_callsDragDownHelper() {
- enableMigrateClocksFlag()
underTest.cancelCurrentTouch()
verify(dragDownHelper).stopDragging()
}
- private fun enableMigrateClocksFlag() {
- if (!Flags.migrateClocksToBlueprint()) {
- mSetFlagsRule.enableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
- }
- }
-
companion object {
private val DOWN_EVENT = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, 0f, 0f, 0)
private val MOVE_EVENT = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_MOVE, 0f, 0f, 0)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt
index fec7424..ca29dd9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt
@@ -16,6 +16,7 @@
package com.android.systemui.shade
import android.os.SystemClock
+import android.platform.test.annotations.DisableFlags
import android.testing.TestableLooper.RunWithLooper
import android.view.MotionEvent
import android.widget.FrameLayout
@@ -208,9 +209,9 @@
}
@Test
+ @DisableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
fun testDragDownHelperCalledWhenDraggingDown() =
testScope.runTest {
- mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
whenever(dragDownHelper.isDraggingDown).thenReturn(true)
val now = SystemClock.elapsedRealtime()
val ev = MotionEvent.obtain(now, now, MotionEvent.ACTION_UP, 0f, 0f, 0 /* meta */)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
index c9a7c82..02764f8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelTest.kt
@@ -16,9 +16,13 @@
package com.android.systemui.statusbar.chips.casttootherdevice.ui.viewmodel
+import android.content.DialogInterface
import android.view.View
import androidx.test.filters.SmallTest
+import com.android.internal.jank.Cuj
import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.coroutines.collectLastValue
@@ -37,6 +41,8 @@
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
+import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
import com.android.systemui.statusbar.policy.CastDevice
@@ -45,7 +51,10 @@
import kotlin.test.Test
import kotlinx.coroutines.test.runTest
import org.junit.Before
+import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@@ -60,6 +69,16 @@
private val mockScreenCastDialog = mock<SystemUIDialog>()
private val mockGenericCastDialog = mock<SystemUIDialog>()
+ private val chipBackgroundView = mock<ChipBackgroundContainer>()
+ private val chipView =
+ mock<View>().apply {
+ whenever(
+ this.requireViewById<ChipBackgroundContainer>(
+ R.id.ongoing_activity_chip_background
+ )
+ )
+ .thenReturn(chipBackgroundView)
+ }
private val underTest = kosmos.castToOtherDeviceChipViewModel
@@ -193,6 +212,63 @@
}
@Test
+ fun chip_projectionStoppedFromDialog_chipImmediatelyHidden() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
+
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+
+ // WHEN the stop action on the dialog is clicked
+ val dialogStopAction =
+ getStopActionFromDialog(latest, chipView, mockScreenCastDialog, kosmos)
+ dialogStopAction.onClick(mock<DialogInterface>(), 0)
+
+ // THEN the chip is immediately hidden...
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ // ...even though the repo still says it's projecting
+ assertThat(mediaProjectionRepo.mediaProjectionState.value)
+ .isInstanceOf(MediaProjectionState.Projecting::class.java)
+
+ // AND we specify no animation
+ assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ }
+
+ @Test
+ fun chip_routeStoppedFromDialog_chipImmediatelyHidden() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+
+ mediaRouterRepo.castDevices.value =
+ listOf(
+ CastDevice(
+ state = CastDevice.CastState.Connected,
+ id = "id",
+ name = "name",
+ description = "desc",
+ origin = CastDevice.CastOrigin.MediaRouter,
+ )
+ )
+
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+
+ // WHEN the stop action on the dialog is clicked
+ val dialogStopAction =
+ getStopActionFromDialog(latest, chipView, mockGenericCastDialog, kosmos)
+ dialogStopAction.onClick(mock<DialogInterface>(), 0)
+
+ // THEN the chip is immediately hidden...
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ // ...even though the repo still says it's projecting
+ assertThat(mediaRouterRepo.castDevices.value).isNotEmpty()
+
+ // AND we specify no animation
+ assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ }
+
+ @Test
fun chip_colorsAreRed() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
@@ -297,8 +373,14 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
- verify(mockScreenCastDialog).show()
+ clickListener!!.onClick(chipView)
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockScreenCastDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
}
@Test
@@ -316,8 +398,14 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
- verify(mockScreenCastDialog).show()
+ clickListener!!.onClick(chipView)
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockScreenCastDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
}
@Test
@@ -339,7 +427,70 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
- verify(mockGenericCastDialog).show()
+ clickListener!!.onClick(chipView)
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockGenericCastDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
+ }
+
+ @Test
+ fun chip_projectionStateCasting_clickListenerHasCuj() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(CAST_TO_OTHER_DEVICES_PACKAGE)
+
+ val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
+ clickListener!!.onClick(chipView)
+
+ val cujCaptor = argumentCaptor<DialogCuj>()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ any(),
+ any(),
+ cujCaptor.capture(),
+ anyBoolean(),
+ )
+
+ assertThat(cujCaptor.firstValue.cujType)
+ .isEqualTo(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP)
+ assertThat(cujCaptor.firstValue.tag).contains("Cast")
+ }
+
+ @Test
+ fun chip_routerStateCasting_clickListenerHasCuj() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+
+ mediaRouterRepo.castDevices.value =
+ listOf(
+ CastDevice(
+ state = CastDevice.CastState.Connected,
+ id = "id",
+ name = "name",
+ description = "desc",
+ origin = CastDevice.CastOrigin.MediaRouter,
+ )
+ )
+
+ val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
+ clickListener!!.onClick(chipView)
+
+ val cujCaptor = argumentCaptor<DialogCuj>()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ any(),
+ any(),
+ cujCaptor.capture(),
+ anyBoolean(),
+ )
+
+ assertThat(cujCaptor.firstValue.cujType)
+ .isEqualTo(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP)
+ assertThat(cujCaptor.firstValue.tag).contains("Cast")
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
index 4728c64..b4a37ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelTest.kt
@@ -16,9 +16,13 @@
package com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel
+import android.content.DialogInterface
import android.view.View
import androidx.test.filters.SmallTest
+import com.android.internal.jank.Cuj
import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.Kosmos
@@ -30,9 +34,13 @@
import com.android.systemui.res.R
import com.android.systemui.screenrecord.data.model.ScreenRecordModel
import com.android.systemui.screenrecord.data.repository.screenRecordRepository
+import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection
import com.android.systemui.statusbar.chips.screenrecord.ui.view.EndScreenRecordingDialogDelegate
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.shareToAppChipViewModel
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
+import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
import com.android.systemui.util.time.fakeSystemClock
@@ -40,7 +48,10 @@
import kotlin.test.Test
import kotlinx.coroutines.test.runTest
import org.junit.Before
+import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@@ -53,11 +64,22 @@
private val mediaProjectionRepo = kosmos.fakeMediaProjectionRepository
private val systemClock = kosmos.fakeSystemClock
private val mockSystemUIDialog = mock<SystemUIDialog>()
+ private val chipBackgroundView = mock<ChipBackgroundContainer>()
+ private val chipView =
+ mock<View>().apply {
+ whenever(
+ this.requireViewById<ChipBackgroundContainer>(
+ R.id.ongoing_activity_chip_background
+ )
+ )
+ .thenReturn(chipBackgroundView)
+ }
private val underTest = kosmos.screenRecordChipViewModel
@Before
fun setUp() {
+ setUpPackageManagerForMediaProjection(kosmos)
whenever(kosmos.mockSystemUIDialogFactory.create(any<EndScreenRecordingDialogDelegate>()))
.thenReturn(mockSystemUIDialog)
}
@@ -132,6 +154,40 @@
}
@Test
+ fun chip_recordingStoppedFromDialog_screenRecordAndShareToAppChipImmediatelyHidden() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+ val latestShareToApp by collectLastValue(kosmos.shareToAppChipViewModel.chip)
+
+ // On real devices, when screen recording is active then share-to-app is also active
+ // because screen record is just a special case of share-to-app where the app receiving
+ // the share is SysUI
+ screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen("fake.package")
+
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+ assertThat(latestShareToApp).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+
+ // WHEN the stop action on the dialog is clicked
+ val dialogStopAction =
+ getStopActionFromDialog(latest, chipView, mockSystemUIDialog, kosmos)
+ dialogStopAction.onClick(mock<DialogInterface>(), 0)
+
+ // THEN both the screen record chip and the share-to-app chip are immediately hidden...
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ assertThat(latestShareToApp).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ // ...even though the repos still say it's recording
+ assertThat(screenRecordRepo.screenRecordState.value)
+ .isEqualTo(ScreenRecordModel.Recording)
+ assertThat(mediaProjectionRepo.mediaProjectionState.value)
+ .isInstanceOf(MediaProjectionState.Projecting::class.java)
+
+ // AND we specify no animation
+ assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ }
+
+ @Test
fun chip_startingState_colorsAreRed() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
@@ -182,9 +238,15 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
+ clickListener!!.onClick(chipView)
// EndScreenRecordingDialogDelegate will test that the dialog has the right message
- verify(mockSystemUIDialog).show()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockSystemUIDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
}
@Test
@@ -198,9 +260,15 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
+ clickListener!!.onClick(chipView)
// EndScreenRecordingDialogDelegate will test that the dialog has the right message
- verify(mockSystemUIDialog).show()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockSystemUIDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
}
@Test
@@ -218,8 +286,39 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
+ clickListener!!.onClick(chipView)
// EndScreenRecordingDialogDelegate will test that the dialog has the right message
- verify(mockSystemUIDialog).show()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockSystemUIDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
+ }
+
+ @Test
+ fun chip_clickListenerHasCuj() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+ screenRecordRepo.screenRecordState.value = ScreenRecordModel.Recording
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen("host.package")
+
+ val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
+ clickListener!!.onClick(chipView)
+
+ val cujCaptor = argumentCaptor<DialogCuj>()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ any(),
+ any(),
+ cujCaptor.capture(),
+ anyBoolean(),
+ )
+
+ assertThat(cujCaptor.firstValue.cujType)
+ .isEqualTo(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP)
+ assertThat(cujCaptor.firstValue.tag).contains("Screen record")
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
index f87b17d..2658679 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelTest.kt
@@ -16,9 +16,13 @@
package com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel
+import android.content.DialogInterface
import android.view.View
import androidx.test.filters.SmallTest
+import com.android.internal.jank.Cuj
import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.Kosmos
@@ -34,6 +38,8 @@
import com.android.systemui.statusbar.chips.sharetoapp.ui.view.EndShareToAppDialogDelegate
import com.android.systemui.statusbar.chips.ui.model.ColorsModel
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
+import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
import com.android.systemui.util.time.fakeSystemClock
@@ -41,7 +47,10 @@
import kotlin.test.Test
import kotlinx.coroutines.test.runTest
import org.junit.Before
+import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever
@@ -54,6 +63,16 @@
private val systemClock = kosmos.fakeSystemClock
private val mockShareDialog = mock<SystemUIDialog>()
+ private val chipBackgroundView = mock<ChipBackgroundContainer>()
+ private val chipView =
+ mock<View>().apply {
+ whenever(
+ this.requireViewById<ChipBackgroundContainer>(
+ R.id.ongoing_activity_chip_background
+ )
+ )
+ .thenReturn(chipBackgroundView)
+ }
private val underTest = kosmos.shareToAppChipViewModel
@@ -134,6 +153,31 @@
}
@Test
+ fun chip_shareStoppedFromDialog_chipImmediatelyHidden() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
+
+ // WHEN the stop action on the dialog is clicked
+ val dialogStopAction =
+ getStopActionFromDialog(latest, chipView, mockShareDialog, kosmos)
+ dialogStopAction.onClick(mock<DialogInterface>(), 0)
+
+ // THEN the chip is immediately hidden...
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
+ // ...even though the repo still says it's projecting
+ assertThat(mediaProjectionRepo.mediaProjectionState.value)
+ .isInstanceOf(MediaProjectionState.Projecting::class.java)
+
+ // AND we specify no animation
+ assertThat((latest as OngoingActivityChipModel.Hidden).shouldAnimate).isFalse()
+ }
+
+ @Test
fun chip_colorsAreRed() =
testScope.runTest {
val latest by collectLastValue(underTest.chip)
@@ -181,8 +225,14 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
- verify(mockShareDialog).show()
+ clickListener!!.onClick(chipView)
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockShareDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
}
@Test
@@ -199,7 +249,41 @@
val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
assertThat(clickListener).isNotNull()
- clickListener!!.onClick(mock<View>())
- verify(mockShareDialog).show()
+ clickListener!!.onClick(chipView)
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ eq(mockShareDialog),
+ eq(chipBackgroundView),
+ any(),
+ anyBoolean(),
+ )
+ }
+
+ @Test
+ fun chip_clickListenerHasCuj() =
+ testScope.runTest {
+ val latest by collectLastValue(underTest.chip)
+ mediaProjectionRepo.mediaProjectionState.value =
+ MediaProjectionState.Projecting.SingleTask(
+ NORMAL_PACKAGE,
+ hostDeviceName = null,
+ createTask(taskId = 1),
+ )
+
+ val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
+ clickListener!!.onClick(chipView)
+
+ val cujCaptor = argumentCaptor<DialogCuj>()
+ verify(kosmos.mockDialogTransitionAnimator)
+ .showFromView(
+ any(),
+ any(),
+ cujCaptor.capture(),
+ anyBoolean(),
+ )
+
+ assertThat(cujCaptor.firstValue.cujType)
+ .isEqualTo(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP)
+ assertThat(cujCaptor.firstValue.tag).contains("Share")
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt
new file mode 100644
index 0000000..b9049e8
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/ChipTransitionHelperTest.kt
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.chips.ui.viewmodel
+
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.chips.ui.model.ColorsModel
+import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.google.common.truth.Truth.assertThat
+import kotlin.test.Test
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.test.advanceTimeBy
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+
+@SmallTest
+@OptIn(ExperimentalCoroutinesApi::class)
+class ChipTransitionHelperTest : SysuiTestCase() {
+ private val kosmos = Kosmos()
+ private val testScope = kosmos.testScope
+
+ @Test
+ fun createChipFlow_typicallyFollowsInputFlow() =
+ testScope.runTest {
+ val underTest = ChipTransitionHelper(kosmos.applicationCoroutineScope)
+ val inputChipFlow =
+ MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Hidden())
+ val latest by collectLastValue(underTest.createChipFlow(inputChipFlow))
+
+ val newChip =
+ OngoingActivityChipModel.Shown.Timer(
+ icon = Icon.Resource(R.drawable.ic_cake, contentDescription = null),
+ colors = ColorsModel.Themed,
+ startTimeMs = 100L,
+ onClickListener = null,
+ )
+
+ inputChipFlow.value = newChip
+
+ assertThat(latest).isEqualTo(newChip)
+
+ val newerChip =
+ OngoingActivityChipModel.Shown.IconOnly(
+ icon = Icon.Resource(R.drawable.ic_hotspot, contentDescription = null),
+ colors = ColorsModel.Themed,
+ onClickListener = null,
+ )
+
+ inputChipFlow.value = newerChip
+
+ assertThat(latest).isEqualTo(newerChip)
+ }
+
+ @Test
+ fun activityStopped_chipHiddenWithoutAnimationFor500ms() =
+ testScope.runTest {
+ val underTest = ChipTransitionHelper(kosmos.applicationCoroutineScope)
+ val inputChipFlow =
+ MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Hidden())
+ val latest by collectLastValue(underTest.createChipFlow(inputChipFlow))
+
+ val shownChip =
+ OngoingActivityChipModel.Shown.Timer(
+ icon = Icon.Resource(R.drawable.ic_cake, contentDescription = null),
+ colors = ColorsModel.Themed,
+ startTimeMs = 100L,
+ onClickListener = null,
+ )
+
+ inputChipFlow.value = shownChip
+
+ assertThat(latest).isEqualTo(shownChip)
+
+ // WHEN #onActivityStopped is invoked
+ underTest.onActivityStoppedFromDialog()
+ runCurrent()
+
+ // THEN the chip is hidden and has no animation
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+
+ // WHEN only 250ms have elapsed
+ advanceTimeBy(250)
+
+ // THEN the chip is still hidden
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+
+ // WHEN over 500ms have elapsed
+ advanceTimeBy(251)
+
+ // THEN the chip returns to the original input flow value
+ assertThat(latest).isEqualTo(shownChip)
+ }
+
+ @Test
+ fun activityStopped_stoppedAgainBefore500ms_chipReshownAfterSecond500ms() =
+ testScope.runTest {
+ val underTest = ChipTransitionHelper(kosmos.applicationCoroutineScope)
+ val inputChipFlow =
+ MutableStateFlow<OngoingActivityChipModel>(OngoingActivityChipModel.Hidden())
+ val latest by collectLastValue(underTest.createChipFlow(inputChipFlow))
+
+ val shownChip =
+ OngoingActivityChipModel.Shown.Timer(
+ icon = Icon.Resource(R.drawable.ic_cake, contentDescription = null),
+ colors = ColorsModel.Themed,
+ startTimeMs = 100L,
+ onClickListener = null,
+ )
+
+ inputChipFlow.value = shownChip
+
+ assertThat(latest).isEqualTo(shownChip)
+
+ // WHEN #onActivityStopped is invoked
+ underTest.onActivityStoppedFromDialog()
+ runCurrent()
+
+ // THEN the chip is hidden and has no animation
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+
+ // WHEN 250ms have elapsed, get another stop event
+ advanceTimeBy(250)
+ underTest.onActivityStoppedFromDialog()
+ runCurrent()
+
+ // THEN the chip is still hidden for another 500ms afterwards
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ advanceTimeBy(499)
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ advanceTimeBy(2)
+ assertThat(latest).isEqualTo(shownChip)
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt
index ca043f1..6e4d886 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipViewModelTest.kt
@@ -18,32 +18,58 @@
import android.view.View
import androidx.test.filters.SmallTest
+import com.android.internal.jank.Cuj
import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.log.logcatLogBuffer
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipViewModel.Companion.createDialogLaunchOnClickListener
import com.android.systemui.statusbar.phone.SystemUIDialog
import kotlin.test.Test
+import org.mockito.ArgumentMatchers.anyBoolean
+import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
@SmallTest
class OngoingActivityChipViewModelTest : SysuiTestCase() {
private val mockSystemUIDialog = mock<SystemUIDialog>()
private val dialogDelegate = SystemUIDialog.Delegate { mockSystemUIDialog }
+ private val dialogTransitionAnimator = mock<DialogTransitionAnimator>()
+
+ private val chipBackgroundView = mock<ChipBackgroundContainer>()
+ private val chipView =
+ mock<View>().apply {
+ whenever(
+ this.requireViewById<ChipBackgroundContainer>(
+ R.id.ongoing_activity_chip_background
+ )
+ )
+ .thenReturn(chipBackgroundView)
+ }
@Test
fun createDialogLaunchOnClickListener_showsDialogOnClick() {
+ val cuj = DialogCuj(Cuj.CUJ_STATUS_BAR_LAUNCH_DIALOG_FROM_CHIP, tag = "Test")
val clickListener =
createDialogLaunchOnClickListener(
dialogDelegate,
+ dialogTransitionAnimator,
+ cuj,
logcatLogBuffer("OngoingActivityChipViewModelTest"),
"tag",
)
- // Dialogs must be created on the main thread
- context.mainExecutor.execute {
- clickListener.onClick(mock<View>())
- verify(mockSystemUIDialog).show()
- }
+ clickListener.onClick(chipView)
+ verify(dialogTransitionAnimator)
+ .showFromView(
+ eq(mockSystemUIDialog),
+ eq(chipBackgroundView),
+ eq(cuj),
+ anyBoolean(),
+ )
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
index b1a8d0b..ee249f0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModelTest.kt
@@ -16,6 +16,10 @@
package com.android.systemui.statusbar.chips.ui.viewmodel
+import android.content.DialogInterface
+import android.content.packageManager
+import android.content.pm.PackageManager
+import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -33,10 +37,14 @@
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.NORMAL_PACKAGE
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection
import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel
+import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer
+import com.android.systemui.statusbar.phone.SystemUIDialog
+import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository
import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel
import com.android.systemui.util.time.fakeSystemClock
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.runCurrent
@@ -44,9 +52,17 @@
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mockito
+import org.mockito.kotlin.any
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
@SmallTest
@RunWith(AndroidJUnit4::class)
+@OptIn(ExperimentalCoroutinesApi::class)
class OngoingActivityChipsViewModelTest : SysuiTestCase() {
private val kosmos = Kosmos().also { it.testCase = this }
private val testScope = kosmos.testScope
@@ -56,6 +72,18 @@
private val mediaProjectionState = kosmos.fakeMediaProjectionRepository.mediaProjectionState
private val callRepo = kosmos.ongoingCallRepository
+ private val mockSystemUIDialog = mock<SystemUIDialog>()
+ private val chipBackgroundView = mock<ChipBackgroundContainer>()
+ private val chipView =
+ mock<View>().apply {
+ whenever(
+ this.requireViewById<ChipBackgroundContainer>(
+ R.id.ongoing_activity_chip_background
+ )
+ )
+ .thenReturn(chipBackgroundView)
+ }
+
private val underTest = kosmos.ongoingActivityChipsViewModel
@Before
@@ -72,7 +100,7 @@
val latest by collectLastValue(underTest.chip)
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
}
@Test
@@ -230,7 +258,81 @@
job2.cancel()
}
+ @Test
+ fun chip_screenRecordStoppedViaDialog_chipHiddenWithoutAnimation() =
+ testScope.runTest {
+ screenRecordState.value = ScreenRecordModel.Recording
+ mediaProjectionState.value = MediaProjectionState.NotProjecting
+ callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+
+ val latest by collectLastValue(underTest.chip)
+
+ assertIsScreenRecordChip(latest)
+
+ // WHEN screen record gets stopped via dialog
+ val dialogStopAction =
+ getStopActionFromDialog(latest, chipView, mockSystemUIDialog, kosmos)
+ dialogStopAction.onClick(mock<DialogInterface>(), 0)
+
+ // THEN the chip is immediately hidden with no animation
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ }
+
+ @Test
+ fun chip_projectionStoppedViaDialog_chipHiddenWithoutAnimation() =
+ testScope.runTest {
+ mediaProjectionState.value =
+ MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
+ screenRecordState.value = ScreenRecordModel.DoingNothing
+ callRepo.setOngoingCallState(OngoingCallModel.NoCall)
+
+ val latest by collectLastValue(underTest.chip)
+
+ assertIsShareToAppChip(latest)
+
+ // WHEN media projection gets stopped via dialog
+ val dialogStopAction =
+ getStopActionFromDialog(latest, chipView, mockSystemUIDialog, kosmos)
+ dialogStopAction.onClick(mock<DialogInterface>(), 0)
+
+ // THEN the chip is immediately hidden with no animation
+ assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden(shouldAnimate = false))
+ }
+
companion object {
+ /**
+ * Assuming that the click listener in [latest] opens a dialog, this fetches the action
+ * associated with the positive button, which we assume is the "Stop sharing" action.
+ */
+ fun getStopActionFromDialog(
+ latest: OngoingActivityChipModel?,
+ chipView: View,
+ dialog: SystemUIDialog,
+ kosmos: Kosmos
+ ): DialogInterface.OnClickListener {
+ // Capture the action that would get invoked when the user clicks "Stop" on the dialog
+ lateinit var dialogStopAction: DialogInterface.OnClickListener
+ Mockito.doAnswer {
+ val delegate = it.arguments[0] as SystemUIDialog.Delegate
+ delegate.beforeCreate(dialog, /* savedInstanceState= */ null)
+
+ val stopActionCaptor = argumentCaptor<DialogInterface.OnClickListener>()
+ verify(dialog).setPositiveButton(any(), stopActionCaptor.capture())
+ dialogStopAction = stopActionCaptor.firstValue
+
+ return@doAnswer dialog
+ }
+ .whenever(kosmos.mockSystemUIDialogFactory)
+ .create(any<SystemUIDialog.Delegate>())
+ whenever(kosmos.packageManager.getApplicationInfo(eq(NORMAL_PACKAGE), any<Int>()))
+ .thenThrow(PackageManager.NameNotFoundException())
+ // Click the chip so that we open the dialog and we fill in [dialogStopAction]
+ val clickListener = ((latest as OngoingActivityChipModel.Shown).onClickListener)
+ clickListener!!.onClick(chipView)
+
+ return dialogStopAction
+ }
+
fun assertIsScreenRecordChip(latest: OngoingActivityChipModel?) {
assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java)
val icon = (latest as OngoingActivityChipModel.Shown).icon
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt
index d87b3e2..4218be2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt
@@ -13,88 +13,57 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@file:OptIn(ExperimentalCoroutinesApi::class)
package com.android.systemui.statusbar.notification.collection.coordinator
-import android.app.Notification
-import android.os.UserHandle
-import android.platform.test.flag.junit.FlagsParameterization
-import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.dump.DumpManager
-import com.android.systemui.flags.andSceneContainer
-import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
-import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
-import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
-import com.android.systemui.keyguard.shared.model.KeyguardState
-import com.android.systemui.keyguard.shared.model.TransitionStep
-import com.android.systemui.kosmos.Kosmos
-import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.plugins.statusbar.StatusBarStateController
-import com.android.systemui.scene.data.repository.Idle
-import com.android.systemui.scene.data.repository.setTransition
-import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.statusbar.StatusBarState
-import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder
import com.android.systemui.statusbar.notification.collection.NotifPipeline
-import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
-import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter
-import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable
-import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
import com.android.systemui.statusbar.notification.collection.provider.SectionHeaderVisibilityProvider
-import com.android.systemui.statusbar.notification.data.repository.ActiveNotificationListRepository
-import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor
import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider
-import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
-import com.android.systemui.statusbar.policy.HeadsUpManager
-import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener
-import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.eq
-import com.android.systemui.util.mockito.mock
-import com.android.systemui.util.mockito.withArgCaptor
-import com.android.systemui.util.settings.FakeSettings
-import com.google.common.truth.Truth.assertThat
import java.util.function.Consumer
-import kotlin.time.Duration.Companion.seconds
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.TestCoroutineScheduler
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import kotlinx.coroutines.test.runTest
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers.same
-import org.mockito.Mockito.anyString
import org.mockito.Mockito.clearInvocations
-import org.mockito.Mockito.never
import org.mockito.Mockito.verify
-import org.mockito.Mockito.`when` as whenever
-import platform.test.runner.parameterized.ParameterizedAndroidJunit4
-import platform.test.runner.parameterized.Parameters
+import org.mockito.kotlin.argumentCaptor
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.whenever
@SmallTest
-@RunWith(ParameterizedAndroidJunit4::class)
-class KeyguardCoordinatorTest(flags: FlagsParameterization) : SysuiTestCase() {
+@RunWith(AndroidJUnit4::class)
+class KeyguardCoordinatorTest : SysuiTestCase() {
- private val kosmos = Kosmos()
-
- private val headsUpManager: HeadsUpManager = mock()
private val keyguardNotifVisibilityProvider: KeyguardNotificationVisibilityProvider = mock()
- private val keyguardRepository = FakeKeyguardRepository()
- private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
private val notifPipeline: NotifPipeline = mock()
private val sectionHeaderVisibilityProvider: SectionHeaderVisibilityProvider = mock()
private val statusBarStateController: StatusBarStateController = mock()
- init {
- mSetFlagsRule.setFlagsParameterization(flags)
+ private lateinit var onStateChangeListener: Consumer<String>
+
+ @Before
+ fun setup() {
+ val keyguardCoordinator =
+ KeyguardCoordinator(
+ keyguardNotifVisibilityProvider,
+ sectionHeaderVisibilityProvider,
+ statusBarStateController,
+ )
+ keyguardCoordinator.attach(notifPipeline)
+ onStateChangeListener =
+ argumentCaptor {
+ verify(keyguardNotifVisibilityProvider).addOnStateChangedListener(capture())
+ }
+ .lastValue
}
@Test
- fun testSetSectionHeadersVisibleInShade() = runKeyguardCoordinatorTest {
+ fun testSetSectionHeadersVisibleInShade() {
clearInvocations(sectionHeaderVisibilityProvider)
whenever(statusBarStateController.state).thenReturn(StatusBarState.SHADE)
onStateChangeListener.accept("state change")
@@ -102,617 +71,10 @@
}
@Test
- fun testSetSectionHeadersNotVisibleOnKeyguard() = runKeyguardCoordinatorTest {
+ fun testSetSectionHeadersNotVisibleOnKeyguard() {
clearInvocations(sectionHeaderVisibilityProvider)
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
onStateChangeListener.accept("state change")
verify(sectionHeaderVisibilityProvider).sectionHeadersVisible = eq(false)
}
-
- @Test
- fun unseenFilterSuppressesSeenNotifWhileKeyguardShowing() {
- // GIVEN: Keyguard is not showing, shade is expanded, and a notification is present
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(true)
- runKeyguardCoordinatorTest {
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: The keyguard is now showing
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // THEN: The notification is recognized as "seen" and is filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
-
- // WHEN: The keyguard goes away
- keyguardRepository.setKeyguardShowing(false)
- testScheduler.runCurrent()
-
- // THEN: The notification is shown regardless
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenFilterStopsMarkingSeenNotifWhenTransitionToAod() {
- // GIVEN: Keyguard is not showing, shade is not expanded, and a notification is present
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(false)
- runKeyguardCoordinatorTest {
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: The device transitions to AOD
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.AOD,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // THEN: We are no longer listening for shade expansions
- verify(statusBarStateController, never()).addCallback(any())
- }
- }
-
- @Test
- fun unseenFilter_headsUpMarkedAsSeen() {
- // GIVEN: Keyguard is not showing, shade is not expanded
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(false)
- runKeyguardCoordinatorTest {
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Gone),
- stateTransition = TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
- )
-
- // WHEN: A notification is posted
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: That notification is heads up
- onHeadsUpChangedListener.onHeadsUpStateChanged(fakeEntry, /* isHeadsUp= */ true)
- testScheduler.runCurrent()
-
- // WHEN: The keyguard is now showing
- keyguardRepository.setKeyguardShowing(true)
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Lockscreen),
- stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.AOD)
- )
-
- // THEN: The notification is recognized as "seen" and is filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
-
- // WHEN: The keyguard goes away
- keyguardRepository.setKeyguardShowing(false)
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Gone),
- stateTransition = TransitionStep(KeyguardState.AOD, KeyguardState.GONE)
- )
-
- // THEN: The notification is shown regardless
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenFilterDoesNotSuppressSeenOngoingNotifWhileKeyguardShowing() {
- // GIVEN: Keyguard is not showing, shade is expanded, and an ongoing notification is present
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(true)
- runKeyguardCoordinatorTest {
- val fakeEntry =
- NotificationEntryBuilder()
- .setNotification(Notification.Builder(mContext, "id").setOngoing(true).build())
- .build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: The keyguard is now showing
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // THEN: The notification is recognized as "ongoing" and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenFilterDoesNotSuppressSeenMediaNotifWhileKeyguardShowing() {
- // GIVEN: Keyguard is not showing, shade is expanded, and a media notification is present
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(true)
- runKeyguardCoordinatorTest {
- val fakeEntry =
- NotificationEntryBuilder().build().apply {
- row =
- mock<ExpandableNotificationRow>().apply {
- whenever(isMediaRow).thenReturn(true)
- }
- }
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: The keyguard is now showing
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // THEN: The notification is recognized as "media" and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenFilterUpdatesSeenProviderWhenSuppressing() {
- // GIVEN: Keyguard is not showing, shade is expanded, and a notification is present
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(true)
- runKeyguardCoordinatorTest {
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: The keyguard is now showing
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // THEN: The notification is recognized as "seen" and is filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
-
- // WHEN: The filter is cleaned up
- unseenFilter.onCleanup()
-
- // THEN: The SeenNotificationProvider has been updated to reflect the suppression
- assertThat(seenNotificationsInteractor.hasFilteredOutSeenNotifications.value).isTrue()
- }
- }
-
- @Test
- fun unseenFilterInvalidatesWhenSettingChanges() {
- // GIVEN: Keyguard is not showing, and shade is expanded
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(true)
- runKeyguardCoordinatorTest {
- // GIVEN: A notification is present
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // GIVEN: The setting for filtering unseen notifications is disabled
- showOnlyUnseenNotifsOnKeyguardSetting = false
-
- // GIVEN: The pipeline has registered the unseen filter for invalidation
- val invalidationListener: Pluggable.PluggableListener<NotifFilter> = mock()
- unseenFilter.setInvalidationListener(invalidationListener)
-
- // WHEN: The keyguard is now showing
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // THEN: The notification is not filtered out
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
-
- // WHEN: The secure setting is changed
- showOnlyUnseenNotifsOnKeyguardSetting = true
-
- // THEN: The pipeline is invalidated
- verify(invalidationListener).onPluggableInvalidated(same(unseenFilter), anyString())
-
- // THEN: The notification is recognized as "seen" and is filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
- }
- }
-
- @Test
- fun unseenFilterAllowsNewNotif() {
- // GIVEN: Keyguard is showing, no notifications present
- keyguardRepository.setKeyguardShowing(true)
- runKeyguardCoordinatorTest {
- // WHEN: A new notification is posted
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // THEN: The notification is recognized as "unseen" and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenFilterSeenGroupSummaryWithUnseenChild() {
- // GIVEN: Keyguard is not showing, shade is expanded, and a notification is present
- keyguardRepository.setKeyguardShowing(false)
- whenever(statusBarStateController.isExpanded).thenReturn(true)
- runKeyguardCoordinatorTest {
- // WHEN: A new notification is posted
- val fakeSummary = NotificationEntryBuilder().build()
- val fakeChild =
- NotificationEntryBuilder()
- .setGroup(context, "group")
- .setGroupSummary(context, false)
- .build()
- GroupEntryBuilder().setSummary(fakeSummary).addChild(fakeChild).build()
-
- collectionListener.onEntryAdded(fakeSummary)
- collectionListener.onEntryAdded(fakeChild)
-
- // WHEN: Keyguard is now showing, both notifications are marked as seen
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // WHEN: The child notification is now unseen
- collectionListener.onEntryUpdated(fakeChild)
-
- // THEN: The summary is not filtered out, because the child is unseen
- assertThat(unseenFilter.shouldFilterOut(fakeSummary, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenNotificationIsMarkedAsSeenWhenKeyguardGoesAway() {
- // GIVEN: Keyguard is showing, not dozing, unseen notification is present
- keyguardRepository.setKeyguardShowing(true)
- keyguardRepository.setIsDozing(false)
- runKeyguardCoordinatorTest {
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.AOD,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: five seconds have passed
- testScheduler.advanceTimeBy(5.seconds)
- testScheduler.runCurrent()
-
- // WHEN: Keyguard is no longer showing
- keyguardRepository.setKeyguardShowing(false)
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Gone),
- stateTransition = TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
- )
-
- // WHEN: Keyguard is shown again
- keyguardRepository.setKeyguardShowing(true)
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Lockscreen),
- stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.AOD)
- )
-
- // THEN: The notification is now recognized as "seen" and is filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isTrue()
- }
- }
-
- @Test
- fun unseenNotificationIsNotMarkedAsSeenIfShadeNotExpanded() {
- // GIVEN: Keyguard is showing, unseen notification is present
- keyguardRepository.setKeyguardShowing(true)
- runKeyguardCoordinatorTest {
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- val fakeEntry = NotificationEntryBuilder().build()
- collectionListener.onEntryAdded(fakeEntry)
-
- // WHEN: Keyguard is no longer showing
- keyguardRepository.setKeyguardShowing(false)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.LOCKSCREEN,
- to = KeyguardState.GONE,
- this.testScheduler,
- )
-
- // WHEN: Keyguard is shown again
- keyguardRepository.setKeyguardShowing(true)
- testScheduler.runCurrent()
-
- // THEN: The notification is not recognized as "seen" and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(fakeEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenNotificationIsNotMarkedAsSeenIfNotOnKeyguardLongEnough() {
- // GIVEN: Keyguard is showing, not dozing, unseen notification is present
- keyguardRepository.setKeyguardShowing(true)
- keyguardRepository.setIsDozing(false)
- runKeyguardCoordinatorTest {
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Lockscreen),
- stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.LOCKSCREEN)
- )
- val firstEntry = NotificationEntryBuilder().setId(1).build()
- collectionListener.onEntryAdded(firstEntry)
- testScheduler.runCurrent()
-
- // WHEN: one second has passed
- testScheduler.advanceTimeBy(1.seconds)
- testScheduler.runCurrent()
-
- // WHEN: another unseen notification is posted
- val secondEntry = NotificationEntryBuilder().setId(2).build()
- collectionListener.onEntryAdded(secondEntry)
- testScheduler.runCurrent()
-
- // WHEN: four more seconds have passed
- testScheduler.advanceTimeBy(4.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the keyguard is no longer showing
- keyguardRepository.setKeyguardShowing(false)
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Gone),
- stateTransition = TransitionStep(KeyguardState.LOCKSCREEN, KeyguardState.GONE)
- )
-
- // WHEN: Keyguard is shown again
- keyguardRepository.setKeyguardShowing(true)
- kosmos.setTransition(
- sceneTransition = Idle(Scenes.Lockscreen),
- stateTransition = TransitionStep(KeyguardState.GONE, KeyguardState.LOCKSCREEN)
- )
-
- // THEN: The first notification is considered seen and is filtered out.
- assertThat(unseenFilter.shouldFilterOut(firstEntry, 0L)).isTrue()
-
- // THEN: The second notification is still considered unseen and is not filtered out
- assertThat(unseenFilter.shouldFilterOut(secondEntry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenNotificationOnKeyguardNotMarkedAsSeenIfRemovedAfterThreshold() {
- // GIVEN: Keyguard is showing, not dozing
- keyguardRepository.setKeyguardShowing(true)
- keyguardRepository.setIsDozing(false)
- runKeyguardCoordinatorTest {
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: a new notification is posted
- val entry = NotificationEntryBuilder().setId(1).build()
- collectionListener.onEntryAdded(entry)
- testScheduler.runCurrent()
-
- // WHEN: five more seconds have passed
- testScheduler.advanceTimeBy(5.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the notification is removed
- collectionListener.onEntryRemoved(entry, 0)
- testScheduler.runCurrent()
-
- // WHEN: the notification is re-posted
- collectionListener.onEntryAdded(entry)
- testScheduler.runCurrent()
-
- // WHEN: one more second has passed
- testScheduler.advanceTimeBy(1.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the keyguard is no longer showing
- keyguardRepository.setKeyguardShowing(false)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.LOCKSCREEN,
- to = KeyguardState.GONE,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: Keyguard is shown again
- keyguardRepository.setKeyguardShowing(true)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // THEN: The notification is considered unseen and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(entry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenNotificationOnKeyguardNotMarkedAsSeenIfRemovedBeforeThreshold() {
- // GIVEN: Keyguard is showing, not dozing
- keyguardRepository.setKeyguardShowing(true)
- keyguardRepository.setIsDozing(false)
- runKeyguardCoordinatorTest {
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: a new notification is posted
- val entry = NotificationEntryBuilder().setId(1).build()
- collectionListener.onEntryAdded(entry)
- testScheduler.runCurrent()
-
- // WHEN: one second has passed
- testScheduler.advanceTimeBy(1.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the notification is removed
- collectionListener.onEntryRemoved(entry, 0)
- testScheduler.runCurrent()
-
- // WHEN: the notification is re-posted
- collectionListener.onEntryAdded(entry)
- testScheduler.runCurrent()
-
- // WHEN: one more second has passed
- testScheduler.advanceTimeBy(1.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the keyguard is no longer showing
- keyguardRepository.setKeyguardShowing(false)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.LOCKSCREEN,
- to = KeyguardState.GONE,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: Keyguard is shown again
- keyguardRepository.setKeyguardShowing(true)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // THEN: The notification is considered unseen and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(entry, 0L)).isFalse()
- }
- }
-
- @Test
- fun unseenNotificationOnKeyguardNotMarkedAsSeenIfUpdatedBeforeThreshold() {
- // GIVEN: Keyguard is showing, not dozing
- keyguardRepository.setKeyguardShowing(true)
- keyguardRepository.setIsDozing(false)
- runKeyguardCoordinatorTest {
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: a new notification is posted
- val entry = NotificationEntryBuilder().setId(1).build()
- collectionListener.onEntryAdded(entry)
- testScheduler.runCurrent()
-
- // WHEN: one second has passed
- testScheduler.advanceTimeBy(1.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the notification is updated
- collectionListener.onEntryUpdated(entry)
- testScheduler.runCurrent()
-
- // WHEN: four more seconds have passed
- testScheduler.advanceTimeBy(4.seconds)
- testScheduler.runCurrent()
-
- // WHEN: the keyguard is no longer showing
- keyguardRepository.setKeyguardShowing(false)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.LOCKSCREEN,
- to = KeyguardState.GONE,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // WHEN: Keyguard is shown again
- keyguardRepository.setKeyguardShowing(true)
- keyguardTransitionRepository.sendTransitionSteps(
- from = KeyguardState.GONE,
- to = KeyguardState.LOCKSCREEN,
- this.testScheduler,
- )
- testScheduler.runCurrent()
-
- // THEN: The notification is considered unseen and is not filtered out.
- assertThat(unseenFilter.shouldFilterOut(entry, 0L)).isFalse()
- }
- }
-
- private fun runKeyguardCoordinatorTest(
- testBlock: suspend KeyguardCoordinatorTestScope.() -> Unit
- ) {
- val testDispatcher = UnconfinedTestDispatcher()
- val testScope = TestScope(testDispatcher)
- val fakeSettings =
- FakeSettings().apply {
- putInt(Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, 1)
- }
- val seenNotificationsInteractor =
- SeenNotificationsInteractor(ActiveNotificationListRepository())
- val keyguardCoordinator =
- KeyguardCoordinator(
- testDispatcher,
- mock<DumpManager>(),
- headsUpManager,
- keyguardNotifVisibilityProvider,
- keyguardRepository,
- kosmos.keyguardTransitionInteractor,
- KeyguardCoordinatorLogger(logcatLogBuffer()),
- testScope.backgroundScope,
- sectionHeaderVisibilityProvider,
- fakeSettings,
- seenNotificationsInteractor,
- statusBarStateController,
- )
- keyguardCoordinator.attach(notifPipeline)
- testScope.runTest(dispatchTimeoutMs = 1.seconds.inWholeMilliseconds) {
- KeyguardCoordinatorTestScope(
- keyguardCoordinator,
- testScope,
- seenNotificationsInteractor,
- fakeSettings,
- )
- .testBlock()
- }
- }
-
- private inner class KeyguardCoordinatorTestScope(
- private val keyguardCoordinator: KeyguardCoordinator,
- private val scope: TestScope,
- val seenNotificationsInteractor: SeenNotificationsInteractor,
- private val fakeSettings: FakeSettings,
- ) : CoroutineScope by scope {
- val testScheduler: TestCoroutineScheduler
- get() = scope.testScheduler
-
- val onStateChangeListener: Consumer<String> = withArgCaptor {
- verify(keyguardNotifVisibilityProvider).addOnStateChangedListener(capture())
- }
-
- val unseenFilter: NotifFilter
- get() = keyguardCoordinator.unseenNotifFilter
-
- val collectionListener: NotifCollectionListener = withArgCaptor {
- verify(notifPipeline).addCollectionListener(capture())
- }
-
- val onHeadsUpChangedListener: OnHeadsUpChangedListener
- get() = withArgCaptor { verify(headsUpManager).addListener(capture()) }
-
- val statusBarStateListener: StatusBarStateController.StateListener
- get() = withArgCaptor { verify(statusBarStateController).addCallback(capture()) }
-
- var showOnlyUnseenNotifsOnKeyguardSetting: Boolean
- get() =
- fakeSettings.getIntForUser(
- Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
- UserHandle.USER_CURRENT,
- ) == 1
- set(value) {
- fakeSettings.putIntForUser(
- Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS,
- if (value) 1 else 2,
- UserHandle.USER_CURRENT,
- )
- }
- }
-
- companion object {
- @JvmStatic
- @Parameters(name = "{0}")
- fun getParams(): List<FlagsParameterization> {
- return FlagsParameterization.allCombinationsOf().andSceneContainer()
- }
- }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
index c2a7b52..b7ebebe 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
@@ -126,6 +126,19 @@
}
@Test
+ @EnableSceneContainer
+ fun resetViewStates_defaultHun_yTranslationIsHeadsUpTop() {
+ val headsUpTop = 200f
+ ambientState.headsUpTop = headsUpTop
+
+ whenever(notificationRow.isPinned).thenReturn(true)
+ whenever(notificationRow.isHeadsUp).thenReturn(true)
+
+ resetViewStates_hunYTranslationIs(headsUpTop)
+ }
+
+ @Test
+ @DisableSceneContainer
fun resetViewStates_defaultHun_yTranslationIsInset() {
whenever(notificationRow.isPinned).thenReturn(true)
whenever(notificationRow.isHeadsUp).thenReturn(true)
@@ -133,6 +146,7 @@
}
@Test
+ @DisableSceneContainer
fun resetViewStates_defaultHunWithStackMargin_changesHunYTranslation() {
whenever(notificationRow.isPinned).thenReturn(true)
whenever(notificationRow.isHeadsUp).thenReturn(true)
@@ -140,7 +154,7 @@
}
@Test
- @DisableSceneContainer // TODO(b/332574413) cover hun bounds integration with tests
+ @DisableSceneContainer
fun resetViewStates_defaultHunWhenShadeIsOpening_yTranslationIsInset() {
whenever(notificationRow.isPinned).thenReturn(true)
whenever(notificationRow.isHeadsUp).thenReturn(true)
@@ -153,6 +167,7 @@
}
@Test
+ @DisableSceneContainer
@DisableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_hunAnimatingAway_yTranslationIsInset() {
whenever(notificationRow.isHeadsUpAnimatingAway).thenReturn(true)
@@ -160,6 +175,7 @@
}
@Test
+ @DisableSceneContainer
@DisableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_hunAnimatingAway_StackMarginChangesHunYTranslation() {
whenever(notificationRow.isHeadsUpAnimatingAway).thenReturn(true)
@@ -167,6 +183,7 @@
}
@Test
+ @DisableSceneContainer
@EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_defaultHun_newHeadsUpAnim_yTranslationIsInset() {
whenever(notificationRow.isPinned).thenReturn(true)
@@ -175,6 +192,7 @@
}
@Test
+ @DisableSceneContainer
@EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_defaultHunWithStackMargin_newHeadsUpAnim_changesHunYTranslation() {
whenever(notificationRow.isPinned).thenReturn(true)
@@ -183,7 +201,98 @@
}
@Test
- @DisableSceneContainer // TODO(b/332574413) cover hun bounds integration with tests
+ @EnableSceneContainer
+ fun resetViewStates_defaultHunInShade_stackTopEqualsHunTop_hunHasFullHeight() {
+ // Given: headsUpTop == stackTop -> haven't scrolled the stack yet
+ val headsUpTop = 150f
+ val collapsedHeight = 100
+ val intrinsicHeight = 300
+ fakeHunInShade(
+ headsUpTop = headsUpTop,
+ stackTop = headsUpTop,
+ collapsedHeight = collapsedHeight,
+ intrinsicHeight = intrinsicHeight,
+ )
+
+ // When
+ stackScrollAlgorithm.resetViewStates(ambientState, 0)
+
+ // Then: HUN is at the headsUpTop
+ assertThat(notificationRow.viewState.yTranslation).isEqualTo(headsUpTop)
+ // And: HUN has its full height
+ assertThat(notificationRow.viewState.height).isEqualTo(intrinsicHeight)
+ }
+
+ @Test
+ @EnableSceneContainer
+ fun resetViewStates_defaultHunInShade_stackTopGreaterThanHeadsUpTop_hunClampedToHeadsUpTop() {
+ // Given: headsUpTop < stackTop -> scrolled the stack a little bit
+ val stackTop = -25f
+ val headsUpTop = 150f
+ val collapsedHeight = 100
+ val intrinsicHeight = 300
+ fakeHunInShade(
+ headsUpTop = headsUpTop,
+ stackTop = stackTop,
+ collapsedHeight = collapsedHeight,
+ intrinsicHeight = intrinsicHeight
+ )
+
+ // When
+ stackScrollAlgorithm.resetViewStates(ambientState, 0)
+
+ // Then: HUN is translated to the headsUpTop
+ assertThat(notificationRow.viewState.yTranslation).isEqualTo(headsUpTop)
+ // And: HUN is clipped to the available space
+ // newTranslation = max(150, -25)
+ // distToReal = 150 - (-25)
+ // height = max(300 - 175, 100)
+ assertThat(notificationRow.viewState.height).isEqualTo(125)
+ }
+
+ @Test
+ @EnableSceneContainer
+ fun resetViewStates_defaultHunInShade_stackOverscrolledHun_hunClampedToHeadsUpTop() {
+ // Given: headsUpTop << stackTop -> stack has fully overscrolled the HUN
+ val stackTop = -500f
+ val headsUpTop = 150f
+ val collapsedHeight = 100
+ val intrinsicHeight = 300
+ fakeHunInShade(
+ headsUpTop = headsUpTop,
+ stackTop = stackTop,
+ collapsedHeight = collapsedHeight,
+ intrinsicHeight = intrinsicHeight
+ )
+
+ // When
+ stackScrollAlgorithm.resetViewStates(ambientState, 0)
+
+ // Then: HUN is translated to the headsUpTop
+ assertThat(notificationRow.viewState.yTranslation).isEqualTo(headsUpTop)
+ // And: HUN is clipped to its collapsed height
+ assertThat(notificationRow.viewState.height).isEqualTo(collapsedHeight)
+ }
+
+ @Test
+ @EnableSceneContainer
+ fun resetViewStates_defaultHun_showingQS_hunTranslatedToHeadsUpTop() {
+ // Given: the shade is open and scrolled to the bottom to show the QuickSettings
+ val headsUpTop = 2000f
+ fakeHunInShade(
+ headsUpTop = headsUpTop,
+ stackTop = 2600f, // stack scrolled below the screen
+ stackCutoff = 4000f,
+ collapsedHeight = 100,
+ intrinsicHeight = 300
+ )
+ whenever(notificationRow.isAboveShelf).thenReturn(true)
+
+ resetViewStates_hunYTranslationIs(headsUpTop)
+ }
+
+ @Test
+ @DisableSceneContainer
@EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_defaultHun_showingQS_newHeadsUpAnim_hunTranslatedToMax() {
// Given: the shade is open and scrolled to the bottom to show the QuickSettings
@@ -200,7 +309,7 @@
}
@Test
- @DisableSceneContainer // TODO(b/332574413) cover hun bounds integration with tests
+ @DisableSceneContainer
@EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_hunAnimatingAway_showingQS_newHeadsUpAnim_hunTranslatedToBottomOfScreen() {
// Given: the shade is open and scrolled to the bottom to show the QuickSettings
@@ -245,6 +354,7 @@
}
@Test
+ @DisableSceneContainer
@EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_hunAnimatingAwayWhileDozing_yTranslationIsInset() {
whenever(notificationRow.isHeadsUpAnimatingAway).thenReturn(true)
@@ -255,6 +365,7 @@
}
@Test
+ @DisableSceneContainer
@EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
fun resetViewStates_hunAnimatingAwayWhileDozing_hasStackMargin_changesHunYTranslation() {
whenever(notificationRow.isHeadsUpAnimatingAway).thenReturn(true)
@@ -744,8 +855,7 @@
expandableViewState.yTranslation = 50f
stackScrollAlgorithm.clampHunToTop(
- /* quickQsOffsetHeight= */ 10f,
- /* stackTranslation= */ 0f,
+ /* headsUpTop= */ 10f,
/* collapsedHeight= */ 1f,
expandableViewState
)
@@ -760,8 +870,7 @@
expandableViewState.yTranslation = -10f
stackScrollAlgorithm.clampHunToTop(
- /* quickQsOffsetHeight= */ 10f,
- /* stackTranslation= */ 0f,
+ /* headsUpTop= */ 10f,
/* collapsedHeight= */ 1f,
expandableViewState
)
@@ -777,8 +886,7 @@
expandableViewState.yTranslation = -100f
stackScrollAlgorithm.clampHunToTop(
- /* quickQsOffsetHeight= */ 10f,
- /* stackTranslation= */ 0f,
+ /* headsUpTop= */ 10f,
/* collapsedHeight= */ 10f,
expandableViewState
)
@@ -796,8 +904,7 @@
expandableViewState.yTranslation = 5f
stackScrollAlgorithm.clampHunToTop(
- /* quickQsOffsetHeight= */ 10f,
- /* stackTranslation= */ 0f,
+ /* headsUpTop= */ 10f,
/* collapsedHeight= */ 10f,
expandableViewState
)
@@ -1309,6 +1416,33 @@
expect.that(notificationRow.viewState.alpha).isEqualTo(expectedAlpha)
}
+
+ /** fakes the notification row under test, to be a HUN in a fully opened shade */
+ private fun fakeHunInShade(
+ headsUpTop: Float,
+ collapsedHeight: Int,
+ intrinsicHeight: Int,
+ stackTop: Float,
+ stackCutoff: Float = 2000f,
+ fullStackHeight: Float = 3000f
+ ) {
+ ambientState.headsUpTop = headsUpTop
+ ambientState.stackTop = stackTop
+ ambientState.stackCutoff = stackCutoff
+
+ // shade is fully open
+ ambientState.expansionFraction = 1.0f
+ with(fullStackHeight) {
+ ambientState.stackHeight = this
+ ambientState.stackEndHeight = this
+ }
+ stackScrollAlgorithm.setIsExpanded(true)
+
+ whenever(notificationRow.mustStayOnScreen()).thenReturn(true)
+ whenever(notificationRow.isHeadsUp).thenReturn(true)
+ whenever(notificationRow.collapsedHeight).thenReturn(collapsedHeight)
+ whenever(notificationRow.intrinsicHeight).thenReturn(intrinsicHeight)
+ }
}
private fun mockExpandableNotificationRow(): ExpandableNotificationRow {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImplTest.java
index fea0e72..8dfbb37 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImplTest.java
@@ -118,8 +118,8 @@
}
@Test
+ @DisableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
public void testAppearResetsTranslation() {
- mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
mController.setupAodIcons(mAodIcons);
when(mDozeParameters.shouldControlScreenOff()).thenReturn(false);
mController.appearAodIcons();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
index 0e4d892..49e3f04 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
@@ -116,6 +116,7 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
@@ -176,6 +177,8 @@
private ViewRootImpl mViewRootImpl;
@Mock
private WindowOnBackInvokedDispatcher mOnBackInvokedDispatcher;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private KeyguardTransitionInteractor mKeyguardTransitionInteractor;
@Captor
private ArgumentCaptor<OnBackInvokedCallback> mBackCallbackCaptor;
@Captor
@@ -223,7 +226,7 @@
mAlternateBouncerInteractor,
mUdfpsOverlayInteractor,
mActivityStarter,
- mock(KeyguardTransitionInteractor.class),
+ mKeyguardTransitionInteractor,
StandardTestDispatcher(null, null),
() -> mock(WindowManagerLockscreenVisibilityInteractor.class),
() -> mock(KeyguardDismissActionInteractor.class),
@@ -1066,6 +1069,22 @@
@Test
@DisableSceneContainer
+ @EnableFlags(Flags.FLAG_SIM_PIN_RACE_CONDITION_ON_RESTART)
+ public void testShowBouncerOrKeyguard_showsKeyguardIfShowBouncerReturnsFalse() {
+ when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(
+ KeyguardSecurityModel.SecurityMode.SimPin);
+ when(mPrimaryBouncerInteractor.show(true)).thenReturn(false);
+ when(mKeyguardTransitionInteractor.getTransitionState().getValue().getTo())
+ .thenReturn(KeyguardState.LOCKSCREEN);
+
+ reset(mCentralSurfaces);
+ mStatusBarKeyguardViewManager.showBouncerOrKeyguard(false);
+ verify(mPrimaryBouncerInteractor).show(true);
+ verify(mCentralSurfaces).showKeyguard();
+ }
+
+ @Test
+ @DisableSceneContainer
public void testShowBouncerOrKeyguard_needsFullScreen_bouncerAlreadyShowing() {
when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(
KeyguardSecurityModel.SecurityMode.SimPin);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
index 01540e7..58ad835 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
@@ -536,7 +536,7 @@
// WHEN there's *no* ongoing activity via new callback
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ false);
+ /* hasOngoingActivity= */ false, /* shouldAnimate= */ false);
// THEN the old callback value is used, so the view is shown
assertEquals(View.VISIBLE,
@@ -548,7 +548,7 @@
// WHEN there *is* an ongoing activity via new callback
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
// THEN the old callback value is used, so the view is hidden
assertEquals(View.GONE,
@@ -565,7 +565,7 @@
// listener, but I'm unable to get the fragment to get attached so that the binder starts
// listening to flows.
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ false);
+ /* hasOngoingActivity= */ false, /* shouldAnimate= */ false);
assertEquals(View.GONE,
mFragment.getView().findViewById(R.id.ongoing_activity_chip).getVisibility());
@@ -577,7 +577,7 @@
resumeAndGetFragment();
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
assertEquals(View.VISIBLE,
mFragment.getView().findViewById(R.id.ongoing_activity_chip).getVisibility());
@@ -590,7 +590,7 @@
CollapsedStatusBarFragment fragment = resumeAndGetFragment();
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
fragment.disable(DEFAULT_DISPLAY,
StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false);
@@ -605,7 +605,7 @@
CollapsedStatusBarFragment fragment = resumeAndGetFragment();
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
when(mHeadsUpAppearanceController.shouldBeVisible()).thenReturn(true);
fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
@@ -621,14 +621,14 @@
// Ongoing activity started
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
assertEquals(View.VISIBLE,
mFragment.getView().findViewById(R.id.ongoing_activity_chip).getVisibility());
// Ongoing activity ended
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ false);
+ /* hasOngoingActivity= */ false, /* shouldAnimate= */ false);
assertEquals(View.GONE,
mFragment.getView().findViewById(R.id.ongoing_activity_chip).getVisibility());
@@ -643,7 +643,7 @@
// Ongoing call started
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
// Notification area is hidden without delay
assertEquals(0f, getNotificationAreaView().getAlpha(), 0.01);
@@ -661,7 +661,7 @@
// WHEN there's *no* ongoing activity via new callback
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ false);
+ /* hasOngoingActivity= */ false, /* shouldAnimate= */ false);
// THEN the new callback value is used, so the view is hidden
assertEquals(View.GONE,
@@ -673,7 +673,7 @@
// WHEN there *is* an ongoing activity via new callback
mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged(
- /* hasOngoingActivity= */ true);
+ /* hasOngoingActivity= */ true, /* shouldAnimate= */ false);
// THEN the new callback value is used, so the view is shown
assertEquals(View.VISIBLE,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModelImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModelImplTest.kt
index 94159bc..60750cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModelImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModelImplTest.kt
@@ -425,7 +425,7 @@
kosmos.screenRecordRepository.screenRecordState.value = ScreenRecordModel.DoingNothing
- assertThat(latest).isEqualTo(OngoingActivityChipModel.Hidden)
+ assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java)
kosmos.fakeMediaProjectionRepository.mediaProjectionState.value =
MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewModel.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewModel.kt
index d3f1125..cefdf7e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewModel.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewModel.kt
@@ -29,7 +29,7 @@
override val transitionFromLockscreenToDreamStartedEvent = MutableSharedFlow<Unit>()
override val ongoingActivityChip: MutableStateFlow<OngoingActivityChipModel> =
- MutableStateFlow(OngoingActivityChipModel.Hidden)
+ MutableStateFlow(OngoingActivityChipModel.Hidden())
override val isHomeStatusBarAllowedByScene = MutableStateFlow(false)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitorTest.kt
index ce6bc09..cf0db7b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitorTest.kt
@@ -29,11 +29,9 @@
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
-@Ignore
@SmallTest
@RunWith(AndroidJUnit4::class)
class BackGestureMonitorTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/FakeMotionEvent.kt b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/FakeMotionEvent.kt
index e632e34..f40282f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/FakeMotionEvent.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/FakeMotionEvent.kt
@@ -21,8 +21,11 @@
import android.view.MotionEvent
import android.view.MotionEvent.CLASSIFICATION_NONE
import android.view.MotionEvent.TOOL_TYPE_FINGER
+import java.lang.reflect.Method
+import org.mockito.kotlin.doNothing
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.spy
+import org.mockito.kotlin.whenever
fun motionEvent(
action: Int,
@@ -37,12 +40,31 @@
val event =
MotionEvent.obtain(/* downTime= */ 0, /* eventTime= */ 0, action, x, y, /* metaState= */ 0)
event.source = source
- return spy<MotionEvent>(event) {
- on { getToolType(0) } doReturn toolType
- on { getPointerCount() } doReturn pointerCount
- axisValues.forEach { (key, value) -> on { getAxisValue(key) } doReturn value }
- on { getClassification() } doReturn classification
- }
+ val spy =
+ spy<MotionEvent>(event) {
+ on { getToolType(0) } doReturn toolType
+ on { getPointerCount() } doReturn pointerCount
+ axisValues.forEach { (key, value) -> on { getAxisValue(key) } doReturn value }
+ on { getClassification() } doReturn classification
+ }
+ ensureFinalizeIsNotCalledTwice(spy)
+ return spy
+}
+
+private fun ensureFinalizeIsNotCalledTwice(spy: MotionEvent) {
+ // Spy in mockito will create copy of the spied object, copying all its field etc. Here it means
+ // we create copy of MotionEvent and its mNativePtr, so we have two separate objects of type
+ // MotionEvents with the same mNativePtr. That breaks because MotionEvent has custom finalize()
+ // method which goes to native code and tries to delete the reference from mNativePtr. It works
+ // first time but second time reference is already deleted and it breaks. That's why we have to
+ // avoid calling finalize twice
+ doNothing().whenever(spy).finalizeUsingReflection()
+}
+
+private fun MotionEvent.finalizeUsingReflection() {
+ val finalizeMethod: Method = MotionEvent::class.java.getDeclaredMethod("finalize")
+ finalizeMethod.isAccessible = true
+ finalizeMethod.invoke(this)
}
fun touchpadEvent(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandlerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandlerTest.kt
index f5ef8b0..769f264 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandlerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/TouchpadGestureHandlerTest.kt
@@ -34,11 +34,9 @@
import com.android.systemui.SysuiTestCase
import com.android.systemui.touchpad.tutorial.ui.gesture.TouchpadGesture.BACK
import com.google.common.truth.Truth.assertThat
-import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
-@Ignore
@SmallTest
@RunWith(AndroidJUnit4::class)
class TouchpadGestureHandlerTest : SysuiTestCase() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/viewmodel/TouchpadTutorialViewModelTest.kt
similarity index 97%
rename from packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModelTest.kt
rename to packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/viewmodel/TouchpadTutorialViewModelTest.kt
index 2300a1f..c705cea 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/TouchpadTutorialViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/viewmodel/TouchpadTutorialViewModelTest.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.systemui.touchpad.tutorial.ui
+package com.android.systemui.touchpad.tutorial.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index 6c4608d..60b5b5d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -86,6 +86,7 @@
import android.service.notification.NotificationListenerService;
import android.service.notification.ZenModeConfig;
import android.testing.TestableLooper;
+import android.util.Log;
import android.util.Pair;
import android.util.SparseArray;
import android.view.Display;
@@ -183,6 +184,7 @@
import com.android.wm.shell.common.bubbles.BubbleBarUpdate;
import com.android.wm.shell.draganddrop.DragAndDropController;
import com.android.wm.shell.onehanded.OneHandedController;
+import com.android.wm.shell.shared.animation.PhysicsAnimatorTestUtils;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
@@ -192,7 +194,6 @@
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -216,6 +217,9 @@
@RunWith(ParameterizedAndroidJunit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public class BubblesTest extends SysuiTestCase {
+
+ private static final String TAG = "BubblesTest";
+
@Mock
private CommonNotifCollection mCommonNotifCollection;
@Mock
@@ -241,8 +245,6 @@
@Mock
private KeyguardBypassController mKeyguardBypassController;
@Mock
- private FloatingContentCoordinator mFloatingContentCoordinator;
- @Mock
private BubbleDataRepository mDataRepository;
@Mock
private NotificationShadeWindowView mNotificationShadeWindowView;
@@ -372,6 +374,7 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
+ PhysicsAnimatorTestUtils.prepareForTest();
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
doReturn(true).when(mTransitions).isRegistered();
@@ -494,7 +497,7 @@
mShellCommandHandler,
mShellController,
mBubbleData,
- mFloatingContentCoordinator,
+ new FloatingContentCoordinator(),
mDataRepository,
mStatusBarService,
mWindowManager,
@@ -571,12 +574,32 @@
}
@After
- public void tearDown() {
+ public void tearDown() throws Exception {
ArrayList<Bubble> bubbles = new ArrayList<>(mBubbleData.getBubbles());
for (int i = 0; i < bubbles.size(); i++) {
mBubbleController.removeBubble(bubbles.get(i).getKey(),
Bubbles.DISMISS_NO_LONGER_BUBBLE);
}
+ mTestableLooper.processAllMessages();
+
+ // check that no animations are running before finishing the test to make sure that the
+ // state gets cleaned up correctly between tests.
+ int retryCount = 0;
+ while (PhysicsAnimatorTestUtils.isAnyAnimationRunning() && retryCount <= 10) {
+ Log.d(
+ TAG,
+ String.format("waiting for animations to complete. attempt %d", retryCount));
+ // post a message to the looper and wait for it to be processed
+ mTestableLooper.runWithLooper(() -> {});
+ retryCount++;
+ }
+ mTestableLooper.processAllMessages();
+ if (PhysicsAnimatorTestUtils.isAnyAnimationRunning()) {
+ Log.d(TAG, "finished waiting for animations to complete but animations are still "
+ + "running");
+ } else {
+ Log.d(TAG, "no animations are running");
+ }
}
@Test
@@ -1853,7 +1876,6 @@
any(Bubble.class), anyBoolean(), anyBoolean());
}
- @Ignore("reason = b/351977103")
@Test
public void testShowStackEdu_isNotConversationBubble() {
// Setup
@@ -2280,7 +2302,7 @@
mBubbleController.expandStackAndSelectBubbleFromLauncher(mBubbleEntry.getKey(), 0);
// Drag first bubble to dismiss
mBubbleController.startBubbleDrag(mBubbleEntry.getKey());
- mBubbleController.dragBubbleToDismiss(mBubbleEntry.getKey());
+ mBubbleController.dragBubbleToDismiss(mBubbleEntry.getKey(), System.currentTimeMillis());
// Second bubble is selected and expanded
assertThat(mBubbleData.getSelectedBubbleKey()).isEqualTo(mBubbleEntry2.getKey());
assertThat(mBubbleController.getLayerView().isExpanded()).isTrue();
@@ -2304,7 +2326,7 @@
mBubbleController.expandStackAndSelectBubbleFromLauncher(mBubbleEntry.getKey(), 0);
// Drag second bubble to dismiss
mBubbleController.startBubbleDrag(mBubbleEntry2.getKey());
- mBubbleController.dragBubbleToDismiss(mBubbleEntry2.getKey());
+ mBubbleController.dragBubbleToDismiss(mBubbleEntry2.getKey(), System.currentTimeMillis());
// First bubble remains selected and expanded
assertThat(mBubbleData.getSelectedBubbleKey()).isEqualTo(mBubbleEntry.getKey());
assertThat(mBubbleController.getLayerView().isExpanded()).isTrue();
diff --git a/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt b/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt
index 2a05598..d5451ee 100644
--- a/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/android/view/WindowManagerKosmos.kt
@@ -19,4 +19,6 @@
import com.android.systemui.kosmos.Kosmos
import org.mockito.Mockito.mock
-val Kosmos.windowManager by Kosmos.Fixture<WindowManager> { mock(WindowManager::class.java) }
+val Kosmos.mockWindowManager: WindowManager by Kosmos.Fixture { mock(WindowManager::class.java) }
+
+var Kosmos.windowManager: WindowManager by Kosmos.Fixture { mockWindowManager }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt
index 0f8833c..0b6b816 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt
@@ -35,6 +35,7 @@
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
+import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.demomode.DemoModeController
import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.ScreenLifecycle
@@ -136,6 +137,7 @@
@get:Provides val deviceEntryIconTransitions: Set<DeviceEntryIconTransition> = emptySet(),
@get:Provides val communalInteractor: CommunalInteractor = mock(),
@get:Provides val communalSceneInteractor: CommunalSceneInteractor = mock(),
+ @get:Provides val communalSettingsInteractor: CommunalSettingsInteractor = mock(),
@get:Provides val sceneLogger: SceneLogger = mock(),
@get:Provides val trustManager: TrustManager = mock(),
@get:Provides val primaryBouncerInteractor: PrimaryBouncerInteractor = mock(),
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelKosmos.kt
index 4b64416..de5f0f3 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/ui/viewmodel/BouncerMessageViewModelKosmos.kt
@@ -24,7 +24,7 @@
import com.android.systemui.deviceentry.domain.interactor.biometricMessageInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryFaceAuthInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryFingerprintAuthInteractor
-import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
+import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.user.ui.viewmodel.userSwitcherViewModel
@@ -44,7 +44,7 @@
clock = systemClock,
biometricMessageInteractor = biometricMessageInteractor,
faceAuthInteractor = deviceEntryFaceAuthInteractor,
- deviceEntryInteractor = deviceEntryInteractor,
+ deviceUnlockedInteractor = deviceUnlockedInteractor,
fingerprintInteractor = deviceEntryFingerprintAuthInteractor,
flags = composeBouncerFlags,
)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/data/repository/FakeDeviceEntryRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/data/repository/FakeDeviceEntryRepository.kt
index 25e7729..045bd5d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/data/repository/FakeDeviceEntryRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/data/repository/FakeDeviceEntryRepository.kt
@@ -30,16 +30,10 @@
private val _isBypassEnabled = MutableStateFlow(false)
override val isBypassEnabled: StateFlow<Boolean> = _isBypassEnabled
- var userPresentCount = 0
-
override suspend fun isLockscreenEnabled(): Boolean {
return isLockscreenEnabled
}
- override suspend fun reportUserPresent() {
- userPresentCount++
- }
-
fun setLockscreenEnabled(isLockscreenEnabled: Boolean) {
this.isLockscreenEnabled = isLockscreenEnabled
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorKosmos.kt
index a8fc27a..b9be04d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorKosmos.kt
@@ -57,5 +57,6 @@
powerInteractor = powerInteractor,
biometricSettingsRepository = biometricSettingsRepository,
trustManager = trustManager,
+ deviceEntryFaceAuthStatusInteractor = deviceEntryFaceAuthStatusInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorKosmos.kt
new file mode 100644
index 0000000..66d3709
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthStatusInteractorKosmos.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.deviceentry.domain.interactor
+
+import android.content.res.mainResources
+import com.android.systemui.keyguard.data.repository.deviceEntryFaceAuthRepository
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+val Kosmos.deviceEntryFaceAuthStatusInteractor by
+ Kosmos.Fixture {
+ DeviceEntryFaceAuthStatusInteractor(
+ repository = deviceEntryFaceAuthRepository,
+ resources = mainResources,
+ applicationScope = applicationCoroutineScope,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorKosmos.kt
index 1200866..caa6e99 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorKosmos.kt
@@ -19,8 +19,6 @@
import com.android.systemui.authentication.domain.interactor.authenticationInteractor
import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor
import com.android.systemui.deviceentry.data.repository.deviceEntryRepository
-import com.android.systemui.flags.fakeSystemPropertiesHelper
-import com.android.systemui.keyguard.domain.interactor.trustInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
@@ -34,12 +32,7 @@
repository = deviceEntryRepository,
authenticationInteractor = authenticationInteractor,
sceneInteractor = sceneInteractor,
- faceAuthInteractor = deviceEntryFaceAuthInteractor,
- fingerprintAuthInteractor = deviceEntryFingerprintAuthInteractor,
- biometricSettingsInteractor = deviceEntryBiometricSettingsInteractor,
- trustInteractor = trustInteractor,
deviceUnlockedInteractor = deviceUnlockedInteractor,
- systemPropertiesHelper = fakeSystemPropertiesHelper,
alternateBouncerInteractor = alternateBouncerInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorKosmos.kt
index 14210bc..1ed10fbe 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceUnlockedInteractorKosmos.kt
@@ -18,6 +18,8 @@
import com.android.systemui.authentication.domain.interactor.authenticationInteractor
import com.android.systemui.deviceentry.data.repository.deviceEntryRepository
+import com.android.systemui.flags.fakeSystemPropertiesHelper
+import com.android.systemui.flags.systemPropertiesHelper
import com.android.systemui.keyguard.domain.interactor.trustInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
@@ -33,5 +35,7 @@
faceAuthInteractor = deviceEntryFaceAuthInteractor,
fingerprintAuthInteractor = deviceEntryFingerprintAuthInteractor,
powerInteractor = powerInteractor,
+ biometricSettingsInteractor = deviceEntryBiometricSettingsInteractor,
+ systemPropertiesHelper = fakeSystemPropertiesHelper,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FeatureFlagsClassicKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FeatureFlagsClassicKosmos.kt
index 45ea364..d9235cc 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FeatureFlagsClassicKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FeatureFlagsClassicKosmos.kt
@@ -37,6 +37,7 @@
set(Flags.LOCK_SCREEN_LONG_PRESS_ENABLED, false)
set(Flags.LOCKSCREEN_ENABLE_LANDSCAPE, false)
set(Flags.NSSL_DEBUG_LINES, false)
+ set(Flags.COMMUNAL_SERVICE_ENABLED, false)
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyboard/shortcut/KeyboardShortcutHelperKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyboard/shortcut/KeyboardShortcutHelperKosmos.kt
index 001b55b..c423b62 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyboard/shortcut/KeyboardShortcutHelperKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyboard/shortcut/KeyboardShortcutHelperKosmos.kt
@@ -41,13 +41,12 @@
import com.android.systemui.kosmos.testScope
import com.android.systemui.model.sysUiState
import com.android.systemui.settings.displayTracker
-import com.android.systemui.util.icons.fakeAppCategoryIconProvider
var Kosmos.shortcutHelperAppCategoriesShortcutsSource: KeyboardShortcutGroupsSource by
Kosmos.Fixture {
AppCategoriesShortcutsSource(
- fakeAppCategoryIconProvider,
- mainResources,
+ windowManager,
+ testDispatcher,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt
index 6c3de44..f162594 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.domain.interactor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.kosmos.Kosmos
@@ -37,6 +38,7 @@
mainDispatcher = testDispatcher,
keyguardInteractor = keyguardInteractor,
glanceableHubTransitions = glanceableHubTransitions,
+ communalSettingsInteractor = communalSettingsInteractor,
powerInteractor = powerInteractor,
keyguardOcclusionInteractor = keyguardOcclusionInteractor,
deviceEntryInteractor = deviceEntryInteractor,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt
index 6784658..079852a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.domain.interactor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -26,15 +27,16 @@
var Kosmos.fromGlanceableHubTransitionInteractor by
Kosmos.Fixture {
FromGlanceableHubTransitionInteractor(
- transitionRepository = keyguardTransitionRepository,
- transitionInteractor = keyguardTransitionInteractor,
- internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
- bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
+ bgDispatcher = testDispatcher,
+ glanceableHubTransitions = glanceableHubTransitions,
+ communalSettingsInteractor = communalSettingsInteractor,
keyguardInteractor = keyguardInteractor,
+ transitionRepository = keyguardTransitionRepository,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
+ transitionInteractor = keyguardTransitionInteractor,
powerInteractor = powerInteractor,
keyguardOcclusionInteractor = keyguardOcclusionInteractor,
- glanceableHubTransitions = glanceableHubTransitions,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt
index 4131145..b07de16 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt
@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.domain.interactor
+import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -37,6 +38,7 @@
shadeRepository = shadeRepository,
powerInteractor = powerInteractor,
glanceableHubTransitions = glanceableHubTransitions,
+ communalSettingsInteractor = communalSettingsInteractor,
swipeToDismissInteractor = swipeToDismissInteractor,
keyguardOcclusionInteractor = keyguardOcclusionInteractor,
)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelKosmos.kt
index 3d85a4a..c7dfd5c 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/casttootherdevice/ui/viewmodel/CastToOtherDeviceChipViewModelKosmos.kt
@@ -17,6 +17,8 @@
package com.android.systemui.statusbar.chips.casttootherdevice.ui.viewmodel
import android.content.applicationContext
+import com.android.systemui.animation.dialogTransitionAnimator
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.statusbar.chips.casttootherdevice.domain.interactor.mediaRouterChipInteractor
@@ -34,6 +36,7 @@
mediaRouterChipInteractor = mediaRouterChipInteractor,
systemClock = fakeSystemClock,
endMediaProjectionDialogHelper = endMediaProjectionDialogHelper,
+ dialogTransitionAnimator = mockDialogTransitionAnimator,
logger = statusBarChipsLogger,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelperKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelperKosmos.kt
index 1ed7a47..651a0f7 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelperKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/mediaprojection/ui/view/EndMediaProjectionDialogHelperKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.chips.mediaprojection.ui.view
import android.content.packageManager
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory
@@ -24,6 +25,7 @@
Kosmos.Fixture {
EndMediaProjectionDialogHelper(
dialogFactory = mockSystemUIDialogFactory,
+ dialogTransitionAnimator = mockDialogTransitionAnimator,
packageManager = packageManager,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelKosmos.kt
index e4bb166..c2a6f7d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/screenrecord/ui/viewmodel/ScreenRecordChipViewModelKosmos.kt
@@ -17,10 +17,12 @@
package com.android.systemui.statusbar.chips.screenrecord.ui.viewmodel
import android.content.applicationContext
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.statusbar.chips.mediaprojection.ui.view.endMediaProjectionDialogHelper
import com.android.systemui.statusbar.chips.screenrecord.domain.interactor.screenRecordChipInteractor
+import com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel.shareToAppChipViewModel
import com.android.systemui.statusbar.chips.statusBarChipsLogger
import com.android.systemui.util.time.fakeSystemClock
@@ -30,7 +32,9 @@
scope = applicationCoroutineScope,
context = applicationContext,
interactor = screenRecordChipInteractor,
+ shareToAppChipViewModel = shareToAppChipViewModel,
endMediaProjectionDialogHelper = endMediaProjectionDialogHelper,
+ dialogTransitionAnimator = mockDialogTransitionAnimator,
systemClock = fakeSystemClock,
logger = statusBarChipsLogger,
)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelKosmos.kt
index 8ed7f96..0770009 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/chips/sharetoapp/ui/viewmodel/ShareToAppChipViewModelKosmos.kt
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.chips.sharetoapp.ui.viewmodel
import android.content.applicationContext
+import com.android.systemui.animation.mockDialogTransitionAnimator
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.mediaProjectionChipInteractor
@@ -32,6 +33,7 @@
mediaProjectionChipInteractor = mediaProjectionChipInteractor,
systemClock = fakeSystemClock,
endMediaProjectionDialogHelper = endMediaProjectionDialogHelper,
+ dialogTransitionAnimator = mockDialogTransitionAnimator,
logger = statusBarChipsLogger,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt
index 327e1b5..d391750 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt
@@ -16,16 +16,40 @@
package com.android.systemui.volume.data.repository
+import androidx.annotation.IntRange
import com.android.settingslib.volume.data.repository.AudioSharingRepository
+import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MAX
+import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MIN
+import com.android.settingslib.volume.data.repository.GroupIdToVolumes
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
class FakeAudioSharingRepository : AudioSharingRepository {
private val mutableInAudioSharing: MutableStateFlow<Boolean> = MutableStateFlow(false)
+ private val mutableSecondaryGroupId: MutableStateFlow<Int> =
+ MutableStateFlow(TEST_GROUP_ID_INVALID)
+ private val mutableVolumeMap: MutableStateFlow<GroupIdToVolumes> = MutableStateFlow(emptyMap())
override val inAudioSharing: Flow<Boolean> = mutableInAudioSharing
+ override val secondaryGroupId: StateFlow<Int> = mutableSecondaryGroupId
+ override val volumeMap: StateFlow<GroupIdToVolumes> = mutableVolumeMap
+
+ override suspend fun setSecondaryVolume(volume: Int) {}
fun setInAudioSharing(state: Boolean) {
mutableInAudioSharing.value = state
}
+
+ fun setSecondaryGroupId(groupId: Int) {
+ mutableSecondaryGroupId.value = groupId
+ }
+
+ fun setVolumeMap(volumeMap: GroupIdToVolumes) {
+ mutableVolumeMap.value = volumeMap
+ }
+
+ private companion object {
+ const val TEST_GROUP_ID_INVALID = -1
+ }
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorKosmos.kt
new file mode 100644
index 0000000..03981bb
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.volume.domain.interactor
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.volume.data.repository.audioSharingRepository
+
+val Kosmos.audioSharingInteractor by
+ Kosmos.Fixture {
+ AudioSharingInteractorImpl(
+ applicationCoroutineScope,
+ audioSharingRepository,
+ )
+ }
diff --git a/ravenwood/runtime-helper-src/libcore-fake/android/system/Os.java b/ravenwood/runtime-helper-src/libcore-fake/android/system/Os.java
index e031eb2..8a1fe62 100644
--- a/ravenwood/runtime-helper-src/libcore-fake/android/system/Os.java
+++ b/ravenwood/runtime-helper-src/libcore-fake/android/system/Os.java
@@ -30,7 +30,6 @@
return RavenwoodRuntimeNative.lseek(fd, offset, whence);
}
-
public static FileDescriptor[] pipe2(int flags) throws ErrnoException {
return RavenwoodRuntimeNative.pipe2(flags);
}
@@ -42,4 +41,16 @@
public static int fcntlInt(FileDescriptor fd, int cmd, int arg) throws ErrnoException {
return RavenwoodRuntimeNative.fcntlInt(fd, cmd, arg);
}
+
+ public static StructStat fstat(FileDescriptor fd) throws ErrnoException {
+ return RavenwoodRuntimeNative.fstat(fd);
+ }
+
+ public static StructStat lstat(String path) throws ErrnoException {
+ return RavenwoodRuntimeNative.lstat(path);
+ }
+
+ public static StructStat stat(String path) throws ErrnoException {
+ return RavenwoodRuntimeNative.stat(path);
+ }
}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/android/system/StructStat.java b/ravenwood/runtime-helper-src/libcore-fake/android/system/StructStat.java
new file mode 100644
index 0000000..a8b1fca
--- /dev/null
+++ b/ravenwood/runtime-helper-src/libcore-fake/android/system/StructStat.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.system;
+
+import libcore.util.Objects;
+
+/**
+ * File information returned by {@link Os#fstat}, {@link Os#lstat}, and {@link Os#stat}.
+ * Corresponds to C's {@code struct stat} from {@code <stat.h>}.
+ */
+public final class StructStat {
+ /** Device ID of device containing file. */
+ public final long st_dev; /*dev_t*/
+
+ /** File serial number (inode). */
+ public final long st_ino; /*ino_t*/
+
+ /** Mode (permissions) of file. */
+ public final int st_mode; /*mode_t*/
+
+ /** Number of hard links to the file. */
+ public final long st_nlink; /*nlink_t*/
+
+ /** User ID of file. */
+ public final int st_uid; /*uid_t*/
+
+ /** Group ID of file. */
+ public final int st_gid; /*gid_t*/
+
+ /** Device ID (if file is character or block special). */
+ public final long st_rdev; /*dev_t*/
+
+ /**
+ * For regular files, the file size in bytes.
+ * For symbolic links, the length in bytes of the pathname contained in the symbolic link.
+ * For a shared memory object, the length in bytes.
+ * For a typed memory object, the length in bytes.
+ * For other file types, the use of this field is unspecified.
+ */
+ public final long st_size; /*off_t*/
+
+ /** Seconds part of time of last access. */
+ public final long st_atime; /*time_t*/
+
+ /** StructTimespec with time of last access. */
+ public final StructTimespec st_atim;
+
+ /** Seconds part of time of last data modification. */
+ public final long st_mtime; /*time_t*/
+
+ /** StructTimespec with time of last modification. */
+ public final StructTimespec st_mtim;
+
+ /** Seconds part of time of last status change */
+ public final long st_ctime; /*time_t*/
+
+ /** StructTimespec with time of last status change. */
+ public final StructTimespec st_ctim;
+
+ /**
+ * A file system-specific preferred I/O block size for this object.
+ * For some file system types, this may vary from file to file.
+ */
+ public final long st_blksize; /*blksize_t*/
+
+ /** Number of blocks allocated for this object. */
+ public final long st_blocks; /*blkcnt_t*/
+
+ /**
+ * Constructs an instance with the given field values.
+ */
+ public StructStat(long st_dev, long st_ino, int st_mode, long st_nlink, int st_uid, int st_gid,
+ long st_rdev, long st_size, long st_atime, long st_mtime, long st_ctime,
+ long st_blksize, long st_blocks) {
+ this(st_dev, st_ino, st_mode, st_nlink, st_uid, st_gid,
+ st_rdev, st_size, new StructTimespec(st_atime, 0L), new StructTimespec(st_mtime, 0L),
+ new StructTimespec(st_ctime, 0L), st_blksize, st_blocks);
+ }
+
+ /**
+ * Constructs an instance with the given field values.
+ */
+ public StructStat(long st_dev, long st_ino, int st_mode, long st_nlink, int st_uid, int st_gid,
+ long st_rdev, long st_size, StructTimespec st_atim, StructTimespec st_mtim,
+ StructTimespec st_ctim, long st_blksize, long st_blocks) {
+ this.st_dev = st_dev;
+ this.st_ino = st_ino;
+ this.st_mode = st_mode;
+ this.st_nlink = st_nlink;
+ this.st_uid = st_uid;
+ this.st_gid = st_gid;
+ this.st_rdev = st_rdev;
+ this.st_size = st_size;
+ this.st_atime = st_atim.tv_sec;
+ this.st_mtime = st_mtim.tv_sec;
+ this.st_ctime = st_ctim.tv_sec;
+ this.st_atim = st_atim;
+ this.st_mtim = st_mtim;
+ this.st_ctim = st_ctim;
+ this.st_blksize = st_blksize;
+ this.st_blocks = st_blocks;
+ }
+
+ @Override public String toString() {
+ return Objects.toString(this);
+ }
+}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/android/system/StructTimespec.java b/ravenwood/runtime-helper-src/libcore-fake/android/system/StructTimespec.java
new file mode 100644
index 0000000..c106780
--- /dev/null
+++ b/ravenwood/runtime-helper-src/libcore-fake/android/system/StructTimespec.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.system;
+
+import libcore.util.Objects;;
+
+/**
+ * Corresponds to C's {@code struct timespec} from {@code <time.h>}.
+ */
+public final class StructTimespec implements Comparable<StructTimespec> {
+ /** Seconds part of time of last data modification. */
+ public final long tv_sec; /*time_t*/
+
+ /** Nanoseconds (values are [0, 999999999]). */
+ public final long tv_nsec;
+
+ public StructTimespec(long tv_sec, long tv_nsec) {
+ this.tv_sec = tv_sec;
+ this.tv_nsec = tv_nsec;
+ if (tv_nsec < 0 || tv_nsec > 999_999_999) {
+ throw new IllegalArgumentException(
+ "tv_nsec value " + tv_nsec + " is not in [0, 999999999]");
+ }
+ }
+
+ @Override
+ public int compareTo(StructTimespec other) {
+ if (tv_sec > other.tv_sec) {
+ return 1;
+ }
+ if (tv_sec < other.tv_sec) {
+ return -1;
+ }
+ if (tv_nsec > other.tv_nsec) {
+ return 1;
+ }
+ if (tv_nsec < other.tv_nsec) {
+ return -1;
+ }
+ return 0;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ StructTimespec that = (StructTimespec) o;
+
+ if (tv_sec != that.tv_sec) return false;
+ return tv_nsec == that.tv_nsec;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (tv_sec ^ (tv_sec >>> 32));
+ result = 31 * result + (int) (tv_nsec ^ (tv_nsec >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toString(this);
+ }
+}
diff --git a/ravenwood/runtime-common-src/com/android/ravenwood/common/RavenwoodRuntimeNative.java b/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/common/RavenwoodRuntimeNative.java
similarity index 65%
rename from ravenwood/runtime-common-src/com/android/ravenwood/common/RavenwoodRuntimeNative.java
rename to ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/common/RavenwoodRuntimeNative.java
index 6540221..e9b305e 100644
--- a/ravenwood/runtime-common-src/com/android/ravenwood/common/RavenwoodRuntimeNative.java
+++ b/ravenwood/runtime-helper-src/libcore-fake/com/android/ravenwood/common/RavenwoodRuntimeNative.java
@@ -15,6 +15,9 @@
*/
package com.android.ravenwood.common;
+import android.system.ErrnoException;
+import android.system.StructStat;
+
import java.io.FileDescriptor;
/**
@@ -31,19 +34,25 @@
public static native void applyFreeFunction(long freeFunction, long nativePtr);
- public static native long nLseek(int fd, long offset, int whence);
+ private static native long nLseek(int fd, long offset, int whence) throws ErrnoException;
- public static native int[] nPipe2(int flags);
+ private static native int[] nPipe2(int flags) throws ErrnoException;
- public static native int nDup(int oldfd);
+ private static native int nDup(int oldfd) throws ErrnoException;
- public static native int nFcntlInt(int fd, int cmd, int arg);
+ private static native int nFcntlInt(int fd, int cmd, int arg) throws ErrnoException;
- public static long lseek(FileDescriptor fd, long offset, int whence) {
+ private static native StructStat nFstat(int fd) throws ErrnoException;
+
+ public static native StructStat lstat(String path) throws ErrnoException;
+
+ public static native StructStat stat(String path) throws ErrnoException;
+
+ public static long lseek(FileDescriptor fd, long offset, int whence) throws ErrnoException {
return nLseek(JvmWorkaround.getInstance().getFdInt(fd), offset, whence);
}
- public static FileDescriptor[] pipe2(int flags) {
+ public static FileDescriptor[] pipe2(int flags) throws ErrnoException {
var fds = nPipe2(flags);
var ret = new FileDescriptor[] {
new FileDescriptor(),
@@ -55,7 +64,7 @@
return ret;
}
- public static FileDescriptor dup(FileDescriptor fd) {
+ public static FileDescriptor dup(FileDescriptor fd) throws ErrnoException {
var fdInt = nDup(JvmWorkaround.getInstance().getFdInt(fd));
var retFd = new java.io.FileDescriptor();
@@ -63,9 +72,15 @@
return retFd;
}
- public static int fcntlInt(FileDescriptor fd, int cmd, int arg) {
+ public static int fcntlInt(FileDescriptor fd, int cmd, int arg) throws ErrnoException {
var fdInt = JvmWorkaround.getInstance().getFdInt(fd);
return nFcntlInt(fdInt, cmd, arg);
}
+
+ public static StructStat fstat(FileDescriptor fd) throws ErrnoException {
+ var fdInt = JvmWorkaround.getInstance().getFdInt(fd);
+
+ return nFstat(fdInt);
+ }
}
diff --git a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Objects.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Objects.java
new file mode 100644
index 0000000..3781fcf
--- /dev/null
+++ b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Objects.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package libcore.util;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+
+public final class Objects {
+ private Objects() {}
+
+ /**
+ * Returns a string reporting the value of each declared field, via reflection.
+ * Static and transient fields are automatically skipped. Produces output like
+ * "SimpleClassName[integer=1234,string="hello",character='c',intArray=[1,2,3]]".
+ */
+ public static String toString(Object o) {
+ Class<?> c = o.getClass();
+ StringBuilder sb = new StringBuilder();
+ sb.append(c.getSimpleName()).append('[');
+ int i = 0;
+ for (Field f : c.getDeclaredFields()) {
+ if ((f.getModifiers() & (Modifier.STATIC | Modifier.TRANSIENT)) != 0) {
+ continue;
+ }
+ f.setAccessible(true);
+ try {
+ Object value = f.get(o);
+
+ if (i++ > 0) {
+ sb.append(',');
+ }
+
+ sb.append(f.getName());
+ sb.append('=');
+
+ if (value.getClass().isArray()) {
+ if (value.getClass() == boolean[].class) {
+ sb.append(Arrays.toString((boolean[]) value));
+ } else if (value.getClass() == byte[].class) {
+ sb.append(Arrays.toString((byte[]) value));
+ } else if (value.getClass() == char[].class) {
+ sb.append(Arrays.toString((char[]) value));
+ } else if (value.getClass() == double[].class) {
+ sb.append(Arrays.toString((double[]) value));
+ } else if (value.getClass() == float[].class) {
+ sb.append(Arrays.toString((float[]) value));
+ } else if (value.getClass() == int[].class) {
+ sb.append(Arrays.toString((int[]) value));
+ } else if (value.getClass() == long[].class) {
+ sb.append(Arrays.toString((long[]) value));
+ } else if (value.getClass() == short[].class) {
+ sb.append(Arrays.toString((short[]) value));
+ } else {
+ sb.append(Arrays.toString((Object[]) value));
+ }
+ } else if (value.getClass() == Character.class) {
+ sb.append('\'').append(value).append('\'');
+ } else if (value.getClass() == String.class) {
+ sb.append('"').append(value).append('"');
+ } else {
+ sb.append(value);
+ }
+ } catch (IllegalAccessException unexpected) {
+ throw new AssertionError(unexpected);
+ }
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+}
diff --git a/ravenwood/runtime-jni/ravenwood_runtime.cpp b/ravenwood/runtime-jni/ravenwood_runtime.cpp
index 34cf9f9..e0a3e1c 100644
--- a/ravenwood/runtime-jni/ravenwood_runtime.cpp
+++ b/ravenwood/runtime-jni/ravenwood_runtime.cpp
@@ -19,6 +19,9 @@
#include <string.h>
#include <unistd.h>
#include <nativehelper/JNIHelp.h>
+#include <nativehelper/ScopedLocalRef.h>
+#include <nativehelper/ScopedUtfChars.h>
+
#include "jni.h"
#include "utils/Log.h"
#include "utils/misc.h"
@@ -41,6 +44,75 @@
return rc;
}
+// ---- Helper functions ---
+
+static jclass g_StructStat;
+static jclass g_StructTimespecClass;
+
+static jclass findClass(JNIEnv* env, const char* name) {
+ ScopedLocalRef<jclass> localClass(env, env->FindClass(name));
+ jclass result = reinterpret_cast<jclass>(env->NewGlobalRef(localClass.get()));
+ if (result == NULL) {
+ ALOGE("failed to find class '%s'", name);
+ abort();
+ }
+ return result;
+}
+
+static jobject makeStructTimespec(JNIEnv* env, const struct timespec& ts) {
+ static jmethodID ctor = env->GetMethodID(g_StructTimespecClass, "<init>",
+ "(JJ)V");
+ if (ctor == NULL) {
+ return NULL;
+ }
+ return env->NewObject(g_StructTimespecClass, ctor,
+ static_cast<jlong>(ts.tv_sec), static_cast<jlong>(ts.tv_nsec));
+}
+
+static jobject makeStructStat(JNIEnv* env, const struct stat64& sb) {
+ static jmethodID ctor = env->GetMethodID(g_StructStat, "<init>",
+ "(JJIJIIJJLandroid/system/StructTimespec;Landroid/system/StructTimespec;Landroid/system/StructTimespec;JJ)V");
+ if (ctor == NULL) {
+ return NULL;
+ }
+
+ jobject atim_timespec = makeStructTimespec(env, sb.st_atim);
+ if (atim_timespec == NULL) {
+ return NULL;
+ }
+ jobject mtim_timespec = makeStructTimespec(env, sb.st_mtim);
+ if (mtim_timespec == NULL) {
+ return NULL;
+ }
+ jobject ctim_timespec = makeStructTimespec(env, sb.st_ctim);
+ if (ctim_timespec == NULL) {
+ return NULL;
+ }
+
+ return env->NewObject(g_StructStat, ctor,
+ static_cast<jlong>(sb.st_dev), static_cast<jlong>(sb.st_ino),
+ static_cast<jint>(sb.st_mode), static_cast<jlong>(sb.st_nlink),
+ static_cast<jint>(sb.st_uid), static_cast<jint>(sb.st_gid),
+ static_cast<jlong>(sb.st_rdev), static_cast<jlong>(sb.st_size),
+ atim_timespec, mtim_timespec, ctim_timespec,
+ static_cast<jlong>(sb.st_blksize), static_cast<jlong>(sb.st_blocks));
+}
+
+static jobject doStat(JNIEnv* env, jstring javaPath, bool isLstat) {
+ ScopedUtfChars path(env, javaPath);
+ if (path.c_str() == NULL) {
+ return NULL;
+ }
+ struct stat64 sb;
+ int rc = isLstat ? TEMP_FAILURE_RETRY(lstat64(path.c_str(), &sb))
+ : TEMP_FAILURE_RETRY(stat64(path.c_str(), &sb));
+ if (rc == -1) {
+ throwErrnoException(env, isLstat ? "lstat" : "stat");
+ return NULL;
+ }
+ return makeStructStat(env, sb);
+}
+
// ---- JNI methods ----
typedef void (*FreeFunction)(void*);
@@ -77,6 +149,24 @@
return throwIfMinusOne(env, "fcntl", TEMP_FAILURE_RETRY(fcntl(fd, F_DUPFD_CLOEXEC, 0)));
}
+static jobject nFstat(JNIEnv* env, jobject, jint fd) {
+ struct stat64 sb;
+ int rc = TEMP_FAILURE_RETRY(fstat64(fd, &sb));
+ if (rc == -1) {
+ throwErrnoException(env, "fstat");
+ return NULL;
+ }
+ return makeStructStat(env, sb);
+}
+
+static jobject Linux_lstat(JNIEnv* env, jobject, jstring javaPath) {
+ return doStat(env, javaPath, true);
+}
+
+static jobject Linux_stat(JNIEnv* env, jobject, jstring javaPath) {
+ return doStat(env, javaPath, false);
+}
+
// ---- Registration ----
static const JNINativeMethod sMethods[] =
@@ -86,6 +176,9 @@
{ "nLseek", "(IJI)J", (void*)nLseek },
{ "nPipe2", "(I)[I", (void*)nPipe2 },
{ "nDup", "(I)I", (void*)nDup },
+ { "nFstat", "(I)Landroid/system/StructStat;", (void*)nFstat },
+ { "lstat", "(Ljava/lang/String;)Landroid/system/StructStat;", (void*)Linux_lstat },
+ { "stat", "(Ljava/lang/String;)Landroid/system/StructStat;", (void*)Linux_stat },
};
extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
@@ -101,6 +194,9 @@
ALOGI("%s: JNI_OnLoad", __FILE__);
+ g_StructStat = findClass(env, "android/system/StructStat");
+ g_StructTimespecClass = findClass(env, "android/system/StructTimespec");
+
jint res = jniRegisterNativeMethods(env, "com/android/ravenwood/common/RavenwoodRuntimeNative",
sMethods, NELEM(sMethods));
if (res < 0) {
diff --git a/ravenwood/runtime-test/test/com/android/ravenwood/runtimetest/OsTest.java b/ravenwood/runtime-test/test/com/android/ravenwood/runtimetest/OsTest.java
index b5038e6..05275b2 100644
--- a/ravenwood/runtime-test/test/com/android/ravenwood/runtimetest/OsTest.java
+++ b/ravenwood/runtime-test/test/com/android/ravenwood/runtimetest/OsTest.java
@@ -15,15 +15,26 @@
*/
package com.android.ravenwood.runtimetest;
+import static android.system.OsConstants.S_ISBLK;
+import static android.system.OsConstants.S_ISCHR;
+import static android.system.OsConstants.S_ISDIR;
+import static android.system.OsConstants.S_ISFIFO;
+import static android.system.OsConstants.S_ISLNK;
+import static android.system.OsConstants.S_ISREG;
+import static android.system.OsConstants.S_ISSOCK;
+
import static org.junit.Assert.assertEquals;
+import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
+
import android.system.Os;
import android.system.OsConstants;
+import android.system.StructStat;
+import android.system.StructTimespec;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.ravenwood.common.JvmWorkaround;
-import com.android.ravenwood.common.RavenwoodRuntimeNative;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -32,8 +43,15 @@
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.RandomAccessFile;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
+import java.nio.file.attribute.PosixFileAttributes;
+import java.nio.file.attribute.PosixFilePermission;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
public class OsTest {
@@ -41,7 +59,7 @@
void accept(T var1) throws Exception;
}
- private void withTestFile(ConsumerWithThrow<FileDescriptor> consumer) throws Exception {
+ private void withTestFileFD(ConsumerWithThrow<FileDescriptor> consumer) throws Exception {
File file = File.createTempFile("osTest", "bin");
try (var raf = new RandomAccessFile(file, "rw")) {
var fd = raf.getFD();
@@ -57,9 +75,20 @@
}
}
+ private void withTestFile(ConsumerWithThrow<Path> consumer) throws Exception {
+ var path = Files.createTempFile("osTest", "bin");
+ try (var os = Files.newOutputStream(path)) {
+ os.write(1);
+ os.write(2);
+ os.write(3);
+ os.write(4);
+ }
+ consumer.accept(path);
+ }
+
@Test
public void testLseek() throws Exception {
- withTestFile((fd) -> {
+ withTestFileFD((fd) -> {
assertEquals(4, Os.lseek(fd, 4, OsConstants.SEEK_SET));
assertEquals(4, Os.lseek(fd, 0, OsConstants.SEEK_CUR));
assertEquals(6, Os.lseek(fd, 2, OsConstants.SEEK_CUR));
@@ -68,7 +97,7 @@
@Test
public void testDup() throws Exception {
- withTestFile((fd) -> {
+ withTestFileFD((fd) -> {
var dup = Os.dup(fd);
checkAreDup(fd, dup);
@@ -85,7 +114,7 @@
@Test
public void testFcntlInt() throws Exception {
- withTestFile((fd) -> {
+ withTestFileFD((fd) -> {
var dupInt = Os.fcntlInt(fd, 0, 0);
var dup = new FileDescriptor();
@@ -95,16 +124,90 @@
});
}
- private static void write(FileDescriptor fd, int oneByte) throws IOException {
+ @Test
+ public void testStat() throws Exception {
+ withTestFile(path -> {
+ var attr = Files.readAttributes(path, PosixFileAttributes.class);
+ var stat = Os.stat(path.toAbsolutePath().toString());
+ assertAttributesEqual(attr, stat);
+ });
+ }
+
+ @Test
+ public void testLstat() throws Exception {
+ withTestFile(path -> {
+ // Create a symbolic link
+ var lnk = Files.createTempFile("osTest", "lnk");
+ Files.delete(lnk);
+ Files.createSymbolicLink(lnk, path);
+
+ // Test lstat
+ var attr = Files.readAttributes(lnk, PosixFileAttributes.class, NOFOLLOW_LINKS);
+ var stat = Os.lstat(lnk.toAbsolutePath().toString());
+ assertAttributesEqual(attr, stat);
+
+ // Test stat
+ var followAttr = Files.readAttributes(lnk, PosixFileAttributes.class);
+ var followStat = Os.stat(lnk.toAbsolutePath().toString());
+ assertAttributesEqual(followAttr, followStat);
+ });
+ }
+
+ @Test
+ public void testFstat() throws Exception {
+ withTestFile(path -> {
+ var attr = Files.readAttributes(path, PosixFileAttributes.class);
+ try (var raf = new RandomAccessFile(path.toFile(), "r")) {
+ var fd = raf.getFD();
+ var stat = Os.fstat(fd);
+ assertAttributesEqual(attr, stat);
+ }
+ });
+ }
+
+ // Verify StructStat values from libcore against native JVM PosixFileAttributes
+ private static void assertAttributesEqual(PosixFileAttributes attr, StructStat stat) {
+ assertEquals(attr.lastModifiedTime(), convertTimespecToFileTime(stat.st_mtim));
+ assertEquals(attr.size(), stat.st_size);
+ assertEquals(attr.isDirectory(), S_ISDIR(stat.st_mode));
+ assertEquals(attr.isRegularFile(), S_ISREG(stat.st_mode));
+ assertEquals(attr.isSymbolicLink(), S_ISLNK(stat.st_mode));
+ assertEquals(attr.isOther(), S_ISCHR(stat.st_mode)
+ || S_ISBLK(stat.st_mode) || S_ISFIFO(stat.st_mode) || S_ISSOCK(stat.st_mode));
+ assertEquals(attr.permissions(), convertModeToPosixPerms(stat.st_mode));
+
+ }
+
+ private static FileTime convertTimespecToFileTime(StructTimespec ts) {
+ var nanos = TimeUnit.SECONDS.toNanos(ts.tv_sec);
+ nanos += ts.tv_nsec;
+ return FileTime.from(nanos, TimeUnit.NANOSECONDS);
+ }
+
+ private static Set<PosixFilePermission> convertModeToPosixPerms(int mode) {
+ var set = new HashSet<PosixFilePermission>();
+ if ((mode & OsConstants.S_IRUSR) != 0) set.add(PosixFilePermission.OWNER_READ);
+ if ((mode & OsConstants.S_IWUSR) != 0) set.add(PosixFilePermission.OWNER_WRITE);
+ if ((mode & OsConstants.S_IXUSR) != 0) set.add(PosixFilePermission.OWNER_EXECUTE);
+ if ((mode & OsConstants.S_IRGRP) != 0) set.add(PosixFilePermission.GROUP_READ);
+ if ((mode & OsConstants.S_IWGRP) != 0) set.add(PosixFilePermission.GROUP_WRITE);
+ if ((mode & OsConstants.S_IXGRP) != 0) set.add(PosixFilePermission.GROUP_EXECUTE);
+ if ((mode & OsConstants.S_IROTH) != 0) set.add(PosixFilePermission.OTHERS_READ);
+ if ((mode & OsConstants.S_IWOTH) != 0) set.add(PosixFilePermission.OTHERS_WRITE);
+ if ((mode & OsConstants.S_IXOTH) != 0) set.add(PosixFilePermission.OTHERS_EXECUTE);
+ return set;
+ }
+
+ private static void write(FileDescriptor fd, int oneByte) throws Exception {
// Create a dup to avoid closing the FD.
- try (var dup = new FileOutputStream(RavenwoodRuntimeNative.dup(fd))) {
+ try (var dup = new FileOutputStream(Os.dup(fd))) {
dup.write(oneByte);
}
}
- private static int read(FileDescriptor fd) throws IOException {
+ private static int read(FileDescriptor fd) throws Exception {
// Create a dup to avoid closing the FD.
- try (var dup = new FileInputStream(RavenwoodRuntimeNative.dup(fd))) {
+ try (var dup = new FileInputStream(Os.dup(fd))) {
return dup.read();
}
}
diff --git a/services/accessibility/Android.bp b/services/accessibility/Android.bp
index 7a99b60..311addb 100644
--- a/services/accessibility/Android.bp
+++ b/services/accessibility/Android.bp
@@ -29,10 +29,12 @@
"//frameworks/base/packages/SettingsLib/RestrictedLockUtils:SettingsLibRestrictedLockUtilsSrc",
],
libs: [
+ "aatf",
"services.core",
"androidx.annotation_annotation",
],
static_libs: [
+ "a11ychecker-protos-java-proto-lite",
"com_android_server_accessibility_flags_lib",
"//frameworks/base/packages/SystemUI/aconfig:com_android_systemui_flags_lib",
@@ -68,3 +70,14 @@
name: "com_android_server_accessibility_flags_lib",
aconfig_declarations: "com_android_server_accessibility_flags",
}
+
+java_library_static {
+ name: "a11ychecker-protos-java-proto-lite",
+ proto: {
+ type: "lite",
+ canonical_path_from_root: false,
+ },
+ srcs: [
+ "java/**/a11ychecker/proto/*.proto",
+ ],
+}
diff --git a/services/accessibility/java/com/android/server/accessibility/FlashNotificationsController.java b/services/accessibility/java/com/android/server/accessibility/FlashNotificationsController.java
index e605514..2009cd3 100644
--- a/services/accessibility/java/com/android/server/accessibility/FlashNotificationsController.java
+++ b/services/accessibility/java/com/android/server/accessibility/FlashNotificationsController.java
@@ -659,6 +659,8 @@
mIsTorchTouched = on;
} catch (CameraAccessException e) {
Log.e(LOG_TAG, "Failed to setTorchMode: " + e);
+ } catch (IllegalArgumentException e) {
+ Log.e(LOG_TAG, "Failed to setTorchMode: " + e);
}
} else {
Log.e(LOG_TAG, "Can not use camera flash notification, please check CameraManager!");
diff --git a/services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtils.java b/services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtils.java
new file mode 100644
index 0000000..55af9a0
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtils.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.a11ychecker;
+
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.util.Slog;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.accessibility.a11ychecker.A11yCheckerProto.AccessibilityCheckClass;
+import com.android.server.accessibility.a11ychecker.A11yCheckerProto.AccessibilityCheckResultReported;
+import com.android.server.accessibility.a11ychecker.A11yCheckerProto.AccessibilityCheckResultType;
+
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityCheckResult;
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheck;
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheckResult;
+import com.google.android.apps.common.testing.accessibility.framework.checks.ClassNameCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.ClickableSpanCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.DuplicateClickableBoundsCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.DuplicateSpeakableTextCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.EditableContentDescCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.ImageContrastCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.LinkPurposeUnclearCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.RedundantDescriptionCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.SpeakableTextPresentCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TextContrastCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TextSizeCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TouchTargetSizeCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TraversalOrderCheck;
+
+import java.util.AbstractMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Util class to process a11y checker results for logging.
+ *
+ * @hide
+ */
+public class AccessibilityCheckerUtils {
+
+ private static final String LOG_TAG = "AccessibilityCheckerUtils";
+ @VisibleForTesting
+ // LINT.IfChange
+ static final Map<Class<? extends AccessibilityHierarchyCheck>, AccessibilityCheckClass>
+ CHECK_CLASS_TO_ENUM_MAP =
+ Map.ofEntries(
+ classMapEntry(ClassNameCheck.class, AccessibilityCheckClass.CLASS_NAME_CHECK),
+ classMapEntry(ClickableSpanCheck.class,
+ AccessibilityCheckClass.CLICKABLE_SPAN_CHECK),
+ classMapEntry(DuplicateClickableBoundsCheck.class,
+ AccessibilityCheckClass.DUPLICATE_CLICKABLE_BOUNDS_CHECK),
+ classMapEntry(DuplicateSpeakableTextCheck.class,
+ AccessibilityCheckClass.DUPLICATE_SPEAKABLE_TEXT_CHECK),
+ classMapEntry(EditableContentDescCheck.class,
+ AccessibilityCheckClass.EDITABLE_CONTENT_DESC_CHECK),
+ classMapEntry(ImageContrastCheck.class,
+ AccessibilityCheckClass.IMAGE_CONTRAST_CHECK),
+ classMapEntry(LinkPurposeUnclearCheck.class,
+ AccessibilityCheckClass.LINK_PURPOSE_UNCLEAR_CHECK),
+ classMapEntry(RedundantDescriptionCheck.class,
+ AccessibilityCheckClass.REDUNDANT_DESCRIPTION_CHECK),
+ classMapEntry(SpeakableTextPresentCheck.class,
+ AccessibilityCheckClass.SPEAKABLE_TEXT_PRESENT_CHECK),
+ classMapEntry(TextContrastCheck.class,
+ AccessibilityCheckClass.TEXT_CONTRAST_CHECK),
+ classMapEntry(TextSizeCheck.class, AccessibilityCheckClass.TEXT_SIZE_CHECK),
+ classMapEntry(TouchTargetSizeCheck.class,
+ AccessibilityCheckClass.TOUCH_TARGET_SIZE_CHECK),
+ classMapEntry(TraversalOrderCheck.class,
+ AccessibilityCheckClass.TRAVERSAL_ORDER_CHECK));
+ // LINT.ThenChange(/services/accessibility/java/com/android/server/accessibility/a11ychecker/proto/a11ychecker.proto)
+
+ static Set<AccessibilityCheckResultReported> processResults(
+ Context context,
+ AccessibilityNodeInfo nodeInfo,
+ List<AccessibilityHierarchyCheckResult> checkResults,
+ @Nullable AccessibilityEvent accessibilityEvent,
+ ComponentName a11yServiceComponentName) {
+ return processResults(nodeInfo, checkResults, accessibilityEvent,
+ context.getPackageManager(), a11yServiceComponentName);
+ }
+
+ @VisibleForTesting
+ static Set<AccessibilityCheckResultReported> processResults(
+ AccessibilityNodeInfo nodeInfo,
+ List<AccessibilityHierarchyCheckResult> checkResults,
+ @Nullable AccessibilityEvent accessibilityEvent,
+ PackageManager packageManager,
+ ComponentName a11yServiceComponentName) {
+ String appPackageName = nodeInfo.getPackageName().toString();
+ AccessibilityCheckResultReported.Builder builder;
+ try {
+ builder = AccessibilityCheckResultReported.newBuilder()
+ .setPackageName(appPackageName)
+ .setAppVersionCode(getAppVersionCode(packageManager, appPackageName))
+ .setUiElementPath(AccessibilityNodePathBuilder.createNodePath(nodeInfo))
+ .setActivityName(getActivityName(packageManager, accessibilityEvent))
+ .setWindowTitle(getWindowTitle(nodeInfo))
+ .setSourceComponentName(a11yServiceComponentName.flattenToString())
+ .setSourceVersionCode(
+ getAppVersionCode(packageManager,
+ a11yServiceComponentName.getPackageName()));
+ } catch (PackageManager.NameNotFoundException e) {
+ Slog.e(LOG_TAG, "Unknown package name", e);
+ return Set.of();
+ }
+
+ return checkResults.stream()
+ .filter(checkResult -> checkResult.getType()
+ == AccessibilityCheckResult.AccessibilityCheckResultType.ERROR
+ || checkResult.getType()
+ == AccessibilityCheckResult.AccessibilityCheckResultType.WARNING)
+ .map(checkResult -> builder.setResultCheckClass(
+ getCheckClass(checkResult)).setResultType(
+ getCheckResultType(checkResult)).setResultId(
+ checkResult.getResultId()).build())
+ .collect(Collectors.toUnmodifiableSet());
+ }
+
+ private static long getAppVersionCode(PackageManager packageManager, String packageName) throws
+ PackageManager.NameNotFoundException {
+ PackageInfo packageInfo = packageManager.getPackageInfo(packageName, 0);
+ return packageInfo.getLongVersionCode();
+ }
+
+ /**
+ * Returns the simple class name of the Activity providing the cache update, if available,
+ * or an empty String if not.
+ */
+ @VisibleForTesting
+ static String getActivityName(
+ PackageManager packageManager, @Nullable AccessibilityEvent accessibilityEvent) {
+ if (accessibilityEvent == null) {
+ return "";
+ }
+ CharSequence activityName = accessibilityEvent.getClassName();
+ if (accessibilityEvent.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
+ && accessibilityEvent.getPackageName() != null
+ && activityName != null) {
+ try {
+ // Check class is for a valid Activity.
+ packageManager
+ .getActivityInfo(
+ new ComponentName(accessibilityEvent.getPackageName().toString(),
+ activityName.toString()), 0);
+ int qualifierEnd = activityName.toString().lastIndexOf('.');
+ return activityName.toString().substring(qualifierEnd + 1);
+ } catch (PackageManager.NameNotFoundException e) {
+ // No need to spam the logs. This is very frequent when the class doesn't match
+ // an activity.
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Returns the title of the window containing the a11y node.
+ */
+ private static String getWindowTitle(AccessibilityNodeInfo nodeInfo) {
+ if (nodeInfo.getWindow() == null) {
+ return "";
+ }
+ CharSequence windowTitle = nodeInfo.getWindow().getTitle();
+ return windowTitle == null ? "" : windowTitle.toString();
+ }
+
+ /**
+ * Maps the {@link AccessibilityHierarchyCheck} class that produced the given result, with the
+ * corresponding {@link AccessibilityCheckClass} enum. This enumeration is to avoid relying on
+ * String class names in the logging, which can be proguarded. It also reduces the logging size.
+ */
+ private static AccessibilityCheckClass getCheckClass(
+ AccessibilityHierarchyCheckResult checkResult) {
+ if (CHECK_CLASS_TO_ENUM_MAP.containsKey(checkResult.getSourceCheckClass())) {
+ return CHECK_CLASS_TO_ENUM_MAP.get(checkResult.getSourceCheckClass());
+ }
+ return AccessibilityCheckClass.UNKNOWN_CHECK;
+ }
+
+ private static AccessibilityCheckResultType getCheckResultType(
+ AccessibilityHierarchyCheckResult checkResult) {
+ return switch (checkResult.getType()) {
+ case ERROR -> AccessibilityCheckResultType.ERROR;
+ case WARNING -> AccessibilityCheckResultType.WARNING;
+ default -> AccessibilityCheckResultType.UNKNOWN_RESULT_TYPE;
+ };
+ }
+
+ private static Map.Entry<Class<? extends AccessibilityHierarchyCheck>,
+ AccessibilityCheckClass> classMapEntry(
+ Class<? extends AccessibilityHierarchyCheck> checkClass,
+ AccessibilityCheckClass checkClassEnum) {
+ return new AbstractMap.SimpleImmutableEntry<>(checkClass, checkClassEnum);
+ }
+}
diff --git a/core/java/android/view/accessibility/a11ychecker/AccessibilityNodePathBuilder.java b/services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityNodePathBuilder.java
similarity index 98%
rename from core/java/android/view/accessibility/a11ychecker/AccessibilityNodePathBuilder.java
rename to services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityNodePathBuilder.java
index 2996dde..bbfb217 100644
--- a/core/java/android/view/accessibility/a11ychecker/AccessibilityNodePathBuilder.java
+++ b/services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityNodePathBuilder.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.view.accessibility.a11ychecker;
+package com.android.server.accessibility.a11ychecker;
import android.annotation.NonNull;
import android.annotation.Nullable;
diff --git a/core/java/android/view/accessibility/a11ychecker/OWNERS b/services/accessibility/java/com/android/server/accessibility/a11ychecker/OWNERS
similarity index 100%
rename from core/java/android/view/accessibility/a11ychecker/OWNERS
rename to services/accessibility/java/com/android/server/accessibility/a11ychecker/OWNERS
diff --git a/services/accessibility/java/com/android/server/accessibility/a11ychecker/proto/a11ychecker.proto b/services/accessibility/java/com/android/server/accessibility/a11ychecker/proto/a11ychecker.proto
new file mode 100644
index 0000000..8beed4a
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/a11ychecker/proto/a11ychecker.proto
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto2";
+package android.accessibility;
+
+option java_package = "com.android.server.accessibility.a11ychecker";
+option java_outer_classname = "A11yCheckerProto";
+
+// TODO(b/326385939): remove and replace usage with the atom extension proto, when submitted.
+/** Logs the result of an AccessibilityCheck. */
+message AccessibilityCheckResultReported {
+ // Package name of the app containing the checked View.
+ optional string package_name = 1;
+ // Version code of the app containing the checked View.
+ optional int64 app_version_code = 2;
+ // The path of the View starting from the root element in the window. Each element is
+ // represented by the View's resource id, when available, or the View's class name.
+ optional string ui_element_path = 3;
+ // Class name of the activity containing the checked View.
+ optional string activity_name = 4;
+ // Title of the window containing the checked View.
+ optional string window_title = 5;
+ // The flattened component name of the app running the AccessibilityService which provided the a11y node.
+ optional string source_component_name = 6;
+ // Version code of the app running the AccessibilityService that provided the a11y node.
+ optional int64 source_version_code = 7;
+ // Class Name of the AccessibilityCheck that produced the result.
+ optional AccessibilityCheckClass result_check_class = 8;
+ // Result type of the AccessibilityCheckResult.
+ optional AccessibilityCheckResultType result_type = 9;
+ // Result ID of the AccessibilityCheckResult.
+ optional int32 result_id = 10;
+}
+
+/** The AccessibilityCheck class. */
+// LINT.IfChange
+enum AccessibilityCheckClass {
+ UNKNOWN_CHECK = 0;
+ CLASS_NAME_CHECK = 1;
+ CLICKABLE_SPAN_CHECK = 2;
+ DUPLICATE_CLICKABLE_BOUNDS_CHECK = 3;
+ DUPLICATE_SPEAKABLE_TEXT_CHECK = 4;
+ EDITABLE_CONTENT_DESC_CHECK = 5;
+ IMAGE_CONTRAST_CHECK = 6;
+ LINK_PURPOSE_UNCLEAR_CHECK = 7;
+ REDUNDANT_DESCRIPTION_CHECK = 8;
+ SPEAKABLE_TEXT_PRESENT_CHECK = 9;
+ TEXT_CONTRAST_CHECK = 10;
+ TEXT_SIZE_CHECK = 11;
+ TOUCH_TARGET_SIZE_CHECK = 12;
+ TRAVERSAL_ORDER_CHECK = 13;
+}
+// LINT.ThenChange(/services/accessibility/java/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtils.java)
+
+/** The type of AccessibilityCheckResult */
+enum AccessibilityCheckResultType {
+ UNKNOWN_RESULT_TYPE = 0;
+ ERROR = 1;
+ WARNING = 2;
+}
diff --git a/services/core/java/android/app/usage/UsageStatsManagerInternal.java b/services/core/java/android/app/usage/UsageStatsManagerInternal.java
index 23c008e..fc00987 100644
--- a/services/core/java/android/app/usage/UsageStatsManagerInternal.java
+++ b/services/core/java/android/app/usage/UsageStatsManagerInternal.java
@@ -74,6 +74,18 @@
public abstract void reportEvent(String packageName, @UserIdInt int userId, int eventType);
/**
+ * Reports an event to the UsageStatsManager for all users. <br/>
+ * <em>Note: Starting from {@link android.os.Build.VERSION_CODES#R Android R}, if the user's
+ * device is not in an unlocked state (as defined by {@link UserManager#isUserUnlocked()}),
+ * then this event will be added to a queue and processed once the device is unlocked.</em>
+ *
+ * @param packageName The package for which this event occurred.
+ * @param eventType The event that occurred. Valid values can be found at
+ * {@link UsageEvents}
+ */
+ public abstract void reportEventForAllUsers(String packageName, int eventType);
+
+ /**
* Reports a configuration change to the UsageStatsManager. <br/>
* <em>Note: Starting from {@link android.os.Build.VERSION_CODES#R Android R}, if the user's
* device is not in an unlocked state (as defined by {@link UserManager#isUserUnlocked()}),
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index eb03709..d42a3dc 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -16,13 +16,18 @@
package com.android.server;
+import static android.content.Intent.ACTION_REBOOT;
+import static android.content.Intent.ACTION_SHUTDOWN;
import static android.service.watchdog.ExplicitHealthCheckService.PackageConfig;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.annotation.IntDef;
import android.annotation.Nullable;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.VersionedPackage;
@@ -2001,6 +2006,31 @@
}
}
}
+ }
+ /**
+ * Register broadcast receiver for shutdown.
+ * We would save the observer state to persist across boots.
+ *
+ * @hide
+ */
+ public void registerShutdownBroadcastReceiver() {
+ BroadcastReceiver shutdownEventReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // Only write if intent is relevant to device reboot or shutdown.
+ String intentAction = intent.getAction();
+ if (ACTION_REBOOT.equals(intentAction)
+ || ACTION_SHUTDOWN.equals(intentAction)) {
+ writeNow();
+ }
+ }
+ };
+
+ // Setup receiver for device reboots or shutdowns.
+ IntentFilter filter = new IntentFilter(ACTION_REBOOT);
+ filter.addAction(ACTION_SHUTDOWN);
+ mContext.registerReceiverForAllUsers(shutdownEventReceiver, filter, null,
+ /* run on main thread */ null);
}
}
diff --git a/services/core/java/com/android/server/am/ApplicationThreadDeferred.java b/services/core/java/com/android/server/am/ApplicationThreadDeferred.java
index b0f9b53..193edd2 100644
--- a/services/core/java/com/android/server/am/ApplicationThreadDeferred.java
+++ b/services/core/java/com/android/server/am/ApplicationThreadDeferred.java
@@ -38,7 +38,7 @@
*
* {@hide}
*/
-class ApplicationThreadDeferred extends ApplicationThreadFilter {
+final class ApplicationThreadDeferred extends IApplicationThread.Delegator {
static final String TAG = TAG_WITH_CLASS_NAME ? "ApplicationThreadDeferred" : TAG_AM;
@@ -87,11 +87,15 @@
// When true, binder calls to paused processes will be deferred until the process is unpaused.
private final boolean mDefer;
+ // The base thread, because Delegator does not expose it.
+ private final IApplicationThread mBase;
+
/** Create an instance with a base thread and a deferral enable flag. */
@VisibleForTesting
public ApplicationThreadDeferred(IApplicationThread thread, boolean defer) {
super(thread);
+ mBase = thread;
mDefer = defer;
mOperations[CLEAR_DNS_CACHE] = () -> { super.clearDnsCache(); };
@@ -105,6 +109,15 @@
this(thread, deferBindersWhenPaused());
}
+ /**
+ * Return the implementation's value of asBinder(). super.asBinder() is not a real Binder
+ * object.
+ */
+ @Override
+ public android.os.IBinder asBinder() {
+ return mBase.asBinder();
+ }
+
/** The process is being paused. Start deferring calls. */
void onProcessPaused() {
synchronized (mLock) {
diff --git a/services/core/java/com/android/server/am/ApplicationThreadFilter.java b/services/core/java/com/android/server/am/ApplicationThreadFilter.java
deleted file mode 100644
index d049305..0000000
--- a/services/core/java/com/android/server/am/ApplicationThreadFilter.java
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.am;
-
-
-class ApplicationThreadFilter implements android.app.IApplicationThread {
- private final android.app.IApplicationThread mBase;
- public ApplicationThreadFilter(android.app.IApplicationThread base) { mBase = base; }
- android.app.IApplicationThread getBase() { return mBase; }
- public android.os.IBinder asBinder() {
- return mBase.asBinder();
- }
-
- @Override
- public void scheduleReceiver(android.content.Intent intent,
- android.content.pm.ActivityInfo info,
- android.content.res.CompatibilityInfo compatInfo,
- int resultCode,
- String data,
- android.os.Bundle extras,
- boolean ordered,
- boolean assumeDelivered,
- int sendingUser,
- int processState,
- int sentFromUid,
- String sentFromPackage)
- throws android.os.RemoteException {
- mBase.scheduleReceiver(intent,
- info,
- compatInfo,
- resultCode,
- data,
- extras,
- ordered,
- assumeDelivered,
- sendingUser,
- processState,
- sentFromUid,
- sentFromPackage);
- }
- @Override
- public void scheduleReceiverList(java.util.List<android.app.ReceiverInfo> info)
- throws android.os.RemoteException {
- mBase.scheduleReceiverList(info);
- }
- @Override
- public void scheduleCreateService(android.os.IBinder token,
- android.content.pm.ServiceInfo info,
- android.content.res.CompatibilityInfo compatInfo,
- int processState)
- throws android.os.RemoteException {
- mBase.scheduleCreateService(token,
- info,
- compatInfo,
- processState);
- }
- @Override
- public void scheduleStopService(android.os.IBinder token)
- throws android.os.RemoteException {
- mBase.scheduleStopService(token);
- }
- @Override
- public void bindApplication(String packageName,
- android.content.pm.ApplicationInfo info,
- String sdkSandboxClientAppVolumeUuid,
- String sdkSandboxClientAppPackage,
- boolean isSdkInSandbox,
- android.content.pm.ProviderInfoList providerList,
- android.content.ComponentName testName,
- android.app.ProfilerInfo profilerInfo,
- android.os.Bundle testArguments,
- android.app.IInstrumentationWatcher testWatcher,
- android.app.IUiAutomationConnection uiAutomationConnection,
- int debugMode,
- boolean enableBinderTracking,
- boolean trackAllocation,
- boolean restrictedBackupMode,
- boolean persistent,
- android.content.res.Configuration config,
- android.content.res.CompatibilityInfo compatInfo,
- java.util.Map services,
- android.os.Bundle coreSettings,
- String buildSerial,
- android.content.AutofillOptions autofillOptions,
- android.content.ContentCaptureOptions contentCaptureOptions,
- long[] disabledCompatChanges,
- long[] loggableCompatChanges,
- android.os.SharedMemory serializedSystemFontMap,
- long startRequestedElapsedTime,
- long startRequestedUptime)
- throws android.os.RemoteException {
- mBase.bindApplication(packageName,
- info,
- sdkSandboxClientAppVolumeUuid,
- sdkSandboxClientAppPackage,
- isSdkInSandbox,
- providerList,
- testName,
- profilerInfo,
- testArguments,
- testWatcher,
- uiAutomationConnection,
- debugMode,
- enableBinderTracking,
- trackAllocation,
- restrictedBackupMode,
- persistent,
- config,
- compatInfo,
- services,
- coreSettings,
- buildSerial,
- autofillOptions,
- contentCaptureOptions,
- disabledCompatChanges,
- loggableCompatChanges,
- serializedSystemFontMap,
- startRequestedElapsedTime,
- startRequestedUptime);
- }
- @Override
- public void runIsolatedEntryPoint(String entryPoint,
- String[] entryPointArgs)
- throws android.os.RemoteException {
- mBase.runIsolatedEntryPoint(entryPoint,
- entryPointArgs);
- }
- @Override
- public void scheduleExit()
- throws android.os.RemoteException {
- mBase.scheduleExit();
- }
- @Override
- public void scheduleServiceArgs(android.os.IBinder token,
- android.content.pm.ParceledListSlice args)
- throws android.os.RemoteException {
- mBase.scheduleServiceArgs(token,
- args);
- }
- @Override
- public void updateTimeZone()
- throws android.os.RemoteException {
- mBase.updateTimeZone();
- }
- @Override
- public void processInBackground()
- throws android.os.RemoteException {
- mBase.processInBackground();
- }
- @Override
- public void scheduleBindService(android.os.IBinder token,
- android.content.Intent intent,
- boolean rebind,
- int processState,
- long bindSeq)
- throws android.os.RemoteException {
- mBase.scheduleBindService(token,
- intent,
- rebind,
- processState,
- bindSeq);
- }
- @Override
- public void scheduleUnbindService(android.os.IBinder token,
- android.content.Intent intent)
- throws android.os.RemoteException {
- mBase.scheduleUnbindService(token,
- intent);
- }
- @Override
- public void dumpService(android.os.ParcelFileDescriptor fd,
- android.os.IBinder servicetoken,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpService(fd,
- servicetoken,
- args);
- }
- @Override
- public void scheduleRegisteredReceiver(android.content.IIntentReceiver receiver,
- android.content.Intent intent,
- int resultCode,
- String data,
- android.os.Bundle extras,
- boolean ordered,
- boolean sticky,
- boolean assumeDelivered,
- int sendingUser,
- int processState,
- int sentFromUid,
- String sentFromPackage)
- throws android.os.RemoteException {
- mBase.scheduleRegisteredReceiver(receiver,
- intent,
- resultCode,
- data,
- extras,
- ordered,
- sticky,
- assumeDelivered,
- sendingUser,
- processState,
- sentFromUid,
- sentFromPackage);
- }
- @Override
- public void scheduleLowMemory()
- throws android.os.RemoteException {
- mBase.scheduleLowMemory();
- }
- @Override
- public void profilerControl(boolean start,
- android.app.ProfilerInfo profilerInfo,
- int profileType)
- throws android.os.RemoteException {
- mBase.profilerControl(start,
- profilerInfo,
- profileType);
- }
- @Override
- public void setSchedulingGroup(int group)
- throws android.os.RemoteException {
- mBase.setSchedulingGroup(group);
- }
- @Override
- public void scheduleCreateBackupAgent(android.content.pm.ApplicationInfo app,
- int backupMode,
- int userId,
- int operationType)
- throws android.os.RemoteException {
- mBase.scheduleCreateBackupAgent(app,
- backupMode,
- userId,
- operationType);
- }
- @Override
- public void scheduleDestroyBackupAgent(android.content.pm.ApplicationInfo app,
- int userId)
- throws android.os.RemoteException {
- mBase.scheduleDestroyBackupAgent(app,
- userId);
- }
- @Override
- public void scheduleOnNewSceneTransitionInfo(android.os.IBinder token,
- android.app.ActivityOptions.SceneTransitionInfo info)
- throws android.os.RemoteException {
- mBase.scheduleOnNewSceneTransitionInfo(token,
- info);
- }
- @Override
- public void scheduleSuicide()
- throws android.os.RemoteException {
- mBase.scheduleSuicide();
- }
- @Override
- public void dispatchPackageBroadcast(int cmd,
- String[] packages)
- throws android.os.RemoteException {
- mBase.dispatchPackageBroadcast(cmd,
- packages);
- }
- @Override
- public void scheduleCrash(String msg,
- int typeId,
- android.os.Bundle extras)
- throws android.os.RemoteException {
- mBase.scheduleCrash(msg,
- typeId,
- extras);
- }
- @Override
- public void dumpHeap(boolean managed,
- boolean mallocInfo,
- boolean runGc,
- String dumpBitmaps,
- String path,
- android.os.ParcelFileDescriptor fd,
- android.os.RemoteCallback finishCallback)
- throws android.os.RemoteException {
- mBase.dumpHeap(managed,
- mallocInfo,
- runGc,
- dumpBitmaps,
- path,
- fd,
- finishCallback);
- }
- @Override
- public void dumpActivity(android.os.ParcelFileDescriptor fd,
- android.os.IBinder servicetoken,
- String prefix,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpActivity(fd,
- servicetoken,
- prefix,
- args);
- }
- @Override
- public void dumpResources(android.os.ParcelFileDescriptor fd,
- android.os.RemoteCallback finishCallback)
- throws android.os.RemoteException {
- mBase.dumpResources(fd,
- finishCallback);
- }
- @Override
- public void clearDnsCache()
- throws android.os.RemoteException {
- mBase.clearDnsCache();
- }
- @Override
- public void updateHttpProxy()
- throws android.os.RemoteException {
- mBase.updateHttpProxy();
- }
- @Override
- public void setCoreSettings(android.os.Bundle coreSettings)
- throws android.os.RemoteException {
- mBase.setCoreSettings(coreSettings);
- }
- @Override
- public void updatePackageCompatibilityInfo(String pkg,
- android.content.res.CompatibilityInfo info)
- throws android.os.RemoteException {
- mBase.updatePackageCompatibilityInfo(pkg,
- info);
- }
- @Override
- public void scheduleTrimMemory(int level)
- throws android.os.RemoteException {
- mBase.scheduleTrimMemory(level);
- }
- @Override
- public void dumpMemInfo(android.os.ParcelFileDescriptor fd,
- android.os.Debug.MemoryInfo mem,
- boolean checkin,
- boolean dumpInfo,
- boolean dumpDalvik,
- boolean dumpSummaryOnly,
- boolean dumpUnreachable,
- boolean dumpAllocatorLogs,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpMemInfo(fd,
- mem,
- checkin,
- dumpInfo,
- dumpDalvik,
- dumpSummaryOnly,
- dumpUnreachable,
- dumpAllocatorLogs,
- args);
- }
- @Override
- public void dumpMemInfoProto(android.os.ParcelFileDescriptor fd,
- android.os.Debug.MemoryInfo mem,
- boolean dumpInfo,
- boolean dumpDalvik,
- boolean dumpSummaryOnly,
- boolean dumpUnreachable,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpMemInfoProto(fd,
- mem,
- dumpInfo,
- dumpDalvik,
- dumpSummaryOnly,
- dumpUnreachable,
- args);
- }
- @Override
- public void dumpGfxInfo(android.os.ParcelFileDescriptor fd,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpGfxInfo(fd,
- args);
- }
- @Override
- public void dumpCacheInfo(android.os.ParcelFileDescriptor fd,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpCacheInfo(fd,
- args);
- }
- @Override
- public void dumpProvider(android.os.ParcelFileDescriptor fd,
- android.os.IBinder servicetoken,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpProvider(fd,
- servicetoken,
- args);
- }
- @Override
- public void dumpDbInfo(android.os.ParcelFileDescriptor fd,
- String[] args)
- throws android.os.RemoteException {
- mBase.dumpDbInfo(fd,
- args);
- }
- @Override
- public void unstableProviderDied(android.os.IBinder provider)
- throws android.os.RemoteException {
- mBase.unstableProviderDied(provider);
- }
- @Override
- public void requestAssistContextExtras(android.os.IBinder activityToken,
- android.os.IBinder requestToken,
- int requestType,
- int sessionId,
- int flags)
- throws android.os.RemoteException {
- mBase.requestAssistContextExtras(activityToken,
- requestToken,
- requestType,
- sessionId,
- flags);
- }
- @Override
- public void scheduleTranslucentConversionComplete(android.os.IBinder token,
- boolean timeout)
- throws android.os.RemoteException {
- mBase.scheduleTranslucentConversionComplete(token,
- timeout);
- }
- @Override
- public void setProcessState(int state)
- throws android.os.RemoteException {
- mBase.setProcessState(state);
- }
- @Override
- public void scheduleInstallProvider(android.content.pm.ProviderInfo provider)
- throws android.os.RemoteException {
- mBase.scheduleInstallProvider(provider);
- }
- @Override
- public void updateTimePrefs(int timeFormatPreference)
- throws android.os.RemoteException {
- mBase.updateTimePrefs(timeFormatPreference);
- }
- @Override
- public void scheduleEnterAnimationComplete(android.os.IBinder token)
- throws android.os.RemoteException {
- mBase.scheduleEnterAnimationComplete(token);
- }
- @Override
- public void notifyCleartextNetwork(byte[] firstPacket)
- throws android.os.RemoteException {
- mBase.notifyCleartextNetwork(firstPacket);
- }
- @Override
- public void startBinderTracking()
- throws android.os.RemoteException {
- mBase.startBinderTracking();
- }
- @Override
- public void stopBinderTrackingAndDump(android.os.ParcelFileDescriptor fd)
- throws android.os.RemoteException {
- mBase.stopBinderTrackingAndDump(fd);
- }
- @Override
- public void scheduleLocalVoiceInteractionStarted(android.os.IBinder token,
- com.android.internal.app.IVoiceInteractor voiceInteractor)
- throws android.os.RemoteException {
- mBase.scheduleLocalVoiceInteractionStarted(token,
- voiceInteractor);
- }
- @Override
- public void handleTrustStorageUpdate()
- throws android.os.RemoteException {
- mBase.handleTrustStorageUpdate();
- }
- @Override
- public void attachAgent(String path)
- throws android.os.RemoteException {
- mBase.attachAgent(path);
- }
- @Override
- public void attachStartupAgents(String dataDir)
- throws android.os.RemoteException {
- mBase.attachStartupAgents(dataDir);
- }
- @Override
- public void scheduleApplicationInfoChanged(android.content.pm.ApplicationInfo ai)
- throws android.os.RemoteException {
- mBase.scheduleApplicationInfoChanged(ai);
- }
- @Override
- public void setNetworkBlockSeq(long procStateSeq)
- throws android.os.RemoteException {
- mBase.setNetworkBlockSeq(procStateSeq);
- }
- @Override
- public void scheduleTransaction(android.app.servertransaction.ClientTransaction transaction)
- throws android.os.RemoteException {
- mBase.scheduleTransaction(transaction);
- }
- @Override
- public void scheduleTaskFragmentTransaction(android.window.ITaskFragmentOrganizer organizer,
- android.window.TaskFragmentTransaction transaction)
- throws android.os.RemoteException {
- mBase.scheduleTaskFragmentTransaction(organizer,
- transaction);
- }
- @Override
- public void requestDirectActions(android.os.IBinder activityToken,
- com.android.internal.app.IVoiceInteractor intractor,
- android.os.RemoteCallback cancellationCallback,
- android.os.RemoteCallback callback)
- throws android.os.RemoteException {
- mBase.requestDirectActions(activityToken,
- intractor,
- cancellationCallback,
- callback);
- }
- @Override
- public void performDirectAction(android.os.IBinder activityToken,
- String actionId,
- android.os.Bundle arguments,
- android.os.RemoteCallback cancellationCallback,
- android.os.RemoteCallback resultCallback)
- throws android.os.RemoteException {
- mBase.performDirectAction(activityToken,
- actionId,
- arguments,
- cancellationCallback,
- resultCallback);
- }
- @Override
- public void notifyContentProviderPublishStatus(android.app.ContentProviderHolder holder,
- String authorities,
- int userId,
- boolean published)
- throws android.os.RemoteException {
- mBase.notifyContentProviderPublishStatus(holder,
- authorities,
- userId,
- published);
- }
- @Override
- public void instrumentWithoutRestart(android.content.ComponentName instrumentationName,
- android.os.Bundle instrumentationArgs,
- android.app.IInstrumentationWatcher instrumentationWatcher,
- android.app.IUiAutomationConnection instrumentationUiConnection,
- android.content.pm.ApplicationInfo targetInfo)
- throws android.os.RemoteException {
- mBase.instrumentWithoutRestart(instrumentationName,
- instrumentationArgs,
- instrumentationWatcher,
- instrumentationUiConnection,
- targetInfo);
- }
- @Override
- public void updateUiTranslationState(android.os.IBinder activityToken,
- int state,
- android.view.translation.TranslationSpec sourceSpec,
- android.view.translation.TranslationSpec targetSpec,
- java.util.List<android.view.autofill.AutofillId> viewIds,
- android.view.translation.UiTranslationSpec uiTranslationSpec)
- throws android.os.RemoteException {
- mBase.updateUiTranslationState(activityToken,
- state,
- sourceSpec,
- targetSpec,
- viewIds,
- uiTranslationSpec);
- }
- @Override
- public void scheduleTimeoutService(android.os.IBinder token,
- int startId)
- throws android.os.RemoteException {
- mBase.scheduleTimeoutService(token,
- startId);
- }
- @Override
- public void scheduleTimeoutServiceForType(android.os.IBinder token,
- int startId,
- int fgsType)
- throws android.os.RemoteException {
- mBase.scheduleTimeoutServiceForType(token,
- startId,
- fgsType);
- }
- @Override
- public void schedulePing(android.os.RemoteCallback pong)
- throws android.os.RemoteException {
- mBase.schedulePing(pong);
- }
-}
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 67985ef..092ee16 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -102,6 +102,7 @@
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.os.BinderCallsStats;
import com.android.internal.os.Clock;
@@ -1191,7 +1192,7 @@
.setMinConsumedPowerThreshold(minConsumedPowerThreshold)
.build();
bus = getBatteryUsageStats(List.of(query)).get(0);
- return StatsPerUidLogger.logStats(bus, data);
+ return new StatsPerUidLogger(new FrameworkStatsLogger()).logStats(bus, data);
}
default:
throw new UnsupportedOperationException("Unknown tagId=" + atomTag);
@@ -1204,7 +1205,35 @@
}
}
- private static class StatsPerUidLogger {
+ public static class FrameworkStatsLogger {
+ /**
+ * Wrapper for the FrameworkStatsLog.buildStatsEvent method that makes it easier
+ * for mocking.
+ */
+ @VisibleForTesting
+ public StatsEvent buildStatsEvent(long sessionStartTs, long sessionEndTs,
+ long sessionDuration, int sessionDischargePercentage, long sessionDischargeDuration,
+ int uid, @BatteryConsumer.ProcessState int processState, long timeInStateMillis,
+ String powerComponentName, float totalConsumedPowerMah, float powerComponentMah,
+ long powerComponentDurationMillis) {
+ return FrameworkStatsLog.buildStatsEvent(
+ FrameworkStatsLog.BATTERY_USAGE_STATS_PER_UID,
+ sessionStartTs,
+ sessionEndTs,
+ sessionDuration,
+ sessionDischargePercentage,
+ sessionDischargeDuration,
+ uid,
+ processState,
+ timeInStateMillis,
+ powerComponentName,
+ totalConsumedPowerMah,
+ powerComponentMah,
+ powerComponentDurationMillis);
+ }
+ }
+
+ public static class StatsPerUidLogger {
private static final int STATSD_METRIC_MAX_DIMENSIONS_COUNT = 3000;
@@ -1224,7 +1253,18 @@
long dischargeDuration) {}
;
- static int logStats(BatteryUsageStats bus, List<StatsEvent> data) {
+ private final FrameworkStatsLogger mFrameworkStatsLogger;
+
+ public StatsPerUidLogger(FrameworkStatsLogger frameworkStatsLogger) {
+ mFrameworkStatsLogger = frameworkStatsLogger;
+ }
+
+ /**
+ * Generates StatsEvents for the supplied battery usage stats and adds them to
+ * the supplied list.
+ */
+ @VisibleForTesting
+ public int logStats(BatteryUsageStats bus, List<StatsEvent> data) {
final SessionInfo sessionInfo =
new SessionInfo(
bus.getStatsStartTimestamp(),
@@ -1340,7 +1380,7 @@
return StatsManager.PULL_SUCCESS;
}
- private static boolean addStatsForPredefinedComponent(
+ private boolean addStatsForPredefinedComponent(
List<StatsEvent> data,
SessionInfo sessionInfo,
int uid,
@@ -1380,7 +1420,7 @@
powerComponentDurationMillis);
}
- private static boolean addStatsForCustomComponent(
+ private boolean addStatsForCustomComponent(
List<StatsEvent> data,
SessionInfo sessionInfo,
int uid,
@@ -1422,7 +1462,7 @@
* Returns true on success and false if reached max atoms capacity and no more atoms should
* be added
*/
- private static boolean addStatsAtom(
+ private boolean addStatsAtom(
List<StatsEvent> data,
SessionInfo sessionInfo,
int uid,
@@ -1432,9 +1472,7 @@
float totalConsumedPowerMah,
float powerComponentMah,
long powerComponentDurationMillis) {
- data.add(
- FrameworkStatsLog.buildStatsEvent(
- FrameworkStatsLog.BATTERY_USAGE_STATS_PER_UID,
+ data.add(mFrameworkStatsLogger.buildStatsEvent(
sessionInfo.startTs(),
sessionInfo.endTs(),
sessionInfo.duration(),
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index aeebae4..a7b2eb1 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -2135,8 +2135,13 @@
final boolean targetedBroadcast = r.intent.getComponent() != null;
final boolean targetedSelf = Objects.equals(r.callerPackage, receiverPackageName);
if (targetedBroadcast && !targetedSelf) {
- mService.mUsageStatsService.reportEvent(receiverPackageName,
- r.userId, Event.APP_COMPONENT_USED);
+ if (r.userId == UserHandle.USER_ALL) {
+ mService.mUsageStatsService.reportEventForAllUsers(
+ receiverPackageName, Event.APP_COMPONENT_USED);
+ } else {
+ mService.mUsageStatsService.reportEvent(receiverPackageName,
+ r.userId, Event.APP_COMPONENT_USED);
+ }
}
mService.notifyPackageUse(receiverPackageName,
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
index 8de1552..25b9228 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
@@ -834,6 +834,14 @@
return isDeviceActiveForCommunication(AudioDeviceInfo.TYPE_BLUETOOTH_SCO);
}
+ /*package*/ boolean isBluetoothBleHeadsetActive() {
+ return isDeviceActiveForCommunication(AudioDeviceInfo.TYPE_BLE_HEADSET);
+ }
+
+ /*package*/ boolean isBluetoothBleSpeakerActive() {
+ return isDeviceActiveForCommunication(AudioDeviceInfo.TYPE_BLE_SPEAKER);
+ }
+
/*package*/ boolean isDeviceConnected(@NonNull AudioDeviceAttributes device) {
synchronized (mDeviceStateLock) {
return mDeviceInventory.isDeviceConnected(device);
@@ -1863,7 +1871,10 @@
synchronized (mBluetoothAudioStateLock) {
reapplyAudioHalBluetoothState();
}
- mBtHelper.onAudioServerDiedRestoreA2dp();
+ final int forceForMedia = getBluetoothA2dpEnabled()
+ ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP;
+ setForceUse_Async(
+ AudioSystem.FOR_MEDIA, forceForMedia, "MSG_RESTORE_DEVICES");
updateCommunicationRoute("MSG_RESTORE_DEVICES");
}
}
diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
index 02aa6f5..ca69f31 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
@@ -1757,6 +1757,15 @@
if (AudioService.DEBUG_DEVICES) {
Slog.i(TAG, "deviceInfo:" + di + " is(already)Connected:" + isConnected);
}
+ // Do not report an error in case of redundant connect or disconnect request
+ // as this can cause a state mismatch between BtHelper and AudioDeviceInventory
+ if (connect == isConnected) {
+ Log.i(TAG, "handleDeviceConnection() deviceInfo=" + di + " is already "
+ + (connect ? "" : "dis") + "connected");
+ mmi.set(MediaMetrics.Property.STATE, connect
+ ? MediaMetrics.Value.CONNECT : MediaMetrics.Value.DISCONNECT).record();
+ return true;
+ }
if (connect && !isConnected) {
final int res;
if (isForTesting) {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index a84306b..fab0a56 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -739,8 +739,6 @@
// Broadcast receiver for device connections intent broadcasts
private final BroadcastReceiver mReceiver = new AudioServiceBroadcastReceiver();
- private final Executor mAudioServerLifecycleExecutor;
-
private IMediaProjectionManager mProjectionService; // to validate projection token
/** Interface for UserManagerService. */
@@ -1061,8 +1059,7 @@
audioserverPermissions() ?
initializeAudioServerPermissionProvider(
context, audioPolicyFacade, audioserverLifecycleExecutor) :
- null,
- audioserverLifecycleExecutor
+ null
);
}
@@ -1148,16 +1145,13 @@
* {@link AudioSystemThread} is created as the messaging thread instead.
* @param appOps {@link AppOpsManager} system service
* @param enforcer Used for permission enforcing
- * @param permissionProvider Used to push permissions to audioserver
- * @param audioserverLifecycleExecutor Used for tasks managing audioserver lifecycle
*/
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
public AudioService(Context context, AudioSystemAdapter audioSystem,
SystemServerAdapter systemServer, SettingsAdapter settings,
AudioVolumeGroupHelperBase audioVolumeGroupHelper, AudioPolicyFacade audioPolicy,
@Nullable Looper looper, AppOpsManager appOps, @NonNull PermissionEnforcer enforcer,
- /* @NonNull */ AudioServerPermissionProvider permissionProvider,
- Executor audioserverLifecycleExecutor) {
+ /* @NonNull */ AudioServerPermissionProvider permissionProvider) {
super(enforcer);
sLifecycleLogger.enqueue(new EventLogger.StringEvent("AudioService()"));
mContext = context;
@@ -1165,7 +1159,6 @@
mAppOps = appOps;
mPermissionProvider = permissionProvider;
- mAudioServerLifecycleExecutor = audioserverLifecycleExecutor;
mAudioSystem = audioSystem;
mSystemServer = systemServer;
@@ -1177,34 +1170,6 @@
mBroadcastHandlerThread = new HandlerThread("AudioService Broadcast");
mBroadcastHandlerThread.start();
- // Listen to permission invalidations for the PermissionProvider
- if (audioserverPermissions()) {
- final Handler broadcastHandler = mBroadcastHandlerThread.getThreadHandler();
- mAudioSystem.listenForSystemPropertyChange(PermissionManager.CACHE_KEY_PACKAGE_INFO,
- new Runnable() {
- // Roughly chosen to be long enough to suppress the autocork behavior
- // of the permission cache (50ms), and longer than the task could reasonably
- // take, even with many packages and users, while not introducing visible
- // permission leaks - since the app needs to restart, and trigger an action
- // which requires permissions from audioserver before this delay.
- // For RECORD_AUDIO, we are additionally protected by appops.
- final long UPDATE_DELAY_MS = 110;
- final AtomicLong scheduledUpdateTimestamp = new AtomicLong(0);
- @Override
- public void run() {
- var currentTime = SystemClock.uptimeMillis();
- if (currentTime > scheduledUpdateTimestamp.get()) {
- scheduledUpdateTimestamp.set(currentTime + UPDATE_DELAY_MS);
- broadcastHandler.postAtTime( () ->
- mAudioServerLifecycleExecutor.execute(mPermissionProvider
- ::onPermissionStateChanged),
- currentTime + UPDATE_DELAY_MS
- );
- }
- }
- });
- }
-
mDeviceBroker = new AudioDeviceBroker(mContext, this, mAudioSystem);
mIsSingleVolume = AudioSystem.isSingleVolume(context);
@@ -5754,16 +5719,25 @@
|| ringerMode == AudioManager.RINGER_MODE_SILENT;
final boolean shouldRingSco = ringerMode == AudioManager.RINGER_MODE_VIBRATE
&& mDeviceBroker.isBluetoothScoActive();
- // Ask audio policy engine to force use Bluetooth SCO channel if needed
+ final boolean shouldRingBle = ringerMode == AudioManager.RINGER_MODE_VIBRATE
+ && (mDeviceBroker.isBluetoothBleHeadsetActive()
+ || mDeviceBroker.isBluetoothBleSpeakerActive());
+ // Ask audio policy engine to force use Bluetooth SCO/BLE channel if needed
final String eventSource = "muteRingerModeStreams() from u/pid:" + Binder.getCallingUid()
+ "/" + Binder.getCallingPid();
+ int forceUse = AudioSystem.FORCE_NONE;
+ if (shouldRingSco) {
+ forceUse = AudioSystem.FORCE_BT_SCO;
+ } else if (shouldRingBle) {
+ forceUse = AudioSystem.FORCE_BT_BLE;
+ }
sendMsg(mAudioHandler, MSG_SET_FORCE_USE, SENDMSG_QUEUE, AudioSystem.FOR_VIBRATE_RINGING,
- shouldRingSco ? AudioSystem.FORCE_BT_SCO : AudioSystem.FORCE_NONE, eventSource, 0);
+ forceUse, eventSource, 0);
for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) {
final boolean isMuted = isStreamMutedByRingerOrZenMode(streamType);
final boolean muteAllowedBySco =
- !(shouldRingSco && streamType == AudioSystem.STREAM_RING);
+ !((shouldRingSco || shouldRingBle) && streamType == AudioSystem.STREAM_RING);
final boolean shouldZenMute = isStreamAffectedByCurrentZen(streamType);
final boolean shouldMute = shouldZenMute || (ringerModeMute
&& isStreamAffectedByRingerMode(streamType) && muteAllowedBySco);
@@ -12000,6 +11974,29 @@
provider.onServiceStart(audioPolicy.getPermissionController());
});
+ // Set up event listeners
+ // Must be kept in sync with PermissionManager
+ Runnable cacheSysPropHandler = new Runnable() {
+ private AtomicReference<SystemProperties.Handle> mHandle = new AtomicReference();
+ private AtomicLong mNonce = new AtomicLong();
+ @Override
+ public void run() {
+ if (mHandle.get() == null) {
+ // Cache the handle
+ mHandle.compareAndSet(null, SystemProperties.find(
+ PermissionManager.CACHE_KEY_PACKAGE_INFO));
+ }
+ long nonce;
+ SystemProperties.Handle ref;
+ if ((ref = mHandle.get()) != null && (nonce = ref.getLong(0)) != 0 &&
+ mNonce.getAndSet(nonce) != nonce) {
+ audioserverExecutor.execute(() -> provider.onPermissionStateChanged());
+ }
+ }
+ };
+
+ SystemProperties.addChangeCallback(cacheSysPropHandler);
+
IntentFilter packageUpdateFilter = new IntentFilter();
packageUpdateFilter.addAction(ACTION_PACKAGE_ADDED);
packageUpdateFilter.addAction(ACTION_PACKAGE_REMOVED);
diff --git a/services/core/java/com/android/server/audio/AudioSystemAdapter.java b/services/core/java/com/android/server/audio/AudioSystemAdapter.java
index d083c68..7f4bc74 100644
--- a/services/core/java/com/android/server/audio/AudioSystemAdapter.java
+++ b/services/core/java/com/android/server/audio/AudioSystemAdapter.java
@@ -748,10 +748,6 @@
return AudioSystem.setMasterMute(mute);
}
- public void listenForSystemPropertyChange(String systemPropertyName, Runnable callback) {
- AudioSystem.listenForSystemPropertyChange(systemPropertyName, callback);
- }
-
/**
* Part of AudioService dump
* @param pw
diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java
index 57bffa7..ce92dfb 100644
--- a/services/core/java/com/android/server/audio/BtHelper.java
+++ b/services/core/java/com/android/server/audio/BtHelper.java
@@ -83,39 +83,53 @@
}
// BluetoothHeadset API to control SCO connection
+ @GuardedBy("BtHelper.this")
private @Nullable BluetoothHeadset mBluetoothHeadset;
// Bluetooth headset device
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private @Nullable BluetoothDevice mBluetoothHeadsetDevice;
+
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private final Map<BluetoothDevice, AudioDeviceAttributes> mResolvedScoAudioDevices =
new HashMap<>();
+ @GuardedBy("BtHelper.this")
private @Nullable BluetoothHearingAid mHearingAid = null;
+ @GuardedBy("BtHelper.this")
private @Nullable BluetoothLeAudio mLeAudio = null;
+ @GuardedBy("BtHelper.this")
private @Nullable BluetoothLeAudioCodecConfig mLeAudioCodecConfig;
// Reference to BluetoothA2dp to query for AbsoluteVolume.
+ @GuardedBy("BtHelper.this")
private @Nullable BluetoothA2dp mA2dp = null;
+ @GuardedBy("BtHelper.this")
private @Nullable BluetoothCodecConfig mA2dpCodecConfig;
+ @GuardedBy("BtHelper.this")
private @AudioSystem.AudioFormatNativeEnumForBtCodec
int mLeAudioBroadcastCodec = AudioSystem.AUDIO_FORMAT_DEFAULT;
// If absolute volume is supported in AVRCP device
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private boolean mAvrcpAbsVolSupported = false;
// Current connection state indicated by bluetooth headset
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private int mScoConnectionState;
// Indicate if SCO audio connection is currently active and if the initiator is
// audio service (internal) or bluetooth headset (external)
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private int mScoAudioState;
// Indicates the mode used for SCO audio connection. The mode is virtual call if the request
// originated from an app targeting an API version before JB MR2 and raw audio after that.
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private int mScoAudioMode;
// SCO audio state is not active
@@ -210,7 +224,7 @@
//----------------------------------------------------------------------
// Interface for AudioDeviceBroker
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized void onSystemReady() {
mScoConnectionState = android.media.AudioManager.SCO_AUDIO_STATE_ERROR;
resetBluetoothSco();
@@ -238,17 +252,13 @@
}
}
- /*package*/ synchronized void onAudioServerDiedRestoreA2dp() {
- final int forMed = mDeviceBroker.getBluetoothA2dpEnabled()
- ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP;
- mDeviceBroker.setForceUse_Async(AudioSystem.FOR_MEDIA, forMed, "onAudioServerDied()");
- }
-
- /*package*/ synchronized void setAvrcpAbsoluteVolumeSupported(boolean supported) {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ /*package*/ void setAvrcpAbsoluteVolumeSupported(boolean supported) {
mAvrcpAbsVolSupported = supported;
Log.i(TAG, "setAvrcpAbsoluteVolumeSupported supported=" + supported);
}
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized void setAvrcpAbsoluteVolumeIndex(int index) {
if (mA2dp == null) {
if (AudioService.DEBUG_VOL) {
@@ -371,7 +381,7 @@
return codecAndChanged;
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized void onReceiveBtEvent(Intent intent) {
final String action = intent.getAction();
@@ -393,12 +403,12 @@
}
/**
- * Exclusively called from AudioDeviceBroker (with mSetModeLock held)
+ * Exclusively called from AudioDeviceBroker (with mDeviceStateLock held)
* when handling MSG_L_RECEIVED_BT_EVENT in {@link #onReceiveBtEvent(Intent)}
* as part of the serialization of the communication route selection
*/
- @GuardedBy("BtHelper.this")
- private void onScoAudioStateChanged(int state) {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ private synchronized void onScoAudioStateChanged(int state) {
boolean broadcast = false;
int scoAudioState = AudioManager.SCO_AUDIO_STATE_ERROR;
Log.i(TAG, "onScoAudioStateChanged state: " + state
@@ -414,12 +424,14 @@
broadcast = true;
}
if (!mDeviceBroker.isScoManagedByAudio()) {
- mDeviceBroker.setBluetoothScoOn(true, "BtHelper.onScoAudioStateChanged");
+ mDeviceBroker.setBluetoothScoOn(
+ true, "BtHelper.onScoAudioStateChanged, state: " + state);
}
break;
case BluetoothHeadset.STATE_AUDIO_DISCONNECTED:
if (!mDeviceBroker.isScoManagedByAudio()) {
- mDeviceBroker.setBluetoothScoOn(false, "BtHelper.onScoAudioStateChanged");
+ mDeviceBroker.setBluetoothScoOn(
+ false, "BtHelper.onScoAudioStateChanged, state: " + state);
}
scoAudioState = AudioManager.SCO_AUDIO_STATE_DISCONNECTED;
// There are two cases where we want to immediately reconnect audio:
@@ -466,6 +478,7 @@
*
* @return false if SCO isn't connected
*/
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized boolean isBluetoothScoOn() {
if (mBluetoothHeadset == null || mBluetoothHeadsetDevice == null) {
return false;
@@ -479,19 +492,20 @@
return false;
}
- /*package*/ synchronized boolean isBluetoothScoRequestedInternally() {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ /*package*/ boolean isBluetoothScoRequestedInternally() {
return mScoAudioState == SCO_STATE_ACTIVE_INTERNAL
|| mScoAudioState == SCO_STATE_ACTIVATE_REQ;
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized boolean startBluetoothSco(int scoAudioMode,
@NonNull String eventSource) {
AudioService.sDeviceLogger.enqueue(new EventLogger.StringEvent(eventSource));
return requestScoState(BluetoothHeadset.STATE_AUDIO_CONNECTED, scoAudioMode);
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized boolean stopBluetoothSco(@NonNull String eventSource) {
AudioService.sDeviceLogger.enqueue(new EventLogger.StringEvent(eventSource));
return requestScoState(BluetoothHeadset.STATE_AUDIO_DISCONNECTED, SCO_MODE_VIRTUAL_CALL);
@@ -551,7 +565,8 @@
}
}
- /*package*/ synchronized void onBroadcastScoConnectionState(int state) {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ /*package*/ void onBroadcastScoConnectionState(int state) {
if (state == mScoConnectionState) {
return;
}
@@ -563,8 +578,8 @@
mScoConnectionState = state;
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
- /*package*/ synchronized void resetBluetoothSco() {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ /*package*/ void resetBluetoothSco() {
mScoAudioState = SCO_STATE_INACTIVE;
broadcastScoConnectionState(AudioManager.SCO_AUDIO_STATE_DISCONNECTED);
mDeviceBroker.clearA2dpSuspended(false /* internalOnly */);
@@ -572,7 +587,7 @@
mDeviceBroker.setBluetoothScoOn(false, "resetBluetoothSco");
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized void onBtProfileDisconnected(int profile) {
AudioService.sDeviceLogger.enqueue(new EventLogger.StringEvent(
"BT profile " + BluetoothProfile.getProfileName(profile)
@@ -634,9 +649,10 @@
}
}
+ @GuardedBy("BtHelper.this")
MyLeAudioCallback mLeAudioCallback = null;
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
/*package*/ synchronized void onBtProfileConnected(int profile, BluetoothProfile proxy) {
AudioService.sDeviceLogger.enqueue(new EventLogger.StringEvent(
"BT profile " + BluetoothProfile.getProfileName(profile) + " connected to proxy "
@@ -773,8 +789,8 @@
}
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
- private void onHeadsetProfileConnected(@NonNull BluetoothHeadset headset) {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ private synchronized void onHeadsetProfileConnected(@NonNull BluetoothHeadset headset) {
// Discard timeout message
mDeviceBroker.handleCancelFailureToConnectToBtHeadsetService();
mBluetoothHeadset = headset;
@@ -830,6 +846,7 @@
mDeviceBroker.postBroadcastScoConnectionState(state);
}
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
@Nullable AudioDeviceAttributes getHeadsetAudioDevice() {
if (mBluetoothHeadsetDevice == null) {
return null;
@@ -837,6 +854,7 @@
return getHeadsetAudioDevice(mBluetoothHeadsetDevice);
}
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private @NonNull AudioDeviceAttributes getHeadsetAudioDevice(BluetoothDevice btDevice) {
AudioDeviceAttributes deviceAttr = mResolvedScoAudioDevices.get(btDevice);
if (deviceAttr != null) {
@@ -876,30 +894,44 @@
return new AudioDeviceAttributes(nativeType, address, name);
}
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
private boolean handleBtScoActiveDeviceChange(BluetoothDevice btDevice, boolean isActive) {
if (btDevice == null) {
return true;
}
- int inDevice = AudioSystem.DEVICE_IN_BLUETOOTH_SCO_HEADSET;
- AudioDeviceAttributes audioDevice = btHeadsetDeviceToAudioDevice(btDevice);
boolean result = false;
+ AudioDeviceAttributes audioDevice = null; // Only used if isActive is true
+ String address = btDevice.getAddress();
+ String name = getName(btDevice);
+ // Handle output device
if (isActive) {
- result |= mDeviceBroker.handleDeviceConnection(audioDevice, isActive, btDevice);
+ audioDevice = btHeadsetDeviceToAudioDevice(btDevice);
+ result = mDeviceBroker.handleDeviceConnection(
+ audioDevice, true /*connect*/, btDevice);
} else {
- int[] outDeviceTypes = {
+ AudioDeviceAttributes ada = mResolvedScoAudioDevices.get(btDevice);
+ if (ada != null) {
+ result = mDeviceBroker.handleDeviceConnection(
+ ada, false /*connect*/, btDevice);
+ } else {
+ // Disconnect all possible audio device types if the disconnected device type is
+ // unknown
+ int[] outDeviceTypes = {
AudioSystem.DEVICE_OUT_BLUETOOTH_SCO,
AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET,
AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT
- };
- for (int outDeviceType : outDeviceTypes) {
- result |= mDeviceBroker.handleDeviceConnection(new AudioDeviceAttributes(
- outDeviceType, audioDevice.getAddress(), audioDevice.getName()),
- isActive, btDevice);
+ };
+ for (int outDeviceType : outDeviceTypes) {
+ result |= mDeviceBroker.handleDeviceConnection(new AudioDeviceAttributes(
+ outDeviceType, address, name), false /*connect*/, btDevice);
+ }
}
}
+ // Handle input device
+ int inDevice = AudioSystem.DEVICE_IN_BLUETOOTH_SCO_HEADSET;
// handleDeviceConnection() && result to make sure the method get executed
result = mDeviceBroker.handleDeviceConnection(new AudioDeviceAttributes(
- inDevice, audioDevice.getAddress(), audioDevice.getName()),
+ inDevice, address, name),
isActive, btDevice) && result;
if (result) {
if (isActive) {
@@ -916,8 +948,8 @@
return btDevice == null ? "(null)" : btDevice.getAnonymizedAddress();
}
- // Called locked by ADeviceBroker.mSetModeLock -> AudioDeviceBroker.mDeviceStateLock
- /*package */ synchronized void onSetBtScoActiveDevice(BluetoothDevice btDevice) {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ /*package */ void onSetBtScoActiveDevice(BluetoothDevice btDevice) {
Log.i(TAG, "onSetBtScoActiveDevice: " + getAnonymizedAddress(mBluetoothHeadsetDevice)
+ " -> " + getAnonymizedAddress(btDevice));
final BluetoothDevice previousActiveDevice = mBluetoothHeadsetDevice;
@@ -987,10 +1019,8 @@
//----------------------------------------------------------------------
- // @GuardedBy("mDeviceBroker.mSetModeLock")
- // @GuardedBy("AudioDeviceBroker.this.mDeviceStateLock")
- @GuardedBy("BtHelper.this")
- private boolean requestScoState(int state, int scoAudioMode) {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ private synchronized boolean requestScoState(int state, int scoAudioMode) {
checkScoAudioState();
if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED) {
// Make sure that the state transitions to CONNECTING even if we cannot initiate
@@ -1154,13 +1184,14 @@
}
}
- private void checkScoAudioState() {
+ @GuardedBy("mDeviceBroker.mDeviceStateLock")
+ private synchronized void checkScoAudioState() {
try {
if (mBluetoothHeadset != null
&& mBluetoothHeadsetDevice != null
&& mScoAudioState == SCO_STATE_INACTIVE
&& mBluetoothHeadset.getAudioState(mBluetoothHeadsetDevice)
- != BluetoothHeadset.STATE_AUDIO_DISCONNECTED) {
+ != BluetoothHeadset.STATE_AUDIO_DISCONNECTED) {
mScoAudioState = SCO_STATE_ACTIVE_EXTERNAL;
}
} catch (Exception e) {
@@ -1184,7 +1215,7 @@
return result;
}
- /*package*/ int getLeAudioDeviceGroupId(BluetoothDevice device) {
+ /*package*/ synchronized int getLeAudioDeviceGroupId(BluetoothDevice device) {
if (mLeAudio == null || device == null) {
return BluetoothLeAudio.GROUP_ID_INVALID;
}
@@ -1197,7 +1228,7 @@
* @return A List of Pair(String main_address, String identity_address). Note that the
* addresses returned by BluetoothDevice can be null.
*/
- /*package*/ List<Pair<String, String>> getLeAudioGroupAddresses(int groupId) {
+ /*package*/ synchronized List<Pair<String, String>> getLeAudioGroupAddresses(int groupId) {
List<Pair<String, String>> addresses = new ArrayList<>();
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null || mLeAudio == null) {
diff --git a/services/core/java/com/android/server/crashrecovery/CrashRecoveryModule.java b/services/core/java/com/android/server/crashrecovery/CrashRecoveryModule.java
index 317c91e..5f2fbce 100644
--- a/services/core/java/com/android/server/crashrecovery/CrashRecoveryModule.java
+++ b/services/core/java/com/android/server/crashrecovery/CrashRecoveryModule.java
@@ -41,6 +41,7 @@
@Override
public void onStart() {
RescueParty.registerHealthObserver(mSystemContext);
+ mPackageWatchdog.registerShutdownBroadcastReceiver();
mPackageWatchdog.noteBoot();
}
diff --git a/services/core/java/com/android/server/display/LogicalDisplayMapper.java b/services/core/java/com/android/server/display/LogicalDisplayMapper.java
index d3b41b8..e9ecfc6 100644
--- a/services/core/java/com/android/server/display/LogicalDisplayMapper.java
+++ b/services/core/java/com/android/server/display/LogicalDisplayMapper.java
@@ -25,6 +25,7 @@
import android.annotation.Nullable;
import android.content.Context;
import android.hardware.devicestate.DeviceState;
+import android.hardware.devicestate.DeviceStateManager;
import android.hardware.devicestate.feature.flags.FeatureFlags;
import android.hardware.devicestate.feature.flags.FeatureFlagsImpl;
import android.os.Handler;
@@ -614,7 +615,11 @@
&& isBootCompleted
&& !mFoldSettingProvider.shouldStayAwakeOnFold();
} else {
- return mDeviceStatesOnWhichToSelectiveSleep.get(pendingState.getIdentifier())
+ return currentState.getIdentifier()
+ != DeviceStateManager.INVALID_DEVICE_STATE_IDENTIFIER
+ && pendingState.getIdentifier()
+ != DeviceStateManager.INVALID_DEVICE_STATE_IDENTIFIER
+ && mDeviceStatesOnWhichToSelectiveSleep.get(pendingState.getIdentifier())
&& !mDeviceStatesOnWhichToSelectiveSleep.get(currentState.getIdentifier())
&& isInteractive
&& isBootCompleted
diff --git a/services/core/java/com/android/server/flags/services.aconfig b/services/core/java/com/android/server/flags/services.aconfig
index d387828..c361aee 100644
--- a/services/core/java/com/android/server/flags/services.aconfig
+++ b/services/core/java/com/android/server/flags/services.aconfig
@@ -35,3 +35,13 @@
description: "Enable BackgroundInstallControl based on system feature to prevent it from starting on form factors."
bug: "340928990"
}
+
+flag {
+ namespace: "input"
+ name: "modifier_shortcut_manager_multiuser"
+ description: "Update Modifier Shortcut Manager to work correctly with multiple users, including HSUM"
+ bug: "351963350"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java b/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java
index 5ff421a..7c93c8b 100644
--- a/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java
+++ b/services/core/java/com/android/server/inputmethod/DefaultImeVisibilityApplier.java
@@ -89,8 +89,8 @@
void performShowIme(IBinder showInputToken, @NonNull ImeTracker.Token statsToken,
@InputMethod.ShowFlags int showFlags, ResultReceiver resultReceiver,
@SoftInputShowHideReason int reason, @UserIdInt int userId) {
- final var bindingController = mService.getInputMethodBindingController(userId);
final var userData = mService.getUserData(userId);
+ final var bindingController = userData.mBindingController;
final IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod != null) {
if (DEBUG) {
@@ -128,9 +128,9 @@
void performHideIme(IBinder hideInputToken, @NonNull ImeTracker.Token statsToken,
ResultReceiver resultReceiver, @SoftInputShowHideReason int reason,
@UserIdInt int userId) {
- final var bindingController = mService.getInputMethodBindingController(userId);
- final IInputMethodInvoker curMethod = bindingController.getCurMethod();
final var userData = mService.getUserData(userId);
+ final var bindingController = userData.mBindingController;
+ final IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod != null) {
// The IME will report its visible state again after the following message finally
// delivered to the IME process as an IPC. Hence the inconsistency between
@@ -171,8 +171,8 @@
void applyImeVisibility(IBinder windowToken, @Nullable ImeTracker.Token statsToken,
@ImeVisibilityStateComputer.VisibilityState int state,
@SoftInputShowHideReason int reason, @UserIdInt int userId) {
- final var bindingController = mService.getInputMethodBindingController(userId);
final var userData = mService.getUserData(userId);
+ final var bindingController = userData.mBindingController;
final int displayIdToShowIme = bindingController.getDisplayIdToShowIme();
switch (state) {
case STATE_SHOW_IME:
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
index f61ca61..c82e5be 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
@@ -16,6 +16,8 @@
package com.android.server.inputmethod;
+import static com.android.server.inputmethod.InputMethodUtils.NOT_A_SUBTYPE_ID;
+
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.annotation.NonNull;
@@ -110,7 +112,7 @@
InlineSuggestionsRequestInfo requestInfo, InlineSuggestionsRequestCallback cb);
/**
- * Force switch to the enabled input method by {@code imeId} for current user. If the input
+ * Force switch to the enabled input method by {@code imeId} for the current user. If the input
* method with {@code imeId} is not enabled or not installed, do nothing.
*
* @param imeId the input method ID to be switched to
@@ -119,7 +121,25 @@
* method by {@code imeId}; {@code false} the input method with {@code imeId} is not available
* to be switched.
*/
- public abstract boolean switchToInputMethod(String imeId, @UserIdInt int userId);
+ public boolean switchToInputMethod(@NonNull String imeId, @UserIdInt int userId) {
+ return switchToInputMethod(imeId, NOT_A_SUBTYPE_ID, userId);
+ }
+
+ /**
+ * Force switch to the enabled input method by {@code imeId} for the current user. If the input
+ * method with {@code imeId} is not enabled or not installed, do nothing. If {@code subtypeId}
+ * is also supplied (not {@link InputMethodUtils#NOT_A_SUBTYPE_ID}) and valid, also switches to
+ * it, otherwise the system decides the most sensible default subtype to use.
+ *
+ * @param imeId the input method ID to be switched to
+ * @param subtypeId the input method subtype ID to be switched to
+ * @param userId the user ID to be queried
+ * @return {@code true} if the current input method was successfully switched to the input
+ * method by {@code imeId}; {@code false} the input method with {@code imeId} is not available
+ * to be switched.
+ */
+ public abstract boolean switchToInputMethod(@NonNull String imeId, int subtypeId,
+ @UserIdInt int userId);
/**
* Force enable or disable the input method associated with {@code imeId} for given user. If
@@ -211,6 +231,15 @@
public abstract void updateImeWindowStatus(boolean disableImeIcon, int displayId);
/**
+ * Updates and reports whether the IME switcher button should be shown, regardless whether
+ * SystemUI or the IME is responsible for drawing it and the corresponding navigation bar.
+ *
+ * @param displayId the display for which to update the IME switcher button visibility.
+ * @param userId the user for which to update the IME switcher button visibility.
+ */
+ public abstract void updateShouldShowImeSwitcher(int displayId, @UserIdInt int userId);
+
+ /**
* Finish stylus handwriting by calling {@link InputMethodService#finishStylusHandwriting()} if
* there is an ongoing handwriting session.
*/
@@ -290,7 +319,8 @@
}
@Override
- public boolean switchToInputMethod(String imeId, @UserIdInt int userId) {
+ public boolean switchToInputMethod(@NonNull String imeId, int subtypeId,
+ @UserIdInt int userId) {
return false;
}
@@ -335,6 +365,10 @@
}
@Override
+ public void updateShouldShowImeSwitcher(int displayId, @UserIdInt int userId) {
+ }
+
+ @Override
public void onSessionForAccessibilityCreated(int accessibilityConnectionId,
IAccessibilityInputMethodSession session, @UserIdInt int userId) {
}
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index c093c22..fbd9ac0 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -181,6 +181,7 @@
import com.android.server.companion.virtual.VirtualDeviceManagerInternal;
import com.android.server.input.InputManagerInternal;
import com.android.server.inputmethod.InputMethodManagerInternal.InputMethodListListener;
+import com.android.server.inputmethod.InputMethodMenuControllerNew.MenuItem;
import com.android.server.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem;
import com.android.server.pm.UserManagerInternal;
import com.android.server.statusbar.StatusBarManagerInternal;
@@ -360,6 +361,7 @@
private final UserManagerInternal mUserManagerInternal;
@MultiUserUnawareField
private final InputMethodMenuController mMenuController;
+ private final InputMethodMenuControllerNew mMenuControllerNew;
@GuardedBy("ImfLock.class")
@MultiUserUnawareField
@@ -476,7 +478,7 @@
@AnyThread
@NonNull
- UserDataRepository.UserData getUserData(@UserIdInt int userId) {
+ UserData getUserData(@UserIdInt int userId) {
return mUserDataRepository.getOrCreate(userId);
}
@@ -566,7 +568,9 @@
}
switch (key) {
case Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD: {
- mMenuController.updateKeyboardFromSettingsLocked();
+ if (!Flags.imeSwitcherRevamp()) {
+ mMenuController.updateKeyboardFromSettingsLocked();
+ }
break;
}
case Settings.Secure.ACCESSIBILITY_SOFT_KEYBOARD_MODE: {
@@ -631,7 +635,15 @@
}
}
}
- mMenuController.hideInputMethodMenu();
+ if (Flags.imeSwitcherRevamp()) {
+ synchronized (ImfLock.class) {
+ final var bindingController = getInputMethodBindingController(senderUserId);
+ mMenuControllerNew.hide(bindingController.getCurTokenDisplayId(),
+ senderUserId);
+ }
+ } else {
+ mMenuController.hideInputMethodMenu();
+ }
} else {
Slog.w(TAG, "Unexpected intent " + intent);
}
@@ -1015,7 +1027,7 @@
// Called directly from UserManagerService. Do not block the calling thread.
final int userId = user.id;
AdditionalSubtypeMapRepository.onUserCreated(userId);
- initializeUsersAsync(new int[userId]);
+ initializeUsersAsync(new int[]{ userId });
}
@Override
@@ -1171,6 +1183,8 @@
: bindingControllerFactory);
mMenuController = new InputMethodMenuController(this);
+ mMenuControllerNew = Flags.imeSwitcherRevamp()
+ ? new InputMethodMenuControllerNew() : null;
mVisibilityStateComputer = new ImeVisibilityStateComputer(this);
mVisibilityApplier = new DefaultImeVisibilityApplier(this);
@@ -1422,15 +1436,15 @@
* Returns true iff the caller is identified to be the current input method with the token.
*
* @param token the window token given to the input method when it was started
- * @param userId userId of the calling IME process
+ * @param userData {@link UserData} of the calling IME process
* @return true if and only if non-null valid token is specified
*/
@GuardedBy("ImfLock.class")
- private boolean calledWithValidTokenLocked(@NonNull IBinder token, @UserIdInt int userId) {
+ private boolean calledWithValidTokenLocked(@NonNull IBinder token, @NonNull UserData userData) {
if (token == null) {
throw new InvalidParameterException("token must not be null.");
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
if (token != bindingController.getCurToken()) {
Slog.e(TAG, "Ignoring " + Debug.getCaller() + " due to an invalid token."
+ " uid:" + Binder.getCallingUid() + " token:" + token);
@@ -1709,7 +1723,7 @@
clearClientSessionLocked(client);
clearClientSessionForAccessibilityLocked(client);
// TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
- @SuppressWarnings("GuardedBy") Consumer<UserDataRepository.UserData> clientRemovedForUser =
+ @SuppressWarnings("GuardedBy") Consumer<UserData> clientRemovedForUser =
userData -> onClientRemovedInternalLocked(client, userData);
mUserDataRepository.forAllUserData(clientRemovedForUser);
}
@@ -1719,15 +1733,14 @@
*/
// TODO(b/325515685): Move this method to InputMethodBindingController
@GuardedBy("ImfLock.class")
- private void onClientRemovedInternalLocked(ClientState client,
- @NonNull UserDataRepository.UserData userData) {
+ private void onClientRemovedInternalLocked(ClientState client, @NonNull UserData userData) {
final int userId = userData.mUserId;
if (userData.mCurClient == client) {
hideCurrentInputLocked(userData.mImeBindingState.mFocusedWindow, 0 /* flags */,
SoftInputShowHideReason.HIDE_REMOVE_CLIENT, userId);
if (userData.mBoundToMethod) {
userData.mBoundToMethod = false;
- final var userBindingController = getInputMethodBindingController(userId);
+ final var userBindingController = userData.mBindingController;
IInputMethodInvoker curMethod = userBindingController.getCurMethod();
if (curMethod != null) {
// When we unbind input, we are unbinding the client, so we always
@@ -1759,7 +1772,7 @@
Slog.v(TAG, "unbindCurrentInputLocked: client="
+ userData.mCurClient.mClient.asBinder());
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
if (userData.mBoundToMethod) {
userData.mBoundToMethod = false;
IInputMethodInvoker curMethod = bindingController.getCurMethod();
@@ -1783,7 +1796,11 @@
ImeTracker.PHASE_SERVER_WAIT_IME);
userData.mCurStatsToken = null;
// TODO: Make mMenuController multi-user aware
- mMenuController.hideInputMethodMenuLocked();
+ if (Flags.imeSwitcherRevamp()) {
+ mMenuControllerNew.hide(bindingController.getCurTokenDisplayId(), userId);
+ } else {
+ mMenuController.hideInputMethodMenuLocked();
+ }
}
}
@@ -1845,8 +1862,8 @@
@NonNull
InputBindResult attachNewInputLocked(@StartInputReason int startInputReason, boolean initial,
@UserIdInt int userId) {
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
if (!userData.mBoundToMethod) {
bindingController.getCurMethod().bindInput(userData.mCurClient.mBinding);
userData.mBoundToMethod = true;
@@ -2275,9 +2292,10 @@
+ bindingController.getCurTokenDisplayId());
}
final int userId = bindingController.getUserId();
+ final var userData = getUserData(userId);
inputMethod.initializeInternal(token,
- new InputMethodPrivilegedOperationsImpl(this, token, userId),
- getInputMethodNavButtonFlagsLocked(getUserData(userId)));
+ new InputMethodPrivilegedOperationsImpl(this, token, userData),
+ getInputMethodNavButtonFlagsLocked(userData));
}
@AnyThread
@@ -2317,8 +2335,8 @@
channel.dispose();
return;
}
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod != null && method != null
&& curMethod.asBinder() == method.asBinder()) {
@@ -2531,9 +2549,10 @@
@BinderThread
private void updateStatusIcon(@NonNull IBinder token, String packageName,
- @DrawableRes int iconId, @UserIdInt int userId) {
+ @DrawableRes int iconId, @NonNull UserData userData) {
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
final long ident = Binder.clearCallingIdentity();
@@ -2576,8 +2595,7 @@
@GuardedBy("ImfLock.class")
@InputMethodNavButtonFlags
- private int getInputMethodNavButtonFlagsLocked(
- @NonNull UserDataRepository.UserData userData) {
+ private int getInputMethodNavButtonFlagsLocked(@NonNull UserData userData) {
final int userId = userData.mUserId;
final var bindingController = userData.mBindingController;
// Whether the current display has a navigation bar. When this is false (e.g. emulator),
@@ -2599,7 +2617,12 @@
if (!mShowOngoingImeSwitcherForPhones) return false;
// When the IME switcher dialog is shown, the IME switcher button should be hidden.
// TODO(b/305849394): Make mMenuController multi-user aware.
- if (mMenuController.getSwitchingDialogLocked() != null) return false;
+ final boolean switcherMenuShowing = Flags.imeSwitcherRevamp()
+ ? mMenuControllerNew.isShowing()
+ : mMenuController.getSwitchingDialogLocked() != null;
+ if (switcherMenuShowing) {
+ return false;
+ }
// When we are switching IMEs, the IME switcher button should be hidden.
final var bindingController = getInputMethodBindingController(userId);
if (!Objects.equals(bindingController.getCurId(),
@@ -2614,7 +2637,7 @@
|| (visibility & InputMethodService.IME_INVISIBLE) != 0) {
return false;
}
- if (mWindowManagerInternal.isHardKeyboardAvailable()) {
+ if (mWindowManagerInternal.isHardKeyboardAvailable() && !Flags.imeSwitcherRevamp()) {
// When physical keyboard is attached, we show the ime switcher (or notification if
// NavBar is not available) because SHOW_IME_WITH_HARD_KEYBOARD settings currently
// exists in the IME switcher dialog. Might be OK to remove this condition once
@@ -2625,6 +2648,27 @@
}
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
+ if (Flags.imeSwitcherRevamp()) {
+ // The IME switcher button should be shown when the current IME specified a
+ // language settings activity.
+ final var curImi = settings.getMethodMap().get(settings.getSelectedInputMethod());
+ if (curImi != null && curImi.createImeLanguageSettingsActivityIntent() != null) {
+ return true;
+ }
+ }
+
+ return hasMultipleSubtypesForSwitcher(false /* nonAuxOnly */, settings);
+ }
+
+ /**
+ * Checks whether there at least two subtypes that should be shown for the IME switcher menu,
+ * across all enabled IMEs for the given user.
+ *
+ * @param nonAuxOnly whether to check only for non auxiliary subtypes.
+ * @param settings the input method settings under the given user ID.
+ */
+ private static boolean hasMultipleSubtypesForSwitcher(boolean nonAuxOnly,
+ @NonNull InputMethodSettings settings) {
List<InputMethodInfo> imes = settings.getEnabledInputMethodListWithFilter(
InputMethodInfo::shouldShowInInputMethodPicker);
final int numImes = imes.size();
@@ -2654,7 +2698,9 @@
}
}
}
- if (nonAuxCount > 1 || auxCount > 1) {
+ if (Flags.imeSwitcherRevamp() && nonAuxOnly) {
+ return nonAuxCount > 1;
+ } else if (nonAuxCount > 1 || auxCount > 1) {
return true;
} else if (nonAuxCount == 1 && auxCount == 1) {
if (nonAuxSubtype != null && auxSubtype != null
@@ -2672,14 +2718,15 @@
@BinderThread
@SuppressWarnings("deprecation")
private void setImeWindowStatus(@NonNull IBinder token, int vis, int backDisposition,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
final int topFocusedDisplayId = mWindowManagerInternal.getTopFocusedDisplayId();
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
// Skip update IME status when current token display is not same as focused display.
// Note that we still need to update IME status when focusing external display
// that does not support system decoration and fallback to show IME on default
@@ -2711,9 +2758,9 @@
@BinderThread
private void reportStartInput(@NonNull IBinder token, IBinder startInputToken,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
final IBinder targetWindow = mImeTargetWindowMap.get(startInputToken);
@@ -2747,8 +2794,8 @@
@GuardedBy("ImfLock.class")
private void updateSystemUiLocked(int vis, int backDisposition, @UserIdInt int userId) {
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
final var curToken = bindingController.getCurToken();
if (curToken == null) {
return;
@@ -2779,7 +2826,10 @@
}
final var curId = bindingController.getCurId();
// TODO(b/305849394): Make mMenuController multi-user aware.
- if (mMenuController.getSwitchingDialogLocked() != null
+ final boolean switcherMenuShowing = Flags.imeSwitcherRevamp()
+ ? mMenuControllerNew.isShowing()
+ : mMenuController.getSwitchingDialogLocked() != null;
+ if (switcherMenuShowing
|| !Objects.equals(curId, bindingController.getSelectedMethodId())) {
// When the IME switcher dialog is shown, or we are switching IMEs,
// the back button should be in the default state (as if the IME is not shown).
@@ -2798,7 +2848,9 @@
@GuardedBy("ImfLock.class")
void updateFromSettingsLocked(boolean enabledMayChange, @UserIdInt int userId) {
updateInputMethodsFromSettingsLocked(enabledMayChange, userId);
- mMenuController.updateKeyboardFromSettingsLocked();
+ if (!Flags.imeSwitcherRevamp()) {
+ mMenuController.updateKeyboardFromSettingsLocked();
+ }
}
/**
@@ -2846,11 +2898,11 @@
settings.putSelectedInputMethod(id);
}
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
bindingController.setSelectedMethodId(id);
// Also re-initialize controllers.
- final var userData = getUserData(userId);
userData.mSwitchingController.resetCircularListLocked(mContext, settings);
userData.mHardwareKeyboardShortcutController.update(settings);
}
@@ -2887,7 +2939,8 @@
}
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
if (bindingController.getDeviceIdToShowIme() == DEVICE_ID_DEFAULT) {
String ime = SecureSettingsWrapper.getString(
Settings.Secure.DEFAULT_INPUT_METHOD, null, userId);
@@ -2927,7 +2980,6 @@
resetCurrentMethodAndClientLocked(UnbindReason.NO_IME, userId);
}
- final var userData = getUserData(userId);
userData.mSwitchingController.resetCircularListLocked(mContext, settings);
userData.mHardwareKeyboardShortcutController.update(settings);
sendOnNavButtonFlagsChangedLocked(userData);
@@ -3409,8 +3461,8 @@
mVisibilityStateComputer.requestImeVisibility(windowToken, true);
// Ensure binding the connection when IME is going to show.
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
bindingController.setCurrentMethodVisible();
final IInputMethodInvoker curMethod = bindingController.getCurMethod();
ImeTracker.forLogging().onCancelled(userData.mCurStatsToken,
@@ -3543,7 +3595,8 @@
boolean hideCurrentInputLocked(IBinder windowToken, @NonNull ImeTracker.Token statsToken,
@InputMethodManager.HideFlags int flags, @Nullable ResultReceiver resultReceiver,
@SoftInputShowHideReason int reason, @UserIdInt int userId) {
- final var bindingController = getInputMethodBindingController(userId);
+ final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
if (!mVisibilityStateComputer.canHideIme(statsToken, flags)) {
return false;
}
@@ -3556,7 +3609,6 @@
// since Android Eclair. That's why we need to accept IMM#hideSoftInput() even when only
// IMMS#InputShown indicates that the software keyboard is shown.
// TODO(b/246309664): Clean up IMMS#mImeWindowVis
- final var userData = getUserData(userId);
IInputMethodInvoker curMethod = bindingController.getCurMethod();
final boolean shouldHideSoftInput = curMethod != null
&& (isInputShownLocked()
@@ -3636,6 +3688,7 @@
Slog.w(TAG, "User #" + userId + " is not running.");
return InputBindResult.INVALID_USER;
}
+ final var userData = getUserData(userId);
try {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER,
"IMMS.startInputOrWindowGainedFocus");
@@ -3643,7 +3696,7 @@
"InputMethodManagerService#startInputOrWindowGainedFocus", mDumper);
final InputBindResult result;
synchronized (ImfLock.class) {
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
// If the system is not yet ready, we shouldn't be running third party code.
if (!mSystemReady) {
return new InputBindResult(
@@ -3708,7 +3761,6 @@
final boolean shouldClearFlag =
mImePlatformCompatUtils.shouldClearShowForcedFlag(cs.mUid);
final boolean showForced = mVisibilityStateComputer.mShowForced;
- final var userData = getUserData(userId);
if (userData.mImeBindingState.mFocusedWindow != windowToken
&& showForced && shouldClearFlag) {
mVisibilityStateComputer.mShowForced = false;
@@ -3964,31 +4016,116 @@
@IInputMethodManagerImpl.PermissionVerified(Manifest.permission.TEST_INPUT_METHOD)
public boolean isInputMethodPickerShownForTest() {
synchronized (ImfLock.class) {
- return mMenuController.isisInputMethodPickerShownForTestLocked();
+ return Flags.imeSwitcherRevamp()
+ ? mMenuControllerNew.isShowing()
+ : mMenuController.isisInputMethodPickerShownForTestLocked();
}
}
+ /**
+ * Gets the list of Input Method Switcher Menu items and the index of the selected item.
+ *
+ * @param items the list of input method and subtype items.
+ * @param selectedImeId the ID of the selected input method.
+ * @param selectedSubtypeId the ID of the selected input method subtype,
+ * or {@link #NOT_A_SUBTYPE_ID} if no subtype is selected.
+ * @param userId the ID of the user for which to get the menu items.
+ * @return the list of menu items, and the index of the selected item,
+ * or {@code -1} if no item is selected.
+ */
+ @GuardedBy("ImfLock.class")
+ @NonNull
+ private Pair<List<MenuItem>, Integer> getInputMethodPickerItems(
+ @NonNull List<ImeSubtypeListItem> items, @Nullable String selectedImeId,
+ int selectedSubtypeId, @UserIdInt int userId) {
+ final var bindingController = getInputMethodBindingController(userId);
+ final var settings = InputMethodSettingsRepository.get(userId);
+
+ if (selectedSubtypeId == NOT_A_SUBTYPE_ID) {
+ // TODO(b/351124299): Check if this fallback logic is still necessary.
+ final var curSubtype = bindingController.getCurrentInputMethodSubtype();
+ if (curSubtype != null) {
+ final var curMethodId = bindingController.getSelectedMethodId();
+ final var curImi = settings.getMethodMap().get(curMethodId);
+ selectedSubtypeId = SubtypeUtils.getSubtypeIdFromHashCode(
+ curImi, curSubtype.hashCode());
+ }
+ }
+
+ // No item is selected by default. When we have a list of explicitly enabled
+ // subtypes, the implicit subtype is no longer listed. If the implicit one
+ // is still selected, no items will be shown as selected.
+ int selectedIndex = -1;
+ String prevImeId = null;
+ final var menuItems = new ArrayList<MenuItem>();
+ for (int i = 0; i < items.size(); i++) {
+ final var item = items.get(i);
+ final var imeId = item.mImi.getId();
+ if (imeId.equals(selectedImeId)) {
+ final int subtypeId = item.mSubtypeId;
+ // Check if this is the selected IME-subtype pair.
+ if ((subtypeId == 0 && selectedSubtypeId == NOT_A_SUBTYPE_ID)
+ || subtypeId == NOT_A_SUBTYPE_ID
+ || subtypeId == selectedSubtypeId) {
+ selectedIndex = i;
+ }
+ }
+ final boolean hasHeader = !imeId.equals(prevImeId);
+ final boolean hasDivider = hasHeader && prevImeId != null;
+ prevImeId = imeId;
+ menuItems.add(new MenuItem(item.mImeName, item.mSubtypeName, item.mImi, item.mSubtypeId,
+ hasHeader, hasDivider));
+ }
+
+ return new Pair<>(menuItems, selectedIndex);
+ }
+
@BinderThread
private void onImeSwitchButtonClickFromClient(@NonNull IBinder token, int displayId,
- @UserIdInt int userId) {
- userId = mActivityManagerInternal.handleIncomingUser(
- Binder.getCallingPid(), Binder.getCallingUid(), userId, false,
- ActivityManagerInternal.ALLOW_FULL_ONLY, "onImeSwitchButtonClickFromClient", null);
-
+ @NonNull UserData userData) {
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
- showInputMethodPickerFromSystem(
- InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES, displayId);
+ onImeSwitchButtonClickLocked(token, displayId, userData);
}
}
@IInputMethodManagerImpl.PermissionVerified(Manifest.permission.WRITE_SECURE_SETTINGS)
@Override
public void onImeSwitchButtonClickFromSystem(int displayId) {
- showInputMethodPickerFromSystem(
- InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES, displayId);
+ synchronized (ImfLock.class) {
+ final int userId = mCurrentUserId;
+ final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
+ final var curToken = bindingController.getCurToken();
+ if (curToken == null) {
+ return;
+ }
+
+ onImeSwitchButtonClickLocked(curToken, displayId, userData);
+ }
+ }
+
+ /**
+ * Handles a click on the IME switch button. Depending on the number of enabled IME subtypes,
+ * this will either switch to the next IME/subtype, or show the input method picker dialog.
+ *
+ * @param token The token identifying the input method that triggered this.
+ * @param displayId The ID of the display where the input method picker dialog should be shown.
+ * @param userData The data of the user for which to switch IMEs or show the picker dialog.
+ */
+ @GuardedBy("ImfLock.class")
+ private void onImeSwitchButtonClickLocked(@NonNull IBinder token, int displayId,
+ @NonNull UserData userData) {
+ final int userId = userData.mUserId;
+ final var settings = InputMethodSettingsRepository.get(userId);
+ if (hasMultipleSubtypesForSwitcher(true /* nonAuxOnly */, settings)) {
+ switchToNextInputMethodLocked(token, false /* onlyCurrentIme */, userData);
+ } else {
+ showInputMethodPickerFromSystem(
+ InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES, displayId);
+ }
}
@NonNull
@@ -3998,10 +4135,11 @@
}
@BinderThread
- private void setInputMethod(@NonNull IBinder token, String id, @UserIdInt int userId) {
+ private void setInputMethod(@NonNull IBinder token, String id, @NonNull UserData userData) {
final int callingUid = Binder.getCallingUid();
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
@@ -4016,10 +4154,11 @@
@BinderThread
private void setInputMethodAndSubtype(@NonNull IBinder token, String id,
- InputMethodSubtype subtype, @UserIdInt int userId) {
+ InputMethodSubtype subtype, @NonNull UserData userData) {
final int callingUid = Binder.getCallingUid();
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
@@ -4032,18 +4171,20 @@
setInputMethodWithSubtypeIdLocked(token, id,
SubtypeUtils.getSubtypeIdFromHashCode(imi, subtype.hashCode()), userId);
} else {
- setInputMethod(token, id, userId);
+ setInputMethod(token, id, userData);
}
}
}
@BinderThread
- private boolean switchToPreviousInputMethod(@NonNull IBinder token, @UserIdInt int userId) {
+ private boolean switchToPreviousInputMethod(@NonNull IBinder token,
+ @NonNull UserData userData) {
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return false;
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
final Pair<String, String> lastIme = settings.getLastInputMethodAndSubtype();
final InputMethodInfo lastImi;
@@ -4120,21 +4261,21 @@
@BinderThread
private boolean switchToNextInputMethod(@NonNull IBinder token, boolean onlyCurrentIme,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return false;
}
- return switchToNextInputMethodLocked(token, onlyCurrentIme, userId);
+ return switchToNextInputMethodLocked(token, onlyCurrentIme, userData);
}
}
@GuardedBy("ImfLock.class")
private boolean switchToNextInputMethodLocked(@Nullable IBinder token, boolean onlyCurrentIme,
- @UserIdInt int userId) {
- final var bindingController = getInputMethodBindingController(userId);
+ @NonNull UserData userData) {
+ final var bindingController = userData.mBindingController;
final var currentImi = bindingController.getSelectedMethod();
- final ImeSubtypeListItem nextSubtype = getUserData(userId).mSwitchingController
+ final ImeSubtypeListItem nextSubtype = userData.mSwitchingController
.getNextInputMethodLocked(onlyCurrentIme, currentImi,
bindingController.getCurrentSubtype(),
MODE_AUTO, true /* forward */);
@@ -4142,20 +4283,20 @@
return false;
}
setInputMethodWithSubtypeIdLocked(token, nextSubtype.mImi.getId(),
- nextSubtype.mSubtypeId, userId);
+ nextSubtype.mSubtypeId, userData.mUserId);
return true;
}
@BinderThread
private boolean shouldOfferSwitchingToNextInputMethod(@NonNull IBinder token,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return false;
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
final var currentImi = bindingController.getSelectedMethod();
- final ImeSubtypeListItem nextSubtype = getUserData(userId).mSwitchingController
+ final ImeSubtypeListItem nextSubtype = userData.mSwitchingController
.getNextInputMethodLocked(false /* onlyCurrentIme */, currentImi,
bindingController.getCurrentSubtype(),
MODE_AUTO, true /* forward */);
@@ -4556,8 +4697,8 @@
private void dumpDebug(ProtoOutputStream proto, long fieldId) {
synchronized (ImfLock.class) {
final int userId = mCurrentUserId;
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
final long token = proto.start(fieldId);
proto.write(CUR_METHOD_ID, bindingController.getSelectedMethodId());
proto.write(CUR_SEQ, bindingController.getSequenceNumber());
@@ -4581,19 +4722,22 @@
proto.write(IS_INTERACTIVE, mIsInteractive);
proto.write(BACK_DISPOSITION, bindingController.getBackDisposition());
proto.write(IME_WINDOW_VISIBILITY, bindingController.getImeWindowVis());
- proto.write(SHOW_IME_WITH_HARD_KEYBOARD, mMenuController.getShowImeWithHardKeyboard());
+ if (!Flags.imeSwitcherRevamp()) {
+ proto.write(SHOW_IME_WITH_HARD_KEYBOARD,
+ mMenuController.getShowImeWithHardKeyboard());
+ }
proto.write(CONCURRENT_MULTI_USER_MODE_ENABLED, mConcurrentMultiUserModeEnabled);
proto.end(token);
}
}
@BinderThread
- private void notifyUserAction(@NonNull IBinder token, @UserIdInt int userId) {
+ private void notifyUserAction(@NonNull IBinder token, @NonNull UserData userData) {
if (DEBUG) {
Slog.d(TAG, "Got the notification of a user action.");
}
synchronized (ImfLock.class) {
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
if (bindingController.getCurToken() != token) {
if (DEBUG) {
Slog.d(TAG, "Ignoring the user action notification from IMEs that are no longer"
@@ -4603,7 +4747,7 @@
}
final InputMethodInfo imi = bindingController.getSelectedMethod();
if (imi != null) {
- getUserData(userId).mSwitchingController.onUserActionLocked(imi,
+ userData.mSwitchingController.onUserActionLocked(imi,
bindingController.getCurrentSubtype());
}
}
@@ -4611,11 +4755,12 @@
@BinderThread
private void applyImeVisibility(IBinder token, IBinder windowToken, boolean setVisible,
- @NonNull ImeTracker.Token statsToken, @UserIdInt int userId) {
+ @NonNull ImeTracker.Token statsToken, @NonNull UserData userData) {
try {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.applyImeVisibility");
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
ImeTracker.forLogging().onFailed(statsToken,
ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
return;
@@ -4690,8 +4835,8 @@
@UserIdInt int userId) {
final IBinder requestToken = mVisibilityStateComputer.getWindowTokenFrom(requestImeToken,
userId);
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
final WindowManagerInternal.ImeTargetInfo info =
mWindowManagerInternal.onToggleImeRequested(
show, userData.mImeBindingState.mFocusedWindow, requestToken,
@@ -4711,16 +4856,16 @@
@BinderThread
private void hideMySoftInput(@NonNull IBinder token, @NonNull ImeTracker.Token statsToken,
@InputMethodManager.HideFlags int flags, @SoftInputShowHideReason int reason,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
try {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.hideMySoftInput");
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
ImeTracker.forLogging().onFailed(statsToken,
ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
return;
}
- final var userData = getUserData(userId);
ImeTracker.forLogging().onProgress(statsToken,
ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
final long ident = Binder.clearCallingIdentity();
@@ -4750,16 +4895,16 @@
@BinderThread
private void showMySoftInput(@NonNull IBinder token, @NonNull ImeTracker.Token statsToken,
@InputMethodManager.ShowFlags int flags, @SoftInputShowHideReason int reason,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
try {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.showMySoftInput");
+ final int userId = userData.mUserId;
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
ImeTracker.forLogging().onFailed(statsToken,
ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
return;
}
- final var userData = getUserData(userId);
ImeTracker.forLogging().onProgress(statsToken,
ImeTracker.PHASE_SERVER_CURRENT_ACTIVE_IME);
final long ident = Binder.clearCallingIdentity();
@@ -4804,8 +4949,7 @@
}
@GuardedBy("ImfLock.class")
- void setEnabledSessionLocked(SessionState session,
- @NonNull UserDataRepository.UserData userData) {
+ void setEnabledSessionLocked(SessionState session, @NonNull UserData userData) {
if (userData.mEnabledSession != session) {
if (userData.mEnabledSession != null && userData.mEnabledSession.mSession != null) {
if (DEBUG) Slog.v(TAG, "Disabling: " + userData.mEnabledSession);
@@ -4824,7 +4968,7 @@
@GuardedBy("ImfLock.class")
void setEnabledSessionForAccessibilityLocked(
SparseArray<AccessibilitySessionState> accessibilitySessions,
- @NonNull UserDataRepository.UserData userData) {
+ @NonNull UserData userData) {
// mEnabledAccessibilitySessions could the same object as accessibilitySessions.
SparseArray<IAccessibilityInputMethodSession> disabledSessions = new SparseArray<>();
for (int i = 0; i < userData.mEnabledAccessibilitySessions.size(); i++) {
@@ -4887,8 +5031,9 @@
synchronized (ImfLock.class) {
final InputMethodSettings settings =
InputMethodSettingsRepository.get(mCurrentUserId);
+ final int userId = settings.getUserId();
final boolean isScreenLocked = mWindowManagerInternal.isKeyguardLocked()
- && mWindowManagerInternal.isKeyguardSecure(settings.getUserId());
+ && mWindowManagerInternal.isKeyguardSecure(userId);
final String lastInputMethodId = settings.getSelectedInputMethod();
int lastInputMethodSubtypeId =
settings.getSelectedInputMethodSubtypeId(lastInputMethodId);
@@ -4901,12 +5046,35 @@
Slog.w(TAG, "Show switching menu failed, imList is empty,"
+ " showAuxSubtypes: " + showAuxSubtypes
+ " isScreenLocked: " + isScreenLocked
- + " userId: " + settings.getUserId());
+ + " userId: " + userId);
return false;
}
- mMenuController.showInputMethodMenuLocked(showAuxSubtypes, displayId,
- lastInputMethodId, lastInputMethodSubtypeId, imList);
+ if (Flags.imeSwitcherRevamp()) {
+ if (DEBUG) {
+ Slog.v(TAG, "Show IME switcher menu,"
+ + " showAuxSubtypes=" + showAuxSubtypes
+ + " displayId=" + displayId
+ + " preferredInputMethodId=" + lastInputMethodId
+ + " preferredInputMethodSubtypeId=" + lastInputMethodSubtypeId);
+ }
+
+ final var itemsAndIndex = getInputMethodPickerItems(imList,
+ lastInputMethodId, lastInputMethodSubtypeId, userId);
+ final var menuItems = itemsAndIndex.first;
+ final int selectedIndex = itemsAndIndex.second;
+
+ if (selectedIndex == -1) {
+ Slog.w(TAG, "Switching menu shown with no item selected"
+ + ", IME id: " + lastInputMethodId
+ + ", subtype index: " + lastInputMethodSubtypeId);
+ }
+
+ mMenuControllerNew.show(menuItems, selectedIndex, displayId, userId);
+ } else {
+ mMenuController.showInputMethodMenuLocked(showAuxSubtypes, displayId,
+ lastInputMethodId, lastInputMethodSubtypeId, imList);
+ }
}
return true;
@@ -4977,7 +5145,9 @@
// --------------------------------------------------------------
case MSG_HARD_KEYBOARD_SWITCH_CHANGED:
- mMenuController.handleHardKeyboardStatusChange(msg.arg1 == 1);
+ if (!Flags.imeSwitcherRevamp()) {
+ mMenuController.handleHardKeyboardStatusChange(msg.arg1 == 1);
+ }
synchronized (ImfLock.class) {
sendOnNavButtonFlagsChangedToAllImesLocked();
}
@@ -5033,9 +5203,8 @@
case MSG_START_HANDWRITING:
final var handwritingRequest = (HandwritingRequest) msg.obj;
synchronized (ImfLock.class) {
- final int userId = handwritingRequest.userId;
- final var bindingController = getInputMethodBindingController(userId);
- final var userData = getUserData(userId);
+ final var userData = handwritingRequest.userData;
+ final var bindingController = userData.mBindingController;
IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod == null || userData.mImeBindingState.mFocusedWindow == null) {
return true;
@@ -5080,24 +5249,24 @@
return false;
}
- private record HandwritingRequest(int requestId, int pid, @UserIdInt int userId) { }
+ private record HandwritingRequest(int requestId, int pid, @NonNull UserData userData) { }
@BinderThread
- private void onStylusHandwritingReady(int requestId, int pid, @UserIdInt int userId) {
+ private void onStylusHandwritingReady(int requestId, int pid, @NonNull UserData userData) {
mHandler.obtainMessage(MSG_START_HANDWRITING,
- new HandwritingRequest(requestId, pid, userId)).sendToTarget();
+ new HandwritingRequest(requestId, pid, userData)).sendToTarget();
}
private void handleSetInteractive(final boolean interactive) {
synchronized (ImfLock.class) {
// TODO(b/305849394): Support multiple IMEs.
final int userId = mCurrentUserId;
- final var bindingController = getInputMethodBindingController(userId);
+ final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
mIsInteractive = interactive;
updateSystemUiLocked(
interactive ? bindingController.getImeWindowVis() : 0,
bindingController.getBackDisposition(), userId);
- final var userData = getUserData(userId);
// Inform the current client of the change in active status
if (userData.mCurClient == null || userData.mCurClient.mClient == null) {
return;
@@ -5329,7 +5498,7 @@
}
@GuardedBy("ImfLock.class")
- void sendOnNavButtonFlagsChangedLocked(@NonNull UserDataRepository.UserData userData) {
+ void sendOnNavButtonFlagsChangedLocked(@NonNull UserData userData) {
final var bindingController = userData.mBindingController;
final IInputMethodInvoker curMethod = bindingController.getCurMethod();
if (curMethod == null) {
@@ -5345,7 +5514,7 @@
final boolean value =
InputMethodDrawsNavBarResourceMonitor.evaluate(mContext, profileParentId);
final var profileUserIds = mUserManagerInternal.getProfileIds(profileParentId, false);
- final ArrayList<UserDataRepository.UserData> updatedUsers = new ArrayList<>();
+ final ArrayList<UserData> updatedUsers = new ArrayList<>();
for (int profileUserId : profileUserIds) {
final var userData = getUserData(profileUserId);
userData.mImeDrawsNavBar.set(value);
@@ -5548,7 +5717,8 @@
}
@GuardedBy("ImfLock.class")
- private boolean switchToInputMethodLocked(String imeId, @UserIdInt int userId) {
+ private boolean switchToInputMethodLocked(@NonNull String imeId, int subtypeId,
+ @UserIdInt int userId) {
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
if (mConcurrentMultiUserModeEnabled || userId == mCurrentUserId) {
if (!settings.getMethodMap().containsKey(imeId)
@@ -5556,7 +5726,7 @@
.contains(settings.getMethodMap().get(imeId))) {
return false; // IME is not found or not enabled.
}
- setInputMethodLocked(imeId, NOT_A_SUBTYPE_ID, userId);
+ setInputMethodLocked(imeId, subtypeId, userId);
return true;
}
if (!settings.getMethodMap().containsKey(imeId)
@@ -5565,6 +5735,7 @@
return false; // IME is not found or not enabled.
}
settings.putSelectedInputMethod(imeId);
+ // For non-current user, only reset subtypeId (instead of setting the given one).
settings.putSelectedSubtype(NOT_A_SUBTYPE_ID);
return true;
}
@@ -5598,10 +5769,11 @@
}
@GuardedBy("ImfLock.class")
- private void switchKeyboardLayoutLocked(int direction, @UserIdInt int userId) {
+ private void switchKeyboardLayoutLocked(int direction, @NonNull UserData userData) {
+ final int userId = userData.mUserId;
final InputMethodSettings settings = InputMethodSettingsRepository.get(userId);
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
final InputMethodInfo currentImi = settings.getMethodMap().get(
bindingController.getSelectedMethodId());
if (currentImi == null) {
@@ -5610,7 +5782,7 @@
final var currentSubtype = bindingController.getCurrentSubtype();
final InputMethodSubtypeHandle nextSubtypeHandle;
if (Flags.imeSwitcherRevamp()) {
- final var nextItem = getUserData(userId).mSwitchingController
+ final var nextItem = userData.mSwitchingController
.getNextInputMethodForHardware(
false /* onlyCurrentIme */, currentImi, currentSubtype, MODE_AUTO,
direction > 0 /* forward */);
@@ -5626,8 +5798,7 @@
} else {
final InputMethodSubtypeHandle currentSubtypeHandle =
InputMethodSubtypeHandle.of(currentImi, currentSubtype);
- nextSubtypeHandle =
- getUserData(userId).mHardwareKeyboardShortcutController.onSubtypeSwitch(
+ nextSubtypeHandle = userData.mHardwareKeyboardShortcutController.onSubtypeSwitch(
currentSubtypeHandle, direction > 0);
}
if (nextSubtypeHandle == null) {
@@ -5710,9 +5881,10 @@
}
@Override
- public boolean switchToInputMethod(String imeId, @UserIdInt int userId) {
+ public boolean switchToInputMethod(@NonNull String imeId, int subtypeId,
+ @UserIdInt int userId) {
synchronized (ImfLock.class) {
- return switchToInputMethodLocked(imeId, userId);
+ return switchToInputMethodLocked(imeId, subtypeId, userId);
}
}
@@ -5775,7 +5947,7 @@
if (displayId != bindingController.getCurTokenDisplayId()) {
return false;
}
- curHostInputToken = getInputMethodBindingController(userId).getCurHostInputToken();
+ curHostInputToken = bindingController.getCurHostInputToken();
if (curHostInputToken == null) {
return false;
}
@@ -5809,7 +5981,12 @@
// input target changed, in case seeing the dialog dismiss flickering during
// the next focused window starting the input connection.
if (mLastImeTargetWindow != userData.mImeBindingState.mFocusedWindow) {
- mMenuController.hideInputMethodMenuLocked();
+ if (Flags.imeSwitcherRevamp()) {
+ final var bindingController = getInputMethodBindingController(userId);
+ mMenuControllerNew.hide(bindingController.getCurTokenDisplayId(), userId);
+ } else {
+ mMenuController.hideInputMethodMenuLocked();
+ }
}
}
}
@@ -5828,11 +6005,20 @@
}
@Override
+ public void updateShouldShowImeSwitcher(int displayId, @UserIdInt int userId) {
+ synchronized (ImfLock.class) {
+ updateSystemUiLocked(userId);
+ final var userData = getUserData(userId);
+ sendOnNavButtonFlagsChangedLocked(userData);
+ }
+ }
+
+ @Override
public void onSessionForAccessibilityCreated(int accessibilityConnectionId,
IAccessibilityInputMethodSession session, @UserIdInt int userId) {
synchronized (ImfLock.class) {
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
// TODO(b/305829876): Implement user ID verification
if (userData.mCurClient != null) {
clearClientSessionForAccessibilityLocked(userData.mCurClient,
@@ -5869,8 +6055,8 @@
public void unbindAccessibilityFromCurrentClient(int accessibilityConnectionId,
@UserIdInt int userId) {
synchronized (ImfLock.class) {
- final var bindingController = getInputMethodBindingController(userId);
final var userData = getUserData(userId);
+ final var bindingController = userData.mBindingController;
// TODO(b/305829876): Implement user ID verification
if (userData.mCurClient != null) {
if (DEBUG) {
@@ -5914,14 +6100,14 @@
IBinder targetWindowToken) {
synchronized (ImfLock.class) {
// TODO(b/305849394): Infer userId from displayId
- switchKeyboardLayoutLocked(direction, mCurrentUserId);
+ switchKeyboardLayoutLocked(direction, getUserData(mCurrentUserId));
}
}
}
@BinderThread
private IInputContentUriToken createInputContentUriToken(@Nullable IBinder token,
- @Nullable Uri contentUri, @Nullable String packageName, @UserIdInt int imeUserId) {
+ @Nullable Uri contentUri, @Nullable String packageName, @NonNull UserData userData) {
if (token == null) {
throw new NullPointerException("token");
}
@@ -5938,7 +6124,7 @@
synchronized (ImfLock.class) {
final int uid = Binder.getCallingUid();
- final var bindingController = getInputMethodBindingController(imeUserId);
+ final var bindingController = userData.mBindingController;
if (bindingController.getSelectedMethodId() == null) {
return null;
}
@@ -5950,7 +6136,6 @@
// We cannot simply distinguish a bad IME that reports an arbitrary package name from
// an unfortunate IME whose internal state is already obsolete due to the asynchronous
// nature of our system. Let's compare it with our internal record.
- final var userData = getUserData(imeUserId);
final var curPackageName = userData.mCurEditorInfo != null
? userData.mCurEditorInfo.packageName : null;
if (!TextUtils.equals(curPackageName, packageName)) {
@@ -5962,7 +6147,7 @@
final int appUserId = UserHandle.getUserId(userData.mCurClient.mUid);
// This user ID may be invalid if "contentUri" embedded an invalid user ID.
final int contentUriOwnerUserId = ContentProvider.getUserIdFromUri(contentUri,
- imeUserId);
+ userData.mUserId);
final Uri contentUriWithoutUserId = ContentProvider.getUriWithoutUserId(contentUri);
// Note: InputContentUriTokenHandler.take() checks whether the IME (specified by "uid")
// actually has the right to grant a read permission for "contentUriWithoutUserId" that
@@ -5977,12 +6162,11 @@
@BinderThread
private void reportFullscreenMode(@NonNull IBinder token, boolean fullscreen,
- @UserIdInt int userId) {
+ @NonNull UserData userData) {
synchronized (ImfLock.class) {
- if (!calledWithValidTokenLocked(token, userId)) {
+ if (!calledWithValidTokenLocked(token, userData)) {
return;
}
- final var userData = getUserData(userId);
if (userData.mCurClient != null && userData.mCurClient.mClient != null) {
userData.mInFullscreenMode = fullscreen;
userData.mCurClient.mClient.reportFullscreenMode(fullscreen);
@@ -6109,8 +6293,8 @@
p.println(" pid=" + c.mPid);
};
mClientController.forAllClients(clientControllerDump);
- final var bindingController = getInputMethodBindingController(mCurrentUserId);
- p.println(" mCurrentUserId=" + mCurrentUserId);
+ final var bindingController = userData.mBindingController;
+ p.println(" mCurrentUserId=" + userData.mUserId);
p.println(" mCurMethodId=" + bindingController.getSelectedMethodId());
client = userData.mCurClient;
p.println(" mCurClient=" + client + " mCurSeq="
@@ -6125,7 +6309,7 @@
p.println(" mUserDataRepository=");
// TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
- @SuppressWarnings("GuardedBy") Consumer<UserDataRepository.UserData> userDataDump =
+ @SuppressWarnings("GuardedBy") Consumer<UserData> userDataDump =
u -> {
p.println(" mUserId=" + u.mUserId);
p.println(" hasMainConnection="
@@ -6151,6 +6335,10 @@
};
mUserDataRepository.forAllUserData(userDataDump);
+ if (Flags.imeSwitcherRevamp()) {
+ p.println(" menuControllerNew:");
+ mMenuControllerNew.dump(p, " ");
+ }
p.println(" mCurToken=" + bindingController.getCurToken());
p.println(" mCurTokenDisplayId=" + bindingController.getCurTokenDisplayId());
p.println(" mCurHostInputToken=" + bindingController.getCurHostInputToken());
@@ -6597,7 +6785,7 @@
continue;
}
boolean failedToSelectUnknownIme = !switchToInputMethodLocked(imeId,
- userId);
+ NOT_A_SUBTYPE_ID, userId);
if (failedToSelectUnknownIme) {
error.print("Unknown input method ");
error.print(imeId);
@@ -6662,7 +6850,7 @@
0 /* flags */,
SoftInputShowHideReason.HIDE_RESET_SHELL_COMMAND, userId);
}
- final var bindingController = getInputMethodBindingController(userId);
+ final var bindingController = userData.mBindingController;
bindingController.unbindCurrentMethod();
// Enable default IMEs, disable others
@@ -6810,26 +6998,26 @@
private final InputMethodManagerService mImms;
@NonNull
private final IBinder mToken;
- @UserIdInt
- private final int mUserId;
+ @NonNull
+ private final UserData mUserData;
InputMethodPrivilegedOperationsImpl(InputMethodManagerService imms,
- @NonNull IBinder token, @UserIdInt int userId) {
+ @NonNull IBinder token, @NonNull UserData userData) {
mImms = imms;
mToken = token;
- mUserId = userId;
+ mUserData = userData;
}
@BinderThread
@Override
public void setImeWindowStatusAsync(int vis, int backDisposition) {
- mImms.setImeWindowStatus(mToken, vis, backDisposition, mUserId);
+ mImms.setImeWindowStatus(mToken, vis, backDisposition, mUserData);
}
@BinderThread
@Override
public void reportStartInputAsync(IBinder startInputToken) {
- mImms.reportStartInput(mToken, startInputToken, mUserId);
+ mImms.reportStartInput(mToken, startInputToken, mUserData);
}
@BinderThread
@@ -6845,7 +7033,7 @@
@SuppressWarnings("unchecked") final AndroidFuture<IBinder> typedFuture = future;
try {
typedFuture.complete(mImms.createInputContentUriToken(
- mToken, contentUri, packageName, mUserId).asBinder());
+ mToken, contentUri, packageName, mUserData).asBinder());
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
}
@@ -6854,7 +7042,7 @@
@BinderThread
@Override
public void reportFullscreenModeAsync(boolean fullscreen) {
- mImms.reportFullscreenMode(mToken, fullscreen, mUserId);
+ mImms.reportFullscreenMode(mToken, fullscreen, mUserData);
}
@BinderThread
@@ -6862,7 +7050,7 @@
public void setInputMethod(String id, AndroidFuture future /* T=Void */) {
@SuppressWarnings("unchecked") final AndroidFuture<Void> typedFuture = future;
try {
- mImms.setInputMethod(mToken, id, mUserId);
+ mImms.setInputMethod(mToken, id, mUserData);
typedFuture.complete(null);
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
@@ -6875,7 +7063,7 @@
AndroidFuture future /* T=Void */) {
@SuppressWarnings("unchecked") final AndroidFuture<Void> typedFuture = future;
try {
- mImms.setInputMethodAndSubtype(mToken, id, subtype, mUserId);
+ mImms.setInputMethodAndSubtype(mToken, id, subtype, mUserData);
typedFuture.complete(null);
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
@@ -6889,7 +7077,7 @@
AndroidFuture future /* T=Void */) {
@SuppressWarnings("unchecked") final AndroidFuture<Void> typedFuture = future;
try {
- mImms.hideMySoftInput(mToken, statsToken, flags, reason, mUserId);
+ mImms.hideMySoftInput(mToken, statsToken, flags, reason, mUserData);
typedFuture.complete(null);
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
@@ -6903,7 +7091,7 @@
AndroidFuture future /* T=Void */) {
@SuppressWarnings("unchecked") final AndroidFuture<Void> typedFuture = future;
try {
- mImms.showMySoftInput(mToken, statsToken, flags, reason, mUserId);
+ mImms.showMySoftInput(mToken, statsToken, flags, reason, mUserData);
typedFuture.complete(null);
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
@@ -6913,7 +7101,7 @@
@BinderThread
@Override
public void updateStatusIconAsync(String packageName, @DrawableRes int iconId) {
- mImms.updateStatusIcon(mToken, packageName, iconId, mUserId);
+ mImms.updateStatusIcon(mToken, packageName, iconId, mUserData);
}
@BinderThread
@@ -6921,7 +7109,7 @@
public void switchToPreviousInputMethod(AndroidFuture future /* T=Boolean */) {
@SuppressWarnings("unchecked") final AndroidFuture<Boolean> typedFuture = future;
try {
- typedFuture.complete(mImms.switchToPreviousInputMethod(mToken, mUserId));
+ typedFuture.complete(mImms.switchToPreviousInputMethod(mToken, mUserData));
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
}
@@ -6934,7 +7122,7 @@
@SuppressWarnings("unchecked") final AndroidFuture<Boolean> typedFuture = future;
try {
typedFuture.complete(mImms.switchToNextInputMethod(mToken, onlyCurrentIme,
- mUserId));
+ mUserData));
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
}
@@ -6945,7 +7133,8 @@
public void shouldOfferSwitchingToNextInputMethod(AndroidFuture future /* T=Boolean */) {
@SuppressWarnings("unchecked") final AndroidFuture<Boolean> typedFuture = future;
try {
- typedFuture.complete(mImms.shouldOfferSwitchingToNextInputMethod(mToken, mUserId));
+ typedFuture.complete(mImms.shouldOfferSwitchingToNextInputMethod(mToken,
+ mUserData));
} catch (Throwable e) {
typedFuture.completeExceptionally(e);
}
@@ -6953,27 +7142,27 @@
@BinderThread
@Override
- public void onImeSwitchButtonClickFromClient(int displayId, @UserIdInt int userId) {
- mImms.onImeSwitchButtonClickFromClient(mToken, displayId, userId);
+ public void onImeSwitchButtonClickFromClient(int displayId) {
+ mImms.onImeSwitchButtonClickFromClient(mToken, displayId, mUserData);
}
@BinderThread
@Override
public void notifyUserActionAsync() {
- mImms.notifyUserAction(mToken, mUserId);
+ mImms.notifyUserAction(mToken, mUserData);
}
@BinderThread
@Override
public void applyImeVisibilityAsync(IBinder windowToken, boolean setVisible,
@NonNull ImeTracker.Token statsToken) {
- mImms.applyImeVisibility(mToken, windowToken, setVisible, statsToken, mUserId);
+ mImms.applyImeVisibility(mToken, windowToken, setVisible, statsToken, mUserData);
}
@BinderThread
@Override
public void onStylusHandwritingReady(int requestId, int pid) {
- mImms.onStylusHandwritingReady(requestId, pid, mUserId);
+ mImms.onStylusHandwritingReady(requestId, pid, mUserData);
}
@BinderThread
@@ -6986,12 +7175,12 @@
@Override
public void switchKeyboardLayoutAsync(int direction) {
synchronized (ImfLock.class) {
- if (!mImms.calledWithValidTokenLocked(mToken, mUserId)) {
+ if (!mImms.calledWithValidTokenLocked(mToken, mUserData)) {
return;
}
final long ident = Binder.clearCallingIdentity();
try {
- mImms.switchKeyboardLayoutLocked(direction, mUserId);
+ mImms.switchKeyboardLayoutLocked(direction, mUserData);
} finally {
Binder.restoreCallingIdentity(ident);
}
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java b/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java
new file mode 100644
index 0000000..cbb1807
--- /dev/null
+++ b/services/core/java/com/android/server/inputmethod/InputMethodMenuControllerNew.java
@@ -0,0 +1,350 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.inputmethod;
+
+
+import static com.android.server.inputmethod.InputMethodManagerService.DEBUG;
+import static com.android.server.inputmethod.InputMethodUtils.NOT_A_SUBTYPE_ID;
+
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.text.TextUtils;
+import android.util.Printer;
+import android.util.Slog;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodInfo;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.internal.widget.RecyclerView;
+
+import java.util.List;
+
+/**
+ * Controller for showing and hiding the Input Method Switcher Menu.
+ */
+final class InputMethodMenuControllerNew {
+
+ private static final String TAG = InputMethodMenuControllerNew.class.getSimpleName();
+
+ /**
+ * The horizontal offset from the menu to the edge of the screen corresponding
+ * to {@link Gravity#END}.
+ */
+ private static final int HORIZONTAL_OFFSET = 16;
+
+ /** The title of the window, used for debugging. */
+ private static final String WINDOW_TITLE = "IME Switcher Menu";
+
+ private final InputMethodDialogWindowContext mDialogWindowContext =
+ new InputMethodDialogWindowContext();
+
+ @Nullable
+ private AlertDialog mDialog;
+
+ @Nullable
+ private List<MenuItem> mMenuItems;
+
+ /**
+ * Shows the Input Method Switcher Menu, with a list of IMEs and their subtypes.
+ *
+ * @param items the list of menu items.
+ * @param selectedIndex the index of the menu item that is selected.
+ * If no other IMEs are enabled, this index will be out of reach.
+ * @param displayId the ID of the display where the menu was requested.
+ * @param userId the ID of the user that requested the menu.
+ */
+ void show(@NonNull List<MenuItem> items, int selectedIndex, int displayId,
+ @UserIdInt int userId) {
+ // Hide the menu in case it was already showing.
+ hide(displayId, userId);
+
+ final Context dialogWindowContext = mDialogWindowContext.get(displayId);
+ final var builder = new AlertDialog.Builder(dialogWindowContext,
+ com.android.internal.R.style.Theme_DeviceDefault_InputMethodSwitcherDialog);
+ final var inflater = LayoutInflater.from(builder.getContext());
+
+ // Create the content view.
+ final View contentView = inflater
+ .inflate(com.android.internal.R.layout.input_method_switch_dialog_new, null);
+ contentView.setAccessibilityPaneTitle(
+ dialogWindowContext.getText(com.android.internal.R.string.select_input_method));
+ builder.setView(contentView);
+
+ final DialogInterface.OnClickListener onClickListener = (dialog, which) -> {
+ if (which != selectedIndex) {
+ final var item = items.get(which);
+ InputMethodManagerInternal.get()
+ .switchToInputMethod(item.mImi.getId(), item.mSubtypeId, userId);
+ }
+ hide(displayId, userId);
+ };
+
+ final var selectedImi = selectedIndex >= 0 ? items.get(selectedIndex).mImi : null;
+ final var languageSettingsIntent = selectedImi != null
+ ? selectedImi.createImeLanguageSettingsActivityIntent() : null;
+ final boolean hasLanguageSettingsButton = languageSettingsIntent != null;
+ if (hasLanguageSettingsButton) {
+ final View buttonBar = contentView
+ .requireViewById(com.android.internal.R.id.button_bar);
+ buttonBar.setVisibility(View.VISIBLE);
+
+ languageSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ final Button languageSettingsButton = contentView
+ .requireViewById(com.android.internal.R.id.button1);
+ languageSettingsButton.setVisibility(View.VISIBLE);
+ languageSettingsButton.setOnClickListener(v -> {
+ v.getContext().startActivity(languageSettingsIntent);
+ hide(displayId, userId);
+ });
+ }
+
+ // Create the current IME subtypes list.
+ final RecyclerView recyclerView = contentView
+ .requireViewById(com.android.internal.R.id.list);
+ recyclerView.setAdapter(new Adapter(items, selectedIndex, inflater, onClickListener));
+ // Scroll to the currently selected IME.
+ recyclerView.scrollToPosition(selectedIndex);
+ // Indicate that the list can be scrolled.
+ recyclerView.setScrollIndicators(
+ hasLanguageSettingsButton ? View.SCROLL_INDICATOR_BOTTOM : 0);
+
+ builder.setOnCancelListener(dialog -> hide(displayId, userId));
+ mMenuItems = items;
+ mDialog = builder.create();
+ mDialog.setCanceledOnTouchOutside(true);
+ final Window w = mDialog.getWindow();
+ w.setHideOverlayWindows(true);
+ final WindowManager.LayoutParams attrs = w.getAttributes();
+ // Use an alternate token for the dialog for that window manager can group the token
+ // with other IME windows based on type vs. grouping based on whichever token happens
+ // to get selected by the system later on.
+ attrs.token = dialogWindowContext.getWindowContextToken();
+ attrs.gravity = Gravity.getAbsoluteGravity(Gravity.BOTTOM | Gravity.END,
+ dialogWindowContext.getResources().getConfiguration().getLayoutDirection());
+ attrs.x = HORIZONTAL_OFFSET;
+ attrs.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
+ attrs.type = WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
+ // Used for debugging only, not user visible.
+ attrs.setTitle(WINDOW_TITLE);
+ w.setAttributes(attrs);
+
+ mDialog.show();
+ InputMethodManagerInternal.get().updateShouldShowImeSwitcher(displayId, userId);
+ }
+
+ /**
+ * Hides the Input Method Switcher Menu.
+ *
+ * @param displayId the ID of the display from where the menu should be hidden.
+ * @param userId the ID of the user for which the menu should be hidden.
+ */
+ void hide(int displayId, @UserIdInt int userId) {
+ if (DEBUG) Slog.v(TAG, "Hide IME switcher menu.");
+
+ mMenuItems = null;
+ // Cannot use dialog.isShowing() here, as the cancel listener flow already resets mShowing.
+ if (mDialog != null) {
+ mDialog.dismiss();
+ mDialog = null;
+
+ InputMethodManagerInternal.get().updateShouldShowImeSwitcher(displayId, userId);
+ }
+ }
+
+ /**
+ * Returns whether the Input Method Switcher Menu is showing.
+ */
+ boolean isShowing() {
+ return mDialog != null && mDialog.isShowing();
+ }
+
+ void dump(@NonNull Printer pw, @NonNull String prefix) {
+ final boolean showing = isShowing();
+ pw.println(prefix + " isShowing: " + showing);
+
+ if (showing) {
+ pw.println(prefix + " menuItems: " + mMenuItems);
+ }
+ }
+
+ /**
+ * Item to be shown in the Input Method Switcher Menu, containing an input method and
+ * optionally an input method subtype.
+ */
+ static class MenuItem {
+
+ /** The name of the input method. */
+ @NonNull
+ private final CharSequence mImeName;
+
+ /**
+ * The name of the input method subtype, or {@code null} if this item doesn't have a
+ * subtype.
+ */
+ @Nullable
+ private final CharSequence mSubtypeName;
+
+ /** The info of the input method. */
+ @NonNull
+ private final InputMethodInfo mImi;
+
+ /**
+ * The index of the subtype in the input method's array of subtypes,
+ * or {@link InputMethodUtils#NOT_A_SUBTYPE_ID} if this item doesn't have a subtype.
+ */
+ @IntRange(from = NOT_A_SUBTYPE_ID)
+ private final int mSubtypeId;
+
+ /** Whether this item has a group header (only the first item of each input method). */
+ private final boolean mHasHeader;
+
+ /**
+ * Whether this item should has a group divider (same as {@link #mHasHeader},
+ * excluding the first IME).
+ */
+ private final boolean mHasDivider;
+
+ MenuItem(@NonNull CharSequence imeName, @Nullable CharSequence subtypeName,
+ @NonNull InputMethodInfo imi, @IntRange(from = NOT_A_SUBTYPE_ID) int subtypeId,
+ boolean hasHeader, boolean hasDivider) {
+ mImeName = imeName;
+ mSubtypeName = subtypeName;
+ mImi = imi;
+ mSubtypeId = subtypeId;
+ mHasHeader = hasHeader;
+ mHasDivider = hasDivider;
+ }
+
+ @Override
+ public String toString() {
+ return "MenuItem{"
+ + "mImeName=" + mImeName
+ + " mSubtypeName=" + mSubtypeName
+ + " mSubtypeId=" + mSubtypeId
+ + " mHasHeader=" + mHasHeader
+ + " mHasDivider=" + mHasDivider
+ + "}";
+ }
+ }
+
+ private static class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
+
+ /** The list of items to show. */
+ @NonNull
+ private final List<MenuItem> mItems;
+ /** The index of the selected item. */
+ private final int mSelectedIndex;
+ @NonNull
+ private final LayoutInflater mInflater;
+ @NonNull
+ private final DialogInterface.OnClickListener mOnClickListener;
+
+ Adapter(@NonNull List<MenuItem> items, int selectedIndex,
+ @NonNull LayoutInflater inflater,
+ @NonNull DialogInterface.OnClickListener onClickListener) {
+ mItems = items;
+ mSelectedIndex = selectedIndex;
+ mInflater = inflater;
+ mOnClickListener = onClickListener;
+ }
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ final View view = mInflater.inflate(
+ com.android.internal.R.layout.input_method_switch_item_new, parent, false);
+
+ return new ViewHolder(view, mOnClickListener);
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ holder.bind(mItems.get(position), position == mSelectedIndex /* isSelected */);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mItems.size();
+ }
+
+ private static class ViewHolder extends RecyclerView.ViewHolder {
+
+ /** The container of the item. */
+ @NonNull
+ private final View mContainer;
+ /** The name of the item. */
+ @NonNull
+ private final TextView mName;
+ /** Indicator for the selected status of the item. */
+ @NonNull
+ private final ImageView mCheckmark;
+ /** The group header optionally drawn above the item. */
+ @NonNull
+ private final TextView mHeader;
+ /** The group divider optionally drawn above the item. */
+ @NonNull
+ private final View mDivider;
+
+ private ViewHolder(@NonNull View itemView,
+ @NonNull DialogInterface.OnClickListener onClickListener) {
+ super(itemView);
+
+ mContainer = itemView.requireViewById(com.android.internal.R.id.list_item);
+ mName = itemView.requireViewById(com.android.internal.R.id.text);
+ mCheckmark = itemView.requireViewById(com.android.internal.R.id.image);
+ mHeader = itemView.requireViewById(com.android.internal.R.id.header_text);
+ mDivider = itemView.requireViewById(com.android.internal.R.id.divider);
+
+ mContainer.setOnClickListener((v) ->
+ onClickListener.onClick(null /* dialog */, getAdapterPosition()));
+ }
+
+ /**
+ * Binds the given item to the current view.
+ *
+ * @param item the item to bind.
+ * @param isSelected whether this is selected.
+ */
+ private void bind(@NonNull MenuItem item, boolean isSelected) {
+ // Use the IME name for subtypes with an empty subtype name.
+ final var name = TextUtils.isEmpty(item.mSubtypeName)
+ ? item.mImeName : item.mSubtypeName;
+ mContainer.setActivated(isSelected);
+ // Activated is the correct state, but we also set selected for accessibility info.
+ mContainer.setSelected(isSelected);
+ mName.setSelected(isSelected);
+ mName.setText(name);
+ mCheckmark.setVisibility(isSelected ? View.VISIBLE : View.GONE);
+ mHeader.setText(item.mImeName);
+ mHeader.setVisibility(item.mHasHeader ? View.VISIBLE : View.GONE);
+ mDivider.setVisibility(item.mHasDivider ? View.VISIBLE : View.GONE);
+ }
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/inputmethod/UserData.java b/services/core/java/com/android/server/inputmethod/UserData.java
new file mode 100644
index 0000000..ec5c9e6
--- /dev/null
+++ b/services/core/java/com/android/server/inputmethod/UserData.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.inputmethod;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.util.SparseArray;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.ImeTracker;
+import android.window.ImeOnBackInvokedDispatcher;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;
+import com.android.internal.inputmethod.IRemoteInputConnection;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/** Placeholder for all IMMS user specific fields */
+final class UserData {
+ @UserIdInt
+ final int mUserId;
+
+ @NonNull
+ final InputMethodBindingController mBindingController;
+
+ @NonNull
+ final InputMethodSubtypeSwitchingController mSwitchingController =
+ new InputMethodSubtypeSwitchingController();
+
+ @NonNull
+ final HardwareKeyboardShortcutController mHardwareKeyboardShortcutController =
+ new HardwareKeyboardShortcutController();
+
+ /**
+ * Have we called mCurMethod.bindInput()?
+ */
+ @GuardedBy("ImfLock.class")
+ boolean mBoundToMethod = false;
+
+ /**
+ * Have we called bindInput() for accessibility services?
+ */
+ @GuardedBy("ImfLock.class")
+ boolean mBoundToAccessibility;
+
+ @GuardedBy("ImfLock.class")
+ @NonNull
+ ImeBindingState mImeBindingState = ImeBindingState.newEmptyState();
+
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ ClientState mCurClient = null;
+
+ @GuardedBy("ImfLock.class")
+ boolean mInFullscreenMode;
+
+ /**
+ * The {@link IRemoteInputConnection} last provided by the current client.
+ */
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ IRemoteInputConnection mCurInputConnection;
+
+ /**
+ * The {@link ImeOnBackInvokedDispatcher} last provided by the current client to
+ * receive {@link android.window.OnBackInvokedCallback}s forwarded from IME.
+ */
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ ImeOnBackInvokedDispatcher mCurImeDispatcher;
+
+ /**
+ * The {@link IRemoteAccessibilityInputConnection} last provided by the current client.
+ */
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ IRemoteAccessibilityInputConnection mCurRemoteAccessibilityInputConnection;
+
+ /**
+ * The {@link EditorInfo} last provided by the current client.
+ */
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ EditorInfo mCurEditorInfo;
+
+ /**
+ * The token tracking the current IME show request that is waiting for a connection to an
+ * IME, otherwise {@code null}.
+ */
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ ImeTracker.Token mCurStatsToken;
+
+ /**
+ * Currently enabled session.
+ */
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ InputMethodManagerService.SessionState mEnabledSession;
+
+ @GuardedBy("ImfLock.class")
+ @Nullable
+ SparseArray<InputMethodManagerService.AccessibilitySessionState>
+ mEnabledAccessibilitySessions = new SparseArray<>();
+
+ /**
+ * A per-user cache of {@link InputMethodSettings#getEnabledInputMethodsStr()}.
+ */
+ @GuardedBy("ImfLock.class")
+ @NonNull
+ String mLastEnabledInputMethodsStr = "";
+
+ /**
+ * {@code true} when the IME is responsible for drawing the navigation bar and its buttons.
+ */
+ @NonNull
+ final AtomicBoolean mImeDrawsNavBar = new AtomicBoolean();
+
+ /**
+ * Intended to be instantiated only from this file.
+ */
+ UserData(@UserIdInt int userId,
+ @NonNull InputMethodBindingController bindingController) {
+ mUserId = userId;
+ mBindingController = bindingController;
+ }
+
+ @Override
+ public String toString() {
+ return "UserData{" + "mUserId=" + mUserId + '}';
+ }
+}
diff --git a/services/core/java/com/android/server/inputmethod/UserDataRepository.java b/services/core/java/com/android/server/inputmethod/UserDataRepository.java
index 7c68d54..6f831cc 100644
--- a/services/core/java/com/android/server/inputmethod/UserDataRepository.java
+++ b/services/core/java/com/android/server/inputmethod/UserDataRepository.java
@@ -18,18 +18,11 @@
import android.annotation.AnyThread;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.util.SparseArray;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.ImeTracker;
-import android.window.ImeOnBackInvokedDispatcher;
import com.android.internal.annotations.GuardedBy;
-import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;
-import com.android.internal.inputmethod.IRemoteInputConnection;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.Consumer;
import java.util.function.IntFunction;
@@ -87,120 +80,4 @@
mUserDataLock.writeLock().unlock();
}
}
-
- /** Placeholder for all IMMS user specific fields */
- static final class UserData {
- @UserIdInt
- final int mUserId;
-
- @NonNull
- final InputMethodBindingController mBindingController;
-
- @NonNull
- final InputMethodSubtypeSwitchingController mSwitchingController;
-
- @NonNull
- final HardwareKeyboardShortcutController mHardwareKeyboardShortcutController;
-
- /**
- * Have we called mCurMethod.bindInput()?
- */
- @GuardedBy("ImfLock.class")
- boolean mBoundToMethod = false;
-
- /**
- * Have we called bindInput() for accessibility services?
- */
- @GuardedBy("ImfLock.class")
- boolean mBoundToAccessibility;
-
- @GuardedBy("ImfLock.class")
- @NonNull
- ImeBindingState mImeBindingState = ImeBindingState.newEmptyState();
-
- @GuardedBy("ImfLock.class")
- @Nullable
- ClientState mCurClient = null;
-
- @GuardedBy("ImfLock.class")
- boolean mInFullscreenMode;
-
- /**
- * The {@link IRemoteInputConnection} last provided by the current client.
- */
- @GuardedBy("ImfLock.class")
- @Nullable
- IRemoteInputConnection mCurInputConnection;
-
- /**
- * The {@link ImeOnBackInvokedDispatcher} last provided by the current client to
- * receive {@link android.window.OnBackInvokedCallback}s forwarded from IME.
- */
- @GuardedBy("ImfLock.class")
- @Nullable
- ImeOnBackInvokedDispatcher mCurImeDispatcher;
-
- /**
- * The {@link IRemoteAccessibilityInputConnection} last provided by the current client.
- */
- @GuardedBy("ImfLock.class")
- @Nullable
- IRemoteAccessibilityInputConnection mCurRemoteAccessibilityInputConnection;
-
- /**
- * The {@link EditorInfo} last provided by the current client.
- */
- @GuardedBy("ImfLock.class")
- @Nullable
- EditorInfo mCurEditorInfo;
-
- /**
- * The token tracking the current IME show request that is waiting for a connection to an
- * IME, otherwise {@code null}.
- */
- @GuardedBy("ImfLock.class")
- @Nullable
- ImeTracker.Token mCurStatsToken;
-
- /**
- * Currently enabled session.
- */
- @GuardedBy("ImfLock.class")
- @Nullable
- InputMethodManagerService.SessionState mEnabledSession;
-
- @GuardedBy("ImfLock.class")
- @Nullable
- SparseArray<InputMethodManagerService.AccessibilitySessionState>
- mEnabledAccessibilitySessions = new SparseArray<>();
-
- /**
- * A per-user cache of {@link InputMethodSettings#getEnabledInputMethodsStr()}.
- */
- @GuardedBy("ImfLock.class")
- @NonNull
- String mLastEnabledInputMethodsStr = "";
-
- /**
- * {@code true} when the IME is responsible for drawing the navigation bar and its buttons.
- */
- @NonNull
- final AtomicBoolean mImeDrawsNavBar = new AtomicBoolean();
-
- /**
- * Intended to be instantiated only from this file.
- */
- private UserData(@UserIdInt int userId,
- @NonNull InputMethodBindingController bindingController) {
- mUserId = userId;
- mBindingController = bindingController;
- mSwitchingController = new InputMethodSubtypeSwitchingController();
- mHardwareKeyboardShortcutController = new HardwareKeyboardShortcutController();
- }
-
- @Override
- public String toString() {
- return "UserData{" + "mUserId=" + mUserId + '}';
- }
- }
}
diff --git a/services/core/java/com/android/server/locales/LocaleManagerService.java b/services/core/java/com/android/server/locales/LocaleManagerService.java
index 4851a81..3d0b079 100644
--- a/services/core/java/com/android/server/locales/LocaleManagerService.java
+++ b/services/core/java/com/android/server/locales/LocaleManagerService.java
@@ -48,6 +48,7 @@
import android.util.Slog;
import android.util.Xml;
+import com.android.internal.annotations.KeepForWeakReference;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
import com.android.internal.util.FrameworkStatsLog;
@@ -100,6 +101,7 @@
private LocaleManagerBackupHelper mBackupHelper;
+ @KeepForWeakReference
private final PackageMonitor mPackageMonitor;
private final Object mWriteLock = new Object();
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index ba7d3b8..d9f3622 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -251,6 +251,10 @@
systemRoutes = providerInfo.getRoutes();
} else {
systemRoutes = Collections.emptyList();
+ Slog.e(
+ TAG,
+ "Returning empty system routes list because "
+ + "system provider has null providerInfo.");
}
} else {
systemRoutes = new ArrayList<>();
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 9e53cc3..016abff 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -110,8 +110,8 @@
import static android.service.notification.Adjustment.TYPE_SOCIAL_MEDIA;
import static android.service.notification.Flags.callstyleCallbackApi;
import static android.service.notification.Flags.notificationForceGrouping;
-import static android.service.notification.Flags.redactSensitiveNotificationsFromUntrustedListeners;
import static android.service.notification.Flags.redactSensitiveNotificationsBigTextStyle;
+import static android.service.notification.Flags.redactSensitiveNotificationsFromUntrustedListeners;
import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ALERTING;
import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_CONVERSATIONS;
import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ONGOING;
@@ -248,7 +248,6 @@
import android.content.pm.VersionedPackage;
import android.content.res.Resources;
import android.database.ContentObserver;
-import android.graphics.drawable.Icon;
import android.metrics.LogMaker;
import android.net.Uri;
import android.os.Binder;
@@ -373,7 +372,6 @@
import com.android.server.wm.BackgroundActivityStartCallback;
import com.android.server.wm.WindowManagerInternal;
-import java.util.function.BiPredicate;
import libcore.io.IoUtils;
import org.json.JSONException;
@@ -4634,29 +4632,28 @@
@Override
public List<String> getPackagesBypassingDnd(int userId,
- boolean includeConversationChannels) {
+ boolean includeConversationChannels) {
checkCallerIsSystem();
final ArraySet<String> packageNames = new ArraySet<>();
- for (int user : mUm.getProfileIds(userId, false)) {
- List<PackageInfo> pkgs = mPackageManagerClient.getInstalledPackagesAsUser(0, user);
- for (PackageInfo pi : pkgs) {
- String pkg = pi.packageName;
- // If any NotificationChannel for this package is bypassing, the
- // package is considered bypassing.
- for (NotificationChannel channel : getNotificationChannelsBypassingDnd(pkg,
- pi.applicationInfo.uid).getList()) {
- // Skips non-demoted conversation channels.
- if (!includeConversationChannels
- && !TextUtils.isEmpty(channel.getConversationId())
- && !channel.isDemoted()) {
- continue;
- }
- packageNames.add(pkg);
+ List<PackageInfo> pkgs = mPackageManagerClient.getInstalledPackagesAsUser(0, userId);
+ for (PackageInfo pi : pkgs) {
+ String pkg = pi.packageName;
+ // If any NotificationChannel for this package is bypassing, the
+ // package is considered bypassing.
+ for (NotificationChannel channel : getNotificationChannelsBypassingDnd(pkg,
+ pi.applicationInfo.uid).getList()) {
+ // Skips non-demoted conversation channels.
+ if (!includeConversationChannels
+ && !TextUtils.isEmpty(channel.getConversationId())
+ && !channel.isDemoted()) {
+ continue;
}
+ packageNames.add(pkg);
}
}
+
return new ArrayList<String>(packageNames);
}
diff --git a/services/core/java/com/android/server/notification/TimeToLiveHelper.java b/services/core/java/com/android/server/notification/TimeToLiveHelper.java
index a4460b2..cabe766 100644
--- a/services/core/java/com/android/server/notification/TimeToLiveHelper.java
+++ b/services/core/java/com/android/server/notification/TimeToLiveHelper.java
@@ -177,13 +177,16 @@
if (ACTION.equals(action)) {
String timeoutKey = null;
synchronized (mLock) {
- Pair<Long, String> earliest = mKeys.first();
- String key = intent.getStringExtra(EXTRA_KEY);
- if (!earliest.second.equals(key)) {
- Slog.wtf(TAG, "Alarm triggered but wasn't the earliest we were tracking");
+ if (!mKeys.isEmpty()) {
+ Pair<Long, String> earliest = mKeys.first();
+ String key = intent.getStringExtra(EXTRA_KEY);
+ if (!earliest.second.equals(key)) {
+ Slog.wtf(TAG,
+ "Alarm triggered but wasn't the earliest we were tracking");
+ }
+ removeMatchingEntry(key);
+ timeoutKey = earliest.second;
}
- removeMatchingEntry(key);
- timeoutKey = earliest.second;
}
mNm.timeoutNotification(timeoutKey);
}
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 303371b..8d3f07e 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -2261,6 +2261,12 @@
installRequest.getNewUsers());
mPm.updateSequenceNumberLP(ps, installRequest.getNewUsers());
mPm.updateInstantAppInstallerLocked(packageName);
+
+ // The installation is success, remove the split info copy stored in package
+ // setting for the downgrade version check of DELETE_KEEP_DATA and archived app
+ // cases.
+ ps.setSplitNames(null);
+ ps.setSplitRevisionCodes(null);
}
installRequest.onCommitFinished();
}
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index 563cfa4..023f765 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -71,6 +71,7 @@
import android.content.pm.IPackageManager;
import android.content.pm.IShortcutChangeCallback;
import android.content.pm.IncrementalStatesInfo;
+import android.content.pm.InstallSourceInfo;
import android.content.pm.LauncherActivityInfoInternal;
import android.content.pm.LauncherApps;
import android.content.pm.LauncherApps.ShortcutQuery;
@@ -1856,9 +1857,11 @@
private String getInstallerPackage(@NonNull String packageName, int callingUserId) {
String installerPackageName = null;
try {
- installerPackageName =
- mIPM.getInstallSourceInfo(packageName, callingUserId)
- .getInstallingPackageName();
+ InstallSourceInfo info = mIPM.getInstallSourceInfo(packageName, callingUserId);
+ if (info == null) {
+ return installerPackageName;
+ }
+ installerPackageName = info.getInstallingPackageName();
} catch (RemoteException re) {
Slog.e(TAG, "Couldn't find installer for " + packageName, re);
}
diff --git a/services/core/java/com/android/server/pm/OWNERS b/services/core/java/com/android/server/pm/OWNERS
index c10dfcb..e8fc577 100644
--- a/services/core/java/com/android/server/pm/OWNERS
+++ b/services/core/java/com/android/server/pm/OWNERS
@@ -27,6 +27,7 @@
per-file RestrictionsSet.java = file:MULTIUSER_AND_ENTERPRISE_OWNERS
per-file UserRestriction* = file:MULTIUSER_AND_ENTERPRISE_OWNERS
per-file User* = file:/MULTIUSER_OWNERS
+per-file BackgroundUser* = file:/MULTIUSER_OWNERS
# security
per-file KeySetHandle.java = cbrubaker@google.com, nnk@google.com
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 07c8ee7..33ca8a8 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -31,6 +31,7 @@
import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_UNSET;
+import static android.crashrecovery.flags.Flags.refactorCrashrecovery;
import static android.os.Process.INVALID_UID;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
import static android.os.storage.StorageManager.FLAG_STORAGE_CE;
@@ -3037,7 +3038,9 @@
mCompilerStats.writeNow();
mDexManager.writePackageDexUsageNow();
mDynamicCodeLogger.writeNow();
- PackageWatchdog.getInstance(mContext).writeNow();
+ if (!refactorCrashrecovery()) {
+ PackageWatchdog.getInstance(mContext).writeNow();
+ }
synchronized (mLock) {
mPackageUsage.writeNow(mSettings.getPackagesLocked());
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index c3cac20..a1dffc6 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -1423,11 +1423,8 @@
*/
public static void checkDowngrade(@NonNull PackageSetting before,
@NonNull PackageInfoLite after) throws PackageManagerException {
- if (after.getLongVersionCode() < before.getVersionCode()) {
- throw new PackageManagerException(INSTALL_FAILED_VERSION_DOWNGRADE,
- "Update version code " + after.versionCode + " is older than current "
- + before.getVersionCode());
- }
+ checkDowngrade(before.getVersionCode(), before.getBaseRevisionCode(),
+ before.getSplitNames(), before.getSplitRevisionCodes(), after);
}
/**
@@ -1436,28 +1433,35 @@
*/
public static void checkDowngrade(@NonNull AndroidPackage before,
@NonNull PackageInfoLite after) throws PackageManagerException {
- if (after.getLongVersionCode() < before.getLongVersionCode()) {
+ checkDowngrade(before.getLongVersionCode(), before.getBaseRevisionCode(),
+ before.getSplitNames(), before.getSplitRevisionCodes(), after);
+ }
+
+ private static void checkDowngrade(long beforeVersionCode, int beforeBaseRevisionCode,
+ @NonNull String[] beforeSplitNames, @NonNull int[] beforeSplitRevisionCodes,
+ @NonNull PackageInfoLite after) throws PackageManagerException {
+ if (after.getLongVersionCode() < beforeVersionCode) {
throw new PackageManagerException(INSTALL_FAILED_VERSION_DOWNGRADE,
"Update version code " + after.versionCode + " is older than current "
- + before.getLongVersionCode());
- } else if (after.getLongVersionCode() == before.getLongVersionCode()) {
- if (after.baseRevisionCode < before.getBaseRevisionCode()) {
+ + beforeVersionCode);
+ } else if (after.getLongVersionCode() == beforeVersionCode) {
+ if (after.baseRevisionCode < beforeBaseRevisionCode) {
throw new PackageManagerException(INSTALL_FAILED_VERSION_DOWNGRADE,
"Update base revision code " + after.baseRevisionCode
- + " is older than current " + before.getBaseRevisionCode());
+ + " is older than current " + beforeBaseRevisionCode);
}
if (!ArrayUtils.isEmpty(after.splitNames)) {
for (int i = 0; i < after.splitNames.length; i++) {
final String splitName = after.splitNames[i];
- final int j = ArrayUtils.indexOf(before.getSplitNames(), splitName);
+ final int j = ArrayUtils.indexOf(beforeSplitNames, splitName);
if (j != -1) {
- if (after.splitRevisionCodes[i] < before.getSplitRevisionCodes()[j]) {
+ if (after.splitRevisionCodes[i] < beforeSplitRevisionCodes[j]) {
throw new PackageManagerException(INSTALL_FAILED_VERSION_DOWNGRADE,
"Update split " + splitName + " revision code "
+ after.splitRevisionCodes[i]
+ " is older than current "
- + before.getSplitRevisionCodes()[j]);
+ + beforeSplitRevisionCodes[j]);
}
}
}
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index 82df527..9f10e01 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -234,6 +234,22 @@
@Nullable
private byte[] mRestrictUpdateHash;
+ // This is the copy of the same data stored in AndroidPackage. It is not null if the
+ // AndroidPackage is deleted in cases of DELETE_KEEP_DATA. When AndroidPackage is not null,
+ // the field will be null, and the getter method will return the data from AndroidPackage
+ // instead.
+ @Nullable
+ private String[] mSplitNames;
+
+ // This is the copy of the same data stored in AndroidPackage. It is not null if the
+ // AndroidPackage is deleted in cases of DELETE_KEEP_DATA. When AndroidPackage is not null,
+ // the field will be null, and the getter method will return the data from AndroidPackage
+ // instead.
+ @Nullable
+ private int[] mSplitRevisionCodes;
+
+ private int mBaseRevisionCode;
+
/**
* Snapshot support.
*/
@@ -578,6 +594,62 @@
return getBoolean(Booleans.DEBUGGABLE);
}
+ /**
+ * @see AndroidPackage#getBaseRevisionCode
+ */
+ public PackageSetting setBaseRevisionCode(int value) {
+ mBaseRevisionCode = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ * @see AndroidPackage#getBaseRevisionCode
+ */
+ public int getBaseRevisionCode() {
+ return mBaseRevisionCode;
+ }
+
+ /**
+ * @see AndroidPackage#getSplitNames
+ */
+ public PackageSetting setSplitNames(String[] value) {
+ mSplitNames = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ * @see AndroidPackage#getSplitNames
+ */
+ @NonNull
+ public String[] getSplitNames() {
+ if (pkg != null) {
+ return pkg.getSplitNames();
+ }
+ return mSplitNames == null ? EmptyArray.STRING : mSplitNames;
+ }
+
+ /**
+ * @see AndroidPackage#getSplitRevisionCodes
+ */
+ public PackageSetting setSplitRevisionCodes(int[] value) {
+ mSplitRevisionCodes = value;
+ onChanged();
+ return this;
+ }
+
+ /**
+ * @see AndroidPackage#getSplitRevisionCodes
+ */
+ @NonNull
+ public int[] getSplitRevisionCodes() {
+ if (pkg != null) {
+ return pkg.getSplitRevisionCodes();
+ }
+ return mSplitRevisionCodes == null ? EmptyArray.INT : mSplitRevisionCodes;
+ }
+
@Override
public String toString() {
return "PackageSetting{"
@@ -739,6 +811,11 @@
mTargetSdkVersion = other.mTargetSdkVersion;
mRestrictUpdateHash = other.mRestrictUpdateHash == null
? null : other.mRestrictUpdateHash.clone();
+ mBaseRevisionCode = other.mBaseRevisionCode;
+ mSplitNames = other.mSplitNames != null
+ ? Arrays.copyOf(other.mSplitNames, other.mSplitNames.length) : null;
+ mSplitRevisionCodes = other.mSplitRevisionCodes != null
+ ? Arrays.copyOf(other.mSplitRevisionCodes, other.mSplitRevisionCodes.length) : null;
usesSdkLibraries = other.usesSdkLibraries != null
? Arrays.copyOf(other.usesSdkLibraries,
diff --git a/services/core/java/com/android/server/pm/RemovePackageHelper.java b/services/core/java/com/android/server/pm/RemovePackageHelper.java
index 2f2c451..7afc358 100644
--- a/services/core/java/com/android/server/pm/RemovePackageHelper.java
+++ b/services/core/java/com/android/server/pm/RemovePackageHelper.java
@@ -432,6 +432,13 @@
}
deletedPs.setInstalled(/* installed= */ false, userId);
}
+
+ // Preserve split apk information for downgrade check with DELETE_KEEP_DATA and archived
+ // app cases
+ if (deletedPkg.getSplitNames() != null) {
+ deletedPs.setSplitNames(deletedPkg.getSplitNames());
+ deletedPs.setSplitRevisionCodes(deletedPkg.getSplitRevisionCodes());
+ }
}
// make sure to preserve per-user installed state if this removal was just
diff --git a/services/core/java/com/android/server/pm/ScanPackageUtils.java b/services/core/java/com/android/server/pm/ScanPackageUtils.java
index d8ce38e..95561f5f 100644
--- a/services/core/java/com/android/server/pm/ScanPackageUtils.java
+++ b/services/core/java/com/android/server/pm/ScanPackageUtils.java
@@ -437,8 +437,9 @@
pkgSetting.setIsOrphaned(true);
}
- // update debuggable to packageSetting
+ // update debuggable and BaseRevisionCode to packageSetting
pkgSetting.setDebuggable(parsedPackage.isDebuggable());
+ pkgSetting.setBaseRevisionCode(parsedPackage.getBaseRevisionCode());
// Take care of first install / last update times.
final long scanFileTime = getLastModifiedTime(parsedPackage);
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 0d16b00..9177e2b 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -325,6 +325,7 @@
private static final String TAG_MIME_TYPE = "mime-type";
private static final String TAG_ARCHIVE_STATE = "archive-state";
private static final String TAG_ARCHIVE_ACTIVITY_INFO = "archive-activity-info";
+ private static final String TAG_SPLIT_VERSION = "split-version";
public static final String ATTR_NAME = "name";
public static final String ATTR_PACKAGE = "package";
@@ -3261,6 +3262,9 @@
if (pkg.isLoading()) {
serializer.attributeBoolean(null, "isLoading", true);
}
+ if (pkg.getBaseRevisionCode() != 0) {
+ serializer.attributeInt(null, "baseRevisionCode", pkg.getBaseRevisionCode());
+ }
serializer.attributeFloat(null, "loadingProgress", pkg.getLoadingProgress());
serializer.attributeLongHex(null, "loadingCompletedTime", pkg.getLoadingCompletedTime());
@@ -3289,7 +3293,12 @@
writeUpgradeKeySetsLPr(serializer, pkg.getKeySetData());
writeKeySetAliasesLPr(serializer, pkg.getKeySetData());
writeMimeGroupLPr(serializer, pkg.getMimeGroups());
-
+ // If getPkg is not NULL, these values are from the getPkg. And these values are preserved
+ // for the downgrade check for DELETE_KEEP_DATA and archived app cases. If the getPkg is
+ // not NULL, we don't need to preserve it.
+ if (pkg.getPkg() == null) {
+ writeSplitVersionsLPr(serializer, pkg.getSplitNames(), pkg.getSplitRevisionCodes());
+ }
serializer.endTag(null, "package");
}
@@ -4071,6 +4080,7 @@
byte[] restrictUpdateHash = null;
boolean isScannedAsStoppedSystemApp = false;
boolean isSdkLibrary = false;
+ int baseRevisionCode = 0;
try {
name = parser.getAttributeValue(null, ATTR_NAME);
realName = parser.getAttributeValue(null, "realName");
@@ -4116,6 +4126,7 @@
appMetadataFilePath = parser.getAttributeValue(null, "appMetadataFilePath");
appMetadataSource = parser.getAttributeInt(null, "appMetadataSource",
PackageManager.APP_METADATA_SOURCE_UNKNOWN);
+ baseRevisionCode = parser.getAttributeInt(null, "baseRevisionCode", 0);
isScannedAsStoppedSystemApp = parser.getAttributeBoolean(null,
"scannedAsStoppedSystemApp", false);
@@ -4269,6 +4280,7 @@
.setAppMetadataFilePath(appMetadataFilePath)
.setAppMetadataSource(appMetadataSource)
.setTargetSdkVersion(targetSdkVersion)
+ .setBaseRevisionCode(baseRevisionCode)
.setRestrictUpdateHash(restrictUpdateHash)
.setScannedAsStoppedSystemApp(isScannedAsStoppedSystemApp);
// Handle legacy string here for single-user mode
@@ -4374,6 +4386,8 @@
readUsesStaticLibLPw(parser, packageSetting);
} else if (tagName.equals(TAG_USES_SDK_LIB)) {
readUsesSdkLibLPw(parser, packageSetting);
+ } else if (tagName.equals(TAG_SPLIT_VERSION)) {
+ readSplitVersionsLPw(parser, packageSetting);
} else {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Unknown element under <package>: " + parser.getName());
@@ -4470,6 +4484,37 @@
}
}
+ private void readSplitVersionsLPw(TypedXmlPullParser parser, PackageSetting outPs)
+ throws IOException, XmlPullParserException {
+ String splitName = parser.getAttributeValue(null, ATTR_NAME);
+ int splitRevision = parser.getAttributeInt(null, ATTR_VERSION, -1);
+ if (splitName != null && splitRevision >= 0) {
+ outPs.setSplitNames(ArrayUtils.appendElement(String.class,
+ outPs.getSplitNames(), splitName));
+ outPs.setSplitRevisionCodes(ArrayUtils.appendInt(
+ outPs.getSplitRevisionCodes(), splitRevision));
+ }
+
+ XmlUtils.skipCurrentTag(parser);
+ }
+
+ private void writeSplitVersionsLPr(TypedXmlSerializer serializer, String[] splitNames,
+ int[] splitRevisionCodes) throws IOException {
+ if (ArrayUtils.isEmpty(splitNames) || ArrayUtils.isEmpty(splitRevisionCodes)
+ || splitNames.length != splitRevisionCodes.length) {
+ return;
+ }
+ final int libLength = splitNames.length;
+ for (int i = 0; i < libLength; i++) {
+ final String splitName = splitNames[i];
+ final int splitRevision = splitRevisionCodes[i];
+ serializer.startTag(null, TAG_SPLIT_VERSION);
+ serializer.attribute(null, ATTR_NAME, splitName);
+ serializer.attributeInt(null, ATTR_VERSION, splitRevision);
+ serializer.endTag(null, TAG_SPLIT_VERSION);
+ }
+ }
+
private void readDisabledComponentsLPw(PackageSetting packageSetting, TypedXmlPullParser parser,
int userId) throws IOException, XmlPullParserException {
int outerDepth = parser.getDepth();
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 8dc9756..8419a60 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -933,8 +933,7 @@
public void onWakeUp() {
synchronized (mLock) {
if (shouldEnableWakeGestureLp()) {
- performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, false,
- "Wake Up");
+ performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, "Wake Up");
mWindowWakeUpPolicy.wakeUpFromWakeGesture();
}
}
@@ -1403,7 +1402,7 @@
break;
case LONG_PRESS_POWER_GLOBAL_ACTIONS:
mPowerKeyHandled = true;
- performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON, false,
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON,
"Power - Long Press - Global Actions");
showGlobalActions();
break;
@@ -1415,14 +1414,14 @@
if (ActivityManager.isUserAMonkey()) {
break;
}
- performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON, false,
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON,
"Power - Long Press - Shut Off");
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
mWindowManagerFuncs.shutdown(behavior == LONG_PRESS_POWER_SHUT_OFF);
break;
case LONG_PRESS_POWER_GO_TO_VOICE_ASSIST:
mPowerKeyHandled = true;
- performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON, false,
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON,
"Power - Long Press - Go To Voice Assist");
// Some devices allow the voice assistant intent during setup (and use that intent
// to launch something else, like Settings). So we explicitly allow that via the
@@ -1431,7 +1430,7 @@
break;
case LONG_PRESS_POWER_ASSISTANT:
mPowerKeyHandled = true;
- performHapticFeedback(HapticFeedbackConstants.ASSISTANT_BUTTON, false,
+ performHapticFeedback(HapticFeedbackConstants.ASSISTANT_BUTTON,
"Power - Long Press - Go To Assistant");
final int powerKeyDeviceId = INVALID_INPUT_DEVICE_ID;
launchAssistAction(null, powerKeyDeviceId, eventTime,
@@ -1446,7 +1445,7 @@
break;
case VERY_LONG_PRESS_POWER_GLOBAL_ACTIONS:
mPowerKeyHandled = true;
- performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON, false,
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON,
"Power - Very Long Press - Show Global Actions");
showGlobalActions();
break;
@@ -1599,8 +1598,7 @@
case TRIPLE_PRESS_PRIMARY_TOGGLE_ACCESSIBILITY:
mTalkbackShortcutController.toggleTalkback(mCurrentUserId);
if (mTalkbackShortcutController.isTalkBackShortcutGestureEnabled()) {
- performHapticFeedback(HapticFeedbackConstants.CONFIRM, /* always = */
- false, /* reason = */
+ performHapticFeedback(HapticFeedbackConstants.CONFIRM,
"Stem primary - Triple Press - Toggle Accessibility");
}
break;
@@ -1771,7 +1769,7 @@
@Override
public void run() {
mEndCallKeyHandled = true;
- performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false,
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
"End Call - Long Press - Show Global Actions");
showGlobalActionsInternal();
}
@@ -2087,8 +2085,7 @@
return;
}
mHomeConsumed = true;
- performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false,
- "Home - Long Press");
+ performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, "Home - Long Press");
switch (mLongPressOnHomeBehavior) {
case LONG_PRESS_HOME_ALL_APPS:
if (mHasFeatureLeanback) {
@@ -2530,7 +2527,7 @@
break;
case POWER_VOLUME_UP_BEHAVIOR_GLOBAL_ACTIONS:
performHapticFeedback(
- HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON, false,
+ HapticFeedbackConstants.LONG_PRESS_POWER_BUTTON,
"Power + Volume Up - Global Actions");
showGlobalActions();
mPowerKeyHandled = true;
@@ -5078,8 +5075,7 @@
}
if (useHapticFeedback) {
- performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, false,
- "Virtual Key - Press");
+ performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, "Virtual Key - Press");
}
if (isWakeKey) {
@@ -5971,8 +5967,10 @@
public void setSafeMode(boolean safeMode) {
mSafeMode = safeMode;
if (safeMode) {
- performHapticFeedback(HapticFeedbackConstants.SAFE_MODE_ENABLED, true,
- "Safe Mode Enabled");
+ performHapticFeedback(Process.myUid(), mContext.getOpPackageName(),
+ HapticFeedbackConstants.SAFE_MODE_ENABLED,
+ "Safe Mode Enabled", HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING,
+ 0 /* privFlags */);
}
}
@@ -6441,9 +6439,9 @@
Settings.Global.THEATER_MODE_ON, 0) == 1;
}
- private boolean performHapticFeedback(int effectId, boolean always, String reason) {
+ private boolean performHapticFeedback(int effectId, String reason) {
return performHapticFeedback(Process.myUid(), mContext.getOpPackageName(),
- effectId, always, reason, false /* fromIme */);
+ effectId, reason, 0 /* flags */, 0 /* privFlags */);
}
@Override
@@ -6452,8 +6450,8 @@
}
@Override
- public boolean performHapticFeedback(int uid, String packageName, int effectId,
- boolean always, String reason, boolean fromIme) {
+ public boolean performHapticFeedback(int uid, String packageName, int effectId, String reason,
+ int flags, int privFlags) {
if (!mVibrator.hasVibrator()) {
return false;
}
@@ -6464,7 +6462,7 @@
}
VibrationAttributes attrs =
mHapticFeedbackVibrationProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ always, fromIme);
+ effectId, flags, privFlags);
VibratorFrameworkStatsLogger.logPerformHapticsFeedbackIfKeyboard(uid, effectId);
mVibrator.vibrate(uid, packageName, effect, reason, attrs);
return true;
diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
index 6c05d70..1b394f6 100644
--- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java
+++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
@@ -80,6 +80,7 @@
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import android.view.Display;
+import android.view.HapticFeedbackConstants;
import android.view.IDisplayFoldListener;
import android.view.KeyEvent;
import android.view.KeyboardShortcutGroup;
@@ -1079,7 +1080,8 @@
* Call from application to perform haptic feedback on its window.
*/
public boolean performHapticFeedback(int uid, String packageName, int effectId,
- boolean always, String reason, boolean fromIme);
+ String reason, @HapticFeedbackConstants.Flags int flags,
+ @HapticFeedbackConstants.PrivateFlags int privFlags);
/**
* Called when we have started keeping the screen on because a window
diff --git a/services/core/java/com/android/server/stats/pull/RawSettingsTelemetryUtils.java b/services/core/java/com/android/server/stats/pull/RawSettingsTelemetryUtils.java
new file mode 100644
index 0000000..1e3203d
--- /dev/null
+++ b/services/core/java/com/android/server/stats/pull/RawSettingsTelemetryUtils.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.stats.pull;
+
+import static android.provider.Settings.System.PEAK_REFRESH_RATE;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.util.Log;
+
+import com.android.internal.display.RefreshRateSettingsUtils;
+
+/**
+ * Utility methods for processing raw settings values to the format that
+ * is acceptable for telemetry system.
+ * For instance, raw setting values could be hard to visualize on dashboards, etc.
+ */
+public final class RawSettingsTelemetryUtils {
+
+ private static final String TAG = "SettingsTelemetryUtils";
+
+ /**
+ * Get string that should be written as a value of settingKey and should be sent to telemetry
+ * system.
+ *
+ * @param context The context
+ * @param key The setting key
+ * @param value The setting raw value that was parsed from Settings.
+ * @return The setting string value that should be sent to telemetry system.
+ */
+ @Nullable
+ public static String getTelemetrySettingFromRawVal(Context context, String key, String value) {
+ if (key == null) {
+ return null;
+ }
+
+ if (key.equals(PEAK_REFRESH_RATE)) {
+ return getPeakRefreshRateSetting(context, value);
+ }
+
+ return value;
+ }
+
+ /**
+ * Get string that should be written as a value of "peak_refresh_setting" setting
+ * and should be sent to telemetry.
+ * system.
+ *
+ * @param context The context
+ * @param settingRawValue The setting raw value that was parsed from Settings.
+ * @return The "peak_refresh_setting" string value that should be sent to telemetry system.
+ */
+ @Nullable
+ private static String getPeakRefreshRateSetting(Context context, String settingRawValue) {
+ if (settingRawValue == null) {
+ Log.e(TAG, "PEAK_REFRESH_RATE value is null");
+ return null;
+ }
+
+ String floatInfinityStr = Float.toString(Float.POSITIVE_INFINITY);
+ if (settingRawValue.equals(floatInfinityStr)) {
+ float max_refresh_rate =
+ RefreshRateSettingsUtils.findHighestRefreshRateAmongAllBuiltInDisplays(context);
+ return Float.toString(max_refresh_rate);
+ }
+
+ return settingRawValue;
+ }
+}
diff --git a/services/core/java/com/android/server/stats/pull/SettingsStatsUtil.java b/services/core/java/com/android/server/stats/pull/SettingsStatsUtil.java
index 7cdb84b..f745089 100644
--- a/services/core/java/com/android/server/stats/pull/SettingsStatsUtil.java
+++ b/services/core/java/com/android/server/stats/pull/SettingsStatsUtil.java
@@ -107,7 +107,9 @@
}
for (String key : proto.element) {
final String value = Settings.System.getStringForUser(resolver, key, userId);
- output.add(createStatsEvent(atomTag, key, value, userId,
+ final String telemetryValue = RawSettingsTelemetryUtils
+ .getTelemetrySettingFromRawVal(context, key, value);
+ output.add(createStatsEvent(atomTag, key, telemetryValue, userId,
flagsData.mDataType));
}
}
diff --git a/services/core/java/com/android/server/vibrator/HapticFeedbackVibrationProvider.java b/services/core/java/com/android/server/vibrator/HapticFeedbackVibrationProvider.java
index 8138168..98a2ba0d 100644
--- a/services/core/java/com/android/server/vibrator/HapticFeedbackVibrationProvider.java
+++ b/services/core/java/com/android/server/vibrator/HapticFeedbackVibrationProvider.java
@@ -186,13 +186,13 @@
*
* @param effectId the haptic feedback effect ID whose respective vibration attributes we want
* to get.
- * @param bypassVibrationIntensitySetting {@code true} if the returned attribute should bypass
- * vibration intensity settings. {@code false} otherwise.
- * @param fromIme the haptic feedback is performed from an IME.
+ * @param flags Additional flags as per {@link HapticFeedbackConstants}.
+ * @param privFlags Additional private flags as per {@link HapticFeedbackConstants}.
* @return the {@link VibrationAttributes} that should be used for the provided haptic feedback.
*/
- public VibrationAttributes getVibrationAttributesForHapticFeedback(
- int effectId, boolean bypassVibrationIntensitySetting, boolean fromIme) {
+ public VibrationAttributes getVibrationAttributesForHapticFeedback(int effectId,
+ @HapticFeedbackConstants.Flags int flags,
+ @HapticFeedbackConstants.PrivateFlags int privFlags) {
VibrationAttributes attrs;
switch (effectId) {
case HapticFeedbackConstants.EDGE_SQUEEZE:
@@ -208,7 +208,7 @@
break;
case HapticFeedbackConstants.KEYBOARD_TAP:
case HapticFeedbackConstants.KEYBOARD_RELEASE:
- attrs = createKeyboardVibrationAttributes(fromIme);
+ attrs = createKeyboardVibrationAttributes(privFlags);
break;
case HapticFeedbackConstants.BIOMETRIC_CONFIRM:
case HapticFeedbackConstants.BIOMETRIC_REJECT:
@@ -218,18 +218,23 @@
attrs = TOUCH_VIBRATION_ATTRIBUTES;
}
- int flags = 0;
+ int vibFlags = 0;
+ boolean fromIme =
+ (privFlags & HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS) != 0;
+ boolean bypassVibrationIntensitySetting =
+ (flags & HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING) != 0;
if (bypassVibrationIntensitySetting) {
- flags |= VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF;
+ vibFlags |= VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF;
}
if (shouldBypassInterruptionPolicy(effectId)) {
- flags |= VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY;
+ vibFlags |= VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY;
}
if (shouldBypassIntensityScale(effectId, fromIme)) {
- flags |= VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE;
+ vibFlags |= VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE;
}
- return flags == 0 ? attrs : new VibrationAttributes.Builder(attrs).setFlags(flags).build();
+ return vibFlags == 0 ? attrs : new VibrationAttributes.Builder(attrs)
+ .setFlags(vibFlags).build();
}
/**
@@ -373,12 +378,16 @@
return false;
}
- private VibrationAttributes createKeyboardVibrationAttributes(boolean fromIme) {
- // Use touch attribute when the keyboard category is disable or it's not from an IME.
- if (!Flags.keyboardCategoryEnabled() || !fromIme) {
+ private VibrationAttributes createKeyboardVibrationAttributes(
+ @HapticFeedbackConstants.PrivateFlags int privFlags) {
+ // Use touch attribute when the keyboard category is disable.
+ if (!Flags.keyboardCategoryEnabled()) {
return TOUCH_VIBRATION_ATTRIBUTES;
}
-
+ // Use touch attribute when the haptic is not apply to IME.
+ if ((privFlags & HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS) == 0) {
+ return TOUCH_VIBRATION_ATTRIBUTES;
+ }
return new VibrationAttributes.Builder(TOUCH_VIBRATION_ATTRIBUTES)
.setCategory(VibrationAttributes.CATEGORY_KEYBOARD)
.build();
diff --git a/services/core/java/com/android/server/vibrator/VibratorManagerService.java b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
index 5c15ccb..4437a2d 100644
--- a/services/core/java/com/android/server/vibrator/VibratorManagerService.java
+++ b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
@@ -65,6 +65,7 @@
import android.util.Slog;
import android.util.SparseArray;
import android.util.proto.ProtoOutputStream;
+import android.view.HapticFeedbackConstants;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -439,13 +440,13 @@
@Override // Binder call
public void performHapticFeedback(int uid, int deviceId, String opPkg, int constant,
- boolean always, String reason, boolean fromIme) {
+ String reason, int flags, int privFlags) {
// Note that the `performHapticFeedback` method does not take a token argument from the
// caller, and instead, uses this service as the token. This is to mitigate performance
// impact that would otherwise be caused due to marshal latency. Haptic feedback effects are
// short-lived, so we don't need to cancel when the process dies.
- performHapticFeedbackInternal(
- uid, deviceId, opPkg, constant, always, reason, /* token= */ this, fromIme);
+ performHapticFeedbackInternal(uid, deviceId, opPkg, constant, reason, /* token= */
+ this, flags, privFlags);
}
/**
@@ -456,8 +457,8 @@
@VisibleForTesting
@Nullable
HalVibration performHapticFeedbackInternal(
- int uid, int deviceId, String opPkg, int constant, boolean always, String reason,
- IBinder token, boolean fromIme) {
+ int uid, int deviceId, String opPkg, int constant, String reason,
+ IBinder token, int flags, int privFlags) {
HapticFeedbackVibrationProvider hapticVibrationProvider = getHapticVibrationProvider();
if (hapticVibrationProvider == null) {
Slog.e(TAG, "performHapticFeedback; haptic vibration provider not ready.");
@@ -474,9 +475,8 @@
return null;
}
CombinedVibration vib = CombinedVibration.createParallel(effect);
- VibrationAttributes attrs =
- hapticVibrationProvider.getVibrationAttributesForHapticFeedback(
- constant, /* bypassVibrationIntensitySetting= */ always, fromIme);
+ VibrationAttributes attrs = hapticVibrationProvider.getVibrationAttributesForHapticFeedback(
+ constant, flags, privFlags);
reason = "performHapticFeedback(constant=" + constant + "): " + reason;
VibratorFrameworkStatsLogger.logPerformHapticsFeedbackIfKeyboard(uid, constant);
return vibrateWithoutPermissionCheck(uid, deviceId, opPkg, vib, attrs, reason, token);
@@ -2295,10 +2295,11 @@
IBinder deathBinder = commonOptions.background ? VibratorManagerService.this
: mShellCallbacksToken;
+ int flags = commonOptions.force
+ ? HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING : 0;
HalVibration vib = performHapticFeedbackInternal(Binder.getCallingUid(),
Context.DEVICE_ID_DEFAULT, SHELL_PACKAGE_NAME, constant,
- /* always= */ commonOptions.force, /* reason= */ commonOptions.description,
- deathBinder, false /* fromIme */);
+ /* reason= */ commonOptions.description, deathBinder, flags, /* privFlags */ 0);
maybeWaitOnVibration(vib, commonOptions);
return 0;
diff --git a/services/core/java/com/android/server/wm/AbsAppSnapshotController.java b/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
index 2d8aa3f..09de01e 100644
--- a/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
+++ b/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
@@ -137,7 +137,7 @@
}
abstract ActivityRecord getTopActivity(TYPE source);
- abstract ActivityRecord getTopFullscreenActivity(TYPE source);
+ abstract WindowState getTopFullscreenWindow(TYPE source);
abstract ActivityManager.TaskDescription getTaskDescription(TYPE source);
/**
* Find the window for a given task to take a snapshot. Top child of the task is usually the one
@@ -465,10 +465,7 @@
*/
@WindowInsetsController.Appearance
private int getAppearance(TYPE source) {
- final ActivityRecord topFullscreenActivity = getTopFullscreenActivity(source);
- final WindowState topFullscreenWindow = topFullscreenActivity != null
- ? topFullscreenActivity.findMainWindow()
- : null;
+ final WindowState topFullscreenWindow = getTopFullscreenWindow(source);
if (topFullscreenWindow != null) {
return topFullscreenWindow.mAttrs.insetsFlags.appearance;
}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 3076b87..fa6ac65 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -53,6 +53,7 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.app.WindowConfiguration.activityTypeToString;
+import static android.app.WindowConfiguration.isFloating;
import static android.app.admin.DevicePolicyResources.Drawables.Source.PROFILE_SWITCH_ANIMATION;
import static android.app.admin.DevicePolicyResources.Drawables.Style.OUTLINE;
import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICON;
@@ -233,7 +234,7 @@
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
import static com.android.server.wm.ActivityTaskManagerService.getInputDispatchingTimeoutMillisLocked;
-import static com.android.server.wm.DesktopModeLaunchParamsModifier.canEnterDesktopMode;
+import static com.android.server.wm.DesktopModeHelper.canEnterDesktopMode;
import static com.android.server.wm.IdentifierProto.HASH_CODE;
import static com.android.server.wm.IdentifierProto.TITLE;
import static com.android.server.wm.IdentifierProto.USER_ID;
@@ -335,6 +336,7 @@
import android.service.dreams.DreamActivity;
import android.service.voice.IVoiceInteractionSession;
import android.util.ArraySet;
+import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.Log;
import android.util.MergedConfiguration;
@@ -8637,14 +8639,7 @@
resolvedConfig.windowConfiguration.setMaxBounds(mTmpBounds);
}
- applySizeOverrideIfNeeded(
- mDisplayContent,
- info.applicationInfo,
- newParentConfiguration,
- resolvedConfig,
- mOptOutEdgeToEdge,
- hasFixedRotationTransform(),
- getCompatDisplayInsets() != null);
+ applySizeOverrideIfNeeded(newParentConfiguration, parentWindowingMode, resolvedConfig);
mResolveConfigHint.resetTmpOverrides();
logAppCompatState();
@@ -8654,6 +8649,100 @@
return Rect.copyOrNull(mResolveConfigHint.mParentAppBoundsOverride);
}
+ /**
+ * If necessary, override configuration fields related to app bounds.
+ * This will happen when the app is targeting SDK earlier than 35.
+ * The insets and configuration has decoupled since SDK level 35, to make the system
+ * compatible to existing apps, override the configuration with legacy metrics. In legacy
+ * metrics, fields such as appBounds will exclude some of the system bar areas.
+ * The override contains all potentially affected fields in Configuration, including
+ * screenWidthDp, screenHeightDp, smallestScreenWidthDp, and orientation.
+ * All overrides to those fields should be in this method.
+ *
+ * TODO: Consider integrate this with computeConfigByResolveHint()
+ */
+ private void applySizeOverrideIfNeeded(Configuration newParentConfiguration,
+ int parentWindowingMode, Configuration inOutConfig) {
+ if (mDisplayContent == null) {
+ return;
+ }
+ final Rect parentBounds = newParentConfiguration.windowConfiguration.getBounds();
+ int rotation = newParentConfiguration.windowConfiguration.getRotation();
+ if (rotation == ROTATION_UNDEFINED && !isFixedRotationTransforming()) {
+ rotation = mDisplayContent.getRotation();
+ }
+ if (!mOptOutEdgeToEdge && (!mResolveConfigHint.mUseOverrideInsetsForConfig
+ || getCompatDisplayInsets() != null
+ || (isFloating(parentWindowingMode)
+ // Check the requested windowing mode of activity as well in case it is
+ // switching between PiP and fullscreen.
+ && (inOutConfig.windowConfiguration.getWindowingMode()
+ == WINDOWING_MODE_UNDEFINED
+ || isFloating(inOutConfig.windowConfiguration.getWindowingMode())))
+ || rotation == ROTATION_UNDEFINED)) {
+ // If the insets configuration decoupled logic is not enabled for the app, or the app
+ // already has a compat override, or the context doesn't contain enough info to
+ // calculate the override, skip the override.
+ return;
+ }
+ // Make sure the orientation related fields will be updated by the override insets, because
+ // fixed rotation has assigned the fields from display's configuration.
+ if (hasFixedRotationTransform()) {
+ inOutConfig.windowConfiguration.setAppBounds(null);
+ inOutConfig.screenWidthDp = Configuration.SCREEN_WIDTH_DP_UNDEFINED;
+ inOutConfig.screenHeightDp = Configuration.SCREEN_HEIGHT_DP_UNDEFINED;
+ inOutConfig.smallestScreenWidthDp = Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
+ inOutConfig.orientation = ORIENTATION_UNDEFINED;
+ }
+
+ // Override starts here.
+ final boolean rotated = (rotation == ROTATION_90 || rotation == ROTATION_270);
+ final int dw = rotated ? mDisplayContent.mBaseDisplayHeight
+ : mDisplayContent.mBaseDisplayWidth;
+ final int dh = rotated ? mDisplayContent.mBaseDisplayWidth
+ : mDisplayContent.mBaseDisplayHeight;
+ final Rect nonDecorInsets = mDisplayContent.getDisplayPolicy()
+ .getDecorInsetsInfo(rotation, dw, dh).mOverrideNonDecorInsets;
+ // This should be the only place override the configuration for ActivityRecord. Override
+ // the value if not calculated yet.
+ Rect outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
+ if (outAppBounds == null || outAppBounds.isEmpty()) {
+ inOutConfig.windowConfiguration.setAppBounds(parentBounds);
+ outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
+ outAppBounds.inset(nonDecorInsets);
+ }
+ float density = inOutConfig.densityDpi;
+ if (density == Configuration.DENSITY_DPI_UNDEFINED) {
+ density = newParentConfiguration.densityDpi;
+ }
+ density *= DisplayMetrics.DENSITY_DEFAULT_SCALE;
+ if (inOutConfig.screenWidthDp == Configuration.SCREEN_WIDTH_DP_UNDEFINED) {
+ inOutConfig.screenWidthDp = (int) (outAppBounds.width() / density + 0.5f);
+ }
+ if (inOutConfig.screenHeightDp == Configuration.SCREEN_HEIGHT_DP_UNDEFINED) {
+ inOutConfig.screenHeightDp = (int) (outAppBounds.height() / density + 0.5f);
+ }
+ if (inOutConfig.smallestScreenWidthDp
+ == Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED
+ && parentWindowingMode == WINDOWING_MODE_FULLSCREEN) {
+ // For the case of PIP transition and multi-window environment, the
+ // smallestScreenWidthDp is handled already. Override only if the app is in
+ // fullscreen.
+ final DisplayInfo info = new DisplayInfo(mDisplayContent.getDisplayInfo());
+ mDisplayContent.computeSizeRanges(info, rotated, dw, dh,
+ mDisplayContent.getDisplayMetrics().density,
+ inOutConfig, true /* overrideConfig */);
+ }
+
+ // It's possible that screen size will be considered in different orientation with or
+ // without considering the system bar insets. Override orientation as well.
+ if (inOutConfig.orientation == ORIENTATION_UNDEFINED) {
+ inOutConfig.orientation =
+ (inOutConfig.screenWidthDp <= inOutConfig.screenHeightDp)
+ ? ORIENTATION_PORTRAIT : ORIENTATION_LANDSCAPE;
+ }
+ }
+
private void computeConfigByResolveHint(@NonNull Configuration resolvedConfig,
@NonNull Configuration parentConfig) {
task.computeConfigResourceOverrides(resolvedConfig, parentConfig, mResolveConfigHint);
@@ -8875,7 +8964,7 @@
* <p>Conditions that need to be met:
*
* <ul>
- * <li>{@link LetterboxConfiguration#getIsEducationEnabled} is true.
+ * <li>{@link AppCompatConfiguration#getIsEducationEnabled} is true.
* <li>The activity is eligible for fixed orientation letterbox.
* <li>The activity is in fullscreen.
* <li>The activity is portrait-only.
@@ -8884,7 +8973,7 @@
* </ul>
*/
boolean isEligibleForLetterboxEducation() {
- return mWmService.mLetterboxConfiguration.getIsEducationEnabled()
+ return mWmService.mAppCompatConfiguration.getIsEducationEnabled()
&& mIsEligibleForFixedOrientationLetterbox
&& getWindowingMode() == WINDOWING_MODE_FULLSCREEN
&& getRequestedConfigurationOrientation() == ORIENTATION_PORTRAIT
diff --git a/services/core/java/com/android/server/wm/ActivityRefresher.java b/services/core/java/com/android/server/wm/ActivityRefresher.java
index 0c32dfc..bc82271 100644
--- a/services/core/java/com/android/server/wm/ActivityRefresher.java
+++ b/services/core/java/com/android/server/wm/ActivityRefresher.java
@@ -75,7 +75,7 @@
}
final boolean cycleThroughStop =
- mWmService.mLetterboxConfiguration
+ mWmService.mAppCompatConfiguration
.isCameraCompatRefreshCycleThroughStopEnabled()
&& !activity.mAppCompatController.getAppCompatCameraOverrides()
.shouldRefreshActivityViaPauseForCameraCompat();
@@ -114,7 +114,7 @@
private boolean shouldRefreshActivity(@NonNull ActivityRecord activity,
@NonNull Configuration newConfig, @NonNull Configuration lastReportedConfig) {
- return mWmService.mLetterboxConfiguration.isCameraCompatRefreshEnabled()
+ return mWmService.mAppCompatConfiguration.isCameraCompatRefreshEnabled()
&& activity.mAppCompatController.getAppCompatOverrides()
.getAppCompatCameraOverrides().shouldRefreshActivityForCameraCompat()
&& ArrayUtils.find(mEvaluators.toArray(), evaluator ->
diff --git a/services/core/java/com/android/server/wm/ActivitySnapshotController.java b/services/core/java/com/android/server/wm/ActivitySnapshotController.java
index 62fb4bf..48bc813 100644
--- a/services/core/java/com/android/server/wm/ActivitySnapshotController.java
+++ b/services/core/java/com/android/server/wm/ActivitySnapshotController.java
@@ -590,10 +590,8 @@
return activity;
}
- @Override
- ActivityRecord getTopFullscreenActivity(ActivityRecord activity) {
- final WindowState win = activity.findMainWindow();
- return (win != null && win.mAttrs.isFullscreen()) ? activity : null;
+ WindowState getTopFullscreenWindow(ActivityRecord activity) {
+ return activity.findMainWindow();
}
@Override
diff --git a/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java b/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java
index cf008e7..d9f11b1 100644
--- a/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java
+++ b/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java
@@ -34,8 +34,8 @@
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
import android.annotation.NonNull;
import android.content.pm.PackageManager;
@@ -62,7 +62,7 @@
@NonNull
private final ActivityRecord mActivityRecord;
@NonNull
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
@NonNull
private final UserAspectRatioState mUserAspectRatioState;
@@ -80,12 +80,12 @@
private final Function<Configuration, Float> mGetHorizontalPositionMultiplierProvider;
AppCompatAspectRatioOverrides(@NonNull ActivityRecord activityRecord,
- @NonNull LetterboxConfiguration letterboxConfiguration,
+ @NonNull AppCompatConfiguration appCompatConfiguration,
@NonNull OptPropFactory optPropBuilder,
@NonNull Function<Boolean, Boolean> isDisplayFullScreenAndInPostureProvider,
@NonNull Function<Configuration, Float> getHorizontalPositionMultiplierProvider) {
mActivityRecord = activityRecord;
- mLetterboxConfiguration = letterboxConfiguration;
+ mAppCompatConfiguration = appCompatConfiguration;
mUserAspectRatioState = new UserAspectRatioState();
mIsDisplayFullScreenAndInPostureProvider = isDisplayFullScreenAndInPostureProvider;
mGetHorizontalPositionMultiplierProvider = getHorizontalPositionMultiplierProvider;
@@ -93,10 +93,10 @@
PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE);
mAllowUserAspectRatioOverrideOptProp = optPropBuilder.create(
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE,
- mLetterboxConfiguration::isUserAppAspectRatioSettingsEnabled);
+ mAppCompatConfiguration::isUserAppAspectRatioSettingsEnabled);
mAllowUserAspectRatioFullscreenOverrideOptProp = optPropBuilder.create(
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE,
- mLetterboxConfiguration::isUserAppAspectRatioFullscreenEnabled);
+ mAppCompatConfiguration::isUserAppAspectRatioFullscreenEnabled);
mAllowOrientationOverrideOptProp = optPropBuilder.create(
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE);
}
@@ -147,7 +147,7 @@
boolean isUserFullscreenOverrideEnabled() {
if (mAllowUserAspectRatioOverrideOptProp.isFalse()
|| mAllowUserAspectRatioFullscreenOverrideOptProp.isFalse()
- || !mLetterboxConfiguration.isUserAppAspectRatioFullscreenEnabled()) {
+ || !mAppCompatConfiguration.isUserAppAspectRatioFullscreenEnabled()) {
return false;
}
return true;
@@ -168,7 +168,7 @@
// effect only if explicitly false. If mBooleanPropertyAllowUserAspectRatioOverride is null,
// the current app doesn't opt-out so the first part of the predicate is true.
return !mAllowUserAspectRatioOverrideOptProp.isFalse()
- && mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled()
+ && mAppCompatConfiguration.isUserAppAspectRatioSettingsEnabled()
&& mActivityRecord.mDisplayContent != null
&& mActivityRecord.mDisplayContent.getIgnoreOrientationRequest();
}
@@ -267,11 +267,11 @@
}
private float getDefaultMinAspectRatioForUnresizableApps() {
- if (!mLetterboxConfiguration.getIsSplitScreenAspectRatioForUnresizableAppsEnabled()
+ if (!mAppCompatConfiguration.getIsSplitScreenAspectRatioForUnresizableAppsEnabled()
|| mActivityRecord.getDisplayArea() == null) {
- return mLetterboxConfiguration.getDefaultMinAspectRatioForUnresizableApps()
+ return mAppCompatConfiguration.getDefaultMinAspectRatioForUnresizableApps()
> MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO
- ? mLetterboxConfiguration.getDefaultMinAspectRatioForUnresizableApps()
+ ? mAppCompatConfiguration.getDefaultMinAspectRatioForUnresizableApps()
: getDefaultMinAspectRatio();
}
@@ -280,9 +280,9 @@
private float getDefaultMinAspectRatio() {
if (mActivityRecord.getDisplayArea() == null
- || !mLetterboxConfiguration
+ || !mAppCompatConfiguration
.getIsDisplayAspectRatioEnabledForFixedOrientationLetterbox()) {
- return mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio();
+ return mAppCompatConfiguration.getFixedOrientationLetterboxAspectRatio();
}
return getDisplaySizeMinAspectRatio();
}
diff --git a/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java b/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java
index a7d2ecc..b23e75a 100644
--- a/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java
+++ b/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java
@@ -26,8 +26,8 @@
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
-import static com.android.server.wm.LetterboxConfiguration.DEFAULT_LETTERBOX_ASPECT_RATIO_FOR_MULTI_WINDOW;
-import static com.android.server.wm.LetterboxConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
+import static com.android.server.wm.AppCompatConfiguration.DEFAULT_LETTERBOX_ASPECT_RATIO_FOR_MULTI_WINDOW;
+import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
import android.annotation.NonNull;
import android.annotation.Nullable;
diff --git a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java
index 0d108e1..93a8663 100644
--- a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java
+++ b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java
@@ -52,7 +52,7 @@
@NonNull
private final AppCompatCameraOverridesState mAppCompatCameraOverridesState;
@NonNull
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
@NonNull
private final OptPropFactory.OptProp mAllowMinAspectRatioOverrideOptProp;
@NonNull
@@ -63,15 +63,15 @@
private final OptPropFactory.OptProp mCameraCompatAllowForceRotationOptProp;
AppCompatCameraOverrides(@NonNull ActivityRecord activityRecord,
- @NonNull LetterboxConfiguration letterboxConfiguration,
+ @NonNull AppCompatConfiguration appCompatConfiguration,
@NonNull OptPropFactory optPropBuilder) {
mActivityRecord = activityRecord;
- mLetterboxConfiguration = letterboxConfiguration;
+ mAppCompatConfiguration = appCompatConfiguration;
mAppCompatCameraOverridesState = new AppCompatCameraOverridesState();
mAllowMinAspectRatioOverrideOptProp = optPropBuilder.create(
PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE);
final BooleanSupplier isCameraCompatTreatmentEnabled = AppCompatUtils.asLazy(
- mLetterboxConfiguration::isCameraCompatTreatmentEnabled);
+ mAppCompatConfiguration::isCameraCompatTreatmentEnabled);
mCameraCompatAllowRefreshOptProp = optPropBuilder.create(
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH,
isCameraCompatTreatmentEnabled);
@@ -214,7 +214,7 @@
* is active because the corresponding config is enabled and activity supports resizing.
*/
boolean isCameraCompatSplitScreenAspectRatioAllowed() {
- return mLetterboxConfiguration.isCameraCompatSplitScreenAspectRatioEnabled()
+ return mAppCompatConfiguration.isCameraCompatSplitScreenAspectRatioEnabled()
&& !mActivityRecord.shouldCreateCompatDisplayInsets();
}
diff --git a/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java b/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java
index 53729a2..1562cf6 100644
--- a/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java
+++ b/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java
@@ -45,9 +45,9 @@
// Not checking DeviceConfig value here to allow enabling via DeviceConfig
// without the need to restart the device.
final boolean needsDisplayRotationCompatPolicy =
- wmService.mLetterboxConfiguration.isCameraCompatTreatmentEnabledAtBuildTime();
+ wmService.mAppCompatConfiguration.isCameraCompatTreatmentEnabledAtBuildTime();
final boolean needsCameraCompatFreeformPolicy = Flags.cameraCompatForFreeform()
- && DesktopModeLaunchParamsModifier.canEnterDesktopMode(wmService.mContext);
+ && DesktopModeHelper.canEnterDesktopMode(wmService.mContext);
if (needsDisplayRotationCompatPolicy || needsCameraCompatFreeformPolicy) {
mCameraStateMonitor = new CameraStateMonitor(displayContent, wmService.mH);
mActivityRefresher = new ActivityRefresher(wmService, wmService.mH);
diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/AppCompatConfiguration.java
similarity index 96%
rename from services/core/java/com/android/server/wm/LetterboxConfiguration.java
rename to services/core/java/com/android/server/wm/AppCompatConfiguration.java
index 0161ae5..ffa4251 100644
--- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java
+++ b/services/core/java/com/android/server/wm/AppCompatConfiguration.java
@@ -34,10 +34,10 @@
import java.lang.annotation.RetentionPolicy;
import java.util.function.Function;
-/** Reads letterbox configs from resources and controls their overrides at runtime. */
-final class LetterboxConfiguration {
+/** Reads app compatibility configs from resources and controls their overrides at runtime. */
+final class AppCompatConfiguration {
- private static final String TAG = TAG_WITH_CLASS_NAME ? "LetterboxConfiguration" : TAG_ATM;
+ private static final String TAG = TAG_WITH_CLASS_NAME ? "AppCompatConfiguration" : TAG_ATM;
// Whether camera compatibility treatment is enabled.
// See DisplayRotationCompatPolicy for context.
@@ -183,7 +183,7 @@
// Responsible for the persistence of letterbox[Horizontal|Vertical]PositionMultiplier
@NonNull
- private final LetterboxConfigurationPersister mLetterboxConfigurationPersister;
+ private final AppCompatConfigurationPersister mAppCompatConfigurationPersister;
// Aspect ratio of letterbox for fixed orientation, values <=
// MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO will be ignored.
@@ -307,8 +307,8 @@
// Flags dynamically updated with {@link android.provider.DeviceConfig}.
@NonNull private final SynchedDeviceConfig mDeviceConfig;
- LetterboxConfiguration(@NonNull final Context systemUiContext) {
- this(systemUiContext, new LetterboxConfigurationPersister(
+ AppCompatConfiguration(@NonNull final Context systemUiContext) {
+ this(systemUiContext, new AppCompatConfigurationPersister(
() -> readLetterboxHorizontalReachabilityPositionFromConfig(
systemUiContext, /* forBookMode */ false),
() -> readLetterboxVerticalReachabilityPositionFromConfig(
@@ -320,8 +320,8 @@
}
@VisibleForTesting
- LetterboxConfiguration(@NonNull final Context systemUiContext,
- @NonNull final LetterboxConfigurationPersister letterboxConfigurationPersister) {
+ AppCompatConfiguration(@NonNull final Context systemUiContext,
+ @NonNull final AppCompatConfigurationPersister appCompatConfigurationPersister) {
mContext = systemUiContext;
mFixedOrientationLetterboxAspectRatio = mContext.getResources().getFloat(
@@ -370,8 +370,8 @@
mThinLetterboxHeightPxSupplier = new DimenPxIntSupplier(mContext,
R.dimen.config_letterboxThinLetterboxHeightDp);
- mLetterboxConfigurationPersister = letterboxConfigurationPersister;
- mLetterboxConfigurationPersister.start();
+ mAppCompatConfigurationPersister = appCompatConfigurationPersister;
+ mAppCompatConfigurationPersister.start();
mDeviceConfig = SynchedDeviceConfig.builder(DeviceConfig.NAMESPACE_WINDOW_MANAGER,
systemUiContext.getMainExecutor())
@@ -605,7 +605,7 @@
/**
* Overrides alpha of a black scrim shown over wallpaper for {@link
- * #LETTERBOX_BACKGROUND_WALLPAPER} option returned from {@link getLetterboxBackgroundType()}.
+ * #LETTERBOX_BACKGROUND_WALLPAPER} option returned from {@link #getLetterboxBackgroundType()}.
*
* <p>If given value is < 0 or >= 1, both it and a value of {@link
* com.android.internal.R.dimen.config_letterboxBackgroundWallaperDarkScrimAlpha} are ignored
@@ -632,8 +632,8 @@
}
/**
- * Overrides blur radius for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option from
- * {@link getLetterboxBackgroundType()}.
+ * Overrides blur radius for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option from {@link
+ * #getLetterboxBackgroundType()}.
*
* <p> If given value <= 0, both it and a value of {@link
* com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius} are ignored
@@ -645,7 +645,7 @@
/**
* Resets blur raidus for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option returned by {@link
- * getLetterboxBackgroundType()} to {@link
+ * #getLetterboxBackgroundType()} to {@link
* com.android.internal.R.dimen.config_letterboxBackgroundWallpaperBlurRadius}.
*/
void resetLetterboxBackgroundWallpaperBlurRadiusPx() {
@@ -654,14 +654,14 @@
}
/**
- * Gets blur raidus for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option returned by {@link
- * getLetterboxBackgroundType()}.
+ * Gets blur radius for {@link #LETTERBOX_BACKGROUND_WALLPAPER} option returned by {@link
+ * #getLetterboxBackgroundType()}.
*/
int getLetterboxBackgroundWallpaperBlurRadiusPx() {
return mLetterboxBackgroundWallpaperBlurRadiusPx;
}
- /*
+ /**
* Gets horizontal position of a center of the letterboxed app window specified
* in {@link com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier}
* or via an ADB command. 0 corresponds to the left side of the screen and 1 to the
@@ -672,7 +672,7 @@
: mLetterboxHorizontalPositionMultiplier;
}
- /*
+ /**
* Gets vertical position of a center of the letterboxed app window specified
* in {@link com.android.internal.R.dimen.config_letterboxVerticalPositionMultiplier}
* or via an ADB command. 0 corresponds to the top side of the screen and 1 to the
@@ -743,7 +743,7 @@
"mLetterboxBookModePositionMultiplier");
}
- /*
+ /**
* Whether horizontal reachability repositioning is allowed for letterboxed fullscreen apps in
* landscape device orientation.
*/
@@ -751,7 +751,7 @@
return mIsHorizontalReachabilityEnabled;
}
- /*
+ /**
* Whether vertical reachability repositioning is allowed for letterboxed fullscreen apps in
* portrait device orientation.
*/
@@ -759,7 +759,7 @@
return mIsVerticalReachabilityEnabled;
}
- /*
+ /**
* Whether automatic horizontal reachability repositioning in book mode is allowed for
* letterboxed fullscreen apps in landscape device orientation.
*/
@@ -821,7 +821,7 @@
R.bool.config_letterboxIsAutomaticReachabilityInBookModeEnabled);
}
- /*
+ /**
* Gets default horizontal position of the letterboxed app window when horizontal reachability
* is enabled.
*
@@ -833,7 +833,7 @@
return mDefaultPositionForHorizontalReachability;
}
- /*
+ /**
* Gets default vertical position of the letterboxed app window when vertical reachability is
* enabled.
*
@@ -889,7 +889,7 @@
*/
void setPersistentLetterboxPositionForHorizontalReachability(boolean forBookMode,
@LetterboxHorizontalReachabilityPosition int position) {
- mLetterboxConfigurationPersister.setLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForHorizontalReachability(
forBookMode, position);
}
@@ -899,7 +899,7 @@
*/
void setPersistentLetterboxPositionForVerticalReachability(boolean forTabletopMode,
@LetterboxVerticalReachabilityPosition int position) {
- mLetterboxConfigurationPersister.setLetterboxPositionForVerticalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForVerticalReachability(
forTabletopMode, position);
}
@@ -909,11 +909,11 @@
* is enabled to default position.
*/
void resetPersistentLetterboxPositionForHorizontalReachability() {
- mLetterboxConfigurationPersister.setLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForHorizontalReachability(
false /* forBookMode */,
readLetterboxHorizontalReachabilityPositionFromConfig(mContext,
false /* forBookMode */));
- mLetterboxConfigurationPersister.setLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForHorizontalReachability(
true /* forBookMode */,
readLetterboxHorizontalReachabilityPositionFromConfig(mContext,
true /* forBookMode */));
@@ -925,11 +925,11 @@
* enabled to default position.
*/
void resetPersistentLetterboxPositionForVerticalReachability() {
- mLetterboxConfigurationPersister.setLetterboxPositionForVerticalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForVerticalReachability(
false /* forTabletopMode */,
readLetterboxVerticalReachabilityPositionFromConfig(mContext,
false /* forTabletopMode */));
- mLetterboxConfigurationPersister.setLetterboxPositionForVerticalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForVerticalReachability(
true /* forTabletopMode */,
readLetterboxVerticalReachabilityPositionFromConfig(mContext,
true /* forTabletopMode */));
@@ -961,7 +961,7 @@
? position : LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
}
- /*
+ /**
* Gets horizontal position of a center of the letterboxed app window when reachability
* is enabled specified. 0 corresponds to the left side of the screen and 1 to the right side.
*
@@ -969,7 +969,7 @@
*/
float getHorizontalMultiplierForReachability(boolean isDeviceInBookMode) {
final int letterboxPositionForHorizontalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.getLetterboxPositionForHorizontalReachability(
isDeviceInBookMode);
switch (letterboxPositionForHorizontalReachability) {
case LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT:
@@ -985,7 +985,7 @@
}
}
- /*
+ /**
* Gets vertical position of a center of the letterboxed app window when reachability
* is enabled specified. 0 corresponds to the top side of the screen and 1 to the bottom side.
*
@@ -993,7 +993,7 @@
*/
float getVerticalMultiplierForReachability(boolean isDeviceInTabletopMode) {
final int letterboxPositionForVerticalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(
+ mAppCompatConfigurationPersister.getLetterboxPositionForVerticalReachability(
isDeviceInTabletopMode);
switch (letterboxPositionForVerticalReachability) {
case LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP:
@@ -1009,23 +1009,23 @@
}
}
- /*
+ /**
* Gets the horizontal position of the letterboxed app window when horizontal reachability is
* enabled.
*/
@LetterboxHorizontalReachabilityPosition
int getLetterboxPositionForHorizontalReachability(boolean isInFullScreenBookMode) {
- return mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
+ return mAppCompatConfigurationPersister.getLetterboxPositionForHorizontalReachability(
isInFullScreenBookMode);
}
- /*
+ /**
* Gets the vertical position of the letterboxed app window when vertical reachability is
* enabled.
*/
@LetterboxVerticalReachabilityPosition
int getLetterboxPositionForVerticalReachability(boolean isInFullScreenTabletopMode) {
- return mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(
+ return mAppCompatConfigurationPersister.getLetterboxPositionForVerticalReachability(
isInFullScreenTabletopMode);
}
@@ -1197,6 +1197,10 @@
|| mDeviceConfig.getFlagValue(KEY_ENABLE_LETTERBOX_TRANSLUCENT_ACTIVITY);
}
+ /**
+ * Sets whether we use the constraints override strategy for letterboxing when dealing
+ * with translucent activities.
+ */
void setTranslucentLetterboxingOverrideEnabled(
boolean translucentLetterboxingOverrideEnabled) {
mTranslucentLetterboxingOverrideEnabled = translucentLetterboxingOverrideEnabled;
@@ -1204,8 +1208,8 @@
/**
* Resets whether we use the constraints override strategy for letterboxing when dealing
- * with translucent activities
- * {@link mDeviceConfig.getFlagValue(KEY_ENABLE_LETTERBOX_TRANSLUCENT_ACTIVITY)}.
+ * with translucent activities, which means mDeviceConfig.getFlagValue(
+ * KEY_ENABLE_LETTERBOX_TRANSLUCENT_ACTIVITY) will be used.
*/
void resetTranslucentLetterboxingEnabled() {
setTranslucentLetterboxingOverrideEnabled(false);
@@ -1215,11 +1219,11 @@
private void updatePositionForHorizontalReachability(boolean isDeviceInBookMode,
Function<Integer, Integer> newHorizonalPositionFun) {
final int letterboxPositionForHorizontalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.getLetterboxPositionForHorizontalReachability(
isDeviceInBookMode);
final int nextHorizontalPosition = newHorizonalPositionFun.apply(
letterboxPositionForHorizontalReachability);
- mLetterboxConfigurationPersister.setLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForHorizontalReachability(
isDeviceInBookMode, nextHorizontalPosition);
}
@@ -1227,11 +1231,11 @@
private void updatePositionForVerticalReachability(boolean isDeviceInTabletopMode,
Function<Integer, Integer> newVerticalPositionFun) {
final int letterboxPositionForVerticalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(
+ mAppCompatConfigurationPersister.getLetterboxPositionForVerticalReachability(
isDeviceInTabletopMode);
final int nextVerticalPosition = newVerticalPositionFun.apply(
letterboxPositionForVerticalReachability);
- mLetterboxConfigurationPersister.setLetterboxPositionForVerticalReachability(
+ mAppCompatConfigurationPersister.setLetterboxPositionForVerticalReachability(
isDeviceInTabletopMode, nextVerticalPosition);
}
diff --git a/services/core/java/com/android/server/wm/LetterboxConfigurationPersister.java b/services/core/java/com/android/server/wm/AppCompatConfigurationPersister.java
similarity index 96%
rename from services/core/java/com/android/server/wm/LetterboxConfigurationPersister.java
rename to services/core/java/com/android/server/wm/AppCompatConfigurationPersister.java
index 38aa903..852ce04 100644
--- a/services/core/java/com/android/server/wm/LetterboxConfigurationPersister.java
+++ b/services/core/java/com/android/server/wm/AppCompatConfigurationPersister.java
@@ -30,8 +30,8 @@
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.server.wm.LetterboxConfiguration.LetterboxHorizontalReachabilityPosition;
-import com.android.server.wm.LetterboxConfiguration.LetterboxVerticalReachabilityPosition;
+import com.android.server.wm.AppCompatConfiguration.LetterboxHorizontalReachabilityPosition;
+import com.android.server.wm.AppCompatConfiguration.LetterboxVerticalReachabilityPosition;
import com.android.server.wm.nano.WindowManagerProtos;
import java.io.ByteArrayOutputStream;
@@ -45,12 +45,12 @@
/**
* Persists the values of letterboxPositionForHorizontalReachability and
- * letterboxPositionForVerticalReachability for {@link LetterboxConfiguration}.
+ * letterboxPositionForVerticalReachability for {@link AppCompatConfiguration}.
*/
-class LetterboxConfigurationPersister {
+class AppCompatConfigurationPersister {
private static final String TAG =
- TAG_WITH_CLASS_NAME ? "LetterboxConfigurationPersister" : TAG_WM;
+ TAG_WITH_CLASS_NAME ? "AppCompatConfigurationPersister" : TAG_WM;
private static final String LETTERBOX_CONFIGURATION_FILENAME = "letterbox_config";
@@ -94,7 +94,7 @@
@NonNull
private final PersisterQueue mPersisterQueue;
- LetterboxConfigurationPersister(
+ AppCompatConfigurationPersister(
@NonNull Supplier<Integer> defaultHorizontalReachabilitySupplier,
@NonNull Supplier<Integer> defaultVerticalReachabilitySupplier,
@NonNull Supplier<Integer> defaultBookModeReachabilitySupplier,
@@ -106,7 +106,7 @@
}
@VisibleForTesting
- LetterboxConfigurationPersister(
+ AppCompatConfigurationPersister(
@NonNull Supplier<Integer> defaultHorizontalReachabilitySupplier,
@NonNull Supplier<Integer> defaultVerticalReachabilitySupplier,
@NonNull Supplier<Integer> defaultBookModeReachabilitySupplier,
@@ -233,7 +233,7 @@
letterboxData.letterboxPositionForTabletopModeReachability;
} catch (IOException ioe) {
Slog.e(TAG,
- "Error reading from LetterboxConfigurationPersister. "
+ "Error reading from AppCompatConfigurationPersister. "
+ "Using default values!", ioe);
useDefaultValue();
} finally {
@@ -242,7 +242,7 @@
fis.close();
} catch (IOException e) {
useDefaultValue();
- Slog.e(TAG, "Error reading from LetterboxConfigurationPersister ", e);
+ Slog.e(TAG, "Error reading from AppCompatConfigurationPersister ", e);
}
}
}
@@ -332,7 +332,7 @@
} catch (IOException ioe) {
mFileToUpdate.failWrite(fos);
Slog.e(TAG,
- "Error writing to LetterboxConfigurationPersister. "
+ "Error writing to AppCompatConfigurationPersister. "
+ "Using default values!", ioe);
} finally {
if (mOnComplete != null) {
diff --git a/services/core/java/com/android/server/wm/AppCompatController.java b/services/core/java/com/android/server/wm/AppCompatController.java
index 3eed96d..f9e2507 100644
--- a/services/core/java/com/android/server/wm/AppCompatController.java
+++ b/services/core/java/com/android/server/wm/AppCompatController.java
@@ -44,9 +44,9 @@
final OptPropFactory optPropBuilder = new OptPropFactory(packageManager,
activityRecord.packageName);
mTransparentPolicy = new TransparentPolicy(activityRecord,
- wmService.mLetterboxConfiguration);
+ wmService.mAppCompatConfiguration);
mAppCompatOverrides = new AppCompatOverrides(activityRecord,
- wmService.mLetterboxConfiguration, optPropBuilder);
+ wmService.mAppCompatConfiguration, optPropBuilder);
mOrientationPolicy = new AppCompatOrientationPolicy(activityRecord, mAppCompatOverrides);
mAppCompatAspectRatioPolicy = new AppCompatAspectRatioPolicy(activityRecord,
mTransparentPolicy, mAppCompatOverrides);
diff --git a/services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java b/services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java
index 9bf8011..0adf825 100644
--- a/services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java
+++ b/services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java
@@ -59,7 +59,7 @@
final OrientationOverridesState mOrientationOverridesState;
AppCompatOrientationOverrides(@NonNull ActivityRecord activityRecord,
- @NonNull LetterboxConfiguration letterboxConfiguration,
+ @NonNull AppCompatConfiguration appCompatConfiguration,
@NonNull OptPropFactory optPropBuilder,
@NonNull AppCompatCameraOverrides appCompatCameraOverrides) {
mActivityRecord = activityRecord;
@@ -67,7 +67,7 @@
mOrientationOverridesState = new OrientationOverridesState(mActivityRecord,
System::currentTimeMillis);
final BooleanSupplier isPolicyForIgnoringRequestedOrientationEnabled = asLazy(
- letterboxConfiguration::isPolicyForIgnoringRequestedOrientationEnabled);
+ appCompatConfiguration::isPolicyForIgnoringRequestedOrientationEnabled);
mIgnoreRequestedOrientationOptProp = optPropBuilder.create(
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION,
isPolicyForIgnoringRequestedOrientationEnabled);
diff --git a/services/core/java/com/android/server/wm/AppCompatOverrides.java b/services/core/java/com/android/server/wm/AppCompatOverrides.java
index f6f93f9..b611ba9 100644
--- a/services/core/java/com/android/server/wm/AppCompatOverrides.java
+++ b/services/core/java/com/android/server/wm/AppCompatOverrides.java
@@ -42,7 +42,7 @@
private static final String TAG = TAG_WITH_CLASS_NAME ? "AppCompatOverrides" : TAG_ATM;
@NonNull
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
@NonNull
private final ActivityRecord mActivityRecord;
@@ -63,23 +63,23 @@
private final AppCompatAspectRatioOverrides mAppCompatAspectRatioOverrides;
AppCompatOverrides(@NonNull ActivityRecord activityRecord,
- @NonNull LetterboxConfiguration letterboxConfiguration,
+ @NonNull AppCompatConfiguration appCompatConfiguration,
@NonNull OptPropFactory optPropBuilder) {
- mLetterboxConfiguration = letterboxConfiguration;
+ mAppCompatConfiguration = appCompatConfiguration;
mActivityRecord = activityRecord;
mAppCompatCameraOverrides = new AppCompatCameraOverrides(mActivityRecord,
- mLetterboxConfiguration, optPropBuilder);
+ mAppCompatConfiguration, optPropBuilder);
mAppCompatOrientationOverrides = new AppCompatOrientationOverrides(mActivityRecord,
- mLetterboxConfiguration, optPropBuilder, mAppCompatCameraOverrides);
+ mAppCompatConfiguration, optPropBuilder, mAppCompatCameraOverrides);
// TODO(b/341903757) Remove BooleanSuppliers after fixing dependency with reachability.
mAppCompatAspectRatioOverrides = new AppCompatAspectRatioOverrides(activityRecord,
- mLetterboxConfiguration, optPropBuilder,
+ mAppCompatConfiguration, optPropBuilder,
activityRecord.mLetterboxUiController::isDisplayFullScreenAndInPosture,
activityRecord.mLetterboxUiController::getHorizontalPositionMultiplier);
mFakeFocusOptProp = optPropBuilder.create(PROPERTY_COMPAT_ENABLE_FAKE_FOCUS,
- mLetterboxConfiguration::isCompatFakeFocusEnabled);
+ mAppCompatConfiguration::isCompatFakeFocusEnabled);
mAllowOrientationOverrideOptProp = optPropBuilder.create(
diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java
index a38ac9b..efd5202 100644
--- a/services/core/java/com/android/server/wm/ConfigurationContainer.java
+++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java
@@ -22,23 +22,14 @@
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
-import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.app.WindowConfiguration.activityTypeToString;
-import static android.app.WindowConfiguration.isFloating;
import static android.app.WindowConfiguration.windowingModeToString;
import static android.app.WindowConfigurationProto.WINDOWING_MODE;
import static android.content.ConfigurationProto.WINDOW_CONFIGURATION;
-import static android.content.pm.ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED;
-import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_INSETS_DECOUPLED_CONFIGURATION;
-import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
-import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
-import static android.content.res.Configuration.ORIENTATION_UNDEFINED;
-import static android.view.Surface.ROTATION_270;
-import static android.view.Surface.ROTATION_90;
import static com.android.server.wm.ConfigurationContainerProto.FULL_CONFIGURATION;
import static com.android.server.wm.ConfigurationContainerProto.MERGED_OVERRIDE_CONFIGURATION;
@@ -47,14 +38,11 @@
import android.annotation.CallSuper;
import android.annotation.NonNull;
import android.app.WindowConfiguration;
-import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.LocaleList;
-import android.util.DisplayMetrics;
import android.util.proto.ProtoOutputStream;
-import android.view.DisplayInfo;
import com.android.internal.annotations.VisibleForTesting;
@@ -185,111 +173,6 @@
mResolvedOverrideConfiguration.setTo(mRequestedOverrideConfiguration);
}
- /**
- * If necessary, override configuration fields related to app bounds.
- * This will happen when the app is targeting SDK earlier than 35.
- * The insets and configuration has decoupled since SDK level 35, to make the system
- * compatible to existing apps, override the configuration with legacy metrics. In legacy
- * metrics, fields such as appBounds will exclude some of the system bar areas.
- * The override contains all potentially affected fields in Configuration, including
- * screenWidthDp, screenHeightDp, smallestScreenWidthDp, and orientation.
- * All overrides to those fields should be in this method.
- *
- * TODO: Consider integrate this with computeConfigByResolveHint()
- */
- static void applySizeOverrideIfNeeded(DisplayContent displayContent, ApplicationInfo appInfo,
- Configuration newParentConfiguration, Configuration inOutConfig,
- boolean optOutEdgeToEdge, boolean hasFixedRotationTransform,
- boolean hasCompatDisplayInsets) {
- if (displayContent == null) {
- return;
- }
- final boolean useOverrideInsetsForConfig =
- displayContent.mWmService.mFlags.mInsetsDecoupledConfiguration
- ? !appInfo.isChangeEnabled(INSETS_DECOUPLED_CONFIGURATION_ENFORCED)
- && !appInfo.isChangeEnabled(
- OVERRIDE_ENABLE_INSETS_DECOUPLED_CONFIGURATION)
- : appInfo.isChangeEnabled(OVERRIDE_ENABLE_INSETS_DECOUPLED_CONFIGURATION);
- final int parentWindowingMode =
- newParentConfiguration.windowConfiguration.getWindowingMode();
- final boolean isFloating = isFloating(parentWindowingMode)
- // Check the requested windowing mode of activity as well in case it is
- // switching between PiP and fullscreen.
- && (inOutConfig.windowConfiguration.getWindowingMode() == WINDOWING_MODE_UNDEFINED
- || isFloating(inOutConfig.windowConfiguration.getWindowingMode()));
- final Rect parentBounds = newParentConfiguration.windowConfiguration.getBounds();
- int rotation = newParentConfiguration.windowConfiguration.getRotation();
- if (rotation == ROTATION_UNDEFINED && !hasFixedRotationTransform) {
- rotation = displayContent.getRotation();
- }
- if (!optOutEdgeToEdge && (!useOverrideInsetsForConfig
- || hasCompatDisplayInsets
- || isFloating
- || rotation == ROTATION_UNDEFINED)) {
- // If the insets configuration decoupled logic is not enabled for the app, or the app
- // already has a compat override, or the context doesn't contain enough info to
- // calculate the override, skip the override.
- return;
- }
- // Make sure the orientation related fields will be updated by the override insets, because
- // fixed rotation has assigned the fields from display's configuration.
- if (hasFixedRotationTransform) {
- inOutConfig.windowConfiguration.setAppBounds(null);
- inOutConfig.screenWidthDp = Configuration.SCREEN_WIDTH_DP_UNDEFINED;
- inOutConfig.screenHeightDp = Configuration.SCREEN_HEIGHT_DP_UNDEFINED;
- inOutConfig.smallestScreenWidthDp = Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
- inOutConfig.orientation = ORIENTATION_UNDEFINED;
- }
-
- // Override starts here.
- final boolean rotated = (rotation == ROTATION_90 || rotation == ROTATION_270);
- final int dw = rotated
- ? displayContent.mBaseDisplayHeight
- : displayContent.mBaseDisplayWidth;
- final int dh = rotated
- ? displayContent.mBaseDisplayWidth
- : displayContent.mBaseDisplayHeight;
- final Rect nonDecorFrame = displayContent.getDisplayPolicy()
- .getDecorInsetsInfo(rotation, dw, dh).mOverrideNonDecorFrame;
- // This should be the only place override the configuration for ActivityRecord. Override
- // the value if not calculated yet.
- Rect outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
- if (outAppBounds == null || outAppBounds.isEmpty()) {
- inOutConfig.windowConfiguration.setAppBounds(parentBounds);
- outAppBounds = inOutConfig.windowConfiguration.getAppBounds();
- outAppBounds.intersect(nonDecorFrame);
- }
- float density = inOutConfig.densityDpi;
- if (density == Configuration.DENSITY_DPI_UNDEFINED) {
- density = newParentConfiguration.densityDpi;
- }
- density *= DisplayMetrics.DENSITY_DEFAULT_SCALE;
- if (inOutConfig.screenWidthDp == Configuration.SCREEN_WIDTH_DP_UNDEFINED) {
- inOutConfig.screenWidthDp = (int) (outAppBounds.width() / density + 0.5f);
- }
- if (inOutConfig.screenHeightDp == Configuration.SCREEN_HEIGHT_DP_UNDEFINED) {
- inOutConfig.screenHeightDp = (int) (outAppBounds.height() / density + 0.5f);
- }
- if (inOutConfig.smallestScreenWidthDp == Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED
- && parentWindowingMode == WINDOWING_MODE_FULLSCREEN) {
- // For the case of PIP transition and multi-window environment, the
- // smallestScreenWidthDp is handled already. Override only if the app is in
- // fullscreen.
- final DisplayInfo info = new DisplayInfo(displayContent.getDisplayInfo());
- displayContent.computeSizeRanges(info, rotated, dw, dh,
- displayContent.getDisplayMetrics().density,
- inOutConfig, true /* overrideConfig */);
- }
-
- // It's possible that screen size will be considered in different orientation with or
- // without considering the system bar insets. Override orientation as well.
- if (inOutConfig.orientation == ORIENTATION_UNDEFINED) {
- inOutConfig.orientation = (inOutConfig.screenWidthDp <= inOutConfig.screenHeightDp)
- ? ORIENTATION_PORTRAIT
- : ORIENTATION_LANDSCAPE;
- }
- }
-
/** Returns {@code true} if requested override override configuration is not empty. */
boolean hasRequestedOverrideConfiguration() {
return mHasOverrideConfiguration;
diff --git a/services/core/java/com/android/server/wm/DesktopModeBoundsCalculator.java b/services/core/java/com/android/server/wm/DesktopModeBoundsCalculator.java
new file mode 100644
index 0000000..f9f5058
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DesktopModeBoundsCalculator.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static com.android.server.wm.LaunchParamsUtil.applyLayoutGravity;
+import static com.android.server.wm.LaunchParamsUtil.calculateLayoutBounds;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.ActivityOptions;
+import android.content.pm.ActivityInfo;
+import android.graphics.Rect;
+import android.os.SystemProperties;
+import android.util.Size;
+import android.view.Gravity;
+
+import java.util.function.Consumer;
+
+/**
+ * Calculates the value of the {@link LaunchParamsController.LaunchParams} bounds for the
+ * {@link DesktopModeLaunchParamsModifier}.
+ */
+public final class DesktopModeBoundsCalculator {
+
+ public static final float DESKTOP_MODE_INITIAL_BOUNDS_SCALE = SystemProperties
+ .getInt("persist.wm.debug.desktop_mode_initial_bounds_scale", 75) / 100f;
+
+ /**
+ * Updates launch bounds for an activity with respect to its activity options, window layout,
+ * android manifest and task configuration.
+ */
+ static void updateInitialBounds(@NonNull Task task, @Nullable ActivityInfo.WindowLayout layout,
+ @Nullable ActivityRecord activity, @Nullable ActivityOptions options,
+ @NonNull Rect outBounds, @NonNull Consumer<String> logger) {
+ // Use stable frame instead of raw frame to avoid launching freeform windows on top of
+ // stable insets, which usually are system widgets such as sysbar & navbar.
+ final TaskDisplayArea displayArea = task.getDisplayArea();
+ final Rect screenBounds = displayArea.getBounds();
+ final Rect stableBounds = new Rect();
+ displayArea.getStableRect(stableBounds);
+ final int desiredWidth = (int) (stableBounds.width() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
+ final int desiredHeight = (int) (stableBounds.height() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
+
+ if (options != null && options.getLaunchBounds() != null) {
+ outBounds.set(options.getLaunchBounds());
+ logger.accept("inherit-from-options=" + outBounds);
+ } else if (layout != null) {
+ final int verticalGravity = layout.gravity & Gravity.VERTICAL_GRAVITY_MASK;
+ final int horizontalGravity = layout.gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
+ if (layout.hasSpecifiedSize()) {
+ calculateLayoutBounds(stableBounds, layout, outBounds,
+ new Size(desiredWidth, desiredHeight));
+ applyLayoutGravity(verticalGravity, horizontalGravity, outBounds,
+ stableBounds);
+ logger.accept("layout specifies sizes, inheriting size and applying gravity");
+ } else if (verticalGravity > 0 || horizontalGravity > 0) {
+ calculateAndCentreInitialBounds(outBounds, screenBounds);
+ applyLayoutGravity(verticalGravity, horizontalGravity, outBounds,
+ stableBounds);
+ logger.accept("layout specifies gravity, applying desired bounds and gravity");
+ }
+ } else {
+ calculateAndCentreInitialBounds(outBounds, screenBounds);
+ logger.accept("layout not specified, applying desired bounds");
+ }
+ }
+
+ /**
+ * Calculates the initial height and width of a task in desktop mode and centers it within the
+ * window bounds.
+ */
+ private static void calculateAndCentreInitialBounds(@NonNull Rect outBounds,
+ @NonNull Rect screenBounds) {
+ // TODO(b/319819547): Account for app constraints so apps do not become letterboxed
+ // The desired dimensions that a fully resizable window should take when initially entering
+ // desktop mode. Calculated as a percentage of the available display area as defined by the
+ // DESKTOP_MODE_INITIAL_BOUNDS_SCALE.
+ final int desiredWidth = (int) (screenBounds.width() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
+ final int desiredHeight = (int) (screenBounds.height() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
+ outBounds.right = desiredWidth;
+ outBounds.bottom = desiredHeight;
+ outBounds.offset(screenBounds.centerX() - outBounds.centerX(),
+ screenBounds.centerY() - outBounds.centerY());
+ }
+}
diff --git a/services/core/java/com/android/server/wm/DesktopModeHelper.java b/services/core/java/com/android/server/wm/DesktopModeHelper.java
new file mode 100644
index 0000000..1f341147
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DesktopModeHelper.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.os.SystemProperties;
+
+import com.android.internal.R;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.window.flags.Flags;
+
+/**
+ * Constants for desktop mode feature
+ */
+public final class DesktopModeHelper {
+ /**
+ * Flag to indicate whether to restrict desktop mode to supported devices.
+ */
+ private static final boolean ENFORCE_DEVICE_RESTRICTIONS = SystemProperties.getBoolean(
+ "persist.wm.debug.desktop_mode_enforce_device_restrictions", true);
+
+ /** Whether desktop mode is enabled. */
+ static boolean isDesktopModeEnabled() {
+ return Flags.enableDesktopWindowingMode();
+ }
+
+ /**
+ * Return {@code true} if desktop mode should be restricted to supported devices.
+ */
+ @VisibleForTesting
+ static boolean shouldEnforceDeviceRestrictions() {
+ return ENFORCE_DEVICE_RESTRICTIONS;
+ }
+
+ /**
+ * Return {@code true} if the current device supports desktop mode.
+ */
+ // TODO(b/337819319): use a companion object instead.
+ @VisibleForTesting
+ static boolean isDesktopModeSupported(@NonNull Context context) {
+ return context.getResources().getBoolean(R.bool.config_isDesktopModeSupported);
+ }
+
+ /**
+ * Return {@code true} if desktop mode can be entered on the current device.
+ */
+ static boolean canEnterDesktopMode(@NonNull Context context) {
+ return isDesktopModeEnabled()
+ && (!shouldEnforceDeviceRestrictions() || isDesktopModeSupported(context));
+ }
+}
diff --git a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
index 50ac801..aacd3c6 100644
--- a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
@@ -18,28 +18,21 @@
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
-import static com.android.server.wm.LaunchParamsUtil.applyLayoutGravity;
-import static com.android.server.wm.LaunchParamsUtil.calculateLayoutBounds;
+import static com.android.server.wm.DesktopModeHelper.canEnterDesktopMode;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.pm.ActivityInfo;
-import android.graphics.Rect;
import android.os.SystemProperties;
-import android.util.Size;
import android.util.Slog;
-import android.view.Gravity;
-import com.android.internal.R;
-import com.android.internal.annotations.VisibleForTesting;
import com.android.server.wm.LaunchParamsController.LaunchParamsModifier;
-import com.android.window.flags.Flags;
/**
* The class that defines default launch params for tasks in desktop mode
*/
-public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
+class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
private static final String TAG =
TAG_WITH_CLASS_NAME ? "DesktopModeLaunchParamsModifier" : TAG_ATM;
@@ -67,8 +60,8 @@
public int onCalculate(@Nullable Task task, @Nullable ActivityInfo.WindowLayout layout,
@Nullable ActivityRecord activity, @Nullable ActivityRecord source,
@Nullable ActivityOptions options, @Nullable ActivityStarter.Request request, int phase,
- LaunchParamsController.LaunchParams currentParams,
- LaunchParamsController.LaunchParams outParams) {
+ @NonNull LaunchParamsController.LaunchParams currentParams,
+ @NonNull LaunchParamsController.LaunchParams outParams) {
initLogBuilder(task, activity);
int result = calculate(task, layout, activity, source, options, request, phase,
@@ -80,15 +73,15 @@
private int calculate(@Nullable Task task, @Nullable ActivityInfo.WindowLayout layout,
@Nullable ActivityRecord activity, @Nullable ActivityRecord source,
@Nullable ActivityOptions options, @Nullable ActivityStarter.Request request, int phase,
- LaunchParamsController.LaunchParams currentParams,
- LaunchParamsController.LaunchParams outParams) {
+ @NonNull LaunchParamsController.LaunchParams currentParams,
+ @NonNull LaunchParamsController.LaunchParams outParams) {
if (!canEnterDesktopMode(mContext)) {
appendLog("desktop mode is not enabled, skipping");
return RESULT_SKIP;
}
- if (task == null) {
+ if (task == null || !task.isAttached()) {
appendLog("task null, skipping");
return RESULT_SKIP;
}
@@ -123,60 +116,12 @@
return RESULT_SKIP;
}
- // Use stable frame instead of raw frame to avoid launching freeform windows on top of
- // stable insets, which usually are system widgets such as sysbar & navbar.
- final Rect stableBounds = new Rect();
- task.getDisplayArea().getStableRect(stableBounds);
- final int desiredWidth = (int) (stableBounds.width() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
- final int desiredHeight = (int) (stableBounds.height() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
-
- if (options != null && options.getLaunchBounds() != null) {
- outParams.mBounds.set(options.getLaunchBounds());
- appendLog("inherit-from-options=" + outParams.mBounds);
- } else if (layout != null) {
- final int verticalGravity = layout.gravity & Gravity.VERTICAL_GRAVITY_MASK;
- final int horizontalGravity = layout.gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
- if (layout.hasSpecifiedSize()) {
- calculateLayoutBounds(stableBounds, layout, outParams.mBounds,
- new Size(desiredWidth, desiredHeight));
- applyLayoutGravity(verticalGravity, horizontalGravity, outParams.mBounds,
- stableBounds);
- appendLog("layout specifies sizes, inheriting size and applying gravity");
- } else if (verticalGravity > 0 || horizontalGravity > 0) {
- calculateAndCentreInitialBounds(task, outParams);
- applyLayoutGravity(verticalGravity, horizontalGravity, outParams.mBounds,
- stableBounds);
- appendLog("layout specifies gravity, applying desired bounds and gravity");
- }
- } else {
- calculateAndCentreInitialBounds(task, outParams);
- appendLog("layout not specified, applying desired bounds");
- }
-
+ DesktopModeBoundsCalculator.updateInitialBounds(task, layout, activity, options,
+ outParams.mBounds, this::appendLog);
appendLog("final desktop mode task bounds set to %s", outParams.mBounds);
return RESULT_CONTINUE;
}
- /**
- * Calculates the initial height and width of a task in desktop mode and centers it within the
- * window bounds.
- */
- private void calculateAndCentreInitialBounds(Task task,
- LaunchParamsController.LaunchParams outParams) {
- // TODO(b/319819547): Account for app constraints so apps do not become letterboxed
- final Rect stableBounds = new Rect();
- task.getDisplayArea().getStableRect(stableBounds);
- // The desired dimensions that a fully resizable window should take when initially entering
- // desktop mode. Calculated as a percentage of the available display area as defined by the
- // DESKTOP_MODE_INITIAL_BOUNDS_SCALE.
- final int desiredWidth = (int) (stableBounds.width() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
- final int desiredHeight = (int) (stableBounds.height() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
- outParams.mBounds.right = desiredWidth;
- outParams.mBounds.bottom = desiredHeight;
- outParams.mBounds.offset(stableBounds.centerX() - outParams.mBounds.centerX(),
- stableBounds.centerY() - outParams.mBounds.centerY());
- }
-
private void initLogBuilder(Task task, ActivityRecord activity) {
if (DEBUG) {
mLogBuilder = new StringBuilder(
@@ -191,34 +136,4 @@
private void outputLog() {
if (DEBUG) Slog.d(TAG, mLogBuilder.toString());
}
-
- /** Whether desktop mode is enabled. */
- static boolean isDesktopModeEnabled() {
- return Flags.enableDesktopWindowingMode();
- }
-
- /**
- * Return {@code true} if desktop mode should be restricted to supported devices.
- */
- @VisibleForTesting
- static boolean enforceDeviceRestrictions() {
- return ENFORCE_DEVICE_RESTRICTIONS;
- }
-
- /**
- * Return {@code true} if the current device supports desktop mode.
- */
- // TODO(b/337819319): use a companion object instead.
- @VisibleForTesting
- static boolean isDesktopModeSupported(@NonNull Context context) {
- return context.getResources().getBoolean(R.bool.config_isDesktopModeSupported);
- }
-
- /**
- * Return {@code true} if desktop mode can be entered on the current device.
- */
- static boolean canEnterDesktopMode(@NonNull Context context) {
- return isDesktopModeEnabled()
- && (!enforceDeviceRestrictions() || isDesktopModeSupported(context));
- }
}
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index d2976b0..8272e16 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -326,7 +326,7 @@
DisplayRotationImmersiveAppCompatPolicy initImmersiveAppCompatPolicy(
WindowManagerService service, DisplayContent displayContent) {
return DisplayRotationImmersiveAppCompatPolicy.createIfNeeded(
- service.mLetterboxConfiguration, this, displayContent);
+ service.mAppCompatConfiguration, this, displayContent);
}
// Change the default value to the value specified in the sysprop
diff --git a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java
index 1a0124a..63fe94c 100644
--- a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java
@@ -247,7 +247,7 @@
* </ul>
*/
private boolean isTreatmentEnabledForDisplay() {
- return mWmService.mLetterboxConfiguration.isCameraCompatTreatmentEnabled()
+ return mWmService.mAppCompatConfiguration.isCameraCompatTreatmentEnabled()
&& mDisplayContent.getIgnoreOrientationRequest()
// TODO(b/225928882): Support camera compat rotation for external displays
&& mDisplayContent.getDisplay().getType() == TYPE_INTERNAL;
diff --git a/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java b/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java
index de70c4d..094434d 100644
--- a/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java
@@ -40,28 +40,28 @@
@Nullable
static DisplayRotationImmersiveAppCompatPolicy createIfNeeded(
- @NonNull final LetterboxConfiguration letterboxConfiguration,
+ @NonNull final AppCompatConfiguration appCompatConfiguration,
@NonNull final DisplayRotation displayRotation,
@NonNull final DisplayContent displayContent) {
- if (!letterboxConfiguration
+ if (!appCompatConfiguration
.isDisplayRotationImmersiveAppCompatPolicyEnabledAtBuildTime()) {
return null;
}
return new DisplayRotationImmersiveAppCompatPolicy(
- letterboxConfiguration, displayRotation, displayContent);
+ appCompatConfiguration, displayRotation, displayContent);
}
private final DisplayRotation mDisplayRotation;
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
private final DisplayContent mDisplayContent;
private DisplayRotationImmersiveAppCompatPolicy(
- @NonNull final LetterboxConfiguration letterboxConfiguration,
+ @NonNull final AppCompatConfiguration appCompatConfiguration,
@NonNull final DisplayRotation displayRotation,
@NonNull final DisplayContent displayContent) {
mDisplayRotation = displayRotation;
- mLetterboxConfiguration = letterboxConfiguration;
+ mAppCompatConfiguration = appCompatConfiguration;
mDisplayContent = displayContent;
}
@@ -80,14 +80,14 @@
* <li>Rotation will lead to letterboxing due to fixed orientation.
* <li>{@link DisplayContent#getIgnoreOrientationRequest} is {@code true}
* <li>This policy is enabled on the device, for details see
- * {@link LetterboxConfiguration#isDisplayRotationImmersiveAppCompatPolicyEnabled}
+ * {@link AppCompatConfiguration#isDisplayRotationImmersiveAppCompatPolicyEnabled}
* </ul>
*
* @param proposedRotation new proposed {@link Surface.Rotation} for the screen.
* @return {@code true}, if there is a need to lock screen rotation, {@code false} otherwise.
*/
boolean isRotationLockEnforced(@Surface.Rotation final int proposedRotation) {
- if (!mLetterboxConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled()) {
+ if (!mAppCompatConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled()) {
return false;
}
synchronized (mDisplayContent.mWmService.mGlobalLock) {
diff --git a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
index bf99ccd..d79c11ce 100644
--- a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
+++ b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
@@ -408,9 +408,8 @@
final boolean intersectsTopCutout = topDisplayCutout.intersects(
width - (windowWidth / 2), 0,
width + (windowWidth / 2), topDisplayCutout.bottom);
- if (mClingWindow != null &&
- (windowWidth < 0 || (width > 0 && intersectsTopCutout))) {
- final View iconView = mClingWindow.findViewById(R.id.immersive_cling_icon);
+ if (windowWidth < 0 || (width > 0 && intersectsTopCutout)) {
+ final View iconView = findViewById(R.id.immersive_cling_icon);
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)
iconView.getLayoutParams();
lp.topMargin = topDisplayCutout.bottom;
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java
index 235d6cd..be8e806 100644
--- a/services/core/java/com/android/server/wm/LetterboxUiController.java
+++ b/services/core/java/com/android/server/wm/LetterboxUiController.java
@@ -37,17 +37,17 @@
import static com.android.internal.util.FrameworkStatsLog.LETTERBOX_POSITION_CHANGED__POSITION_CHANGE__TOP_TO_CENTER;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
-import static com.android.server.wm.LetterboxConfiguration.letterboxBackgroundTypeToString;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
+import static com.android.server.wm.AppCompatConfiguration.letterboxBackgroundTypeToString;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -67,7 +67,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.LetterboxDetails;
-import com.android.server.wm.LetterboxConfiguration.LetterboxBackgroundType;
+import com.android.server.wm.AppCompatConfiguration.LetterboxBackgroundType;
import com.android.window.flags.Flags;
import java.io.PrintWriter;
@@ -81,7 +81,7 @@
private final Point mTmpPoint = new Point();
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
private final ActivityRecord mActivityRecord;
@@ -95,7 +95,7 @@
private boolean mDoubleTapEvent;
LetterboxUiController(WindowManagerService wmService, ActivityRecord activityRecord) {
- mLetterboxConfiguration = wmService.mLetterboxConfiguration;
+ mAppCompatConfiguration = wmService.mAppCompatConfiguration;
// Given activityRecord may not be fully constructed since LetterboxUiController
// is created in its constructor. It shouldn't be used in this constructor but it's safe
// to use it after since controller is only used in ActivityRecord.
@@ -345,7 +345,7 @@
private boolean shouldLetterboxHaveRoundedCorners() {
// TODO(b/214030873): remove once background is drawn for transparent activities
// Letterbox shouldn't have rounded corners if the activity is transparent
- return mLetterboxConfiguration.isLetterboxActivityCornersRounded()
+ return mAppCompatConfiguration.isLetterboxActivityCornersRounded()
&& mActivityRecord.fillsParent();
}
@@ -382,13 +382,13 @@
return isHorizontalReachabilityEnabled(parentConfiguration)
// Using the last global dynamic position to avoid "jumps" when moving
// between apps or activities.
- ? mLetterboxConfiguration.getHorizontalMultiplierForReachability(bookModeEnabled)
- : mLetterboxConfiguration.getLetterboxHorizontalPositionMultiplier(bookModeEnabled);
+ ? mAppCompatConfiguration.getHorizontalMultiplierForReachability(bookModeEnabled)
+ : mAppCompatConfiguration.getLetterboxHorizontalPositionMultiplier(bookModeEnabled);
}
private boolean isFullScreenAndBookModeEnabled() {
return isDisplayFullScreenAndInPosture(/* isTabletop */ false)
- && mLetterboxConfiguration.getIsAutomaticReachabilityInBookModeEnabled();
+ && mAppCompatConfiguration.getIsAutomaticReachabilityInBookModeEnabled();
}
float getVerticalPositionMultiplier(Configuration parentConfiguration) {
@@ -398,8 +398,8 @@
return isVerticalReachabilityEnabled(parentConfiguration)
// Using the last global dynamic position to avoid "jumps" when moving
// between apps or activities.
- ? mLetterboxConfiguration.getVerticalMultiplierForReachability(tabletopMode)
- : mLetterboxConfiguration.getLetterboxVerticalPositionMultiplier(tabletopMode);
+ ? mAppCompatConfiguration.getVerticalMultiplierForReachability(tabletopMode)
+ : mAppCompatConfiguration.getLetterboxVerticalPositionMultiplier(tabletopMode);
}
float getFixedOrientationLetterboxAspectRatio(@NonNull Configuration parentConfiguration) {
@@ -408,14 +408,14 @@
}
boolean isLetterboxEducationEnabled() {
- return mLetterboxConfiguration.getIsEducationEnabled();
+ return mAppCompatConfiguration.getIsEducationEnabled();
}
/**
* @return {@value true} if the resulting app is letterboxed in a way defined as thin.
*/
boolean isVerticalThinLetterboxed() {
- final int thinHeight = mLetterboxConfiguration.getThinLetterboxHeightPx();
+ final int thinHeight = mAppCompatConfiguration.getThinLetterboxHeightPx();
if (thinHeight < 0) {
return false;
}
@@ -432,7 +432,7 @@
* @return {@value true} if the resulting app is pillarboxed in a way defined as thin.
*/
boolean isHorizontalThinLetterboxed() {
- final int thinWidth = mLetterboxConfiguration.getThinLetterboxWidthPx();
+ final int thinWidth = mAppCompatConfiguration.getThinLetterboxWidthPx();
if (thinWidth < 0) {
return false;
}
@@ -477,17 +477,17 @@
.shouldOverrideMinAspectRatio();
}
- @LetterboxConfiguration.LetterboxVerticalReachabilityPosition
+ @AppCompatConfiguration.LetterboxVerticalReachabilityPosition
int getLetterboxPositionForVerticalReachability() {
final boolean isInFullScreenTabletopMode = isDisplayFullScreenAndSeparatingHinge();
- return mLetterboxConfiguration.getLetterboxPositionForVerticalReachability(
+ return mAppCompatConfiguration.getLetterboxPositionForVerticalReachability(
isInFullScreenTabletopMode);
}
- @LetterboxConfiguration.LetterboxHorizontalReachabilityPosition
+ @AppCompatConfiguration.LetterboxHorizontalReachabilityPosition
int getLetterboxPositionForHorizontalReachability() {
final boolean isInFullScreenBookMode = isFullScreenAndBookModeEnabled();
- return mLetterboxConfiguration.getLetterboxPositionForHorizontalReachability(
+ return mAppCompatConfiguration.getLetterboxPositionForHorizontalReachability(
isInFullScreenBookMode);
}
@@ -503,12 +503,12 @@
}
boolean isInFullScreenBookMode = isDisplayFullScreenAndSeparatingHinge()
- && mLetterboxConfiguration.getIsAutomaticReachabilityInBookModeEnabled();
- int letterboxPositionForHorizontalReachability = mLetterboxConfiguration
+ && mAppCompatConfiguration.getIsAutomaticReachabilityInBookModeEnabled();
+ int letterboxPositionForHorizontalReachability = mAppCompatConfiguration
.getLetterboxPositionForHorizontalReachability(isInFullScreenBookMode);
if (mLetterbox.getInnerFrame().left > x) {
// Moving to the next stop on the left side of the app window: right > center > left.
- mLetterboxConfiguration.movePositionForHorizontalReachabilityToNextLeftStop(
+ mAppCompatConfiguration.movePositionForHorizontalReachabilityToNextLeftStop(
isInFullScreenBookMode);
int changeToLog =
letterboxPositionForHorizontalReachability
@@ -519,7 +519,7 @@
mDoubleTapEvent = true;
} else if (mLetterbox.getInnerFrame().right < x) {
// Moving to the next stop on the right side of the app window: left > center > right.
- mLetterboxConfiguration.movePositionForHorizontalReachabilityToNextRightStop(
+ mAppCompatConfiguration.movePositionForHorizontalReachabilityToNextRightStop(
isInFullScreenBookMode);
int changeToLog =
letterboxPositionForHorizontalReachability
@@ -544,11 +544,11 @@
return;
}
boolean isInFullScreenTabletopMode = isDisplayFullScreenAndSeparatingHinge();
- int letterboxPositionForVerticalReachability = mLetterboxConfiguration
+ int letterboxPositionForVerticalReachability = mAppCompatConfiguration
.getLetterboxPositionForVerticalReachability(isInFullScreenTabletopMode);
if (mLetterbox.getInnerFrame().top > y) {
// Moving to the next stop on the top side of the app window: bottom > center > top.
- mLetterboxConfiguration.movePositionForVerticalReachabilityToNextTopStop(
+ mAppCompatConfiguration.movePositionForVerticalReachabilityToNextTopStop(
isInFullScreenTabletopMode);
int changeToLog =
letterboxPositionForVerticalReachability
@@ -559,7 +559,7 @@
mDoubleTapEvent = true;
} else if (mLetterbox.getInnerFrame().bottom < y) {
// Moving to the next stop on the bottom side of the app window: top > center > bottom.
- mLetterboxConfiguration.movePositionForVerticalReachabilityToNextBottomStop(
+ mAppCompatConfiguration.movePositionForVerticalReachabilityToNextBottomStop(
isInFullScreenTabletopMode);
int changeToLog =
letterboxPositionForVerticalReachability
@@ -596,7 +596,7 @@
.getTransparentPolicy().getFirstOpaqueActivity()
.map(ActivityRecord::getScreenResolvedBounds)
.orElse(mActivityRecord.getScreenResolvedBounds());
- return mLetterboxConfiguration.getIsHorizontalReachabilityEnabled()
+ return mAppCompatConfiguration.getIsHorizontalReachabilityEnabled()
&& parentConfiguration.windowConfiguration.getWindowingMode()
== WINDOWING_MODE_FULLSCREEN
// Check whether the activity fills the parent vertically.
@@ -641,7 +641,7 @@
.getTransparentPolicy().getFirstOpaqueActivity()
.map(ActivityRecord::getScreenResolvedBounds)
.orElse(mActivityRecord.getScreenResolvedBounds());
- return mLetterboxConfiguration.getIsVerticalReachabilityEnabled()
+ return mAppCompatConfiguration.getIsVerticalReachabilityEnabled()
&& parentConfiguration.windowConfiguration.getWindowingMode()
== WINDOWING_MODE_FULLSCREEN
// Check whether the activity fills the parent horizontally.
@@ -681,7 +681,7 @@
return Color.valueOf(Color.BLACK);
}
@LetterboxBackgroundType int letterboxBackgroundType =
- mLetterboxConfiguration.getLetterboxBackgroundType();
+ mAppCompatConfiguration.getLetterboxBackgroundType();
TaskDescription taskDescription = mActivityRecord.taskDescription;
switch (letterboxBackgroundType) {
case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
@@ -697,7 +697,7 @@
case LETTERBOX_BACKGROUND_WALLPAPER:
if (hasWallpaperBackgroundForLetterbox()) {
// Color is used for translucent scrim that dims wallpaper.
- return mLetterboxConfiguration.getLetterboxBackgroundColor();
+ return mAppCompatConfiguration.getLetterboxBackgroundColor();
}
Slog.w(TAG, "Wallpaper option is selected for letterbox background but "
+ "blur is not supported by a device or not supported in the current "
@@ -705,14 +705,14 @@
+ "provided so using solid color background");
break;
case LETTERBOX_BACKGROUND_SOLID_COLOR:
- return mLetterboxConfiguration.getLetterboxBackgroundColor();
+ return mAppCompatConfiguration.getLetterboxBackgroundColor();
default:
throw new AssertionError(
"Unexpected letterbox background type: " + letterboxBackgroundType);
}
// If picked option configured incorrectly or not supported then default to a solid color
// background.
- return mLetterboxConfiguration.getLetterboxBackgroundColor();
+ return mAppCompatConfiguration.getLetterboxBackgroundColor();
}
private void updateRoundedCornersIfNeeded(final WindowState mainWindow) {
@@ -771,7 +771,7 @@
private boolean requiresRoundedCorners(final WindowState mainWindow) {
return isLetterboxedNotForDisplayCutout(mainWindow)
- && mLetterboxConfiguration.isLetterboxActivityCornersRounded();
+ && mAppCompatConfiguration.isLetterboxActivityCornersRounded();
}
// Returns rounded corners radius the letterboxed activity should have based on override in
@@ -785,8 +785,8 @@
}
final int radius;
- if (mLetterboxConfiguration.getLetterboxActivityCornersRadius() >= 0) {
- radius = mLetterboxConfiguration.getLetterboxActivityCornersRadius();
+ if (mAppCompatConfiguration.getLetterboxActivityCornersRadius() >= 0) {
+ radius = mAppCompatConfiguration.getLetterboxActivityCornersRadius();
} else {
final InsetsState insetsState = mainWindow.getInsetsState();
radius = Math.min(
@@ -850,7 +850,7 @@
private void updateWallpaperForLetterbox(WindowState mainWindow) {
@LetterboxBackgroundType int letterboxBackgroundType =
- mLetterboxConfiguration.getLetterboxBackgroundType();
+ mAppCompatConfiguration.getLetterboxBackgroundType();
boolean wallpaperShouldBeShown =
letterboxBackgroundType == LETTERBOX_BACKGROUND_WALLPAPER
// Don't use wallpaper as a background if letterboxed for display cutout.
@@ -868,18 +868,18 @@
}
private int getLetterboxWallpaperBlurRadiusPx() {
- int blurRadius = mLetterboxConfiguration.getLetterboxBackgroundWallpaperBlurRadiusPx();
+ int blurRadius = mAppCompatConfiguration.getLetterboxBackgroundWallpaperBlurRadiusPx();
return Math.max(blurRadius, 0);
}
private float getLetterboxWallpaperDarkScrimAlpha() {
- float alpha = mLetterboxConfiguration.getLetterboxBackgroundWallpaperDarkScrimAlpha();
+ float alpha = mAppCompatConfiguration.getLetterboxBackgroundWallpaperDarkScrimAlpha();
// No scrim by default.
return (alpha < 0 || alpha >= 1) ? 0.0f : alpha;
}
private boolean isLetterboxWallpaperBlurSupported() {
- return mLetterboxConfiguration.mContext.getSystemService(WindowManager.class)
+ return mAppCompatConfiguration.mContext.getSystemService(WindowManager.class)
.isCrossWindowBlurEnabled();
}
@@ -911,10 +911,10 @@
getLetterboxBackgroundColor().toArgb()));
pw.println(prefix + " letterboxBackgroundType="
+ letterboxBackgroundTypeToString(
- mLetterboxConfiguration.getLetterboxBackgroundType()));
+ mAppCompatConfiguration.getLetterboxBackgroundType()));
pw.println(prefix + " letterboxCornerRadius="
+ getRoundedCornersRadius(mainWin));
- if (mLetterboxConfiguration.getLetterboxBackgroundType()
+ if (mAppCompatConfiguration.getLetterboxBackgroundType()
== LETTERBOX_BACKGROUND_WALLPAPER) {
pw.println(prefix + " isLetterboxWallpaperBlurSupported="
+ isLetterboxWallpaperBlurSupported());
@@ -932,19 +932,19 @@
pw.println(prefix + " letterboxVerticalPositionMultiplier="
+ getVerticalPositionMultiplier(mActivityRecord.getParent().getConfiguration()));
pw.println(prefix + " letterboxPositionForHorizontalReachability="
- + LetterboxConfiguration.letterboxHorizontalReachabilityPositionToString(
- mLetterboxConfiguration.getLetterboxPositionForHorizontalReachability(false)));
+ + AppCompatConfiguration.letterboxHorizontalReachabilityPositionToString(
+ mAppCompatConfiguration.getLetterboxPositionForHorizontalReachability(false)));
pw.println(prefix + " letterboxPositionForVerticalReachability="
- + LetterboxConfiguration.letterboxVerticalReachabilityPositionToString(
- mLetterboxConfiguration.getLetterboxPositionForVerticalReachability(false)));
+ + AppCompatConfiguration.letterboxVerticalReachabilityPositionToString(
+ mAppCompatConfiguration.getLetterboxPositionForVerticalReachability(false)));
pw.println(prefix + " fixedOrientationLetterboxAspectRatio="
- + mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio());
+ + mAppCompatConfiguration.getFixedOrientationLetterboxAspectRatio());
pw.println(prefix + " defaultMinAspectRatioForUnresizableApps="
- + mLetterboxConfiguration.getDefaultMinAspectRatioForUnresizableApps());
+ + mAppCompatConfiguration.getDefaultMinAspectRatioForUnresizableApps());
pw.println(prefix + " isSplitScreenAspectRatioForUnresizableAppsEnabled="
- + mLetterboxConfiguration.getIsSplitScreenAspectRatioForUnresizableAppsEnabled());
+ + mAppCompatConfiguration.getIsSplitScreenAspectRatioForUnresizableAppsEnabled());
pw.println(prefix + " isDisplayAspectRatioEnabledForFixedOrientationLetterbox="
- + mLetterboxConfiguration
+ + mAppCompatConfiguration
.getIsDisplayAspectRatioEnabledForFixedOrientationLetterbox());
}
@@ -971,7 +971,7 @@
}
private int letterboxHorizontalReachabilityPositionToLetterboxPosition(
- @LetterboxConfiguration.LetterboxHorizontalReachabilityPosition int position) {
+ @AppCompatConfiguration.LetterboxHorizontalReachabilityPosition int position) {
switch (position) {
case LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT:
return APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__LEFT;
@@ -987,7 +987,7 @@
}
private int letterboxVerticalReachabilityPositionToLetterboxPosition(
- @LetterboxConfiguration.LetterboxVerticalReachabilityPosition int position) {
+ @AppCompatConfiguration.LetterboxVerticalReachabilityPosition int position) {
switch (position) {
case LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP:
return APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__TOP;
@@ -1005,13 +1005,13 @@
int getLetterboxPositionForLogging() {
int positionToLog = APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__UNKNOWN_POSITION;
if (isHorizontalReachabilityEnabled()) {
- int letterboxPositionForHorizontalReachability = mLetterboxConfiguration
+ int letterboxPositionForHorizontalReachability = mAppCompatConfiguration
.getLetterboxPositionForHorizontalReachability(
isDisplayFullScreenAndInPosture(/* isTabletop */ false));
positionToLog = letterboxHorizontalReachabilityPositionToLetterboxPosition(
letterboxPositionForHorizontalReachability);
} else if (isVerticalReachabilityEnabled()) {
- int letterboxPositionForVerticalReachability = mLetterboxConfiguration
+ int letterboxPositionForVerticalReachability = mAppCompatConfiguration
.getLetterboxPositionForVerticalReachability(
isDisplayFullScreenAndInPosture(/* isTabletop */ true));
positionToLog = letterboxVerticalReachabilityPositionToLetterboxPosition(
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index f5108f5b..c26684f 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -324,19 +324,19 @@
}
@Override
- public boolean performHapticFeedback(int effectId, boolean always, boolean fromIme) {
+ public boolean performHapticFeedback(int effectId, int flags, int privFlags) {
final long ident = Binder.clearCallingIdentity();
try {
- return mService.mPolicy.performHapticFeedback(mUid, mPackageName,
- effectId, always, null, fromIme);
+ return mService.mPolicy.performHapticFeedback(mUid, mPackageName, effectId, null, flags,
+ privFlags);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
@Override
- public void performHapticFeedbackAsync(int effectId, boolean always, boolean fromIme) {
- performHapticFeedback(effectId, always, fromIme);
+ public void performHapticFeedbackAsync(int effectId, int flags, int privFlags) {
+ performHapticFeedback(effectId, flags, privFlags);
}
/* Drag/drop */
diff --git a/services/core/java/com/android/server/wm/StartingSurfaceController.java b/services/core/java/com/android/server/wm/StartingSurfaceController.java
index cff40c7..a1e6701 100644
--- a/services/core/java/com/android/server/wm/StartingSurfaceController.java
+++ b/services/core/java/com/android/server/wm/StartingSurfaceController.java
@@ -146,7 +146,10 @@
+ activity);
return null;
}
- final WindowState mainWindow = activity.findMainWindow(false);
+ // For snapshot surface, the top activity could be trampoline activity, so here should
+ // search for top fullscreen activity in the task.
+ final WindowState mainWindow = task
+ .getTopFullscreenMainWindow(false /* includeStartingApp */);
if (mainWindow == null) {
Slog.w(TAG, "TaskSnapshotSurface.create: no main window in " + activity);
return null;
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 74f8a068..8f83a7c 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -3007,11 +3007,17 @@
return r.getTask().mTaskId != taskId && r.token != notTop && r.canBeTopRunning();
}
- ActivityRecord getTopFullscreenActivity() {
- return getActivity((r) -> {
- final WindowState win = r.findMainWindow();
- return (win != null && win.mAttrs.isFullscreen());
+ WindowState getTopFullscreenMainWindow(boolean includeStartingApp) {
+ final WindowState[] candidate = new WindowState[1];
+ getActivity((r) -> {
+ final WindowState win = r.findMainWindow(includeStartingApp);
+ if (win != null && win.mAttrs.isFullscreen()) {
+ candidate[0] = win;
+ return true;
+ }
+ return false;
});
+ return candidate[0];
}
/**
@@ -3377,7 +3383,7 @@
// Whether the direct top activity is in size compat mode
appCompatTaskInfo.topActivityInSizeCompat = isTopActivityVisible && top.inSizeCompatMode();
if (appCompatTaskInfo.topActivityInSizeCompat
- && mWmService.mLetterboxConfiguration.isTranslucentLetterboxingEnabled()) {
+ && mWmService.mAppCompatConfiguration.isTranslucentLetterboxingEnabled()) {
// We hide the restart button in case of transparent activities.
appCompatTaskInfo.topActivityInSizeCompat = top.fillsParent();
}
@@ -3579,14 +3585,12 @@
// starting window because persisted configuration does not effect to Task.
info.taskInfo.configuration.setTo(activity.getConfiguration());
if (!Flags.drawSnapshotAspectRatioMatch()) {
- final ActivityRecord topFullscreenActivity = getTopFullscreenActivity();
- if (topFullscreenActivity != null) {
- final WindowState mainWindow = topFullscreenActivity.findMainWindow(false);
- if (mainWindow != null) {
- info.topOpaqueWindowInsetsState =
- mainWindow.getInsetsStateWithVisibilityOverride();
- info.topOpaqueWindowLayoutParams = mainWindow.getAttrs();
- }
+ final WindowState mainWindow =
+ getTopFullscreenMainWindow(false /* includeStartingApp */);
+ if (mainWindow != null) {
+ info.topOpaqueWindowInsetsState =
+ mainWindow.getInsetsStateWithVisibilityOverride();
+ info.topOpaqueWindowLayoutParams = mainWindow.getAttrs();
}
}
return info;
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index 4218f8f..57c7753 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -261,8 +261,8 @@
}
@Override
- ActivityRecord getTopFullscreenActivity(Task source) {
- return source.getTopFullscreenActivity();
+ WindowState getTopFullscreenWindow(Task source) {
+ return source.getTopFullscreenMainWindow(true /* includeStartingApp */);
}
@Override
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 5336044..f6a68d5 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.app.ActivityOptions.ANIM_CUSTOM;
import static android.app.ActivityOptions.ANIM_OPEN_CROSS_PROFILE_APPS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
@@ -1897,7 +1898,8 @@
}
}
- private void overrideAnimationOptionsToInfoIfNecessary(@NonNull TransitionInfo info) {
+ @VisibleForTesting
+ void overrideAnimationOptionsToInfoIfNecessary(@NonNull TransitionInfo info) {
if (mOverrideOptions == null) {
return;
}
@@ -1914,12 +1916,28 @@
changes.get(i).setAnimationOptions(mOverrideOptions);
// TODO(b/295805497): Extract mBackgroundColor from AnimationOptions.
changes.get(i).setBackgroundColor(mOverrideOptions.getBackgroundColor());
+ } else if (shouldApplyAnimOptionsToEmbeddedTf(container.asTaskFragment())) {
+ // We only override AnimationOptions because backgroundColor should be from
+ // TaskFragmentAnimationParams.
+ changes.get(i).setAnimationOptions(mOverrideOptions);
}
}
}
updateActivityTargetForCrossProfileAnimation(info);
}
+ private boolean shouldApplyAnimOptionsToEmbeddedTf(@Nullable TaskFragment taskFragment) {
+ if (taskFragment == null || !taskFragment.isEmbedded()) {
+ return false;
+ }
+ if (taskFragment.getAnimationParams().hasOverrideAnimation()) {
+ // Always respect animation overrides from TaskFragmentAnimationParams.
+ return false;
+ }
+ // ActivityEmbedding animation adapter only support custom animation
+ return mOverrideOptions != null && mOverrideOptions.getType() == ANIM_CUSTOM;
+ }
+
/**
* Updates activity open target if {@link #mOverrideOptions} is
* {@link ANIM_OPEN_CROSS_PROFILE_APPS}.
@@ -1929,8 +1947,7 @@
return;
}
for (int i = 0; i < mTargets.size(); ++i) {
- final ActivityRecord activity = mTargets.get(i).mContainer
- .asActivityRecord();
+ final ActivityRecord activity = mTargets.get(i).mContainer.asActivityRecord();
final TransitionInfo.Change change = info.getChanges().get(i);
if (activity == null || change.getMode() != TRANSIT_OPEN) {
continue;
diff --git a/services/core/java/com/android/server/wm/TransparentPolicy.java b/services/core/java/com/android/server/wm/TransparentPolicy.java
index cdb14ab..2f46103 100644
--- a/services/core/java/com/android/server/wm/TransparentPolicy.java
+++ b/services/core/java/com/android/server/wm/TransparentPolicy.java
@@ -73,10 +73,10 @@
private final TransparentPolicyState mTransparentPolicyState;
TransparentPolicy(@NonNull ActivityRecord activityRecord,
- @NonNull LetterboxConfiguration letterboxConfiguration) {
+ @NonNull AppCompatConfiguration appCompatConfiguration) {
mActivityRecord = activityRecord;
mIsTranslucentLetterboxingEnabledSupplier =
- letterboxConfiguration::isTranslucentLetterboxingEnabled;
+ appCompatConfiguration::isTranslucentLetterboxingEnabled;
mTransparentPolicyState = new TransparentPolicyState(activityRecord);
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index ebbf6e3..acd8b3f 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -120,10 +120,10 @@
import static com.android.server.wm.ActivityTaskManagerService.POWER_MODE_REASON_CHANGE_DISPLAY;
import static com.android.server.wm.DisplayContent.IME_TARGET_CONTROL;
import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
import static com.android.server.wm.RootWindowContainer.MATCH_ATTACHED_TASK_OR_RECENT_TASKS;
import static com.android.server.wm.SensitiveContentPackages.PackageInfo;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL;
@@ -1054,7 +1054,7 @@
private boolean mAnimationsDisabled = false;
boolean mPointerLocationEnabled = false;
- final LetterboxConfiguration mLetterboxConfiguration;
+ final AppCompatConfiguration mAppCompatConfiguration;
private boolean mIsIgnoreOrientationRequestDisabled;
@@ -1294,7 +1294,7 @@
| WindowInsets.Type.navigationBars();
}
- mLetterboxConfiguration = new LetterboxConfiguration(
+ mAppCompatConfiguration = new AppCompatConfiguration(
// Using SysUI context to have access to Material colors extracted from Wallpaper.
ActivityThread.currentActivityThread().getSystemUiContext());
@@ -4441,7 +4441,7 @@
*/
boolean isIgnoreOrientationRequestDisabled() {
return mIsIgnoreOrientationRequestDisabled
- || !mLetterboxConfiguration.isIgnoreOrientationRequestAllowed();
+ || !mAppCompatConfiguration.isIgnoreOrientationRequestAllowed();
}
@Override
@@ -9992,7 +9992,7 @@
*/
@Override
public int getLetterboxBackgroundColorInArgb() {
- return mLetterboxConfiguration.getLetterboxBackgroundColor().toArgb();
+ return mAppCompatConfiguration.getLetterboxBackgroundColor().toArgb();
}
/**
@@ -10000,8 +10000,8 @@
*/
@Override
public boolean isLetterboxBackgroundMultiColored() {
- @LetterboxConfiguration.LetterboxBackgroundType int letterboxBackgroundType =
- mLetterboxConfiguration.getLetterboxBackgroundType();
+ @AppCompatConfiguration.LetterboxBackgroundType int letterboxBackgroundType =
+ mAppCompatConfiguration.getLetterboxBackgroundType();
switch (letterboxBackgroundType) {
case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index 6febe80..51d5bc0 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -19,16 +19,16 @@
import static android.os.Build.IS_USER;
import static android.view.CrossWindowBlurListeners.CROSS_WINDOW_BLUR_SUPPORTED;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
import android.content.res.Resources.NotFoundException;
import android.graphics.Color;
@@ -50,12 +50,12 @@
import com.android.internal.os.ByteTransferPipe;
import com.android.internal.protolog.LegacyProtoLogImpl;
import com.android.internal.protolog.PerfettoProtoLogImpl;
-import com.android.internal.protolog.common.IProtoLog;
import com.android.internal.protolog.ProtoLog;
+import com.android.internal.protolog.common.IProtoLog;
import com.android.server.IoThread;
-import com.android.server.wm.LetterboxConfiguration.LetterboxBackgroundType;
-import com.android.server.wm.LetterboxConfiguration.LetterboxHorizontalReachabilityPosition;
-import com.android.server.wm.LetterboxConfiguration.LetterboxVerticalReachabilityPosition;
+import com.android.server.wm.AppCompatConfiguration.LetterboxBackgroundType;
+import com.android.server.wm.AppCompatConfiguration.LetterboxHorizontalReachabilityPosition;
+import com.android.server.wm.AppCompatConfiguration.LetterboxVerticalReachabilityPosition;
import java.io.IOException;
import java.io.PrintWriter;
@@ -78,12 +78,12 @@
// Internal service impl -- must perform security checks before touching.
private final WindowManagerService mInternal;
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
public WindowManagerShellCommand(WindowManagerService service) {
mInterface = service;
mInternal = service;
- mLetterboxConfiguration = service.mLetterboxConfiguration;
+ mAppCompatConfiguration = service.mAppCompatConfiguration;
}
@Override
@@ -678,7 +678,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(aspectRatio);
+ mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(aspectRatio);
}
return 0;
}
@@ -698,7 +698,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setDefaultMinAspectRatioForUnresizableApps(aspectRatio);
+ mAppCompatConfiguration.setDefaultMinAspectRatioForUnresizableApps(aspectRatio);
}
return 0;
}
@@ -717,7 +717,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setLetterboxActivityCornersRadius(cornersRadius);
+ mAppCompatConfiguration.setLetterboxActivityCornersRadius(cornersRadius);
}
return 0;
}
@@ -752,7 +752,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setLetterboxBackgroundTypeOverride(backgroundType);
+ mAppCompatConfiguration.setLetterboxBackgroundTypeOverride(backgroundType);
}
return 0;
}
@@ -770,7 +770,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setLetterboxBackgroundColorResourceId(colorId);
+ mAppCompatConfiguration.setLetterboxBackgroundColorResourceId(colorId);
}
return 0;
}
@@ -787,7 +787,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setLetterboxBackgroundColor(color);
+ mAppCompatConfiguration.setLetterboxBackgroundColor(color);
}
return 0;
}
@@ -809,7 +809,7 @@
synchronized (mInternal.mGlobalLock) {
final int radiusPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
radiusDp, mInternal.mContext.getResources().getDisplayMetrics());
- mLetterboxConfiguration.setLetterboxBackgroundWallpaperBlurRadiusPx(radiusPx);
+ mAppCompatConfiguration.setLetterboxBackgroundWallpaperBlurRadiusPx(radiusPx);
}
return 0;
}
@@ -829,7 +829,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setLetterboxBackgroundWallpaperDarkScrimAlpha(alpha);
+ mAppCompatConfiguration.setLetterboxBackgroundWallpaperDarkScrimAlpha(alpha);
}
return 0;
}
@@ -849,7 +849,7 @@
}
synchronized (mInternal.mGlobalLock) {
try {
- mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(multiplier);
+ mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(multiplier);
} catch (IllegalArgumentException e) {
getErrPrintWriter().println("Error: invalid multiplier value " + e);
return -1;
@@ -873,7 +873,7 @@
}
synchronized (mInternal.mGlobalLock) {
try {
- mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(multiplier);
+ mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(multiplier);
} catch (IllegalArgumentException e) {
getErrPrintWriter().println("Error: invalid multiplier value " + e);
return -1;
@@ -908,7 +908,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setDefaultPositionForHorizontalReachability(position);
+ mAppCompatConfiguration.setDefaultPositionForHorizontalReachability(position);
}
return 0;
}
@@ -939,7 +939,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setDefaultPositionForVerticalReachability(position);
+ mAppCompatConfiguration.setDefaultPositionForVerticalReachability(position);
}
return 0;
}
@@ -970,7 +970,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setPersistentLetterboxPositionForHorizontalReachability(
+ mAppCompatConfiguration.setPersistentLetterboxPositionForHorizontalReachability(
false /* IsInBookMode */, position);
}
return 0;
@@ -1002,7 +1002,7 @@
return -1;
}
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.setPersistentLetterboxPositionForVerticalReachability(
+ mAppCompatConfiguration.setPersistentLetterboxPositionForVerticalReachability(
false /* forTabletopMode */, position);
}
return 0;
@@ -1074,15 +1074,15 @@
runSetLetterboxVerticalPositionMultiplier(pw);
break;
case "--isHorizontalReachabilityEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setIsHorizontalReachabilityEnabled);
break;
case "--isVerticalReachabilityEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setIsVerticalReachabilityEnabled);
break;
case "--isAutomaticReachabilityInBookModeEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setIsAutomaticReachabilityInBookModeEnabled);
break;
case "--defaultPositionForHorizontalReachability":
@@ -1098,34 +1098,34 @@
runSetPersistentLetterboxPositionForVerticalReachability(pw);
break;
case "--isEducationEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration::setIsEducationEnabled);
+ runSetBooleanFlag(pw, mAppCompatConfiguration::setIsEducationEnabled);
break;
case "--isSplitScreenAspectRatioForUnresizableAppsEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setIsSplitScreenAspectRatioForUnresizableAppsEnabled);
break;
case "--isDisplayAspectRatioEnabledForFixedOrientationLetterbox":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setIsDisplayAspectRatioEnabledForFixedOrientationLetterbox);
break;
case "--isTranslucentLetterboxingEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setTranslucentLetterboxingOverrideEnabled);
break;
case "--isUserAppAspectRatioSettingsEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setUserAppAspectRatioSettingsOverrideEnabled);
break;
case "--isUserAppAspectRatioFullscreenEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration
+ runSetBooleanFlag(pw, mAppCompatConfiguration
::setUserAppAspectRatioFullscreenOverrideEnabled);
break;
case "--isCameraCompatRefreshEnabled":
- runSetBooleanFlag(pw, mLetterboxConfiguration::setCameraCompatRefreshEnabled);
+ runSetBooleanFlag(pw, mAppCompatConfiguration::setCameraCompatRefreshEnabled);
break;
case "--isCameraCompatRefreshCycleThroughStopEnabled":
runSetBooleanFlag(pw,
- mLetterboxConfiguration::setCameraCompatRefreshCycleThroughStopEnabled);
+ mAppCompatConfiguration::setCameraCompatRefreshCycleThroughStopEnabled);
break;
default:
getErrPrintWriter().println(
@@ -1145,77 +1145,77 @@
String arg = getNextArg();
switch (arg) {
case "aspectRatio":
- mLetterboxConfiguration.resetFixedOrientationLetterboxAspectRatio();
+ mAppCompatConfiguration.resetFixedOrientationLetterboxAspectRatio();
break;
case "minAspectRatioForUnresizable":
- mLetterboxConfiguration.resetDefaultMinAspectRatioForUnresizableApps();
+ mAppCompatConfiguration.resetDefaultMinAspectRatioForUnresizableApps();
break;
case "cornerRadius":
- mLetterboxConfiguration.resetLetterboxActivityCornersRadius();
+ mAppCompatConfiguration.resetLetterboxActivityCornersRadius();
break;
case "backgroundType":
- mLetterboxConfiguration.resetLetterboxBackgroundType();
+ mAppCompatConfiguration.resetLetterboxBackgroundType();
break;
case "backgroundColor":
- mLetterboxConfiguration.resetLetterboxBackgroundColor();
+ mAppCompatConfiguration.resetLetterboxBackgroundColor();
break;
case "wallpaperBlurRadius":
- mLetterboxConfiguration.resetLetterboxBackgroundWallpaperBlurRadiusPx();
+ mAppCompatConfiguration.resetLetterboxBackgroundWallpaperBlurRadiusPx();
break;
case "wallpaperDarkScrimAlpha":
- mLetterboxConfiguration.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
+ mAppCompatConfiguration.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
break;
case "horizontalPositionMultiplier":
- mLetterboxConfiguration.resetLetterboxHorizontalPositionMultiplier();
+ mAppCompatConfiguration.resetLetterboxHorizontalPositionMultiplier();
break;
case "verticalPositionMultiplier":
- mLetterboxConfiguration.resetLetterboxVerticalPositionMultiplier();
+ mAppCompatConfiguration.resetLetterboxVerticalPositionMultiplier();
break;
case "isHorizontalReachabilityEnabled":
- mLetterboxConfiguration.resetIsHorizontalReachabilityEnabled();
+ mAppCompatConfiguration.resetIsHorizontalReachabilityEnabled();
break;
case "isVerticalReachabilityEnabled":
- mLetterboxConfiguration.resetIsVerticalReachabilityEnabled();
+ mAppCompatConfiguration.resetIsVerticalReachabilityEnabled();
break;
case "defaultPositionForHorizontalReachability":
- mLetterboxConfiguration.resetDefaultPositionForHorizontalReachability();
+ mAppCompatConfiguration.resetDefaultPositionForHorizontalReachability();
break;
case "defaultPositionForVerticalReachability":
- mLetterboxConfiguration.resetDefaultPositionForVerticalReachability();
+ mAppCompatConfiguration.resetDefaultPositionForVerticalReachability();
break;
case "persistentPositionForHorizontalReachability":
- mLetterboxConfiguration
+ mAppCompatConfiguration
.resetPersistentLetterboxPositionForHorizontalReachability();
break;
case "persistentPositionForVerticalReachability":
- mLetterboxConfiguration
+ mAppCompatConfiguration
.resetPersistentLetterboxPositionForVerticalReachability();
break;
case "isEducationEnabled":
- mLetterboxConfiguration.resetIsEducationEnabled();
+ mAppCompatConfiguration.resetIsEducationEnabled();
break;
case "isSplitScreenAspectRatioForUnresizableAppsEnabled":
- mLetterboxConfiguration
+ mAppCompatConfiguration
.resetIsSplitScreenAspectRatioForUnresizableAppsEnabled();
break;
case "IsDisplayAspectRatioEnabledForFixedOrientationLetterbox":
- mLetterboxConfiguration
+ mAppCompatConfiguration
.resetIsDisplayAspectRatioEnabledForFixedOrientationLetterbox();
break;
case "isTranslucentLetterboxingEnabled":
- mLetterboxConfiguration.resetTranslucentLetterboxingEnabled();
+ mAppCompatConfiguration.resetTranslucentLetterboxingEnabled();
break;
case "isUserAppAspectRatioSettingsEnabled":
- mLetterboxConfiguration.resetUserAppAspectRatioSettingsEnabled();
+ mAppCompatConfiguration.resetUserAppAspectRatioSettingsEnabled();
break;
case "isUserAppAspectRatioFullscreenEnabled":
- mLetterboxConfiguration.resetUserAppAspectRatioFullscreenEnabled();
+ mAppCompatConfiguration.resetUserAppAspectRatioFullscreenEnabled();
break;
case "isCameraCompatRefreshEnabled":
- mLetterboxConfiguration.resetCameraCompatRefreshEnabled();
+ mAppCompatConfiguration.resetCameraCompatRefreshEnabled();
break;
case "isCameraCompatRefreshCycleThroughStopEnabled":
- mLetterboxConfiguration
+ mAppCompatConfiguration
.resetCameraCompatRefreshCycleThroughStopEnabled();
break;
default:
@@ -1304,104 +1304,104 @@
private void resetLetterboxStyle() {
synchronized (mInternal.mGlobalLock) {
- mLetterboxConfiguration.resetFixedOrientationLetterboxAspectRatio();
- mLetterboxConfiguration.resetDefaultMinAspectRatioForUnresizableApps();
- mLetterboxConfiguration.resetLetterboxActivityCornersRadius();
- mLetterboxConfiguration.resetLetterboxBackgroundType();
- mLetterboxConfiguration.resetLetterboxBackgroundColor();
- mLetterboxConfiguration.resetLetterboxBackgroundWallpaperBlurRadiusPx();
- mLetterboxConfiguration.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
- mLetterboxConfiguration.resetLetterboxHorizontalPositionMultiplier();
- mLetterboxConfiguration.resetLetterboxVerticalPositionMultiplier();
- mLetterboxConfiguration.resetIsHorizontalReachabilityEnabled();
- mLetterboxConfiguration.resetIsVerticalReachabilityEnabled();
- mLetterboxConfiguration.resetEnabledAutomaticReachabilityInBookMode();
- mLetterboxConfiguration.resetDefaultPositionForHorizontalReachability();
- mLetterboxConfiguration.resetDefaultPositionForVerticalReachability();
- mLetterboxConfiguration.resetPersistentLetterboxPositionForHorizontalReachability();
- mLetterboxConfiguration.resetPersistentLetterboxPositionForVerticalReachability();
- mLetterboxConfiguration.resetIsEducationEnabled();
- mLetterboxConfiguration.resetIsSplitScreenAspectRatioForUnresizableAppsEnabled();
- mLetterboxConfiguration.resetIsDisplayAspectRatioEnabledForFixedOrientationLetterbox();
- mLetterboxConfiguration.resetTranslucentLetterboxingEnabled();
- mLetterboxConfiguration.resetUserAppAspectRatioSettingsEnabled();
- mLetterboxConfiguration.resetUserAppAspectRatioFullscreenEnabled();
- mLetterboxConfiguration.resetCameraCompatRefreshEnabled();
- mLetterboxConfiguration.resetCameraCompatRefreshCycleThroughStopEnabled();
+ mAppCompatConfiguration.resetFixedOrientationLetterboxAspectRatio();
+ mAppCompatConfiguration.resetDefaultMinAspectRatioForUnresizableApps();
+ mAppCompatConfiguration.resetLetterboxActivityCornersRadius();
+ mAppCompatConfiguration.resetLetterboxBackgroundType();
+ mAppCompatConfiguration.resetLetterboxBackgroundColor();
+ mAppCompatConfiguration.resetLetterboxBackgroundWallpaperBlurRadiusPx();
+ mAppCompatConfiguration.resetLetterboxBackgroundWallpaperDarkScrimAlpha();
+ mAppCompatConfiguration.resetLetterboxHorizontalPositionMultiplier();
+ mAppCompatConfiguration.resetLetterboxVerticalPositionMultiplier();
+ mAppCompatConfiguration.resetIsHorizontalReachabilityEnabled();
+ mAppCompatConfiguration.resetIsVerticalReachabilityEnabled();
+ mAppCompatConfiguration.resetEnabledAutomaticReachabilityInBookMode();
+ mAppCompatConfiguration.resetDefaultPositionForHorizontalReachability();
+ mAppCompatConfiguration.resetDefaultPositionForVerticalReachability();
+ mAppCompatConfiguration.resetPersistentLetterboxPositionForHorizontalReachability();
+ mAppCompatConfiguration.resetPersistentLetterboxPositionForVerticalReachability();
+ mAppCompatConfiguration.resetIsEducationEnabled();
+ mAppCompatConfiguration.resetIsSplitScreenAspectRatioForUnresizableAppsEnabled();
+ mAppCompatConfiguration.resetIsDisplayAspectRatioEnabledForFixedOrientationLetterbox();
+ mAppCompatConfiguration.resetTranslucentLetterboxingEnabled();
+ mAppCompatConfiguration.resetUserAppAspectRatioSettingsEnabled();
+ mAppCompatConfiguration.resetUserAppAspectRatioFullscreenEnabled();
+ mAppCompatConfiguration.resetCameraCompatRefreshEnabled();
+ mAppCompatConfiguration.resetCameraCompatRefreshCycleThroughStopEnabled();
}
}
private int runGetLetterboxStyle(PrintWriter pw) throws RemoteException {
synchronized (mInternal.mGlobalLock) {
pw.println("Corner radius: "
- + mLetterboxConfiguration.getLetterboxActivityCornersRadius());
+ + mAppCompatConfiguration.getLetterboxActivityCornersRadius());
pw.println("Horizontal position multiplier: "
- + mLetterboxConfiguration.getLetterboxHorizontalPositionMultiplier(
+ + mAppCompatConfiguration.getLetterboxHorizontalPositionMultiplier(
false /* isInBookMode */));
pw.println("Vertical position multiplier: "
- + mLetterboxConfiguration.getLetterboxVerticalPositionMultiplier(
+ + mAppCompatConfiguration.getLetterboxVerticalPositionMultiplier(
false /* isInTabletopMode */));
pw.println("Horizontal position multiplier (book mode): "
- + mLetterboxConfiguration.getLetterboxHorizontalPositionMultiplier(
+ + mAppCompatConfiguration.getLetterboxHorizontalPositionMultiplier(
true /* isInBookMode */));
pw.println("Vertical position multiplier (tabletop mode): "
- + mLetterboxConfiguration.getLetterboxVerticalPositionMultiplier(
+ + mAppCompatConfiguration.getLetterboxVerticalPositionMultiplier(
true /* isInTabletopMode */));
pw.println("Horizontal position multiplier for reachability: "
- + mLetterboxConfiguration.getHorizontalMultiplierForReachability(
+ + mAppCompatConfiguration.getHorizontalMultiplierForReachability(
false /* isInBookMode */));
pw.println("Vertical position multiplier for reachability: "
- + mLetterboxConfiguration.getVerticalMultiplierForReachability(
+ + mAppCompatConfiguration.getVerticalMultiplierForReachability(
false /* isInTabletopMode */));
pw.println("Aspect ratio: "
- + mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio());
+ + mAppCompatConfiguration.getFixedOrientationLetterboxAspectRatio());
pw.println("Default min aspect ratio for unresizable apps: "
- + mLetterboxConfiguration.getDefaultMinAspectRatioForUnresizableApps());
+ + mAppCompatConfiguration.getDefaultMinAspectRatioForUnresizableApps());
pw.println("Is horizontal reachability enabled: "
- + mLetterboxConfiguration.getIsHorizontalReachabilityEnabled());
+ + mAppCompatConfiguration.getIsHorizontalReachabilityEnabled());
pw.println("Is vertical reachability enabled: "
- + mLetterboxConfiguration.getIsVerticalReachabilityEnabled());
+ + mAppCompatConfiguration.getIsVerticalReachabilityEnabled());
pw.println("Is automatic reachability in book mode enabled: "
- + mLetterboxConfiguration.getIsAutomaticReachabilityInBookModeEnabled());
+ + mAppCompatConfiguration.getIsAutomaticReachabilityInBookModeEnabled());
pw.println("Default position for horizontal reachability: "
- + LetterboxConfiguration.letterboxHorizontalReachabilityPositionToString(
- mLetterboxConfiguration.getDefaultPositionForHorizontalReachability()));
+ + AppCompatConfiguration.letterboxHorizontalReachabilityPositionToString(
+ mAppCompatConfiguration.getDefaultPositionForHorizontalReachability()));
pw.println("Default position for vertical reachability: "
- + LetterboxConfiguration.letterboxVerticalReachabilityPositionToString(
- mLetterboxConfiguration.getDefaultPositionForVerticalReachability()));
+ + AppCompatConfiguration.letterboxVerticalReachabilityPositionToString(
+ mAppCompatConfiguration.getDefaultPositionForVerticalReachability()));
pw.println("Current position for horizontal reachability:"
- + LetterboxConfiguration.letterboxHorizontalReachabilityPositionToString(
- mLetterboxConfiguration.getLetterboxPositionForHorizontalReachability(false)));
+ + AppCompatConfiguration.letterboxHorizontalReachabilityPositionToString(
+ mAppCompatConfiguration.getLetterboxPositionForHorizontalReachability(false)));
pw.println("Current position for vertical reachability:"
- + LetterboxConfiguration.letterboxVerticalReachabilityPositionToString(
- mLetterboxConfiguration.getLetterboxPositionForVerticalReachability(false)));
+ + AppCompatConfiguration.letterboxVerticalReachabilityPositionToString(
+ mAppCompatConfiguration.getLetterboxPositionForVerticalReachability(false)));
pw.println("Is education enabled: "
- + mLetterboxConfiguration.getIsEducationEnabled());
+ + mAppCompatConfiguration.getIsEducationEnabled());
pw.println("Is using split screen aspect ratio as aspect ratio for unresizable apps: "
- + mLetterboxConfiguration
+ + mAppCompatConfiguration
.getIsSplitScreenAspectRatioForUnresizableAppsEnabled());
pw.println("Is using display aspect ratio as aspect ratio for all letterboxed apps: "
- + mLetterboxConfiguration
+ + mAppCompatConfiguration
.getIsDisplayAspectRatioEnabledForFixedOrientationLetterbox());
pw.println(" Is activity \"refresh\" in camera compatibility treatment enabled: "
- + mLetterboxConfiguration.isCameraCompatRefreshEnabled());
+ + mAppCompatConfiguration.isCameraCompatRefreshEnabled());
pw.println(" Refresh using \"stopped -> resumed\" cycle: "
- + mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled());
+ + mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled());
pw.println("Background type: "
- + LetterboxConfiguration.letterboxBackgroundTypeToString(
- mLetterboxConfiguration.getLetterboxBackgroundType()));
+ + AppCompatConfiguration.letterboxBackgroundTypeToString(
+ mAppCompatConfiguration.getLetterboxBackgroundType()));
pw.println(" Background color: " + Integer.toHexString(
- mLetterboxConfiguration.getLetterboxBackgroundColor().toArgb()));
+ mAppCompatConfiguration.getLetterboxBackgroundColor().toArgb()));
pw.println(" Wallpaper blur radius: "
- + mLetterboxConfiguration.getLetterboxBackgroundWallpaperBlurRadiusPx());
+ + mAppCompatConfiguration.getLetterboxBackgroundWallpaperBlurRadiusPx());
pw.println(" Wallpaper dark scrim alpha: "
- + mLetterboxConfiguration.getLetterboxBackgroundWallpaperDarkScrimAlpha());
+ + mAppCompatConfiguration.getLetterboxBackgroundWallpaperDarkScrimAlpha());
pw.println("Is letterboxing for translucent activities enabled: "
- + mLetterboxConfiguration.isTranslucentLetterboxingEnabled());
+ + mAppCompatConfiguration.isTranslucentLetterboxingEnabled());
pw.println("Is the user aspect ratio settings enabled: "
- + mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled());
+ + mAppCompatConfiguration.isUserAppAspectRatioSettingsEnabled());
pw.println("Is the fullscreen option in user aspect ratio settings enabled: "
- + mLetterboxConfiguration.isUserAppAspectRatioFullscreenEnabled());
+ + mAppCompatConfiguration.isUserAppAspectRatioFullscreenEnabled());
}
return 0;
}
@@ -1539,13 +1539,13 @@
pw.println(" Sets letterbox style using the following options:");
pw.println(" --aspectRatio aspectRatio");
pw.println(" Aspect ratio of letterbox for fixed orientation. If aspectRatio <= "
- + LetterboxConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO);
+ + AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO);
pw.println(" both it and R.dimen.config_fixedOrientationLetterboxAspectRatio will");
pw.println(" be ignored and framework implementation will determine aspect ratio.");
pw.println(" --minAspectRatioForUnresizable aspectRatio");
pw.println(" Default min aspect ratio for unresizable apps which is used when an");
pw.println(" app is eligible for the size compat mode. If aspectRatio <= "
- + LetterboxConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO);
+ + AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO);
pw.println(" both it and R.dimen.config_fixedOrientationLetterboxAspectRatio will");
pw.println(" be ignored and framework implementation will determine aspect ratio.");
pw.println(" --cornerRadius radius");
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index bbd9c0a..60d3e78 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -1655,22 +1655,6 @@
// Otherwise if other places send wpc.getConfiguration() to client, the configuration may
// be ignored due to the seq is older.
resolvedConfig.seq = newParentConfig.seq;
-
- if (mConfigActivityRecord != null) {
- // Let the activity decide whether to apply the size override.
- return;
- }
- final DisplayContent displayContent = mAtm.mWindowManager != null
- ? mAtm.mWindowManager.getDefaultDisplayContentLocked()
- : null;
- applySizeOverrideIfNeeded(
- displayContent,
- mInfo,
- newParentConfig,
- resolvedConfig,
- false /* optOutEdgeToEdge */,
- false /* hasFixedRotationTransform */,
- false /* hasCompatDisplayInsets */);
}
void dispatchConfiguration(@NonNull Configuration config) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index e122fe0..032d6b5 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -1131,9 +1131,9 @@
}
@Override
- public void onUserUnlocked(@NonNull TargetUser user) {
- if (user.isPreCreated()) return;
- mService.handleOnUserUnlocked(user.getUserIdentifier());
+ public void onUserSwitching(@NonNull TargetUser from, @NonNull TargetUser to) {
+ if (to.isPreCreated()) return;
+ mService.handleOnUserSwitching(from.getUserIdentifier(), to.getUserIdentifier());
}
}
@@ -3831,8 +3831,8 @@
mDevicePolicyEngine.handleUnlockUser(userId);
}
- void handleOnUserUnlocked(int userId) {
- showNewUserDisclaimerIfNecessary(userId);
+ void handleOnUserSwitching(int fromUserId, int toUserId) {
+ showNewUserDisclaimerIfNecessary(toUserId);
}
void handleStopUser(int userId) {
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
index ce68b86..0787058 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
@@ -60,6 +60,7 @@
import org.junit.runner.RunWith;
import java.io.IOException;
+import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -769,7 +770,8 @@
}
/**
- * Verifies that clicking on the IME switch button shows the Input Method Switcher Menu.
+ * Verifies that clicking on the IME switch button either shows the Input Method Switcher Menu,
+ * or switches the input method.
*/
@Test
public void testImeSwitchButtonClick() throws Exception {
@@ -794,13 +796,16 @@
assertThat(mInputMethodService.isInputViewShown()).isTrue();
final var imm = mContext.getSystemService(InputMethodManager.class);
+ final var initialInfo = imm.getCurrentInputMethodInfo();
final var imeSwitchButtonUiObject = getUiObjectById(INPUT_METHOD_NAV_IME_SWITCHER_ID);
imeSwitchButtonUiObject.click();
mInstrumentation.waitForIdleSync();
- assertWithMessage("Input Method Switcher Menu is shown")
- .that(isInputMethodPickerShown(imm))
+ final var newInfo = imm.getCurrentInputMethodInfo();
+
+ assertWithMessage("Input Method Switcher Menu is shown or input method was switched")
+ .that(isInputMethodPickerShown(imm) || !Objects.equals(initialInfo, newInfo))
.isTrue();
assertThat(mInputMethodService.isInputViewShown()).isTrue();
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/UserDataRepositoryTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/UserDataRepositoryTest.java
index 81fb1a0..d59f28b 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/UserDataRepositoryTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/UserDataRepositoryTest.java
@@ -98,8 +98,8 @@
assertThat(allUserData.get(0).mBindingController.getUserId()).isEqualTo(ANY_USER_ID);
}
- private List<UserDataRepository.UserData> collectUserData(UserDataRepository repository) {
- final var collected = new ArrayList<UserDataRepository.UserData>();
+ private List<UserData> collectUserData(UserDataRepository repository) {
+ final var collected = new ArrayList<UserData>();
repository.forAllUserData(userData -> collected.add(userData));
return collected;
}
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
index 7138306..dec4634 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
@@ -1046,6 +1046,77 @@
}
@Test
+ public void testWriteReadBaseRevisionCode() {
+ Settings settings = makeSettings();
+ PackageSetting packageSetting = createPackageSetting(PACKAGE_NAME_1);
+ packageSetting.setAppId(Process.FIRST_APPLICATION_UID);
+ packageSetting.setPkg(PackageImpl.forTesting(PACKAGE_NAME_1).hideAsParsed()
+ .setUid(packageSetting.getAppId())
+ .hideAsFinal());
+
+ final int revisionCode = 311;
+ packageSetting.setBaseRevisionCode(revisionCode);
+ settings.mPackages.put(PACKAGE_NAME_1, packageSetting);
+
+ settings.writeLPr(computer, /* sync= */ true);
+ settings.mPackages.clear();
+
+ assertThat(settings.readLPw(computer, createFakeUsers()), is(true));
+ assertThat(settings.getPackageLPr(PACKAGE_NAME_1).getBaseRevisionCode(), is(revisionCode));
+ }
+
+ @Test
+ public void testHasPkg_writeReadSplitVersions() {
+ Settings settings = makeSettings();
+ PackageSetting packageSetting = createPackageSetting(PACKAGE_NAME_1);
+ packageSetting.setAppId(Process.FIRST_APPLICATION_UID);
+ packageSetting.setPkg(PackageImpl.forTesting(PACKAGE_NAME_1).hideAsParsed()
+ .setUid(packageSetting.getAppId())
+ .hideAsFinal());
+
+ final String splitOne = "one";
+ final String splitTwo = "two";
+ final int revisionOne = 311;
+ final int revisionTwo = 330;
+ packageSetting.setSplitNames(new String[] { splitOne, splitTwo});
+ packageSetting.setSplitRevisionCodes(new int[] { revisionOne, revisionTwo});
+ settings.mPackages.put(PACKAGE_NAME_1, packageSetting);
+
+ settings.writeLPr(computer, /* sync= */ true);
+ settings.mPackages.clear();
+
+ assertThat(settings.readLPw(computer, createFakeUsers()), is(true));
+ PackageSetting resultSetting = settings.getPackageLPr(PACKAGE_NAME_1);
+ assertThat(resultSetting.getSplitNames().length, is(0));
+ assertThat(resultSetting.getSplitRevisionCodes().length, is(0));
+ }
+
+ @Test
+ public void testNoPkg_writeReadSplitVersions() {
+ Settings settings = makeSettings();
+ PackageSetting packageSetting = createPackageSetting(PACKAGE_NAME_1);
+ packageSetting.setAppId(Process.FIRST_APPLICATION_UID);
+
+ final String splitOne = "one";
+ final String splitTwo = "two";
+ final int revisionOne = 311;
+ final int revisionTwo = 330;
+ packageSetting.setSplitNames(new String[] { splitOne, splitTwo});
+ packageSetting.setSplitRevisionCodes(new int[] { revisionOne, revisionTwo});
+ settings.mPackages.put(PACKAGE_NAME_1, packageSetting);
+
+ settings.writeLPr(computer, /* sync= */ true);
+ settings.mPackages.clear();
+
+ assertThat(settings.readLPw(computer, createFakeUsers()), is(true));
+ PackageSetting resultSetting = settings.getPackageLPr(PACKAGE_NAME_1);
+ assertThat(resultSetting.getSplitNames()[0], is(splitOne));
+ assertThat(resultSetting.getSplitNames()[1], is(splitTwo));
+ assertThat(resultSetting.getSplitRevisionCodes()[0], is(revisionOne));
+ assertThat(resultSetting.getSplitRevisionCodes()[1], is(revisionTwo));
+ }
+
+ @Test
public void testWriteReadArchiveState() {
Settings settings = makeSettings();
PackageSetting packageSetting = createPackageSetting(PACKAGE_NAME_1);
diff --git a/services/tests/mockingservicestests/src/com/android/server/crashrecovery/CrashRecoveryModuleTest.java b/services/tests/mockingservicestests/src/com/android/server/crashrecovery/CrashRecoveryModuleTest.java
index c481f84..d0b7cc7 100644
--- a/services/tests/mockingservicestests/src/com/android/server/crashrecovery/CrashRecoveryModuleTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/crashrecovery/CrashRecoveryModuleTest.java
@@ -84,8 +84,10 @@
@Test
public void testLifecycleServiceStart() {
mLifecycle.onStart();
+ doNothing().when(mPackageWatchdog).registerShutdownBroadcastReceiver();
verify(mPackageWatchdog, times(1)).noteBoot();
+ verify(mPackageWatchdog, times(1)).registerShutdownBroadcastReceiver();
ExtendedMockito.verify(() -> RescueParty.registerHealthObserver(any()),
Mockito.times(1));
}
diff --git a/services/tests/powerstatstests/Android.bp b/services/tests/powerstatstests/Android.bp
index f2b4136..b2a5b02 100644
--- a/services/tests/powerstatstests/Android.bp
+++ b/services/tests/powerstatstests/Android.bp
@@ -59,6 +59,7 @@
name: "PowerStatsTestsRavenwood",
static_libs: [
"services.core",
+ "platformprotosnano",
"coretests-aidl",
"ravenwood-junit",
"truth",
diff --git a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsAtomTest.java
similarity index 73%
rename from core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java
rename to services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsAtomTest.java
index ac1f7d0..62efbc3 100644
--- a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsAtomTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.internal.os;
+package com.android.server.power.stats;
import static android.os.BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE;
@@ -23,39 +23,262 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.os.AggregateBatteryConsumer;
import android.os.BatteryConsumer;
import android.os.BatteryUsageStats;
+import android.os.Process;
import android.os.UidBatteryConsumer;
import android.os.nano.BatteryUsageStatsAtomsProto;
import android.os.nano.BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsage;
+import android.platform.test.ravenwood.RavenwoodRule;
+import android.util.StatsEvent;
import androidx.test.filters.SmallTest;
+import com.android.server.am.BatteryStatsService;
+
import com.google.protobuf.nano.InvalidProtocolBufferNanoException;
+import org.junit.Rule;
import org.junit.Test;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-
@SmallTest
-public class BatteryUsageStatsPulledTest {
+public class BatteryUsageStatsAtomTest {
+
+ @Rule
+ public final RavenwoodRule mRavenwood = new RavenwoodRule();
private static final int UID_0 = 1000;
private static final int UID_1 = 2000;
private static final int UID_2 = 3000;
private static final int UID_3 = 4000;
- private static final int[] UID_USAGE_TIME_PROCESS_STATES = {
- BatteryConsumer.PROCESS_STATE_FOREGROUND,
- BatteryConsumer.PROCESS_STATE_BACKGROUND,
- BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE
- };
@Test
- public void testGetStatsProto() {
+ public void testAtom_BatteryUsageStatsPerUid() {
+ final BatteryUsageStats bus = buildBatteryUsageStats();
+ BatteryStatsService.FrameworkStatsLogger statsLogger =
+ mock(BatteryStatsService.FrameworkStatsLogger.class);
+
+ List<StatsEvent> actual = new ArrayList<>();
+ new BatteryStatsService.StatsPerUidLogger(statsLogger).logStats(bus, actual);
+
+ // Device-wide totals
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ Process.INVALID_UID,
+ BatteryConsumer.PROCESS_STATE_UNSPECIFIED,
+ 0L,
+ "cpu",
+ 30000.0f,
+ 20100.0f,
+ 20300L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ Process.INVALID_UID,
+ BatteryConsumer.PROCESS_STATE_UNSPECIFIED,
+ 0L,
+ "camera",
+ 30000.0f,
+ 20150.0f,
+ 0L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ Process.INVALID_UID,
+ BatteryConsumer.PROCESS_STATE_UNSPECIFIED,
+ 0L,
+ "CustomConsumer1",
+ 30000.0f,
+ 20200.0f,
+ 20400L
+ );
+
+ // Per-proc state estimates for UID_0
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_UNSPECIFIED,
+ 0L,
+ "screen",
+ 1650.0f,
+ 300.0f,
+ 0L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_UNSPECIFIED,
+ 0L,
+ "cpu",
+ 1650.0f,
+ 400.0f,
+ 600L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND,
+ 1000L,
+ "cpu",
+ 1650.0f,
+ 9100.0f,
+ 8100L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_BACKGROUND,
+ 2000L,
+ "cpu",
+ 1650.0f,
+ 9200.0f,
+ 8200L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE,
+ 0L,
+ "cpu",
+ 1650.0f,
+ 9300.0f,
+ 8400L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_CACHED,
+ 0L,
+ "cpu",
+ 1650.0f,
+ 9400.0f,
+ 0L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND,
+ 1000L,
+ "CustomConsumer1",
+ 1650.0f,
+ 450.0f,
+ 0L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_BACKGROUND,
+ 2000L,
+ "CustomConsumer1",
+ 1650.0f,
+ 450.0f,
+ 0L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND,
+ 1000L,
+ "CustomConsumer2",
+ 1650.0f,
+ 500.0f,
+ 800L
+ );
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_0,
+ BatteryConsumer.PROCESS_STATE_BACKGROUND,
+ 2000L,
+ "CustomConsumer2",
+ 1650.0f,
+ 500.0f,
+ 800L
+ );
+
+ // Nothing for UID_1, because its power consumption is 0
+
+ // Only "screen" is populated for UID_2
+ verify(statsLogger).buildStatsEvent(
+ 1000L,
+ 20000L,
+ 10000L,
+ 20,
+ 1234L,
+ UID_2,
+ BatteryConsumer.PROCESS_STATE_UNSPECIFIED,
+ 0L,
+ "screen",
+ 766.0f,
+ 766.0f,
+ 0L
+ );
+
+ verifyNoMoreInteractions(statsLogger);
+ }
+
+ @Test
+ public void testAtom_BatteryUsageStatsAtomsProto() {
final BatteryUsageStats bus = buildBatteryUsageStats();
final byte[] bytes = bus.getStatsProto();
BatteryUsageStatsAtomsProto proto;
@@ -68,9 +291,7 @@
assertEquals(bus.getStatsStartTimestamp(), proto.sessionStartMillis);
assertEquals(bus.getStatsEndTimestamp(), proto.sessionEndMillis);
- assertEquals(
- bus.getStatsEndTimestamp() - bus.getStatsStartTimestamp(),
- proto.sessionDurationMillis);
+ assertEquals(10000, proto.sessionDurationMillis);
assertEquals(bus.getDischargePercentage(), proto.sessionDischargePercentage);
assertEquals(bus.getDischargeDurationMs(), proto.dischargeDurationMillis);
@@ -90,8 +311,8 @@
final List<android.os.UidBatteryConsumer> uidConsumers = bus.getUidBatteryConsumers();
uidConsumers.sort((a, b) -> a.getUid() - b.getUid());
- final BatteryUsageStatsAtomsProto.UidBatteryConsumer[] uidConsumersProto
- = proto.uidBatteryConsumers;
+ final BatteryUsageStatsAtomsProto.UidBatteryConsumer[] uidConsumersProto =
+ proto.uidBatteryConsumers;
Arrays.sort(uidConsumersProto, (a, b) -> a.uid - b.uid);
// UID_0 - After sorting, UID_0 should be in position 0 for both data structures
@@ -186,6 +407,12 @@
}
}
+ private static final int[] UID_USAGE_TIME_PROCESS_STATES = {
+ BatteryConsumer.PROCESS_STATE_FOREGROUND,
+ BatteryConsumer.PROCESS_STATE_BACKGROUND,
+ BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE
+ };
+
private void assertSameUidBatteryConsumer(
android.os.UidBatteryConsumer uidConsumer,
BatteryUsageStatsAtomsProto.UidBatteryConsumer uidConsumerProto,
@@ -195,10 +422,10 @@
assertEquals("Uid consumers had mismatched uids", uid, uidConsumer.getUid());
assertEquals("For uid " + uid,
- uidConsumer.getTimeInStateMs(android.os.UidBatteryConsumer.STATE_FOREGROUND),
+ uidConsumer.getTimeInProcessStateMs(BatteryConsumer.PROCESS_STATE_FOREGROUND),
uidConsumerProto.timeInForegroundMillis);
assertEquals("For uid " + uid,
- uidConsumer.getTimeInStateMs(android.os.UidBatteryConsumer.STATE_BACKGROUND),
+ uidConsumer.getTimeInProcessStateMs(BatteryConsumer.PROCESS_STATE_BACKGROUND),
uidConsumerProto.timeInBackgroundMillis);
for (int processState : UID_USAGE_TIME_PROCESS_STATES) {
final long timeInStateMillis = uidConsumer.getTimeInProcessStateMs(processState);
@@ -265,7 +492,9 @@
.setDischargePercentage(20)
.setDischargedPowerRange(1000, 2000)
.setDischargeDurationMs(1234)
- .setStatsStartTimestamp(1000);
+ .setStatsStartTimestamp(1000)
+ .setStatsEndTimestamp(20000)
+ .setStatsDuration(10000);
final UidBatteryConsumer.Builder uidBuilder = builder
.getOrCreateUidBatteryConsumerBuilder(UID_0)
.setPackageWithHighestDrain("myPackage0")
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 753db12..b9e99dd 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -36,6 +36,8 @@
"-Werror",
],
static_libs: [
+ "a11ychecker-protos-java-proto-lite",
+ "aatf",
"cts-input-lib",
"frameworks-base-testutils",
"services.accessibility",
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtilsTest.java b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtilsTest.java
new file mode 100644
index 0000000..90d4275
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/AccessibilityCheckerUtilsTest.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.a11ychecker;
+
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_A11Y_SERVICE_CLASS_NAME;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_A11Y_SERVICE_SOURCE_VERSION_CODE;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_ACTIVITY_NAME;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_APP_PACKAGE_NAME;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_APP_VERSION_CODE;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_WINDOW_TITLE;
+import static com.android.server.accessibility.a11ychecker.TestUtils.getMockPackageManagerWithInstalledApps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.pm.PackageManager;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityCheckPreset;
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityCheckResult;
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheck;
+import com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheckResult;
+import com.google.android.apps.common.testing.accessibility.framework.checks.ClassNameCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.ClickableSpanCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.SpeakableTextPresentCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TouchTargetSizeCheck;
+import com.google.common.collect.ImmutableSet;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@RunWith(AndroidJUnit4.class)
+public class AccessibilityCheckerUtilsTest {
+
+ PackageManager mMockPackageManager;
+
+ @Before
+ public void setUp() throws PackageManager.NameNotFoundException {
+ mMockPackageManager = getMockPackageManagerWithInstalledApps();
+ }
+
+ @Test
+ public void processResults_happyPath_setsAllFields() {
+ AccessibilityNodeInfo mockNodeInfo =
+ new MockAccessibilityNodeInfoBuilder()
+ .setViewIdResourceName("TargetNode")
+ .build();
+ AccessibilityHierarchyCheckResult result1 =
+ new AccessibilityHierarchyCheckResult(
+ SpeakableTextPresentCheck.class,
+ AccessibilityCheckResult.AccessibilityCheckResultType.WARNING, null, 1,
+ null);
+ AccessibilityHierarchyCheckResult result2 =
+ new AccessibilityHierarchyCheckResult(
+ TouchTargetSizeCheck.class,
+ AccessibilityCheckResult.AccessibilityCheckResultType.ERROR, null, 2, null);
+ AccessibilityHierarchyCheckResult result3 =
+ new AccessibilityHierarchyCheckResult(
+ ClassNameCheck.class,
+ AccessibilityCheckResult.AccessibilityCheckResultType.INFO, null, 5, null);
+ AccessibilityHierarchyCheckResult result4 =
+ new AccessibilityHierarchyCheckResult(
+ ClickableSpanCheck.class,
+ AccessibilityCheckResult.AccessibilityCheckResultType.NOT_RUN, null, 5,
+ null);
+
+ Set<A11yCheckerProto.AccessibilityCheckResultReported> atoms =
+ AccessibilityCheckerUtils.processResults(
+ mockNodeInfo,
+ List.of(result1, result2, result3, result4),
+ null,
+ mMockPackageManager,
+ new ComponentName(TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME,
+ TEST_A11Y_SERVICE_CLASS_NAME));
+
+ assertThat(atoms).containsExactly(
+ createAtom(A11yCheckerProto.AccessibilityCheckClass.SPEAKABLE_TEXT_PRESENT_CHECK,
+ A11yCheckerProto.AccessibilityCheckResultType.WARNING, 1),
+ createAtom(A11yCheckerProto.AccessibilityCheckClass.TOUCH_TARGET_SIZE_CHECK,
+ A11yCheckerProto.AccessibilityCheckResultType.ERROR, 2)
+ );
+ }
+
+ @Test
+ public void processResults_packageNameNotFound_returnsEmptySet()
+ throws PackageManager.NameNotFoundException {
+ when(mMockPackageManager.getPackageInfo("com.uninstalled.app", 0))
+ .thenThrow(PackageManager.NameNotFoundException.class);
+ AccessibilityNodeInfo mockNodeInfo =
+ new MockAccessibilityNodeInfoBuilder()
+ .setPackageName("com.uninstalled.app")
+ .setViewIdResourceName("TargetNode")
+ .build();
+ AccessibilityHierarchyCheckResult result1 =
+ new AccessibilityHierarchyCheckResult(
+ TouchTargetSizeCheck.class,
+ AccessibilityCheckResult.AccessibilityCheckResultType.WARNING, null, 1,
+ null);
+ AccessibilityHierarchyCheckResult result2 =
+ new AccessibilityHierarchyCheckResult(
+ TouchTargetSizeCheck.class,
+ AccessibilityCheckResult.AccessibilityCheckResultType.ERROR, null, 2, null);
+
+ Set<A11yCheckerProto.AccessibilityCheckResultReported> atoms =
+ AccessibilityCheckerUtils.processResults(
+ mockNodeInfo,
+ List.of(result1, result2),
+ null,
+ mMockPackageManager,
+ new ComponentName(TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME,
+ TEST_A11Y_SERVICE_CLASS_NAME));
+
+ assertThat(atoms).isEmpty();
+ }
+
+ @Test
+ public void getActivityName_hasWindowStateChangedEvent_returnsActivityName() {
+ AccessibilityEvent accessibilityEvent =
+ AccessibilityEvent.obtain(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+ accessibilityEvent.setPackageName(TEST_APP_PACKAGE_NAME);
+ accessibilityEvent.setClassName(TEST_ACTIVITY_NAME);
+
+ assertThat(AccessibilityCheckerUtils.getActivityName(mMockPackageManager,
+ accessibilityEvent)).isEqualTo("MainActivity");
+ }
+
+ // Makes sure the AccessibilityHierarchyCheck class to enum mapping is up to date with the
+ // latest prod preset.
+ @Test
+ public void checkClassToEnumMap_hasAllLatestPreset() {
+ ImmutableSet<AccessibilityHierarchyCheck> checkPreset =
+ AccessibilityCheckPreset.getAccessibilityHierarchyChecksForPreset(
+ AccessibilityCheckPreset.LATEST);
+ Set<Class<? extends AccessibilityHierarchyCheck>> latestCheckClasses =
+ checkPreset.stream().map(AccessibilityHierarchyCheck::getClass).collect(
+ Collectors.toUnmodifiableSet());
+
+ assertThat(AccessibilityCheckerUtils.CHECK_CLASS_TO_ENUM_MAP.keySet())
+ .containsExactlyElementsIn(latestCheckClasses);
+ }
+
+
+ private static A11yCheckerProto.AccessibilityCheckResultReported createAtom(
+ A11yCheckerProto.AccessibilityCheckClass checkClass,
+ A11yCheckerProto.AccessibilityCheckResultType resultType,
+ int resultId) {
+ return A11yCheckerProto.AccessibilityCheckResultReported.newBuilder()
+ .setPackageName(TEST_APP_PACKAGE_NAME)
+ .setAppVersionCode(TEST_APP_VERSION_CODE)
+ .setUiElementPath(TEST_APP_PACKAGE_NAME + ":TargetNode")
+ .setWindowTitle(TEST_WINDOW_TITLE)
+ .setActivityName("")
+ .setSourceComponentName(new ComponentName(TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME,
+ TEST_A11Y_SERVICE_CLASS_NAME).flattenToString())
+ .setSourceVersionCode(TEST_A11Y_SERVICE_SOURCE_VERSION_CODE)
+ .setResultCheckClass(checkClass)
+ .setResultType(resultType)
+ .setResultId(resultId)
+ .build();
+ }
+
+}
diff --git a/core/tests/coretests/src/android/view/accessibility/a11ychecker/AccessibilityNodePathBuilderTest.java b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/AccessibilityNodePathBuilderTest.java
similarity index 80%
rename from core/tests/coretests/src/android/view/accessibility/a11ychecker/AccessibilityNodePathBuilderTest.java
rename to services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/AccessibilityNodePathBuilderTest.java
index 438277b..a53f42e 100644
--- a/core/tests/coretests/src/android/view/accessibility/a11ychecker/AccessibilityNodePathBuilderTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/AccessibilityNodePathBuilderTest.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package android.view.accessibility.a11ychecker;
+package com.android.server.accessibility.a11ychecker;
-import static android.view.accessibility.a11ychecker.MockAccessibilityNodeInfoBuilder.PACKAGE_NAME;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_APP_PACKAGE_NAME;
import static com.google.common.truth.Truth.assertThat;
@@ -36,7 +36,7 @@
@RunWith(AndroidJUnit4.class)
public class AccessibilityNodePathBuilderTest {
- public static final String RESOURCE_ID_PREFIX = PACKAGE_NAME + ":id/";
+ public static final String RESOURCE_ID_PREFIX = TEST_APP_PACKAGE_NAME + ":id/";
@Test
public void createNodePath_pathWithResourceNames() {
@@ -55,11 +55,11 @@
.build();
assertThat(AccessibilityNodePathBuilder.createNodePath(child))
- .isEqualTo(PACKAGE_NAME + ":root_node/parent_node[1]/child_node[1]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":root_node/parent_node[1]/child_node[1]");
assertThat(AccessibilityNodePathBuilder.createNodePath(parent))
- .isEqualTo(PACKAGE_NAME + ":root_node/parent_node[1]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":root_node/parent_node[1]");
assertThat(AccessibilityNodePathBuilder.createNodePath(root))
- .isEqualTo(PACKAGE_NAME + ":root_node");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":root_node");
}
@Test
@@ -81,11 +81,11 @@
.build();
assertThat(AccessibilityNodePathBuilder.createNodePath(child))
- .isEqualTo(PACKAGE_NAME + ":FrameLayout/RecyclerView[1]/TextView[1]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":FrameLayout/RecyclerView[1]/TextView[1]");
assertThat(AccessibilityNodePathBuilder.createNodePath(parent))
- .isEqualTo(PACKAGE_NAME + ":FrameLayout/RecyclerView[1]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":FrameLayout/RecyclerView[1]");
assertThat(AccessibilityNodePathBuilder.createNodePath(root))
- .isEqualTo(PACKAGE_NAME + ":FrameLayout");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":FrameLayout");
}
@Test
@@ -105,11 +105,11 @@
.build();
assertThat(AccessibilityNodePathBuilder.createNodePath(child1))
- .isEqualTo(PACKAGE_NAME + ":FrameLayout/child1[1]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":FrameLayout/child1[1]");
assertThat(AccessibilityNodePathBuilder.createNodePath(child2))
- .isEqualTo(PACKAGE_NAME + ":FrameLayout/TextView[2]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":FrameLayout/TextView[2]");
assertThat(AccessibilityNodePathBuilder.createNodePath(parent))
- .isEqualTo(PACKAGE_NAME + ":FrameLayout");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":FrameLayout");
}
@Test
@@ -133,13 +133,13 @@
.build();
assertThat(AccessibilityNodePathBuilder.createNodePath(child1))
- .isEqualTo(PACKAGE_NAME + ":parentId/childId[1]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":parentId/childId[1]");
assertThat(AccessibilityNodePathBuilder.createNodePath(child2))
- .isEqualTo(PACKAGE_NAME + ":parentId/child/Id/With/Slash[2]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":parentId/child/Id/With/Slash[2]");
assertThat(AccessibilityNodePathBuilder.createNodePath(child3))
- .isEqualTo(PACKAGE_NAME + ":parentId/childIdWithoutPrefix[3]");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":parentId/childIdWithoutPrefix[3]");
assertThat(AccessibilityNodePathBuilder.createNodePath(parent))
- .isEqualTo(PACKAGE_NAME + ":parentId");
+ .isEqualTo(TEST_APP_PACKAGE_NAME + ":parentId");
}
}
diff --git a/core/tests/coretests/src/android/view/accessibility/a11ychecker/MockAccessibilityNodeInfoBuilder.java b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/MockAccessibilityNodeInfoBuilder.java
similarity index 72%
rename from core/tests/coretests/src/android/view/accessibility/a11ychecker/MockAccessibilityNodeInfoBuilder.java
rename to services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/MockAccessibilityNodeInfoBuilder.java
index e363f0c..7cd3535 100644
--- a/core/tests/coretests/src/android/view/accessibility/a11ychecker/MockAccessibilityNodeInfoBuilder.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/MockAccessibilityNodeInfoBuilder.java
@@ -14,21 +14,33 @@
* limitations under the License.
*/
-package android.view.accessibility.a11ychecker;
+package com.android.server.accessibility.a11ychecker;
+
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_APP_PACKAGE_NAME;
+import static com.android.server.accessibility.a11ychecker.TestUtils.TEST_WINDOW_TITLE;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityWindowInfo;
import java.util.List;
final class MockAccessibilityNodeInfoBuilder {
- static final String PACKAGE_NAME = "com.example.app";
private final AccessibilityNodeInfo mMockNodeInfo = mock(AccessibilityNodeInfo.class);
MockAccessibilityNodeInfoBuilder() {
- when(mMockNodeInfo.getPackageName()).thenReturn(PACKAGE_NAME);
+ setPackageName(TEST_APP_PACKAGE_NAME);
+
+ AccessibilityWindowInfo windowInfo = new AccessibilityWindowInfo();
+ windowInfo.setTitle(TEST_WINDOW_TITLE);
+ when(mMockNodeInfo.getWindow()).thenReturn(windowInfo);
+ }
+
+ MockAccessibilityNodeInfoBuilder setPackageName(String packageName) {
+ when(mMockNodeInfo.getPackageName()).thenReturn(packageName);
+ return this;
}
MockAccessibilityNodeInfoBuilder setClassName(String className) {
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/OWNERS b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/OWNERS
new file mode 100644
index 0000000..7bdc029
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/OWNERS
@@ -0,0 +1 @@
+include /services/accessibility/java/com/android/server/accessibility/a11ychecker/OWNERS
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/TestUtils.java b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/TestUtils.java
new file mode 100644
index 0000000..a04bbee
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/a11ychecker/TestUtils.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.a11ychecker;
+
+import static org.mockito.Mockito.when;
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
+import org.mockito.Mockito;
+
+public class TestUtils {
+ static final String TEST_APP_PACKAGE_NAME = "com.example.app";
+ static final int TEST_APP_VERSION_CODE = 12321;
+ static final String TEST_ACTIVITY_NAME = "com.example.app.MainActivity";
+ static final String TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME = "com.assistive.app";
+ static final String TEST_A11Y_SERVICE_CLASS_NAME = "MyA11yService";
+ static final int TEST_A11Y_SERVICE_SOURCE_VERSION_CODE = 333555;
+ static final String TEST_WINDOW_TITLE = "Example window";
+
+ static PackageManager getMockPackageManagerWithInstalledApps()
+ throws PackageManager.NameNotFoundException {
+ PackageManager mockPackageManager = Mockito.mock(PackageManager.class);
+ ActivityInfo testActivityInfo = getTestActivityInfo();
+ ComponentName testActivityComponentName = new ComponentName(TEST_APP_PACKAGE_NAME,
+ TEST_ACTIVITY_NAME);
+
+ when(mockPackageManager.getActivityInfo(testActivityComponentName, 0))
+ .thenReturn(testActivityInfo);
+ when(mockPackageManager.getPackageInfo(TEST_APP_PACKAGE_NAME, 0))
+ .thenReturn(createPackageInfo(TEST_APP_PACKAGE_NAME, TEST_APP_VERSION_CODE,
+ testActivityInfo));
+ when(mockPackageManager.getPackageInfo(TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME, 0))
+ .thenReturn(createPackageInfo(TEST_A11Y_SERVICE_SOURCE_PACKAGE_NAME,
+ TEST_A11Y_SERVICE_SOURCE_VERSION_CODE, null));
+ return mockPackageManager;
+ }
+
+ static ActivityInfo getTestActivityInfo() {
+ ActivityInfo activityInfo = new ActivityInfo();
+ activityInfo.packageName = TEST_APP_PACKAGE_NAME;
+ activityInfo.name = TEST_ACTIVITY_NAME;
+ return activityInfo;
+ }
+
+ static PackageInfo createPackageInfo(String packageName, int versionCode,
+ @Nullable ActivityInfo activityInfo) {
+ PackageInfo packageInfo = new PackageInfo();
+ packageInfo.packageName = packageName;
+ packageInfo.setLongVersionCode(versionCode);
+ if (activityInfo != null) {
+ packageInfo.activities = new ActivityInfo[]{activityInfo};
+ }
+ return packageInfo;
+
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/audio/AbsoluteVolumeBehaviorTest.java b/services/tests/servicestests/src/com/android/server/audio/AbsoluteVolumeBehaviorTest.java
index ef9580c..758c84a 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AbsoluteVolumeBehaviorTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AbsoluteVolumeBehaviorTest.java
@@ -101,7 +101,7 @@
mAudioService = new AudioService(mContext, mSpyAudioSystem, mSystemServer,
mSettingsAdapter, mAudioVolumeGroupHelper, mMockAudioPolicy,
mTestLooper.getLooper(), mock(AppOpsManager.class), mock(PermissionEnforcer.class),
- mock(AudioServerPermissionProvider.class), r -> r.run()) {
+ mock(AudioServerPermissionProvider.class)) {
@Override
public int getDeviceForStream(int stream) {
return AudioSystem.DEVICE_OUT_SPEAKER;
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java
index 4645156..2cb02bd 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioDeviceVolumeManagerTest.java
@@ -78,7 +78,7 @@
mAudioService = new AudioService(mContext, mSpyAudioSystem, mSystemServer,
mSettingsAdapter, mAudioVolumeGroupHelper, mAudioPolicyMock,
mTestLooper.getLooper(), mock(AppOpsManager.class), mock(PermissionEnforcer.class),
- mock(AudioServerPermissionProvider.class), r -> r.run()) {
+ mock(AudioServerPermissionProvider.class)) {
@Override
public int getDeviceForStream(int stream) {
return AudioSystem.DEVICE_OUT_SPEAKER;
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
index b7100ea..037c3c0 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
@@ -87,7 +87,7 @@
.thenReturn(AppOpsManager.MODE_ALLOWED);
mAudioService = new AudioService(mContext, mSpyAudioSystem, mSpySystemServer,
mSettingsAdapter, mAudioVolumeGroupHelper, mMockAudioPolicy, null,
- mMockAppOpsManager, mMockPermissionEnforcer, mMockPermissionProvider, r -> r.run());
+ mMockAppOpsManager, mMockPermissionEnforcer, mMockPermissionProvider);
}
/**
diff --git a/services/tests/servicestests/src/com/android/server/audio/DeviceVolumeBehaviorTest.java b/services/tests/servicestests/src/com/android/server/audio/DeviceVolumeBehaviorTest.java
index 746645a..27b552f 100644
--- a/services/tests/servicestests/src/com/android/server/audio/DeviceVolumeBehaviorTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/DeviceVolumeBehaviorTest.java
@@ -78,7 +78,7 @@
mAudioService = new AudioService(mContext, mAudioSystem, mSystemServer,
mSettingsAdapter, mAudioVolumeGroupHelper, mAudioPolicyMock,
mTestLooper.getLooper(), mock(AppOpsManager.class), mock(PermissionEnforcer.class),
- mock(AudioServerPermissionProvider.class), r -> r.run());
+ mock(AudioServerPermissionProvider.class));
mTestLooper.dispatchAll();
}
diff --git a/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java b/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java
index e45ab31..8e34ee1 100644
--- a/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/VolumeHelperTest.java
@@ -160,7 +160,7 @@
@NonNull PermissionEnforcer enforcer,
AudioServerPermissionProvider permissionProvider) {
super(context, audioSystem, systemServer, settings, audioVolumeGroupHelper,
- audioPolicy, looper, appOps, enforcer, permissionProvider, r -> r.run());
+ audioPolicy, looper, appOps, enforcer, permissionProvider);
}
public void setDeviceForStream(int stream, int device) {
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/TimeToLiveHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/TimeToLiveHelperTest.java
index 8b46c8c..ad6c233 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/TimeToLiveHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/TimeToLiveHelperTest.java
@@ -29,6 +29,8 @@
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
+import android.content.Intent;
+import android.net.Uri;
import android.os.SystemClock;
import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
@@ -36,6 +38,7 @@
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.server.UiServiceTestCase;
+import com.android.server.pm.PackageManagerService;
import org.junit.After;
import org.junit.Before;
@@ -125,6 +128,50 @@
}
@Test
+ public void testTimeoutExpires_notifAlreadyCanceled() {
+ NotificationRecord r = getRecord("testTimeoutExpires", 1);
+
+ mHelper.scheduleTimeoutLocked(r, 1);
+ mHelper.cancelScheduledTimeoutLocked(r);
+
+ Intent intent = new Intent("com.android.server.notification.TimeToLiveHelper")
+ .setPackage(PackageManagerService.PLATFORM_PACKAGE_NAME)
+ .setData(new Uri.Builder()
+ .scheme("timeout")
+ .appendPath(r.getKey())
+ .build())
+ .putExtra(EXTRA_KEY, r.getKey())
+ .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+
+ mHelper.mNotificationTimeoutReceiver.onReceive(mContext, intent);
+
+ assertThat(mHelper.mKeys).isEmpty();
+ }
+
+ @Test
+ public void testTimeoutExpires_laterNotifAlreadyCanceled() {
+ NotificationRecord r = getRecord("testTimeoutExpires", 1);
+ NotificationRecord r2 = getRecord("testTimeoutExpires", 2);
+
+ mHelper.scheduleTimeoutLocked(r, 1);
+ mHelper.scheduleTimeoutLocked(r2, 2);
+ mHelper.cancelScheduledTimeoutLocked(r2);
+
+ Intent intent = new Intent("com.android.server.notification.TimeToLiveHelper")
+ .setPackage(PackageManagerService.PLATFORM_PACKAGE_NAME)
+ .setData(new Uri.Builder()
+ .scheme("timeout")
+ .appendPath(r2.getKey())
+ .build())
+ .putExtra(EXTRA_KEY, r2.getKey())
+ .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+
+ mHelper.mNotificationTimeoutReceiver.onReceive(mContext, intent);
+
+ assertThat(mHelper.mKeys).isEmpty();
+ }
+
+ @Test
public void testTimeout_earlierEntryAddedSecond() {
NotificationRecord later = getRecord("testTimeoutSecond", 2);
mHelper.scheduleTimeoutLocked(later, 1);
diff --git a/services/tests/vibrator/src/com/android/server/vibrator/HapticFeedbackVibrationProviderTest.java b/services/tests/vibrator/src/com/android/server/vibrator/HapticFeedbackVibrationProviderTest.java
index 633a3c9..901c036 100644
--- a/services/tests/vibrator/src/com/android/server/vibrator/HapticFeedbackVibrationProviderTest.java
+++ b/services/tests/vibrator/src/com/android/server/vibrator/HapticFeedbackVibrationProviderTest.java
@@ -54,6 +54,7 @@
import android.platform.test.flag.junit.SetFlagsRule;
import android.util.AtomicFile;
import android.util.SparseArray;
+import android.view.HapticFeedbackConstants;
import androidx.test.InstrumentationRegistry;
@@ -292,7 +293,7 @@
for (int effectId : BIOMETRIC_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, /* fromIme= */ false);
+ effectId, /* flags */ 0, /* privFlags */ 0);
assertThat(attrs.getUsage()).isEqualTo(VibrationAttributes.USAGE_COMMUNICATION_REQUEST);
}
}
@@ -302,8 +303,7 @@
HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations();
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- SAFE_MODE_ENABLED, /* bypassVibrationIntensitySetting= */ false,
- false /* fromIme*/);
+ SAFE_MODE_ENABLED, /* flags */ 0, /* privFlags */ 0);
assertThat(attrs.isFlagSet(FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF)).isFalse();
}
@@ -313,7 +313,8 @@
HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations();
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- SAFE_MODE_ENABLED, /* bypassVibrationIntensitySetting= */ true, false /* fromIme*/);
+ SAFE_MODE_ENABLED,
+ /* flags */ HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING, /* privFlags */ 0);
assertThat(attrs.isFlagSet(FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF)).isTrue();
}
@@ -325,7 +326,7 @@
for (int effectId : SCROLL_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, false /* fromIme*/);
+ effectId, /* flags */ 0, /* privFlags */ 0);
assertWithMessage("Expected FLAG_BYPASS_INTERRUPTION_POLICY for effect " + effectId)
.that(attrs.isFlagSet(FLAG_BYPASS_INTERRUPTION_POLICY)).isTrue();
}
@@ -338,7 +339,7 @@
for (int effectId : SCROLL_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, false /* fromIme*/);
+ effectId, /* flags */ 0, /* privFlags */ 0);
assertWithMessage("Expected no FLAG_BYPASS_INTERRUPTION_POLICY for effect " + effectId)
.that(attrs.isFlagSet(FLAG_BYPASS_INTERRUPTION_POLICY)).isFalse();
}
@@ -351,7 +352,8 @@
for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, true /* fromIme*/);
+ effectId, /* flags */ 0,
+ HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS);
assertWithMessage("Expected USAGE_TOUCH for effect " + effectId)
.that(attrs.getUsage()).isEqualTo(USAGE_TOUCH);
assertWithMessage("Expected no CATEGORY_KEYBOARD for effect " + effectId)
@@ -366,7 +368,7 @@
for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, false /* fromIme*/);
+ effectId, /* flags */ 0, /* privFlags */ 0);
assertWithMessage("Expected USAGE_TOUCH for effect " + effectId)
.that(attrs.getUsage()).isEqualTo(USAGE_TOUCH);
assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId)
@@ -381,7 +383,8 @@
for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, true /* fromIme*/);
+ effectId, /* flags */ 0,
+ HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS);
assertWithMessage("Expected USAGE_TOUCH for effect " + effectId)
.that(attrs.getUsage()).isEqualTo(USAGE_TOUCH);
assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId)
@@ -398,7 +401,8 @@
for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, true /* fromIme*/);
+ effectId, /* flags */ 0,
+ HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS);
assertWithMessage("Expected no FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE for effect "
+ effectId)
.that(attrs.isFlagSet(FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE)).isFalse();
@@ -414,7 +418,7 @@
for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, false /* fromIme*/);
+ effectId, /* flags */ 0, /* privFlags */ 0);
assertWithMessage("Expected no FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE for effect "
+ effectId)
.that(attrs.isFlagSet(FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE)).isFalse();
@@ -430,7 +434,8 @@
for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
VibrationAttributes attrs = hapticProvider.getVibrationAttributesForHapticFeedback(
- effectId, /* bypassVibrationIntensitySetting= */ false, true /* fromIme*/);
+ effectId, /* flags */ 0,
+ HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS);
assertWithMessage("Expected FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE for effect "
+ effectId)
.that(attrs.isFlagSet(FLAG_BYPASS_USER_VIBRATION_INTENSITY_SCALE)).isTrue();
diff --git a/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java b/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
index 1875284..ef944db 100644
--- a/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
+++ b/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
@@ -2661,9 +2661,10 @@
private HalVibration performHapticFeedbackAndWaitUntilFinished(VibratorManagerService service,
int constant, boolean always) throws InterruptedException {
- HalVibration vib =
- service.performHapticFeedbackInternal(UID, Context.DEVICE_ID_DEFAULT, PACKAGE_NAME,
- constant, always, "some reason", service, false /* fromIme */);
+ HalVibration vib = service.performHapticFeedbackInternal(UID, Context.DEVICE_ID_DEFAULT,
+ PACKAGE_NAME, constant, "some reason", service,
+ always ? HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING : 0 /* flags */,
+ 0 /* privFlags */);
if (vib != null) {
vib.waitForEnd();
}
diff --git a/services/tests/wmtests/OWNERS b/services/tests/wmtests/OWNERS
index 78b867f..51519fd 100644
--- a/services/tests/wmtests/OWNERS
+++ b/services/tests/wmtests/OWNERS
@@ -4,4 +4,7 @@
# Voice Interaction
per-file *Assist* = file:/core/java/android/service/voice/OWNERS
-natanieljr@google.com
\ No newline at end of file
+# Keyboard shortcuts
+per-file res/xml/bookmarks.xml = file:/services/core/java/com/android/server/input/OWNERS
+
+natanieljr@google.com
diff --git a/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java b/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java
index 59b08a5..526c351 100644
--- a/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java
+++ b/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java
@@ -97,6 +97,7 @@
mPhoneWindowManager.assertLaunchCategory(category);
}
+ mPhoneWindowManager.overrideRoleManager();
for (int i = 0; i < ROLE_SHORTCUTS.size(); i++) {
final int keyCode = ROLE_SHORTCUTS.keyAt(i);
final String role = ROLE_SHORTCUTS.valueAt(i);
diff --git a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java
index fdb57d1..2b7e7ab 100644
--- a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java
+++ b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java
@@ -568,6 +568,12 @@
doReturn(isShowing).when(mKeyguardServiceDelegate).isShowing();
}
+ void overrideRoleManager() {
+ doReturn(mContext).when(mContext).createContextAsUser(any(), anyInt());
+ doReturn(mRoleManager).when(mContext).getSystemService(eq(RoleManager.class));
+ doReturn(mPackageManager).when(mContext).getPackageManager();
+ }
+
void setupAssistForLaunch() {
doNothing().when(mPhoneWindowManager).sendCloseSystemWindows();
doReturn(true).when(mPhoneWindowManager).isUserSetupComplete();
@@ -709,7 +715,7 @@
throw new AssertionError("failed to assert " + category, t);
}
// Reset verifier for next call.
- Mockito.reset(mContext);
+ Mockito.clearInvocations(mContext);
}
void assertLaunchRole(String role) {
@@ -719,10 +725,10 @@
verify(mContext).startActivityAsUser(intentCaptor.capture(), any());
switch (role) {
case RoleManager.ROLE_BROWSER:
- Assert.assertEquals(intentCaptor.getValue(), mBrowserIntent);
+ Assert.assertEquals(mBrowserIntent, intentCaptor.getValue());
break;
case RoleManager.ROLE_SMS:
- Assert.assertEquals(intentCaptor.getValue(), mSmsIntent);
+ Assert.assertEquals(mSmsIntent, intentCaptor.getValue());
break;
default:
throw new AssertionError("Role " + role + " not supported in tests.");
@@ -731,7 +737,7 @@
throw new AssertionError("failed to assert " + role, t);
}
// Reset verifier for next call.
- Mockito.reset(mContext);
+ Mockito.clearInvocations(mContext);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java
index a3252f8..6ad1044 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRefresherTests.java
@@ -53,7 +53,7 @@
@RunWith(WindowTestRunner.class)
public class ActivityRefresherTests extends WindowTestsBase {
private Handler mMockHandler;
- private LetterboxConfiguration mLetterboxConfiguration;
+ private AppCompatConfiguration mAppCompatConfiguration;
private ActivityRecord mActivity;
private ActivityRefresher mActivityRefresher;
@@ -69,13 +69,13 @@
@Before
public void setUp() throws Exception {
- mLetterboxConfiguration = mDisplayContent.mWmService.mLetterboxConfiguration;
- spyOn(mLetterboxConfiguration);
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ mAppCompatConfiguration = mDisplayContent.mWmService.mAppCompatConfiguration;
+ spyOn(mAppCompatConfiguration);
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(true);
mMockHandler = mock(Handler.class);
@@ -90,7 +90,7 @@
@Test
public void testShouldRefreshActivity_refreshDisabled() throws Exception {
- when(mLetterboxConfiguration.isCameraCompatRefreshEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshEnabled())
.thenReturn(false);
configureActivityAndDisplay();
mActivityRefresher.addEvaluator(mEvaluatorTrue);
@@ -146,7 +146,7 @@
public void testOnActivityConfigurationChanging_cycleThroughStopDisabled()
throws Exception {
mActivityRefresher.addEvaluator(mEvaluatorTrue);
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(false);
configureActivityAndDisplay();
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java
index 2d94b34..d8c7fb3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java
@@ -290,7 +290,7 @@
* Runs a test scenario providing a Robot.
*/
void runTestScenario(@NonNull Consumer<CameraOverridesRobotTest> consumer) {
- spyOn(mWm.mLetterboxConfiguration);
+ spyOn(mWm.mAppCompatConfiguration);
final CameraOverridesRobotTest robot = new CameraOverridesRobotTest(mWm, mAtm, mSupervisor);
consumer.accept(robot);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java
index 006b370..0b1bb0f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java
@@ -112,7 +112,7 @@
* Runs a test scenario providing a Robot.
*/
void runTestScenario(@NonNull Consumer<DisplayRotationPolicyRobotTest> consumer) {
- spyOn(mWm.mLetterboxConfiguration);
+ spyOn(mWm.mAppCompatConfiguration);
final DisplayRotationPolicyRobotTest robot =
new DisplayRotationPolicyRobotTest(mWm, mAtm, mSupervisor);
consumer.accept(robot);
@@ -168,7 +168,7 @@
// TODO(b/350460645): Create Desktop Windowing Robot to reuse common functionalities.
void allowEnterDesktopMode(boolean isAllowed) {
doReturn(isAllowed).when(() ->
- DesktopModeLaunchParamsModifier.canEnterDesktopMode(any()));
+ DesktopModeHelper.canEnterDesktopMode(any()));
}
private AppCompatCameraPolicy getTopAppCompatCameraPolicy() {
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationPersisterTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationPersisterTest.java
similarity index 89%
rename from services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationPersisterTest.java
rename to services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationPersisterTest.java
index 3fcec96..c952e2f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationPersisterTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationPersisterTest.java
@@ -18,8 +18,8 @@
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -44,14 +44,14 @@
import java.util.function.Supplier;
/**
- * Tests for the {@link LetterboxConfigurationPersister} class.
+ * Tests for the {@link AppCompatConfigurationPersister} class.
*
* Build/Install/Run:
- * atest WmTests:LetterboxConfigurationPersisterTest
+ * atest WmTests:AppCompatConfigurationPersisterTest
*/
@SmallTest
@Presubmit
-public class LetterboxConfigurationPersisterTest {
+public class AppCompatConfigurationPersisterTest {
private static final long TIMEOUT = 2000L; // 2 secs
@@ -61,7 +61,7 @@
private static final String LETTERBOX_CONFIGURATION_TEST_FILENAME = "letterbox_config_test";
- private LetterboxConfigurationPersister mLetterboxConfigurationPersister;
+ private AppCompatConfigurationPersister mAppCompatConfigurationPersister;
private Context mContext;
private PersisterQueue mPersisterQueue;
private QueueState mQueueState;
@@ -74,7 +74,7 @@
mConfigFolder = mContext.getFilesDir();
mPersisterQueue = new PersisterQueue();
mQueueState = new QueueState();
- mLetterboxConfigurationPersister = new LetterboxConfigurationPersister(
+ mAppCompatConfigurationPersister = new AppCompatConfigurationPersister(
() -> mContext.getResources().getInteger(
R.integer.config_letterboxDefaultPositionForHorizontalReachability),
() -> mContext.getResources().getInteger(
@@ -88,12 +88,12 @@
LETTERBOX_CONFIGURATION_TEST_FILENAME);
mQueueListener = queueEmpty -> mQueueState.onItemAdded();
mPersisterQueue.addListener(mQueueListener);
- mLetterboxConfigurationPersister.start();
+ mAppCompatConfigurationPersister.start();
}
@After
public void tearDown() throws InterruptedException {
- deleteConfiguration(mLetterboxConfigurationPersister, mPersisterQueue);
+ deleteConfiguration(mAppCompatConfigurationPersister, mPersisterQueue);
waitForCompletion(mPersisterQueue);
mPersisterQueue.removeListener(mQueueListener);
stopPersisterSafe(mPersisterQueue);
@@ -102,7 +102,7 @@
@Test
public void test_whenStoreIsCreated_valuesAreDefaults() {
final int positionForHorizontalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.getLetterboxPositionForHorizontalReachability(
false);
final int defaultPositionForHorizontalReachability =
mContext.getResources().getInteger(
@@ -110,7 +110,7 @@
Assert.assertEquals(defaultPositionForHorizontalReachability,
positionForHorizontalReachability);
final int positionForVerticalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(false);
+ mAppCompatConfigurationPersister.getLetterboxPositionForVerticalReachability(false);
final int defaultPositionForVerticalReachability =
mContext.getResources().getInteger(
R.integer.config_letterboxDefaultPositionForVerticalReachability);
@@ -120,16 +120,16 @@
@Test
public void test_whenUpdatedWithNewValues_valuesAreWritten() {
- mLetterboxConfigurationPersister.setLetterboxPositionForHorizontalReachability(false,
+ mAppCompatConfigurationPersister.setLetterboxPositionForHorizontalReachability(false,
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
- mLetterboxConfigurationPersister.setLetterboxPositionForVerticalReachability(false,
+ mAppCompatConfigurationPersister.setLetterboxPositionForVerticalReachability(false,
LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP);
waitForCompletion(mPersisterQueue);
final int newPositionForHorizontalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
+ mAppCompatConfigurationPersister.getLetterboxPositionForHorizontalReachability(
false);
final int newPositionForVerticalReachability =
- mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(false);
+ mAppCompatConfigurationPersister.getLetterboxPositionForVerticalReachability(false);
Assert.assertEquals(LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
newPositionForHorizontalReachability);
Assert.assertEquals(LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
@@ -139,7 +139,7 @@
@Test
public void test_whenUpdatedWithNewValues_valuesAreReadAfterRestart() {
final PersisterQueue firstPersisterQueue = new PersisterQueue();
- final LetterboxConfigurationPersister firstPersister = new LetterboxConfigurationPersister(
+ final AppCompatConfigurationPersister firstPersister = new AppCompatConfigurationPersister(
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
mContext.getFilesDir(), firstPersisterQueue, mQueueState,
@@ -152,7 +152,7 @@
waitForCompletion(firstPersisterQueue);
stopPersisterSafe(firstPersisterQueue);
final PersisterQueue secondPersisterQueue = new PersisterQueue();
- final LetterboxConfigurationPersister secondPersister = new LetterboxConfigurationPersister(
+ final AppCompatConfigurationPersister secondPersister = new AppCompatConfigurationPersister(
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
mContext.getFilesDir(), secondPersisterQueue, mQueueState,
@@ -174,7 +174,7 @@
@Test
public void test_whenUpdatedWithNewValuesAndDeleted_valuesAreDefaults() {
final PersisterQueue firstPersisterQueue = new PersisterQueue();
- final LetterboxConfigurationPersister firstPersister = new LetterboxConfigurationPersister(
+ final AppCompatConfigurationPersister firstPersister = new AppCompatConfigurationPersister(
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
mContext.getFilesDir(), firstPersisterQueue, mQueueState,
@@ -198,7 +198,7 @@
stopPersisterSafe(firstPersisterQueue);
final PersisterQueue secondPersisterQueue = new PersisterQueue();
- final LetterboxConfigurationPersister secondPersister = new LetterboxConfigurationPersister(
+ final AppCompatConfigurationPersister secondPersister = new AppCompatConfigurationPersister(
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
mContext.getFilesDir(), secondPersisterQueue, mQueueState,
@@ -245,7 +245,7 @@
return mQueueState.isEmpty();
}
- private void deleteConfiguration(LetterboxConfigurationPersister persister,
+ private void deleteConfiguration(AppCompatConfigurationPersister persister,
PersisterQueue persisterQueue) {
final AtomicFile fileToDelete = new AtomicFile(
new File(mConfigFolder, LETTERBOX_CONFIGURATION_TEST_FILENAME));
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationRobot.java
similarity index 68%
rename from services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java
rename to services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationRobot.java
index e1da913..cb3cf6b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationRobot.java
@@ -24,46 +24,46 @@
import androidx.annotation.NonNull;
/**
- * Robot implementation for {@link LetterboxConfiguration}.
+ * Robot implementation for {@link AppCompatConfiguration}.
*/
-class AppCompatLetterboxConfigurationRobot {
+class AppCompatConfigurationRobot {
@NonNull
- private final LetterboxConfiguration mLetterboxConfiguration;
+ private final AppCompatConfiguration mAppCompatConfiguration;
- AppCompatLetterboxConfigurationRobot(@NonNull LetterboxConfiguration letterboxConfiguration) {
- mLetterboxConfiguration = letterboxConfiguration;
- spyOn(mLetterboxConfiguration);
+ AppCompatConfigurationRobot(@NonNull AppCompatConfiguration appCompatConfiguration) {
+ mAppCompatConfiguration = appCompatConfiguration;
+ spyOn(mAppCompatConfiguration);
}
void enableTranslucentPolicy(boolean enabled) {
- when(mLetterboxConfiguration.isTranslucentLetterboxingEnabled()).thenReturn(enabled);
+ when(mAppCompatConfiguration.isTranslucentLetterboxingEnabled()).thenReturn(enabled);
}
void enablePolicyForIgnoringRequestedOrientation(boolean enabled) {
- doReturn(enabled).when(mLetterboxConfiguration)
+ doReturn(enabled).when(mAppCompatConfiguration)
.isPolicyForIgnoringRequestedOrientationEnabled();
}
void enableCameraCompatTreatment(boolean enabled) {
- doReturn(enabled).when(mLetterboxConfiguration).isCameraCompatTreatmentEnabled();
+ doReturn(enabled).when(mAppCompatConfiguration).isCameraCompatTreatmentEnabled();
}
void enableCameraCompatTreatmentAtBuildTime(boolean enabled) {
- doReturn(enabled).when(mLetterboxConfiguration)
+ doReturn(enabled).when(mAppCompatConfiguration)
.isCameraCompatTreatmentEnabledAtBuildTime();
}
void enableUserAppAspectRatioFullscreen(boolean enabled) {
- doReturn(enabled).when(mLetterboxConfiguration).isUserAppAspectRatioFullscreenEnabled();
+ doReturn(enabled).when(mAppCompatConfiguration).isUserAppAspectRatioFullscreenEnabled();
}
void enableUserAppAspectRatioSettings(boolean enabled) {
- doReturn(enabled).when(mLetterboxConfiguration).isUserAppAspectRatioSettingsEnabled();
+ doReturn(enabled).when(mAppCompatConfiguration).isUserAppAspectRatioSettingsEnabled();
}
void enableCameraCompatSplitScreenAspectRatio(boolean enabled) {
- doReturn(enabled).when(mLetterboxConfiguration)
+ doReturn(enabled).when(mAppCompatConfiguration)
.isCameraCompatSplitScreenAspectRatioEnabled();
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationTest.java
similarity index 74%
rename from services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java
rename to services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationTest.java
index 79e401c..6efd7de 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatConfigurationTest.java
@@ -19,12 +19,12 @@
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
import static com.android.server.wm.testing.Assert.assertThrows;
import static junit.framework.Assert.assertEquals;
@@ -52,35 +52,35 @@
import java.util.function.BiConsumer;
/**
- * Tests for the {@link LetterboxConfiguration} class.
+ * Tests for the {@link AppCompatConfiguration} class.
*
* Build/Install/Run:
- * atest WmTests:LetterboxConfigurationTest
+ * atest WmTests:AppCompatConfigurationTest
*/
@SmallTest
@Presubmit
-public class LetterboxConfigurationTest {
+public class AppCompatConfigurationTest {
private Context mContext;
- private LetterboxConfiguration mLetterboxConfiguration;
- private LetterboxConfigurationPersister mLetterboxConfigurationPersister;
+ private AppCompatConfiguration mAppCompatConfiguration;
+ private AppCompatConfigurationPersister mAppCompatConfigurationPersister;
@Before
public void setUp() throws Exception {
mContext = getInstrumentation().getTargetContext();
- mLetterboxConfigurationPersister = mock(LetterboxConfigurationPersister.class);
- mLetterboxConfiguration = new LetterboxConfiguration(mContext,
- mLetterboxConfigurationPersister);
+ mAppCompatConfigurationPersister = mock(AppCompatConfigurationPersister.class);
+ mAppCompatConfiguration = new AppCompatConfiguration(mContext,
+ mAppCompatConfigurationPersister);
}
@Test
public void test_whenReadingValues_storeIsInvoked() {
for (boolean halfFoldPose : Arrays.asList(false, true)) {
- mLetterboxConfiguration.getLetterboxPositionForHorizontalReachability(halfFoldPose);
- verify(mLetterboxConfigurationPersister).getLetterboxPositionForHorizontalReachability(
+ mAppCompatConfiguration.getLetterboxPositionForHorizontalReachability(halfFoldPose);
+ verify(mAppCompatConfigurationPersister).getLetterboxPositionForHorizontalReachability(
halfFoldPose);
- mLetterboxConfiguration.getLetterboxPositionForVerticalReachability(halfFoldPose);
- verify(mLetterboxConfigurationPersister).getLetterboxPositionForVerticalReachability(
+ mAppCompatConfiguration.getLetterboxPositionForVerticalReachability(halfFoldPose);
+ verify(mAppCompatConfigurationPersister).getLetterboxPositionForVerticalReachability(
halfFoldPose);
}
}
@@ -88,13 +88,13 @@
@Test
public void test_whenSettingValues_updateConfigurationIsInvoked() {
for (boolean halfFoldPose : Arrays.asList(false, true)) {
- mLetterboxConfiguration.movePositionForHorizontalReachabilityToNextRightStop(
+ mAppCompatConfiguration.movePositionForHorizontalReachabilityToNextRightStop(
halfFoldPose);
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForHorizontalReachability(
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForHorizontalReachability(
eq(halfFoldPose), anyInt());
- mLetterboxConfiguration.movePositionForVerticalReachabilityToNextBottomStop(
+ mAppCompatConfiguration.movePositionForVerticalReachabilityToNextBottomStop(
halfFoldPose);
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForVerticalReachability(
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForVerticalReachability(
eq(halfFoldPose), anyInt());
}
}
@@ -107,65 +107,65 @@
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expectedTime */ 1,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expectedTime */ 1,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
// Starting from left
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expectedTime */ 2,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER,
/* expectedTime */ 1,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
// Starting from right
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expectedTime */ 2,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER,
/* expectedTime */ 2,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
// Starting from left - book mode
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expectedTime */ 1,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expectedTime */ 1,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
// Starting from right - book mode
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expectedTime */ 2,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextRightStop);
assertForHorizontalMove(
/* from */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT,
/* expected */ LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
/* expectedTime */ 2,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
+ AppCompatConfiguration::movePositionForHorizontalReachabilityToNextLeftStop);
}
@Test
@@ -176,85 +176,85 @@
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expectedTime */ 1,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expectedTime */ 1,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextTopStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextTopStop);
// Starting from top
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER,
/* expectedTime */ 1,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expectedTime */ 2,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextTopStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextTopStop);
// Starting from bottom
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER,
/* expectedTime */ 2,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextTopStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextTopStop);
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expectedTime */ 2,
/* halfFoldPose */ false,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
// Starting from top - tabletop mode
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expectedTime */ 1,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expectedTime */ 1,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextTopStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextTopStop);
// Starting from bottom - tabletop mode
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
/* expectedTime */ 2,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextTopStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextTopStop);
assertForVerticalMove(
/* from */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expected */ LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM,
/* expectedTime */ 2,
/* halfFoldPose */ true,
- LetterboxConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
+ AppCompatConfiguration::movePositionForVerticalReachabilityToNextBottomStop);
}
private void assertForHorizontalMove(int from, int expected, int expectedTime,
- boolean halfFoldPose, BiConsumer<LetterboxConfiguration, Boolean> move) {
+ boolean halfFoldPose, BiConsumer<AppCompatConfiguration, Boolean> move) {
// We are in the current position
- when(mLetterboxConfiguration.getLetterboxPositionForHorizontalReachability(halfFoldPose))
+ when(mAppCompatConfiguration.getLetterboxPositionForHorizontalReachability(halfFoldPose))
.thenReturn(from);
- move.accept(mLetterboxConfiguration, halfFoldPose);
- verify(mLetterboxConfigurationPersister,
+ move.accept(mAppCompatConfiguration, halfFoldPose);
+ verify(mAppCompatConfigurationPersister,
times(expectedTime)).setLetterboxPositionForHorizontalReachability(halfFoldPose,
expected);
}
private void assertForVerticalMove(int from, int expected, int expectedTime,
- boolean halfFoldPose, BiConsumer<LetterboxConfiguration, Boolean> move) {
+ boolean halfFoldPose, BiConsumer<AppCompatConfiguration, Boolean> move) {
// We are in the current position
- when(mLetterboxConfiguration.getLetterboxPositionForVerticalReachability(halfFoldPose))
+ when(mAppCompatConfiguration.getLetterboxPositionForVerticalReachability(halfFoldPose))
.thenReturn(from);
- move.accept(mLetterboxConfiguration, halfFoldPose);
- verify(mLetterboxConfigurationPersister,
+ move.accept(mAppCompatConfiguration, halfFoldPose);
+ verify(mAppCompatConfigurationPersister,
times(expectedTime)).setLetterboxPositionForVerticalReachability(halfFoldPose,
expected);
}
@@ -262,20 +262,20 @@
@Test
public void test_letterboxPositionWhenReachabilityEnabledIsReset() {
// Check that horizontal reachability is set with correct arguments
- mLetterboxConfiguration.resetPersistentLetterboxPositionForHorizontalReachability();
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForHorizontalReachability(
+ mAppCompatConfiguration.resetPersistentLetterboxPositionForHorizontalReachability();
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForHorizontalReachability(
false /* forBookMode */,
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER);
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForHorizontalReachability(
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForHorizontalReachability(
true /* forBookMode */,
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
// Check that vertical reachability is set with correct arguments
- mLetterboxConfiguration.resetPersistentLetterboxPositionForVerticalReachability();
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForVerticalReachability(
+ mAppCompatConfiguration.resetPersistentLetterboxPositionForVerticalReachability();
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForVerticalReachability(
false /* forTabletopMode */,
LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER);
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForVerticalReachability(
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForVerticalReachability(
true /* forTabletopMode */,
LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP);
}
@@ -283,16 +283,16 @@
@Test
public void test_letterboxPositionWhenReachabilityEnabledIsSet() {
// Check that horizontal reachability is set with correct arguments
- mLetterboxConfiguration.setPersistentLetterboxPositionForHorizontalReachability(
+ mAppCompatConfiguration.setPersistentLetterboxPositionForHorizontalReachability(
false /* forBookMode */, LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForHorizontalReachability(
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForHorizontalReachability(
false /* forBookMode */,
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
// Check that vertical reachability is set with correct arguments
- mLetterboxConfiguration.setPersistentLetterboxPositionForVerticalReachability(
+ mAppCompatConfiguration.setPersistentLetterboxPositionForVerticalReachability(
false /* forTabletopMode */, LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP);
- verify(mLetterboxConfigurationPersister).setLetterboxPositionForVerticalReachability(
+ verify(mAppCompatConfigurationPersister).setLetterboxPositionForVerticalReachability(
false /* forTabletopMode */,
LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP);
}
@@ -300,60 +300,60 @@
@Test
public void test_setLetterboxHorizontalPositionMultiplier_validValues() {
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(-1));
+ () -> mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(-1));
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(2));
+ () -> mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(2));
// Does not throw an exception for values [0,1].
- mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(0);
- mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
- mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(1);
+ mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(0);
+ mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
+ mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(1);
}
@Test
public void test_setLetterboxVerticalPositionMultiplier_validValues() {
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(-1));
+ () -> mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(-1));
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(2));
+ () -> mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(2));
// Does not throw an exception for values [0,1].
- mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0);
- mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
- mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(1);
+ mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0);
+ mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
+ mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(1);
}
@Test
public void test_setLetterboxBookModePositionMultiplier_validValues() {
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxBookModePositionMultiplier(-1));
+ () -> mAppCompatConfiguration.setLetterboxBookModePositionMultiplier(-1));
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxBookModePositionMultiplier(2));
+ () -> mAppCompatConfiguration.setLetterboxBookModePositionMultiplier(2));
// Does not throw an exception for values [0,1].
- mLetterboxConfiguration.setLetterboxBookModePositionMultiplier(0);
- mLetterboxConfiguration.setLetterboxBookModePositionMultiplier(0.5f);
- mLetterboxConfiguration.setLetterboxBookModePositionMultiplier(1);
+ mAppCompatConfiguration.setLetterboxBookModePositionMultiplier(0);
+ mAppCompatConfiguration.setLetterboxBookModePositionMultiplier(0.5f);
+ mAppCompatConfiguration.setLetterboxBookModePositionMultiplier(1);
}
@Test
public void test_setLetterboxTabletopModePositionMultiplier_validValues() {
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(-1));
+ () -> mAppCompatConfiguration.setLetterboxTabletopModePositionMultiplier(-1));
assertThrows(IllegalArgumentException.class,
- () -> mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(2));
+ () -> mAppCompatConfiguration.setLetterboxTabletopModePositionMultiplier(2));
// Does not throw an exception for values [0,1].
- mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(0);
- mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(0.5f);
- mLetterboxConfiguration.setLetterboxTabletopModePositionMultiplier(1);
+ mAppCompatConfiguration.setLetterboxTabletopModePositionMultiplier(0);
+ mAppCompatConfiguration.setLetterboxTabletopModePositionMultiplier(0.5f);
+ mAppCompatConfiguration.setLetterboxTabletopModePositionMultiplier(1);
}
@Test
public void test_evaluateThinLetterboxWhenDensityChanges() {
final Resources rs = mock(Resources.class);
final DisplayMetrics dm = mock(DisplayMetrics.class);
- final LetterboxConfigurationPersister lp = mock(LetterboxConfigurationPersister.class);
+ final AppCompatConfigurationPersister lp = mock(AppCompatConfigurationPersister.class);
spyOn(mContext);
when(rs.getDisplayMetrics()).thenReturn(dm);
when(mContext.getResources()).thenReturn(rs);
@@ -361,7 +361,7 @@
.thenReturn(100);
when(rs.getDimensionPixelSize(R.dimen.config_letterboxThinLetterboxHeightDp))
.thenReturn(200);
- final LetterboxConfiguration configuration = new LetterboxConfiguration(mContext, lp);
+ final AppCompatConfiguration configuration = new AppCompatConfiguration(mContext, lp);
// Verify the values are the expected ones
dm.density = 100;
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationOverridesTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationOverridesTest.java
index 35c2ee0..634453f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationOverridesTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationOverridesTest.java
@@ -162,7 +162,7 @@
* Runs a test scenario providing a Robot.
*/
void runTestScenario(@NonNull Consumer<OrientationOverridesRobotTest> consumer) {
- spyOn(mWm.mLetterboxConfiguration);
+ spyOn(mWm.mAppCompatConfiguration);
final OrientationOverridesRobotTest robot =
new OrientationOverridesRobotTest(mWm, mAtm, mSupervisor);
consumer.accept(robot);
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java
index aa520e9..ad34a6b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java
@@ -514,7 +514,7 @@
*/
void runTestScenario(boolean withActivity,
@NonNull Consumer<OrientationPolicyRobotTest> consumer) {
- spyOn(mWm.mLetterboxConfiguration);
+ spyOn(mWm.mAppCompatConfiguration);
final OrientationPolicyRobotTest robot =
new OrientationPolicyRobotTest(mWm, mAtm, mSupervisor, withActivity);
consumer.accept(robot);
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatRobotBase.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatRobotBase.java
index de16e38..92f246b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatRobotBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatRobotBase.java
@@ -31,7 +31,7 @@
@NonNull
private final AppCompatActivityRobot mActivityRobot;
@NonNull
- private final AppCompatLetterboxConfigurationRobot mConfigurationRobot;
+ private final AppCompatConfigurationRobot mConfigurationRobot;
@NonNull
private final AppCompatComponentPropRobot mOptPropRobot;
@@ -42,7 +42,7 @@
mActivityRobot = new AppCompatActivityRobot(wm, atm, supervisor,
displayWidth, displayHeight);
mConfigurationRobot =
- new AppCompatLetterboxConfigurationRobot(wm.mLetterboxConfiguration);
+ new AppCompatConfigurationRobot(wm.mAppCompatConfiguration);
mOptPropRobot = new AppCompatComponentPropRobot(wm);
}
@@ -53,12 +53,12 @@
}
@NonNull
- AppCompatLetterboxConfigurationRobot conf() {
+ AppCompatConfigurationRobot conf() {
return mConfigurationRobot;
}
@NonNull
- void applyOnConf(@NonNull Consumer<AppCompatLetterboxConfigurationRobot> consumer) {
+ void applyOnConf(@NonNull Consumer<AppCompatConfigurationRobot> consumer) {
consumer.accept(mConfigurationRobot);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
index 11e6d90..eaa1641 100644
--- a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java
@@ -88,7 +88,7 @@
private static final String CAMERA_ID_2 = "camera-2";
private CameraManager mMockCameraManager;
private Handler mMockHandler;
- private LetterboxConfiguration mLetterboxConfiguration;
+ private AppCompatConfiguration mAppCompatConfiguration;
private CameraManager.AvailabilityCallback mCameraAvailabilityCallback;
private CameraCompatFreeformPolicy mCameraCompatFreeformPolicy;
@@ -98,13 +98,13 @@
@Before
public void setUp() throws Exception {
- mLetterboxConfiguration = mDisplayContent.mWmService.mLetterboxConfiguration;
- spyOn(mLetterboxConfiguration);
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ mAppCompatConfiguration = mDisplayContent.mWmService.mAppCompatConfiguration;
+ spyOn(mAppCompatConfiguration);
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(true);
mMockCameraManager = mock(CameraManager.class);
@@ -228,7 +228,7 @@
@Test
public void testOnActivityConfigurationChanging_cycleThroughStopDisabled() throws Exception {
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(false);
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
diff --git a/services/tests/wmtests/src/com/android/server/wm/CameraStateMonitorTests.java b/services/tests/wmtests/src/com/android/server/wm/CameraStateMonitorTests.java
index 1c8dc05..12f5714f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/CameraStateMonitorTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/CameraStateMonitorTests.java
@@ -60,7 +60,7 @@
private static final String TEST_PACKAGE_1_LABEL = "testPackage1";
private CameraManager mMockCameraManager;
private Handler mMockHandler;
- private LetterboxConfiguration mLetterboxConfiguration;
+ private AppCompatConfiguration mAppCompatConfiguration;
private CameraStateMonitor mCameraStateMonitor;
private CameraManager.AvailabilityCallback mCameraAvailabilityCallback;
@@ -88,13 +88,13 @@
@Before
public void setUp() throws Exception {
- mLetterboxConfiguration = mDisplayContent.mWmService.mLetterboxConfiguration;
- spyOn(mLetterboxConfiguration);
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ mAppCompatConfiguration = mDisplayContent.mWmService.mAppCompatConfiguration;
+ spyOn(mAppCompatConfiguration);
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(true);
mMockCameraManager = mock(CameraManager.class);
diff --git a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
index a4bec64..23a88a1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
@@ -166,9 +166,9 @@
ACTIVITY_TYPE_STANDARD).setDisplay(display).build();
final int desiredWidth =
- (int) (DISPLAY_STABLE_BOUNDS.width() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
+ (int) (DISPLAY_BOUNDS.width() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
final int desiredHeight =
- (int) (DISPLAY_STABLE_BOUNDS.height() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
+ (int) (DISPLAY_BOUNDS.height() * DESKTOP_MODE_INITIAL_BOUNDS_SCALE);
assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(task).calculate());
assertEquals(desiredWidth, mResult.mBounds.width());
assertEquals(desiredHeight, mResult.mBounds.height());
@@ -430,8 +430,8 @@
private void setupDesktopModeLaunchParamsModifier(boolean isDesktopModeSupported,
boolean enforceDeviceRestrictions) {
doReturn(isDesktopModeSupported)
- .when(() -> DesktopModeLaunchParamsModifier.isDesktopModeSupported(any()));
+ .when(() -> DesktopModeHelper.isDesktopModeSupported(any()));
doReturn(enforceDeviceRestrictions)
- .when(DesktopModeLaunchParamsModifier::enforceDeviceRestrictions);
+ .when(DesktopModeHelper::shouldEnforceDeviceRestrictions);
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 65aaf60..ab0c8d4 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1874,8 +1874,8 @@
@EnableFlags(com.android.window.flags.Flags.FLAG_RESPECT_NON_TOP_VISIBLE_FIXED_ORIENTATION)
@Test
public void testRespectNonTopVisibleFixedOrientation() {
- spyOn(mWm.mLetterboxConfiguration);
- doReturn(false).when(mWm.mLetterboxConfiguration).isTranslucentLetterboxingEnabled();
+ spyOn(mWm.mAppCompatConfiguration);
+ doReturn(false).when(mWm.mAppCompatConfiguration).isTranslucentLetterboxingEnabled();
makeDisplayPortrait(mDisplayContent);
final ActivityRecord nonTopVisible = new ActivityBuilder(mAtm)
.setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
@@ -2604,7 +2604,7 @@
// test misc display overrides
assertEquals(ignoreOrientationRequests, testDisplayContent.mSetIgnoreOrientationRequest);
assertEquals(fixedOrientationLetterboxRatio,
- mWm.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio(),
+ mWm.mAppCompatConfiguration.getFixedOrientationLetterboxAspectRatio(),
0 /* delta */);
}
@@ -2647,7 +2647,7 @@
// test misc display overrides
assertEquals(ignoreOrientationRequests, testDisplayContent.mSetIgnoreOrientationRequest);
assertEquals(fixedOrientationLetterboxRatio,
- mWm.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio(),
+ mWm.mAppCompatConfiguration.getFixedOrientationLetterboxAspectRatio(),
0 /* delta */);
}
@@ -2870,7 +2870,7 @@
@Test
public void cameraCompatFreeformFlagEnabled_cameraCompatFreeformPolicyNotNull() {
doReturn(true).when(() ->
- DesktopModeLaunchParamsModifier.canEnterDesktopMode(any()));
+ DesktopModeHelper.canEnterDesktopMode(any()));
assertTrue(createNewDisplay().mAppCompatCameraPolicy.hasCameraCompatFreeformPolicy());
}
@@ -2879,7 +2879,7 @@
@Test
public void cameraCompatFreeformFlagNotEnabled_cameraCompatFreeformPolicyIsNull() {
doReturn(true).when(() ->
- DesktopModeLaunchParamsModifier.canEnterDesktopMode(any()));
+ DesktopModeHelper.canEnterDesktopMode(any()));
assertFalse(createNewDisplay().mAppCompatCameraPolicy.hasCameraCompatFreeformPolicy());
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java
index d7814ac..e9fcc40 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java
@@ -90,7 +90,7 @@
private static final String TEST_PACKAGE_1_LABEL = "testPackage1";
private CameraManager mMockCameraManager;
private Handler mMockHandler;
- private LetterboxConfiguration mLetterboxConfiguration;
+ private AppCompatConfiguration mAppCompatConfiguration;
private ActivityRefresher mActivityRefresher;
private DisplayRotationCompatPolicy mDisplayRotationCompatPolicy;
@@ -101,13 +101,13 @@
@Before
public void setUp() throws Exception {
- mLetterboxConfiguration = mDisplayContent.mWmService.mLetterboxConfiguration;
- spyOn(mLetterboxConfiguration);
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ mAppCompatConfiguration = mDisplayContent.mWmService.mAppCompatConfiguration;
+ spyOn(mAppCompatConfiguration);
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshEnabled())
.thenReturn(true);
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(true);
mMockCameraManager = mock(CameraManager.class);
@@ -185,7 +185,7 @@
@Test
public void testOnScreenRotationAnimationFinished_treatmentNotEnabled_doNotShowToast() {
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(false);
mDisplayRotationCompatPolicy.onScreenRotationAnimationFinished();
@@ -239,7 +239,7 @@
@Test
public void testTreatmentNotEnabled_noForceRotationOrRefresh() throws Exception {
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(false);
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
@@ -253,7 +253,7 @@
@Test
public void testTreatmentDisabledViaDeviceConfig_noForceRotationOrRefresh() throws Exception {
- when(mLetterboxConfiguration.isCameraCompatTreatmentEnabled())
+ when(mAppCompatConfiguration.isCameraCompatTreatmentEnabled())
.thenReturn(false);
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
@@ -480,7 +480,7 @@
@Test
public void testOnActivityConfigurationChanging_refreshDisabledPerApp_noRefresh()
throws Exception {
- when(mLetterboxConfiguration.isCameraCompatRefreshEnabled()).thenReturn(false);
+ when(mAppCompatConfiguration.isCameraCompatRefreshEnabled()).thenReturn(false);
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
@@ -519,7 +519,7 @@
@Test
public void testOnActivityConfigurationChanging_cycleThroughStopDisabled() throws Exception {
- when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
+ when(mAppCompatConfiguration.isCameraCompatRefreshCycleThroughStopEnabled())
.thenReturn(false);
configureActivity(SCREEN_ORIENTATION_PORTRAIT);
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java
index b105703..5e8f347 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java
@@ -55,7 +55,7 @@
private DisplayRotationImmersiveAppCompatPolicy mPolicy;
- private LetterboxConfiguration mMockLetterboxConfiguration;
+ private AppCompatConfiguration mMockAppCompatConfiguration;
private ActivityRecord mMockActivityRecord;
private Task mMockTask;
private WindowState mMockWindowState;
@@ -77,15 +77,15 @@
doReturn(mMockActivityRecord).when(mDisplayContent).topRunningActivity();
when(mDisplayContent.getIgnoreOrientationRequest()).thenReturn(true);
- mMockLetterboxConfiguration = mock(LetterboxConfiguration.class);
- when(mMockLetterboxConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled())
+ mMockAppCompatConfiguration = mock(AppCompatConfiguration.class);
+ when(mMockAppCompatConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled())
.thenReturn(true);
- when(mMockLetterboxConfiguration
+ when(mMockAppCompatConfiguration
.isDisplayRotationImmersiveAppCompatPolicyEnabledAtBuildTime())
.thenReturn(true);
mPolicy = DisplayRotationImmersiveAppCompatPolicy.createIfNeeded(
- mMockLetterboxConfiguration, createDisplayRotationMock(),
+ mMockAppCompatConfiguration, createDisplayRotationMock(),
mDisplayContent);
}
@@ -206,7 +206,7 @@
@Test
public void testRotationChoiceEnforcedOnly_featureFlagDisabled_lockNotEnforced() {
- when(mMockLetterboxConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled())
+ when(mMockAppCompatConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled())
.thenReturn(false);
assertIsRotationLockEnforcedReturnsFalseForAllRotations();
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
index c42367e..d318f00 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
@@ -106,15 +106,15 @@
private Task mTask;
private DisplayContent mDisplayContent;
private LetterboxUiController mController;
- private LetterboxConfiguration mLetterboxConfiguration;
+ private AppCompatConfiguration mAppCompatConfiguration;
private final Rect mLetterboxedPortraitTaskBounds = new Rect();
@Before
public void setUp() throws Exception {
mActivity = setUpActivityWithComponent();
- mLetterboxConfiguration = mWm.mLetterboxConfiguration;
- spyOn(mLetterboxConfiguration);
+ mAppCompatConfiguration = mWm.mAppCompatConfiguration;
+ spyOn(mAppCompatConfiguration);
mController = new LetterboxUiController(mWm, mActivity);
}
@@ -238,7 +238,7 @@
/*centerX=*/ 1, /*centerY=*/ 1)
);
insets.setRoundedCorners(roundedCorners);
- mLetterboxConfiguration.setLetterboxActivityCornersRadius(-1);
+ mAppCompatConfiguration.setLetterboxActivityCornersRadius(-1);
assertEquals(expectedRadius, mController.getRoundedCornersRadius(mainWindow));
}
@@ -251,7 +251,7 @@
final WindowState mainWindow = mockForGetCropBoundsAndRoundedCorners(/*taskbar=*/ null);
mainWindow.mInvGlobalScale = invGlobalScale;
- mLetterboxConfiguration.setLetterboxActivityCornersRadius(configurationRadius);
+ mAppCompatConfiguration.setLetterboxActivityCornersRadius(configurationRadius);
doReturn(true).when(mActivity).isInLetterboxAnimation();
assertEquals(expectedRadius, mController.getRoundedCornersRadius(mainWindow));
@@ -272,7 +272,7 @@
final int configurationRadius = 15;
final WindowState mainWindow = mockForGetCropBoundsAndRoundedCorners(/*taskbar=*/ null);
- mLetterboxConfiguration.setLetterboxActivityCornersRadius(configurationRadius);
+ mAppCompatConfiguration.setLetterboxActivityCornersRadius(configurationRadius);
mainWindow.mInvGlobalScale = -1f;
assertEquals(configurationRadius, mController.getRoundedCornersRadius(mainWindow));
@@ -310,7 +310,7 @@
doReturn(true).when(mainWindow).isOnScreen();
doReturn(false).when(mainWindow).isLetterboxedForDisplayCutout();
doReturn(true).when(mainWindow).areAppWindowBoundsLetterboxed();
- doReturn(true).when(mLetterboxConfiguration).isLetterboxActivityCornersRounded();
+ doReturn(true).when(mAppCompatConfiguration).isLetterboxActivityCornersRounded();
doReturn(TASKBAR_EXPANDED_HEIGHT).when(resources).getDimensionPixelSize(
R.dimen.taskbar_frame_height);
@@ -326,7 +326,7 @@
mockThatProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE,
/* value */ true);
- doReturn(false).when(mLetterboxConfiguration).isUserAppAspectRatioFullscreenEnabled();
+ doReturn(false).when(mAppCompatConfiguration).isUserAppAspectRatioFullscreenEnabled();
mActivity = setUpActivityWithComponent();
assertFalse(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides()
@@ -420,7 +420,7 @@
@Test
public void testShouldApplyUserMinAspectRatioOverride_trueProperty_returnsFalse()
throws Exception {
- doReturn(false).when(mLetterboxConfiguration).isUserAppAspectRatioSettingsEnabled();
+ doReturn(false).when(mAppCompatConfiguration).isUserAppAspectRatioSettingsEnabled();
mockThatProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, /* value */ true);
mActivity = setUpActivityWithComponent();
@@ -458,7 +458,7 @@
boolean orientationRequest) {
spyOn(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides());
doReturn(orientationRequest).when(
- mLetterboxConfiguration).isUserAppAspectRatioSettingsEnabled();
+ mAppCompatConfiguration).isUserAppAspectRatioSettingsEnabled();
mDisplayContent.setIgnoreOrientationRequest(true);
doReturn(USER_MIN_ASPECT_RATIO_3_2)
.when(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides())
@@ -471,7 +471,7 @@
private void prepareActivityThatShouldApplyUserFullscreenOverride() {
spyOn(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides());
- doReturn(true).when(mLetterboxConfiguration).isUserAppAspectRatioFullscreenEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isUserAppAspectRatioFullscreenEnabled();
mDisplayContent.setIgnoreOrientationRequest(true);
doReturn(USER_MIN_ASPECT_RATIO_FULLSCREEN)
.when(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides())
@@ -531,7 +531,7 @@
@Test
@EnableCompatChanges({OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS})
public void testShouldSendFakeFocus_overrideEnabled_returnsTrue() {
- doReturn(true).when(mLetterboxConfiguration).isCompatFakeFocusEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isCompatFakeFocusEnabled();
mController = new LetterboxUiController(mWm, mActivity);
@@ -541,7 +541,7 @@
@Test
@DisableCompatChanges({OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS})
public void testShouldSendFakeFocus_overrideDisabled_returnsFalse() {
- doReturn(true).when(mLetterboxConfiguration).isCompatFakeFocusEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isCompatFakeFocusEnabled();
mController = new LetterboxUiController(mWm, mActivity);
@@ -552,7 +552,7 @@
@EnableCompatChanges({OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS})
public void testIsCompatFakeFocusEnabled_propertyDisabledAndOverrideEnabled_fakeFocusDisabled()
throws Exception {
- doReturn(true).when(mLetterboxConfiguration).isCompatFakeFocusEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isCompatFakeFocusEnabled();
mockThatProperty(PROPERTY_COMPAT_ENABLE_FAKE_FOCUS, /* value */ false);
mController = new LetterboxUiController(mWm, mActivity);
@@ -564,7 +564,7 @@
@DisableCompatChanges({OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS})
public void testIsCompatFakeFocusEnabled_propertyEnabled_noOverride_fakeFocusEnabled()
throws Exception {
- doReturn(true).when(mLetterboxConfiguration).isCompatFakeFocusEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isCompatFakeFocusEnabled();
mockThatProperty(PROPERTY_COMPAT_ENABLE_FAKE_FOCUS, /* value */ true);
mController = new LetterboxUiController(mWm, mActivity);
@@ -575,7 +575,7 @@
@Test
public void testIsCompatFakeFocusEnabled_propertyDisabled_fakeFocusDisabled()
throws Exception {
- doReturn(true).when(mLetterboxConfiguration).isCompatFakeFocusEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isCompatFakeFocusEnabled();
mockThatProperty(PROPERTY_COMPAT_ENABLE_FAKE_FOCUS, /* value */ false);
mController = new LetterboxUiController(mWm, mActivity);
@@ -586,7 +586,7 @@
@Test
public void testIsCompatFakeFocusEnabled_propertyEnabled_fakeFocusEnabled()
throws Exception {
- doReturn(true).when(mLetterboxConfiguration).isCompatFakeFocusEnabled();
+ doReturn(true).when(mAppCompatConfiguration).isCompatFakeFocusEnabled();
mockThatProperty(PROPERTY_COMPAT_ENABLE_FAKE_FOCUS, /* value */ true);
mController = new LetterboxUiController(mWm, mActivity);
@@ -862,15 +862,15 @@
@Test
public void testgetFixedOrientationLetterboxAspectRatio_splitScreenAspectEnabled() {
- doReturn(true).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(true).when(mActivity.mWmService.mAppCompatConfiguration)
.isCameraCompatTreatmentEnabled();
- doReturn(true).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(true).when(mActivity.mWmService.mAppCompatConfiguration)
.isCameraCompatTreatmentEnabledAtBuildTime();
- doReturn(true).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(true).when(mActivity.mWmService.mAppCompatConfiguration)
.isCameraCompatSplitScreenAspectRatioEnabled();
- doReturn(false).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(false).when(mActivity.mWmService.mAppCompatConfiguration)
.getIsDisplayAspectRatioEnabledForFixedOrientationLetterbox();
- doReturn(1.5f).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(1.5f).when(mActivity.mWmService.mAppCompatConfiguration)
.getFixedOrientationLetterboxAspectRatio();
// Recreate DisplayContent with DisplayRotationCompatPolicy
@@ -894,13 +894,13 @@
@Test
public void testIsVerticalThinLetterboxed() {
// Vertical thin letterbox disabled
- doReturn(-1).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(-1).when(mActivity.mWmService.mAppCompatConfiguration)
.getThinLetterboxHeightPx();
assertFalse(mController.isVerticalThinLetterboxed());
// Define a Task 100x100
final Task task = mock(Task.class);
doReturn(new Rect(0, 0, 100, 100)).when(task).getBounds();
- doReturn(10).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(10).when(mActivity.mWmService.mAppCompatConfiguration)
.getThinLetterboxHeightPx();
// Vertical thin letterbox disabled without Task
@@ -925,13 +925,13 @@
@Test
public void testIsHorizontalThinLetterboxed() {
// Horizontal thin letterbox disabled
- doReturn(-1).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(-1).when(mActivity.mWmService.mAppCompatConfiguration)
.getThinLetterboxWidthPx();
assertFalse(mController.isHorizontalThinLetterboxed());
// Define a Task 100x100
final Task task = mock(Task.class);
doReturn(new Rect(0, 0, 100, 100)).when(task).getBounds();
- doReturn(10).when(mActivity.mWmService.mLetterboxConfiguration)
+ doReturn(10).when(mActivity.mWmService.mAppCompatConfiguration)
.getThinLetterboxWidthPx();
// Vertical thin letterbox disabled without Task
@@ -986,7 +986,7 @@
@Test
public void testIsLetterboxEducationEnabled() {
mController.isLetterboxEducationEnabled();
- verify(mLetterboxConfiguration).getIsEducationEnabled();
+ verify(mAppCompatConfiguration).getIsEducationEnabled();
}
private void mockThatProperty(String propertyName, boolean value) throws Exception {
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index ae88b1b..8981f71 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -66,7 +66,7 @@
import static com.android.server.wm.ActivityRecord.State.STOPPED;
import static com.android.server.wm.AppCompatUtils.computeAspectRatio;
import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER;
import static com.android.server.wm.WindowContainer.POSITION_TOP;
import static com.google.common.truth.Truth.assertThat;
@@ -228,7 +228,7 @@
boolean horizontalReachability) {
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- final LetterboxConfiguration config = mWm.mLetterboxConfiguration;
+ final AppCompatConfiguration config = mWm.mAppCompatConfiguration;
config.setTranslucentLetterboxingOverrideEnabled(true);
config.setLetterboxVerticalPositionMultiplier(0.5f);
config.setIsVerticalReachabilityEnabled(true);
@@ -353,8 +353,8 @@
.build();
setUpApp(display);
display.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
- mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
+ mWm.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
final ActivityRecord activity = getActivityBuilderOnSameTask()
.setScreenOrientation(SCREEN_ORIENTATION_LANDSCAPE)
@@ -1082,9 +1082,9 @@
RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// Simulate the user selecting the fullscreen user aspect ratio override
- spyOn(activity.mWmService.mLetterboxConfiguration);
+ spyOn(activity.mWmService.mAppCompatConfiguration);
spyOn(activity.mAppCompatController.getAppCompatAspectRatioOverrides());
- doReturn(true).when(activity.mWmService.mLetterboxConfiguration)
+ doReturn(true).when(activity.mWmService.mAppCompatConfiguration)
.isUserAppAspectRatioFullscreenEnabled();
doReturn(USER_MIN_ASPECT_RATIO_FULLSCREEN)
.when(activity.mAppCompatController.getAppCompatAspectRatioOverrides())
@@ -1658,7 +1658,7 @@
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
public void testCompatScaling_freeformUnresizeableApp_smallerThanParent_upScaled() {
doReturn(true).when(() ->
- DesktopModeLaunchParamsModifier.canEnterDesktopMode(any()));
+ DesktopModeHelper.canEnterDesktopMode(any()));
final int dw = 600;
final int dh = 800;
final DisplayContent display = new TestDisplayContent.Builder(mAtm, dw, dh)
@@ -1869,7 +1869,7 @@
// Portrait fixed app with min aspect ratio higher that aspect ratio override for fixed
// orientation letterbox.
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
mActivity.info.setMinAspectRatio(3);
prepareUnresizable(mActivity, /* maxAspect= */ 0, SCREEN_ORIENTATION_PORTRAIT);
@@ -1901,7 +1901,7 @@
// Portrait fixed app with max aspect ratio lower that aspect ratio override for fixed
// orientation letterbox.
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(3);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(3);
prepareUnresizable(mActivity, /* maxAspect= */ 2, SCREEN_ORIENTATION_PORTRAIT);
final Rect displayBounds = new Rect(mActivity.mDisplayContent.getBounds());
@@ -1931,7 +1931,7 @@
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
final float fixedOrientationLetterboxAspectRatio = 1.1f;
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(
fixedOrientationLetterboxAspectRatio);
prepareLimitedBounds(mActivity, SCREEN_ORIENTATION_PORTRAIT, /* isUnresizable= */ false);
@@ -1979,7 +1979,7 @@
// Activity should be letterboxed with an aspect ratio of 1.01.
final Rect afterBounds = mActivity.getBounds();
final float actualAspectRatio = 1f * afterBounds.height() / afterBounds.width();
- assertEquals(LetterboxConfiguration.DEFAULT_LETTERBOX_ASPECT_RATIO_FOR_MULTI_WINDOW,
+ assertEquals(AppCompatConfiguration.DEFAULT_LETTERBOX_ASPECT_RATIO_FOR_MULTI_WINDOW,
actualAspectRatio, DELTA_ASPECT_RATIO_TOLERANCE);
assertTrue(mActivity.areBoundsLetterboxed());
}
@@ -2027,9 +2027,9 @@
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
final float fixedOrientationLetterboxAspectRatio = 1.1f;
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(
fixedOrientationLetterboxAspectRatio);
- mActivity.mWmService.mLetterboxConfiguration.setDefaultMinAspectRatioForUnresizableApps(
+ mActivity.mWmService.mAppCompatConfiguration.setDefaultMinAspectRatioForUnresizableApps(
1.5f);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -2049,7 +2049,7 @@
// Letterbox logic should use config_letterboxDefaultMinAspectRatioForUnresizableApps over
// config_fixedOrientationLetterboxAspectRatio.
assertEquals(displayBounds.height(), activityBounds.height());
- final float defaultAspectRatio = mActivity.mWmService.mLetterboxConfiguration
+ final float defaultAspectRatio = mActivity.mWmService.mAppCompatConfiguration
.getDefaultMinAspectRatioForUnresizableApps();
assertEquals(displayBounds.height() / defaultAspectRatio, activityBounds.width(), 0.5);
}
@@ -2136,10 +2136,10 @@
int screenHeight = 1400;
setUpDisplaySizeWithApp(screenWidth, screenHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration
+ mActivity.mWmService.mAppCompatConfiguration
.setIsSplitScreenAspectRatioForUnresizableAppsEnabled(true);
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -2172,8 +2172,8 @@
final int displayHeight = 1400;
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- spyOn(mActivity.mWmService.mLetterboxConfiguration);
- doReturn(true).when(mActivity.mWmService.mLetterboxConfiguration)
+ spyOn(mActivity.mWmService.mAppCompatConfiguration);
+ doReturn(true).when(mActivity.mWmService.mAppCompatConfiguration)
.isUserAppAspectRatioFullscreenEnabled();
// Set user aspect ratio override
@@ -2197,8 +2197,8 @@
final int displayHeight = 1600;
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- spyOn(mActivity.mWmService.mLetterboxConfiguration);
- doReturn(true).when(mActivity.mWmService.mLetterboxConfiguration)
+ spyOn(mActivity.mWmService.mAppCompatConfiguration);
+ doReturn(true).when(mActivity.mWmService.mAppCompatConfiguration)
.isUserAppAspectRatioFullscreenEnabled();
// Set user aspect ratio override
@@ -2394,8 +2394,8 @@
boolean enabled) {
final ActivityRecord activity = getActivityBuilderOnSameTask().build();
activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- spyOn(activity.mWmService.mLetterboxConfiguration);
- doReturn(enabled).when(activity.mWmService.mLetterboxConfiguration)
+ spyOn(activity.mWmService.mAppCompatConfiguration);
+ doReturn(enabled).when(activity.mWmService.mAppCompatConfiguration)
.isUserAppAspectRatioSettingsEnabled();
// Set user aspect ratio override
final IPackageManager pm = mAtm.getPackageManager();
@@ -2428,7 +2428,7 @@
.build();
// Setup Letterbox Configuration
activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- activity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
+ activity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
// Non-resizable portrait activity
prepareUnresizable(activity, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
float expectedAspectRatio = 1f * displayWidth / getExpectedSplitSize(displayHeight);
@@ -2449,7 +2449,7 @@
.build();
// Setup Letterbox Configuration
activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- activity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
+ activity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
// Non-resizable portrait activity
prepareUnresizable(activity, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
float expectedAspectRatio = 1f * displayHeight / getExpectedSplitSize(displayWidth);
@@ -2471,7 +2471,7 @@
.build();
// Setup Letterbox Configuration
activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- activity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
+ activity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
// Non-resizable portrait activity
prepareUnresizable(activity, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
float expectedAspectRatio = 1f * displayWidth / getExpectedSplitSize(displayHeight);
@@ -2493,7 +2493,7 @@
.build();
// Setup Letterbox Configuration
activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- activity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
+ activity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.5f);
// Non-resizable portrait activity
prepareUnresizable(activity, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
float expectedAspectRatio = 1f * displayHeight / getExpectedSplitSize(displayWidth);
@@ -2581,7 +2581,7 @@
public void testOverrideMinAspectRatioExcludePortraitFullscreen() {
setUpDisplaySizeWithApp(2600, 1600);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.33f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.33f);
// Create a size compat activity on the same task.
final ActivityRecord activity = getActivityBuilderOnSameTask().build();
@@ -2611,7 +2611,7 @@
// In this test, the activity is not in fullscreen, so the override is not applied
setUpDisplaySizeWithApp(2600, 1600);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.33f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.33f);
// Create a size compat activity on the same task.
final ActivityRecord activity = getActivityBuilderOnSameTask().build();
@@ -2677,10 +2677,10 @@
int screenHeight = 1600;
setUpDisplaySizeWithApp(screenWidth, screenHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration
+ mActivity.mWmService.mAppCompatConfiguration
.setIsSplitScreenAspectRatioForUnresizableAppsEnabled(true);
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -2714,11 +2714,11 @@
int displayHeight = 1600;
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(2f);
+ mWm.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(2f);
// Enable display aspect ratio to take precedence before
// fixedOrientationLetterboxAspectRatio
- mWm.mLetterboxConfiguration
+ mWm.mAppCompatConfiguration
.setIsDisplayAspectRatioEnabledForFixedOrientationLetterbox(true);
// Set up resizable app in portrait
@@ -2750,11 +2750,11 @@
int displayHeight = 1400;
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(2f);
+ mWm.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(2f);
// Enable display aspect ratio to take precedence before
// fixedOrientationLetterboxAspectRatio
- mWm.mLetterboxConfiguration
+ mWm.mAppCompatConfiguration
.setIsDisplayAspectRatioEnabledForFixedOrientationLetterbox(true);
// Set up resizable app in landscape
@@ -2787,10 +2787,10 @@
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
// Enable display aspect ratio to take precedence before
// fixedOrientationLetterboxAspectRatio
- mWm.mLetterboxConfiguration
+ mWm.mAppCompatConfiguration
.setIsDisplayAspectRatioEnabledForFixedOrientationLetterbox(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -2814,10 +2814,10 @@
setUpDisplaySizeWithApp(displayWidth, displayHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
+ mActivity.mWmService.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(1.1f);
// Enable display aspect ratio to take precedence before
// fixedOrientationLetterboxAspectRatio
- mWm.mLetterboxConfiguration
+ mWm.mAppCompatConfiguration
.setIsDisplayAspectRatioEnabledForFixedOrientationLetterbox(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -3134,14 +3134,14 @@
RESIZE_MODE_UNRESIZEABLE, SCREEN_ORIENTATION_PORTRAIT);
activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- spyOn(activity.mWmService.mLetterboxConfiguration);
- doReturn(true).when(activity.mWmService.mLetterboxConfiguration)
+ spyOn(activity.mWmService.mAppCompatConfiguration);
+ doReturn(true).when(activity.mWmService.mAppCompatConfiguration)
.isIgnoreOrientationRequestAllowed();
// Display should not be rotated.
assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, activity.mDisplayContent.getOrientation());
- doReturn(false).when(activity.mWmService.mLetterboxConfiguration)
+ doReturn(false).when(activity.mWmService.mAppCompatConfiguration)
.isIgnoreOrientationRequestAllowed();
// Display should be rotated.
@@ -3427,7 +3427,7 @@
// Case when the reachability would be enabled otherwise
setUpDisplaySizeWithApp(/* dw */ 1000, /* dh */ 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
mActivity.getWindowConfiguration().setBounds(null);
@@ -3442,7 +3442,7 @@
mAtm.mDevEnableNonResizableMultiWindow = true;
setUpDisplaySizeWithApp(2800, 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsHorizontalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsHorizontalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
final TestSplitOrganizer organizer =
new TestSplitOrganizer(mAtm, mActivity.getDisplayContent());
@@ -3465,7 +3465,7 @@
mAtm.mDevEnableNonResizableMultiWindow = true;
setUpDisplaySizeWithApp(1000, 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
final TestSplitOrganizer organizer =
new TestSplitOrganizer(mAtm, mActivity.getDisplayContent());
@@ -3487,7 +3487,7 @@
public void testIsVerticalReachabilityEnabled_doesNotMatchParentWidth_false() {
setUpDisplaySizeWithApp(1000, 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
// Unresizable landscape-only activity.
@@ -3509,7 +3509,7 @@
public void testIsVerticalReachabilityEnabled_emptyBounds_true() {
setUpDisplaySizeWithApp(/* dw */ 1000, /* dh */ 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -3526,7 +3526,7 @@
public void testIsHorizontalReachabilityEnabled_emptyBounds_true() {
setUpDisplaySizeWithApp(/* dw */ 2800, /* dh */ 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsHorizontalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsHorizontalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -3543,7 +3543,7 @@
public void testIsHorizontalReachabilityEnabled_portraitDisplayAndApp_true() {
// Portrait display
setUpDisplaySizeWithApp(1400, 1600);
- mActivity.mWmService.mLetterboxConfiguration.setIsHorizontalReachabilityEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsHorizontalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
// 16:9f unresizable portrait app
@@ -3557,7 +3557,7 @@
public void testIsVerticalReachabilityEnabled_landscapeDisplayAndApp_true() {
// Landscape display
setUpDisplaySizeWithApp(1600, 1500);
- mActivity.mWmService.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
// 16:9f unresizable landscape app
@@ -3571,7 +3571,7 @@
public void testIsHorizontalReachabilityEnabled_doesNotMatchParentHeight_false() {
setUpDisplaySizeWithApp(2800, 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsHorizontalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsHorizontalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
// Unresizable portrait-only activity.
@@ -3593,7 +3593,7 @@
public void testIsHorizontalReachabilityEnabled_inSizeCompatMode_matchesParentHeight_true() {
setUpDisplaySizeWithApp(1800, 2200);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsHorizontalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsHorizontalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
// Unresizable portrait-only activity.
@@ -3615,7 +3615,7 @@
public void testIsVerticalReachabilityEnabled_inSizeCompatMode_matchesParentWidth_true() {
setUpDisplaySizeWithApp(2200, 1800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(true);
+ mWm.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(true);
setUpAllowThinLetterboxed(/* thinLetterboxAllowed */ true);
// Unresizable landscape-only activity.
@@ -3698,7 +3698,7 @@
@Test
public void testLetterboxDetailsForStatusBar_letterboxNotOverlappingStatusBar() {
// Align to center so that we don't overlap with the status bar
- mAtm.mWindowManager.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
+ mAtm.mWindowManager.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1000, 2800)
.setNotch(100)
.build();
@@ -3751,7 +3751,7 @@
navSource.setFlags(FLAG_INSETS_ROUNDED_CORNER, FLAG_INSETS_ROUNDED_CORNER);
navSource.setFrame(new Rect(0, screenHeight - taskbarHeight, screenWidth, screenHeight));
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxActivityCornersRadius(15);
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxActivityCornersRadius(15);
final WindowState w1 = addWindowToActivity(mActivity);
w1.mAboveInsetsState.addSource(navSource);
@@ -3793,7 +3793,7 @@
setUpDisplaySizeWithApp(screenWidth, screenHeight);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(1.0f);
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(1.0f);
final InsetsSource navSource = new InsetsSource(
InsetsSource.createId(null, 0, navigationBars()), navigationBars());
@@ -3801,7 +3801,7 @@
// Immersive activity has transient navbar
navSource.setVisible(!immersive);
navSource.setFrame(new Rect(0, screenHeight - taskbarHeight, screenWidth, screenHeight));
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxActivityCornersRadius(15);
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxActivityCornersRadius(15);
final WindowState w1 = addWindowToActivity(mActivity);
w1.mAboveInsetsState.addSource(navSource);
@@ -3909,7 +3909,7 @@
spyOn(policy);
doReturn(decorInfo).when(policy).getDecorInsetsInfo(ROTATION_90,
display.mBaseDisplayHeight, display.mBaseDisplayWidth);
- mWm.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
+ mWm.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
setUpApp(display);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -3974,7 +3974,7 @@
setUpDisplaySizeWithApp(2800, 1400);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(
letterboxHorizontalPositionMultiplier);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
assertEquals(fixedOrientationLetterbox, mActivity.getBounds());
@@ -4171,7 +4171,7 @@
public void testApplyAspectRatio_containingRatioAlmostEqualToMaxRatio_boundsUnchanged() {
setUpDisplaySizeWithApp(1981, 2576);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
+ mWm.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
final Rect originalBounds = new Rect(mActivity.getBounds());
prepareUnresizable(mActivity, 1.3f, SCREEN_ORIENTATION_UNSPECIFIED);
@@ -4206,7 +4206,7 @@
spyOn(policy);
doReturn(decorInfo).when(policy).getDecorInsetsInfo(ROTATION_90,
display.mBaseDisplayHeight, display.mBaseDisplayWidth);
- mWm.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
+ mWm.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.5f);
setUpApp(display);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -4269,7 +4269,7 @@
// Set up a display in portrait with a fixed-orientation LANDSCAPE app
setUpDisplaySizeWithApp(1400, 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(
1.0f /*letterboxVerticalPositionMultiplier*/);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -4294,7 +4294,7 @@
// Set up a display in portrait with a fixed-orientation LANDSCAPE app.
setUpDisplaySizeWithApp(1000, 2000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(
1.0f /*letterboxVerticalPositionMultiplier*/);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -4322,9 +4322,9 @@
public void testGetFixedOrientationLetterboxAspectRatio_tabletop_centered() {
// Set up a display in portrait with a fixed-orientation LANDSCAPE app
setUpDisplaySizeWithApp(1400, 2800);
- mWm.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+ mWm.mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(
LETTERBOX_POSITION_MULTIPLIER_CENTER);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(
1.0f /*letterboxVerticalPositionMultiplier*/);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -4360,8 +4360,8 @@
// Set up a display in landscape with a fixed-orientation PORTRAIT app
setUpDisplaySizeWithApp(2800, 1400);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsAutomaticReachabilityInBookModeEnabled(true);
- mWm.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+ mWm.mAppCompatConfiguration.setIsAutomaticReachabilityInBookModeEnabled(true);
+ mWm.mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(
1.0f /*letterboxHorizontalPositionMultiplier*/);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -4386,8 +4386,8 @@
// Set up a display in landscape with a fixed-orientation PORTRAIT app
setUpDisplaySizeWithApp(2800, 1400);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mWm.mLetterboxConfiguration.setIsAutomaticReachabilityInBookModeEnabled(false);
- mWm.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
+ mWm.mAppCompatConfiguration.setIsAutomaticReachabilityInBookModeEnabled(false);
+ mWm.mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
prepareUnresizable(mActivity, 1.75f, SCREEN_ORIENTATION_PORTRAIT);
Rect letterboxNoFold = new Rect(1000, 0, 1800, 1400);
@@ -4469,7 +4469,7 @@
setUpDisplaySizeWithApp(1400, 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(
letterboxVerticalPositionMultiplier);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -4585,7 +4585,7 @@
public void testIsEligibleForLetterboxEducation_educationNotEnabled_returnsFalse() {
setUpDisplaySizeWithApp(2500, 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(false);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(false);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -4596,7 +4596,7 @@
public void testIsEligibleForLetterboxEducation_notEligibleForFixedOrientation_returnsFalse() {
setUpDisplaySizeWithApp(1000, 2500);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -4609,7 +4609,7 @@
mAtm.mDevEnableNonResizableMultiWindow = true;
setUpDisplaySizeWithApp(1000, 1200);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(true);
final TestSplitOrganizer organizer =
new TestSplitOrganizer(mAtm, mActivity.getDisplayContent());
@@ -4630,7 +4630,7 @@
public void testIsEligibleForLetterboxEducation_fixedOrientationLandscape_returnsFalse() {
setUpDisplaySizeWithApp(1000, 2500);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
@@ -4643,7 +4643,7 @@
public void testIsEligibleForLetterboxEducation_hasStartingWindow_returnsFalseUntilRemoved() {
setUpDisplaySizeWithApp(2500, 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
mActivity.mStartingData = mock(StartingData.class);
@@ -4666,7 +4666,7 @@
public void testIsEligibleForLetterboxEducation_hasStartingWindowAndEducationNotEnabled() {
setUpDisplaySizeWithApp(2500, 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(false);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(false);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
mActivity.mStartingData = mock(StartingData.class);
@@ -4689,7 +4689,7 @@
public void testIsEligibleForLetterboxEducation_letterboxedForFixedOrientation_returnsTrue() {
setUpDisplaySizeWithApp(2500, 1000);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -4702,7 +4702,7 @@
public void testIsEligibleForLetterboxEducation_sizeCompatAndEligibleForFixedOrientation() {
setUpDisplaySizeWithApp(1000, 2500);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setIsEducationEnabled(true);
+ mActivity.mWmService.mAppCompatConfiguration.setIsEducationEnabled(true);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
@@ -4879,7 +4879,7 @@
setUpDisplaySizeWithApp(2800, 1400);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(
letterboxHorizontalPositionMultiplier);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE);
assertFitted();
@@ -4896,7 +4896,7 @@
setUpDisplaySizeWithApp(1400, 2800);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
- mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(
+ mActivity.mWmService.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(
letterboxVerticalPositionMultiplier);
prepareUnresizable(mActivity, SCREEN_ORIENTATION_PORTRAIT);
diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
index 4220f31..a816aa9 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
@@ -202,7 +202,7 @@
.mockStatic(DisplayControl.class, mockStubOnly)
.mockStatic(LockGuard.class, mockStubOnly)
.mockStatic(Watchdog.class, mockStubOnly)
- .spyStatic(DesktopModeLaunchParamsModifier.class)
+ .spyStatic(DesktopModeHelper.class)
.strictness(Strictness.LENIENT)
.startMocking();
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
index 76690ec..0bf850a 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java
@@ -611,7 +611,7 @@
.setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build();
final Task task = rootTask.getBottomMostTask();
final ActivityRecord root = task.getTopNonFinishingActivity();
- spyOn(mWm.mLetterboxConfiguration);
+ spyOn(mWm.mAppCompatConfiguration);
spyOn(root);
spyOn(root.mAppCompatController.getAppCompatAspectRatioOverrides());
@@ -655,7 +655,7 @@
.setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build();
final Task task = rootTask.getBottomMostTask();
final ActivityRecord root = task.getTopNonFinishingActivity();
- spyOn(mWm.mLetterboxConfiguration);
+ spyOn(mWm.mAppCompatConfiguration);
spyOn(root);
doReturn(false).when(root).fillsParent();
diff --git a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java
index 38ad9a7..4b0668f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java
@@ -270,8 +270,8 @@
}
@Override
- public boolean performHapticFeedback(int uid, String packageName, int effectId,
- boolean always, String reason, boolean fromIme) {
+ public boolean performHapticFeedback(int uid, String packageName, int effectId, String reason,
+ int flags, int privFlags) {
return false;
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
index 95d37eb..7d01b79 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java
@@ -35,6 +35,7 @@
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.window.TransitionInfo.FLAG_CONFIG_AT_END;
+import static android.window.TransitionInfo.FLAG_CROSS_PROFILE_OWNER_THUMBNAIL;
import static android.window.TransitionInfo.FLAG_FILLS_TASK;
import static android.window.TransitionInfo.FLAG_IN_TASK_WITH_EMBEDDED_ACTIVITY;
import static android.window.TransitionInfo.FLAG_IS_BEHIND_STARTING_WINDOW;
@@ -77,13 +78,14 @@
import android.app.ActivityManager;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.IBinder;
+import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;
-import android.platform.test.flag.junit.SetFlagsRule;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.view.SurfaceControl;
@@ -95,6 +97,7 @@
import android.window.ITransitionPlayer;
import android.window.RemoteTransition;
import android.window.SystemPerformanceHinter;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentOrganizer;
import android.window.TransitionInfo;
@@ -104,7 +107,6 @@
import com.android.internal.graphics.ColorUtils;
import com.android.window.flags.Flags;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -120,16 +122,15 @@
* Build/Install/Run:
* atest WmTests:TransitionTests
*/
-@EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
@SmallTest
@Presubmit
@RunWith(WindowTestRunner.class)
public class TransitionTests extends WindowTestsBase {
final SurfaceControl.Transaction mMockT = mock(SurfaceControl.Transaction.class);
private BLASTSyncEngine mSyncEngine;
+ private Transition mTransition;
+ private TransitionInfo mInfo;
- @Rule
- public SetFlagsRule mRule = new SetFlagsRule();
private Transition createTestTransition(int transitType, TransitionController controller) {
final Transition transition = new Transition(transitType, 0 /* flags */, controller,
controller.mSyncEngine);
@@ -1994,6 +1995,221 @@
assertEquals(expectedBackgroundColor, info.getChanges().get(1).getBackgroundColor());
}
+ @DisableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+ @Test
+ public void testOverrideAnimationOptionsToInfoIfNecessary_disableAnimOptionsPerChange() {
+ initializeOverrideAnimationOptionsTest();
+ TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
+ .makeCommonAnimOptions("testPackage");
+ mTransition.setOverrideAnimation(options, null /* startCallback */,
+ null /* finishCallback */);
+
+ mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
+
+ assertEquals(options, mInfo.getAnimationOptions());
+ }
+
+ @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+ @Test
+ public void testOverrideAnimationOptionsToInfoIfNecessary_nonCustomAnimOptions() {
+ initializeOverrideAnimationOptionsTest();
+ TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
+ .makeCommonAnimOptions("testPackage");
+ mTransition.setOverrideAnimation(options, null /* startCallback */,
+ null /* finishCallback */);
+
+ mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
+
+ final TransitionInfo.Change displayChange = mInfo.getChanges().get(0);
+ final TransitionInfo.Change taskChange = mInfo.getChanges().get(1);
+ final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2);
+ final TransitionInfo.Change activityChange = mInfo.getChanges().get(3);
+
+ assertNull("Display change's AnimationOptions must not be overridden.",
+ displayChange.getAnimationOptions());
+ assertNull("Task change's AnimationOptions must not be overridden.",
+ taskChange.getAnimationOptions());
+ assertNull("Embedded TF change's AnimationOptions must not be overridden.",
+ embeddedTfChange.getAnimationOptions());
+ assertEquals("Activity change's AnimationOptions must be overridden.",
+ options, activityChange.getAnimationOptions());
+ }
+
+ @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+ @Test
+ public void testOverrideAnimationOptionsToInfoIfNecessary_crossProfileAnimOptions() {
+ initializeOverrideAnimationOptionsTest();
+ TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
+ .makeCrossProfileAnimOptions();
+ mTransition.setOverrideAnimation(options, null /* startCallback */,
+ null /* finishCallback */);
+
+ final TransitionInfo.Change displayChange = mInfo.getChanges().get(0);
+ final TransitionInfo.Change taskChange = mInfo.getChanges().get(1);
+ final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2);
+ final TransitionInfo.Change activityChange = mInfo.getChanges().get(3);
+ activityChange.setMode(TRANSIT_OPEN);
+
+ mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
+
+ assertNull("Display change's AnimationOptions must not be overridden.",
+ displayChange.getAnimationOptions());
+ assertNull("Task change's AnimationOptions must not be overridden.",
+ taskChange.getAnimationOptions());
+ assertNull("Embedded TF change's AnimationOptions must not be overridden.",
+ embeddedTfChange.getAnimationOptions());
+ assertEquals("Activity change's AnimationOptions must be overridden.",
+ options, activityChange.getAnimationOptions());
+ assertTrue(activityChange.hasFlags(FLAG_CROSS_PROFILE_OWNER_THUMBNAIL));
+ }
+
+ @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+ @Test
+ public void testOverrideAnimationOptionsToInfoIfNecessary_customAnimOptions() {
+ initializeOverrideAnimationOptionsTest();
+ TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
+ .makeCustomAnimOptions("testPackage", Resources.ID_NULL,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ Color.GREEN, false /* overrideTaskTransition */);
+ mTransition.setOverrideAnimation(options, null /* startCallback */,
+ null /* finishCallback */);
+
+ mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
+
+ final TransitionInfo.Change displayChange = mInfo.getChanges().get(0);
+ final TransitionInfo.Change taskChange = mInfo.getChanges().get(1);
+ final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2);
+ final TransitionInfo.Change activityChange = mInfo.getChanges().get(3);
+
+ assertNull("Display change's AnimationOptions must not be overridden.",
+ displayChange.getAnimationOptions());
+ assertNull("Task change's AnimationOptions must not be overridden.",
+ taskChange.getAnimationOptions());
+ assertEquals("Embedded TF change's AnimationOptions must be overridden.",
+ options, embeddedTfChange.getAnimationOptions());
+ assertEquals("Embedded TF change's background color must not be overridden.",
+ 0, embeddedTfChange.getBackgroundColor());
+ assertEquals("Activity change's AnimationOptions must be overridden.",
+ options, activityChange.getAnimationOptions());
+ assertEquals("Activity change's background color must be overridden.",
+ options.getBackgroundColor(), activityChange.getBackgroundColor());
+ }
+
+ @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+ @Test
+ public void testOverrideAnimationOptionsToInfoIfNecessary_haveTaskFragmentAnimParams() {
+ initializeOverrideAnimationOptionsTest();
+
+ final TaskFragment embeddedTf = mTransition.mTargets.get(2).mContainer.asTaskFragment();
+ embeddedTf.setAnimationParams(new TaskFragmentAnimationParams.Builder()
+ .setAnimationBackgroundColor(Color.RED)
+ .setOpenAnimationResId(0x12345678)
+ .build());
+
+ TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
+ .makeCustomAnimOptions("testPackage", Resources.ID_NULL,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ Color.GREEN, false /* overrideTaskTransition */);
+ mTransition.setOverrideAnimation(options, null /* startCallback */,
+ null /* finishCallback */);
+
+ final TransitionInfo.Change displayChange = mInfo.getChanges().get(0);
+ final TransitionInfo.Change taskChange = mInfo.getChanges().get(1);
+ final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2);
+ final TransitionInfo.Change activityChange = mInfo.getChanges().get(3);
+
+ final int expectedColor = embeddedTf.getAnimationParams().getAnimationBackgroundColor();
+ embeddedTfChange.setBackgroundColor(expectedColor);
+ final TransitionInfo.AnimationOptions expectedOptions = TransitionInfo.AnimationOptions
+ .makeCustomAnimOptions("testPackage", 0x12345678,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ 0, false /* overrideTaskTransition */);
+ embeddedTfChange.setAnimationOptions(expectedOptions);
+
+ mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
+
+ assertNull("Display change's AnimationOptions must not be overridden.",
+ displayChange.getAnimationOptions());
+ assertNull("Task change's AnimationOptions must not be overridden.",
+ taskChange.getAnimationOptions());
+ assertEquals("Embedded TF change's AnimationOptions must be overridden.",
+ expectedOptions, embeddedTfChange.getAnimationOptions());
+ assertEquals("Embedded TF change's background color must not be overridden.",
+ expectedColor, embeddedTfChange.getBackgroundColor());
+ assertEquals("Activity change's AnimationOptions must be overridden.",
+ options, activityChange.getAnimationOptions());
+ assertEquals("Activity change's background color must be overridden.",
+ options.getBackgroundColor(), activityChange.getBackgroundColor());
+ }
+
+ @EnableFlags(Flags.FLAG_MOVE_ANIMATION_OPTIONS_TO_CHANGE)
+ @Test
+ public void testOverrideAnimationOptionsToInfoIfNecessary_customAnimOptionsWithTaskOverride() {
+ initializeOverrideAnimationOptionsTest();
+ TransitionInfo.AnimationOptions options = TransitionInfo.AnimationOptions
+ .makeCustomAnimOptions("testPackage", Resources.ID_NULL,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ TransitionInfo.AnimationOptions.DEFAULT_ANIMATION_RESOURCES_ID,
+ Color.GREEN, true /* overrideTaskTransition */);
+ mTransition.setOverrideAnimation(options, null /* startCallback */,
+ null /* finishCallback */);
+
+ mTransition.overrideAnimationOptionsToInfoIfNecessary(mInfo);
+
+ final TransitionInfo.Change displayChange = mInfo.getChanges().get(0);
+ final TransitionInfo.Change taskChange = mInfo.getChanges().get(1);
+ final TransitionInfo.Change embeddedTfChange = mInfo.getChanges().get(2);
+ final TransitionInfo.Change activityChange = mInfo.getChanges().get(3);
+
+ assertNull("Display change's AnimationOptions must not be overridden.",
+ displayChange.getAnimationOptions());
+ assertEquals("Task change's AnimationOptions must be overridden.",
+ options, taskChange.getAnimationOptions());
+ assertEquals("Task change's background color must be overridden.",
+ options.getBackgroundColor(), taskChange.getBackgroundColor());
+ assertEquals("Embedded TF change's AnimationOptions must be overridden.",
+ options, embeddedTfChange.getAnimationOptions());
+ assertEquals("Embedded TF change's background color must be overridden.",
+ 0, embeddedTfChange.getBackgroundColor());
+ assertEquals("Activity change's AnimationOptions must be overridden.",
+ options, activityChange.getAnimationOptions());
+ assertEquals("Activity change's background color must be overridden.",
+ options.getBackgroundColor(), activityChange.getBackgroundColor());
+ }
+
+ private void initializeOverrideAnimationOptionsTest() {
+ mTransition = createTestTransition(TRANSIT_OPEN);
+
+ // Test set AnimationOptions for Activity and Task.
+ final Task task = createTask(mDisplayContent);
+ // Create an embedded TaskFragment.
+ final TaskFragmentOrganizer organizer = new TaskFragmentOrganizer(Runnable::run);
+ registerTaskFragmentOrganizer(
+ ITaskFragmentOrganizer.Stub.asInterface(organizer.getOrganizerToken().asBinder()));
+ final TaskFragment embeddedTf = createTaskFragmentWithEmbeddedActivity(task, organizer);
+ final ActivityRecord nonEmbeddedActivity = createActivityRecord(task);
+ mWm.mCurrentUserId = nonEmbeddedActivity.mUserId;
+
+ mTransition.mTargets = new ArrayList<>();
+ mTransition.mTargets.add(new Transition.ChangeInfo(mDisplayContent));
+ mTransition.mTargets.add(new Transition.ChangeInfo(task));
+ mTransition.mTargets.add(new Transition.ChangeInfo(embeddedTf));
+ mTransition.mTargets.add(new Transition.ChangeInfo(nonEmbeddedActivity));
+
+ mInfo = new TransitionInfo(TRANSIT_OPEN, 0 /* flags */);
+ mInfo.addChange(new TransitionInfo.Change(mDisplayContent.mRemoteToken
+ .toWindowContainerToken(), mDisplayContent.getAnimationLeash()));
+ mInfo.addChange(new TransitionInfo.Change(task.mRemoteToken.toWindowContainerToken(),
+ task.getAnimationLeash()));
+ mInfo.addChange(new TransitionInfo.Change(embeddedTf.mRemoteToken.toWindowContainerToken(),
+ embeddedTf.getAnimationLeash()));
+ mInfo.addChange(new TransitionInfo.Change(null /* container */,
+ nonEmbeddedActivity.getAnimationLeash()));
+ }
+
@Test
public void testTransitionVisibleChange() {
registerTestTransitionPlayer();
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
index f07b402..cbf17c4 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
@@ -258,7 +258,7 @@
robot.transparentActivity((ta) -> {
ta.applyOnActivity((a) -> {
a.applyToTopActivity((topActivity) -> {
- topActivity.mWmService.mLetterboxConfiguration
+ topActivity.mWmService.mAppCompatConfiguration
.setLetterboxHorizontalPositionMultiplier(1.0f);
});
a.configureUnresizableTopActivity(SCREEN_ORIENTATION_PORTRAIT);
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
index 89abe2f..39640fb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
@@ -47,10 +47,10 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
-import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_SOLID_COLOR;
+import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
import static com.google.common.truth.Truth.assertThat;
@@ -1390,8 +1390,8 @@
}
private boolean setupLetterboxConfigurationWithBackgroundType(
- @LetterboxConfiguration.LetterboxBackgroundType int letterboxBackgroundType) {
- mWm.mLetterboxConfiguration.setLetterboxBackgroundTypeOverride(letterboxBackgroundType);
+ @AppCompatConfiguration.LetterboxBackgroundType int letterboxBackgroundType) {
+ mWm.mAppCompatConfiguration.setLetterboxBackgroundTypeOverride(letterboxBackgroundType);
return mWm.isLetterboxBackgroundMultiColored();
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
index 0cb22ad..e6648da 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
@@ -18,7 +18,6 @@
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
-import static android.content.pm.ActivityInfo.INSETS_DECOUPLED_CONFIGURATION_ENFORCED;
import static android.content.res.Configuration.GRAMMATICAL_GENDER_NOT_SPECIFIED;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
@@ -87,7 +86,6 @@
ApplicationInfo info = mock(ApplicationInfo.class);
info.packageName = "test.package.name";
- doReturn(true).when(info).isChangeEnabled(INSETS_DECOUPLED_CONFIGURATION_ENFORCED);
mWpc = new WindowProcessController(
mAtm, info, null, 0, -1, null, mMockListener);
mWpc.setThread(mock(IApplicationThread.class));
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index b512aa8..41f1ac7 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -262,34 +262,34 @@
// Ensure letterbox aspect ratio is not overridden on any device target.
// {@link com.android.internal.R.dimen.config_fixedOrientationLetterboxAspectRatio}, is set
// on some device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration.setFixedOrientationLetterboxAspectRatio(0);
+ mAtm.mWindowManager.mAppCompatConfiguration.setFixedOrientationLetterboxAspectRatio(0);
// Ensure letterbox horizontal position multiplier is not overridden on any device target.
// {@link com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier},
// may be set on some device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
+ mAtm.mWindowManager.mAppCompatConfiguration.setLetterboxHorizontalPositionMultiplier(0.5f);
// Ensure letterbox vertical position multiplier is not overridden on any device target.
// {@link com.android.internal.R.dimen.config_letterboxHorizontalPositionMultiplier},
// may be set on some device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier(0.0f);
+ mAtm.mWindowManager.mAppCompatConfiguration.setLetterboxVerticalPositionMultiplier(0.0f);
// Ensure letterbox horizontal reachability treatment isn't overridden on any device target.
// {@link com.android.internal.R.bool.config_letterboxIsHorizontalReachabilityEnabled},
// may be set on some device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration.setIsHorizontalReachabilityEnabled(false);
+ mAtm.mWindowManager.mAppCompatConfiguration.setIsHorizontalReachabilityEnabled(false);
// Ensure letterbox vertical reachability treatment isn't overridden on any device target.
// {@link com.android.internal.R.bool.config_letterboxIsVerticalReachabilityEnabled},
// may be set on some device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration.setIsVerticalReachabilityEnabled(false);
+ mAtm.mWindowManager.mAppCompatConfiguration.setIsVerticalReachabilityEnabled(false);
// Ensure aspect ratio for unresizable apps isn't overridden on any device target.
// {@link com.android.internal.R.bool
// .config_letterboxIsSplitScreenAspectRatioForUnresizableAppsEnabled}, may be set on some
// device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration
+ mAtm.mWindowManager.mAppCompatConfiguration
.setIsSplitScreenAspectRatioForUnresizableAppsEnabled(false);
// Ensure aspect ratio for al apps isn't overridden on any device target.
// {@link com.android.internal.R.bool
// .config_letterboxIsDisplayAspectRatioForFixedOrientationLetterboxEnabled}, may be set on
// some device form factors.
- mAtm.mWindowManager.mLetterboxConfiguration
+ mAtm.mWindowManager.mAppCompatConfiguration
.setIsDisplayAspectRatioEnabledForFixedOrientationLetterbox(false);
// Setup WallpaperController crop utils with a simple center-align strategy
@@ -331,7 +331,7 @@
private void checkDeviceSpecificOverridesNotApplied() {
// Check global overrides
if (!sGlobalOverridesChecked) {
- assertEquals(0, mWm.mLetterboxConfiguration.getFixedOrientationLetterboxAspectRatio(),
+ assertEquals(0, mWm.mAppCompatConfiguration.getFixedOrientationLetterboxAspectRatio(),
0 /* delta */);
sGlobalOverridesChecked = true;
}
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index bf46154..010a322 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -1064,10 +1064,8 @@
synchronized (mReportedEvents) {
LinkedList<Event> events = mReportedEvents.get(userId);
if (events == null) {
- // TODO (b/347644400): callers of this API should verify that the userId passed to
- // this method exists - there is currently a known case where USER_ALL is passed
- // here and it would be added to the queue, never to be flushed correctly. The logic
- // below should only remain as a last-resort catch-all fix.
+ // Callers of this API should verify that the userId passed to this method exists.
+ // The logic below should only remain as a last-resort catch-all fix.
final UserManagerInternal umi = LocalServices.getService(UserManagerInternal.class);
if (umi == null || (umi != null && !umi.exists(userId))) {
// The userId passed is a non-existent user so don't report the event.
@@ -3239,6 +3237,18 @@
}
@Override
+ public void reportEventForAllUsers(String packageName, int eventType) {
+ if (packageName == null) {
+ Slog.w(TAG, "Event reported without a package name, eventType:" + eventType);
+ return;
+ }
+
+ Event event = new Event(eventType, SystemClock.elapsedRealtime());
+ event.mPackage = packageName;
+ reportEventToAllUserId(event);
+ }
+
+ @Override
public void reportConfigurationChange(Configuration config, int userId) {
if (config == null) {
Slog.w(TAG, "Configuration event reported with a null config");
diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java
index aebae4e..4b83b65 100644
--- a/telephony/java/android/telephony/satellite/SatelliteManager.java
+++ b/telephony/java/android/telephony/satellite/SatelliteManager.java
@@ -1078,6 +1078,11 @@
* @hide
*/
public static final int DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED = 5;
+ /**
+ * Datagram type indicating that the message to be sent or received is of type SMS.
+ * @hide
+ */
+ public static final int DATAGRAM_TYPE_SMS = 6;
/** @hide */
@IntDef(prefix = "DATAGRAM_TYPE_", value = {
@@ -1086,7 +1091,8 @@
DATAGRAM_TYPE_LOCATION_SHARING,
DATAGRAM_TYPE_KEEP_ALIVE,
DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
- DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED
+ DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED,
+ DATAGRAM_TYPE_SMS
})
@Retention(RetentionPolicy.SOURCE)
public @interface DatagramType {}
diff --git a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt
index 5121f667..8811e00 100644
--- a/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt
+++ b/tests/FlickerTests/test-apps/app-helpers/src/com/android/server/wm/flicker/helpers/DesktopModeAppHelper.kt
@@ -17,6 +17,7 @@
package com.android.server.wm.flicker.helpers
import android.graphics.Rect
+import android.platform.uiautomator_helpers.DeviceHelpers
import android.tools.device.apphelpers.IStandardAppHelper
import android.tools.helpers.SYSTEMUI_PACKAGE
import android.tools.traces.parsers.WindowManagerStateHelper
@@ -26,6 +27,7 @@
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiObject2
import androidx.test.uiautomator.Until
+import java.time.Duration
/**
* Wrapper class around App helper classes. This class adds functionality to the apps that the
@@ -41,16 +43,6 @@
RIGHT_BOTTOM
}
- private val TIMEOUT_MS = 3_000L
- private val CAPTION = "desktop_mode_caption"
- private val CAPTION_HANDLE = "caption_handle"
- private val MAXIMIZE_BUTTON = "maximize_window"
- private val MAXIMIZE_BUTTON_VIEW = "maximize_button_view"
- private val CLOSE_BUTTON = "close_window"
-
- private val caption: BySelector
- get() = By.res(SYSTEMUI_PACKAGE, CAPTION)
-
/** Wait for an app moved to desktop to finish its transition. */
private fun waitForAppToMoveToDesktop(wmHelper: WindowManagerStateHelper) {
wmHelper
@@ -123,7 +115,7 @@
)
error("expected a freeform window with caption but window is not in freeform mode")
val captions =
- device.wait(Until.findObjects(caption), TIMEOUT_MS)
+ device.wait(Until.findObjects(caption), TIMEOUT.toMillis())
?: error("Unable to find view $caption\n")
return captions.find {
@@ -200,6 +192,33 @@
device.drag(startX, startY, endX, endY, 100)
}
+ fun enterDesktopModeFromAppHandleMenu(
+ wmHelper: WindowManagerStateHelper,
+ device: UiDevice) {
+ val windowRect = wmHelper.getWindowRegion(innerHelper).bounds
+ val startX = windowRect.centerX()
+ // Click a little under the top to prevent opening the notification shade.
+ val startY = 10
+
+ // Click on the app handle coordinates.
+ device.click(startX, startY)
+ wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify()
+
+ val pill = getAppHandlePillForWindow()
+ val desktopModeButton =
+ pill
+ ?.children
+ ?.find { it.resourceName.endsWith(DESKTOP_MODE_BUTTON) }
+
+ desktopModeButton?.click()
+ wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify()
+ }
+
+ private fun getAppHandlePillForWindow(): UiObject2? {
+ val pillContainer: BySelector = By.res(SYSTEMUI_PACKAGE, PILL_CONTAINER)
+ return DeviceHelpers.waitForObj(pillContainer, TIMEOUT)
+ }
+
/** Wait for transition to full screen to finish. */
private fun waitForTransitionToFullscreen(wmHelper: WindowManagerStateHelper) {
wmHelper
@@ -208,4 +227,15 @@
.withAppTransitionIdle()
.waitForAndVerify()
}
+
+ private companion object {
+ val TIMEOUT = Duration.ofSeconds(3)
+ val CAPTION = "desktop_mode_caption"
+ val MAXIMIZE_BUTTON_VIEW = "maximize_button_view"
+ val CLOSE_BUTTON = "close_window"
+ val PILL_CONTAINER = "windowing_pill"
+ val DESKTOP_MODE_BUTTON = "desktop_button"
+ val caption: BySelector
+ get() = By.res(SYSTEMUI_PACKAGE, CAPTION)
+ }
}
diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java
index e60d8ef..a2c3572 100644
--- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java
+++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/AutoShowTest.java
@@ -37,14 +37,14 @@
import android.os.SystemClock;
import android.platform.test.annotations.RootPermissionTest;
import android.platform.test.rule.UnlockScreenRule;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
import android.view.WindowManager;
import android.widget.EditText;
import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.Until;
import org.junit.Rule;
import org.junit.Test;
diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java
index 2ac25f2..b994bfb 100644
--- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java
+++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/DefaultImeVisibilityTest.java
@@ -33,10 +33,10 @@
import android.content.Intent;
import android.platform.test.annotations.RootPermissionTest;
import android.platform.test.rule.UnlockScreenRule;
-import android.support.test.uiautomator.UiDevice;
import android.widget.EditText;
import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.uiautomator.UiDevice;
import org.junit.Rule;
import org.junit.Test;
diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java
index 5368025..2128cbf 100644
--- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java
+++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java
@@ -48,12 +48,12 @@
import android.os.SystemClock;
import android.platform.test.annotations.RootPermissionTest;
import android.platform.test.rule.UnlockScreenRule;
-import android.support.test.uiautomator.UiDevice;
import android.util.Log;
import android.view.WindowManager;
import android.widget.EditText;
import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.uiautomator.UiDevice;
import org.junit.Rule;
import org.junit.Test;
diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestRule.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestRule.java
index c746321..1249a45 100644
--- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestRule.java
+++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeStressTestRule.java
@@ -18,10 +18,10 @@
import android.app.Instrumentation;
import android.os.RemoteException;
-import android.support.test.uiautomator.UiDevice;
import androidx.annotation.NonNull;
import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.uiautomator.UiDevice;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
diff --git a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
index a8b383c..ab406ef 100644
--- a/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
+++ b/tests/PackageWatchdog/src/com/android/server/PackageWatchdogTest.java
@@ -23,9 +23,12 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -33,6 +36,7 @@
import android.Manifest;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.VersionedPackage;
@@ -116,6 +120,7 @@
private ConnectivityModuleConnector mConnectivityModuleConnector;
@Mock
private PackageManager mMockPackageManager;
+ @Mock Intent mMockIntent;
// Mock only sysprop apis
private PackageWatchdog.BootThreshold mSpyBootThreshold;
@Captor
@@ -1669,6 +1674,19 @@
PackageWatchdog.DEFAULT_TRIGGER_FAILURE_DURATION_MS);
}
+ /**
+ * Tests device config changes are propagated correctly.
+ */
+ @Test
+ public void testRegisterShutdownBroadcastReceiver() {
+ PackageWatchdog watchdog = createWatchdog();
+ doReturn(mMockIntent).when(mSpyContext)
+ .registerReceiverForAllUsers(any(), any(), any(), any());
+
+ watchdog.registerShutdownBroadcastReceiver();
+ verify(mSpyContext).registerReceiverForAllUsers(any(), any(), eq(null), eq(null));
+ }
+
private void adoptShellPermissions(String... permissions) {
InstrumentationRegistry
.getInstrumentation()
diff --git a/tools/aapt2/Resource.h b/tools/aapt2/Resource.h
index 7ba3277..a274f04 100644
--- a/tools/aapt2/Resource.h
+++ b/tools/aapt2/Resource.h
@@ -69,6 +69,8 @@
kXml,
};
+enum class FlagStatus { NoFlag = 0, Disabled = 1, Enabled = 2 };
+
android::StringPiece to_string(ResourceType type);
/**
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp
index 6af39b7..2df9418 100644
--- a/tools/aapt2/ResourceParser.cpp
+++ b/tools/aapt2/ResourceParser.cpp
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
#include "ResourceParser.h"
#include <functional>
@@ -108,6 +107,7 @@
Visibility::Level visibility_level = Visibility::Level::kUndefined;
bool staged_api = false;
bool allow_new = false;
+ FlagStatus flag_status;
std::optional<OverlayableItem> overlayable_item;
std::optional<StagedId> staged_alias;
@@ -161,6 +161,8 @@
res_builder.SetStagedId(res->staged_alias.value());
}
+ res_builder.SetFlagStatus(res->flag_status);
+
bool error = false;
if (!res->name.entry.empty()) {
if (!table->AddResource(res_builder.Build(), diag)) {
@@ -544,6 +546,30 @@
});
std::string resource_type = parser->element_name();
+ std::optional<StringPiece> flag =
+ xml::FindAttribute(parser, "http://schemas.android.com/apk/res/android", "featureFlag");
+ out_resource->flag_status = FlagStatus::NoFlag;
+ if (flag) {
+ auto flag_it = options_.feature_flag_values.find(flag.value());
+ if (flag_it == options_.feature_flag_values.end()) {
+ diag_->Error(android::DiagMessage(source_.WithLine(parser->line_number()))
+ << "Resource flag value undefined");
+ return false;
+ }
+ const auto& flag_properties = flag_it->second;
+ if (!flag_properties.read_only) {
+ diag_->Error(android::DiagMessage(source_.WithLine(parser->line_number()))
+ << "Only read only flags may be used with resources");
+ return false;
+ }
+ if (!flag_properties.enabled.has_value()) {
+ diag_->Error(android::DiagMessage(source_.WithLine(parser->line_number()))
+ << "Only flags with a value may be used with resources");
+ return false;
+ }
+ out_resource->flag_status =
+ flag_properties.enabled.value() ? FlagStatus::Enabled : FlagStatus::Disabled;
+ }
// The value format accepted for this resource.
uint32_t resource_format = 0u;
diff --git a/tools/aapt2/ResourceParser.h b/tools/aapt2/ResourceParser.h
index 012a056..45d41c1 100644
--- a/tools/aapt2/ResourceParser.h
+++ b/tools/aapt2/ResourceParser.h
@@ -27,6 +27,7 @@
#include "androidfw/IDiagnostics.h"
#include "androidfw/StringPiece.h"
#include "androidfw/StringPool.h"
+#include "cmd/Util.h"
#include "xml/XmlPullParser.h"
namespace aapt {
@@ -54,6 +55,8 @@
// If visibility was forced, we need to use it when creating a new resource and also error if we
// try to parse the <public>, <public-group>, <java-symbol> or <symbol> tags.
std::optional<Visibility::Level> visibility;
+
+ FeatureFlagValues feature_flag_values;
};
struct FlattenedXmlSubTree {
diff --git a/tools/aapt2/ResourceTable.cpp b/tools/aapt2/ResourceTable.cpp
index a3b0b45..1cdb715 100644
--- a/tools/aapt2/ResourceTable.cpp
+++ b/tools/aapt2/ResourceTable.cpp
@@ -231,6 +231,47 @@
return false;
}
+ResourceTable::CollisionResult ResourceTable::ResolveFlagCollision(FlagStatus existing,
+ FlagStatus incoming) {
+ switch (existing) {
+ case FlagStatus::NoFlag:
+ switch (incoming) {
+ case FlagStatus::NoFlag:
+ return CollisionResult::kConflict;
+ case FlagStatus::Disabled:
+ return CollisionResult::kKeepOriginal;
+ case FlagStatus::Enabled:
+ return CollisionResult::kTakeNew;
+ default:
+ return CollisionResult::kConflict;
+ }
+ case FlagStatus::Disabled:
+ switch (incoming) {
+ case FlagStatus::NoFlag:
+ return CollisionResult::kTakeNew;
+ case FlagStatus::Disabled:
+ return CollisionResult::kKeepOriginal;
+ case FlagStatus::Enabled:
+ return CollisionResult::kTakeNew;
+ default:
+ return CollisionResult::kConflict;
+ }
+ case FlagStatus::Enabled:
+ switch (incoming) {
+ case FlagStatus::NoFlag:
+ return CollisionResult::kKeepOriginal;
+ case FlagStatus::Disabled:
+ return CollisionResult::kKeepOriginal;
+ case FlagStatus::Enabled:
+ return CollisionResult::kConflict;
+ default:
+ return CollisionResult::kConflict;
+ }
+ default:
+ return CollisionResult::kConflict;
+ }
+}
+
// The default handler for collisions.
//
// Typically, a weak value will be overridden by a strong value. An existing weak
@@ -564,16 +605,21 @@
if (!config_value->value) {
// Resource does not exist, add it now.
config_value->value = std::move(res.value);
+ config_value->flag_status = res.flag_status;
} else {
// When validation is enabled, ensure that a resource cannot have multiple values defined for
- // the same configuration.
- auto result = validate ? ResolveValueCollision(config_value->value.get(), res.value.get())
+ // the same configuration unless protected by flags.
+ auto result = validate ? ResolveFlagCollision(config_value->flag_status, res.flag_status)
: CollisionResult::kKeepBoth;
+ if (result == CollisionResult::kConflict) {
+ result = ResolveValueCollision(config_value->value.get(), res.value.get());
+ }
switch (result) {
case CollisionResult::kKeepBoth:
// Insert the value ignoring for duplicate configurations
entry->values.push_back(util::make_unique<ResourceConfigValue>(res.config, res.product));
entry->values.back()->value = std::move(res.value);
+ entry->values.back()->flag_status = res.flag_status;
break;
case CollisionResult::kTakeNew:
@@ -735,6 +781,11 @@
return *this;
}
+NewResourceBuilder& NewResourceBuilder::SetFlagStatus(FlagStatus flag_status) {
+ res_.flag_status = flag_status;
+ return *this;
+}
+
NewResource NewResourceBuilder::Build() {
return std::move(res_);
}
diff --git a/tools/aapt2/ResourceTable.h b/tools/aapt2/ResourceTable.h
index 61e399c..9530c17 100644
--- a/tools/aapt2/ResourceTable.h
+++ b/tools/aapt2/ResourceTable.h
@@ -104,6 +104,8 @@
// The actual Value.
std::unique_ptr<Value> value;
+ FlagStatus flag_status;
+
ResourceConfigValue(const android::ConfigDescription& config, android::StringPiece product)
: config(config), product(product) {
}
@@ -269,6 +271,7 @@
std::optional<AllowNew> allow_new;
std::optional<StagedId> staged_id;
bool allow_mangled = false;
+ FlagStatus flag_status;
};
struct NewResourceBuilder {
@@ -282,6 +285,7 @@
NewResourceBuilder& SetAllowNew(AllowNew allow_new);
NewResourceBuilder& SetStagedId(StagedId id);
NewResourceBuilder& SetAllowMangled(bool allow_mangled);
+ NewResourceBuilder& SetFlagStatus(FlagStatus flag_status);
NewResource Build();
private:
@@ -330,7 +334,8 @@
std::unique_ptr<ResourceTable> Clone() const;
- // When a collision of resources occurs, this method decides which value to keep.
+ // When a collision of resources occurs, these methods decide which value to keep.
+ static CollisionResult ResolveFlagCollision(FlagStatus existing, FlagStatus incoming);
static CollisionResult ResolveValueCollision(Value* existing, Value* incoming);
// The string pool used by this resource table. Values that reference strings must use
diff --git a/tools/aapt2/Resources.proto b/tools/aapt2/Resources.proto
index 1d7fd1d..2ecc82a 100644
--- a/tools/aapt2/Resources.proto
+++ b/tools/aapt2/Resources.proto
@@ -246,6 +246,7 @@
message ConfigValue {
Configuration config = 1;
Value value = 2;
+ uint32 flag_status = 3;
}
// The generic meta-data for every value in a resource table.
diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp
index 83f2eb3..37b1687 100644
--- a/tools/aapt2/SdkConstants.cpp
+++ b/tools/aapt2/SdkConstants.cpp
@@ -64,6 +64,12 @@
{0x0616, SDK_R},
{0x064b, SDK_S},
{0x064c, SDK_S_V2},
+ // TODO(zyy): add these when we need more rules for converting new attributes to the
+ // older ones, but don't bother for now as this would increase the array size for no
+ // real benefit
+ // {0x0672, SDK_TIRAMISU},
+ // {0x0687, SDK_UPSIDE_DOWN_CAKE},
+ // {0x06a3, SDK_VANILLA_ICE_CREAM},
};
static_assert(std::is_sorted(std::begin(sAttrIdMap), std::end(sAttrIdMap),
diff --git a/tools/aapt2/cmd/Compile.cpp b/tools/aapt2/cmd/Compile.cpp
index 9b8c3b3..2a978a5 100644
--- a/tools/aapt2/cmd/Compile.cpp
+++ b/tools/aapt2/cmd/Compile.cpp
@@ -171,6 +171,7 @@
parser_options.error_on_positional_arguments = !options.legacy_mode;
parser_options.preserve_visibility_of_styleables = options.preserve_visibility_of_styleables;
parser_options.translatable = translatable_file;
+ parser_options.feature_flag_values = options.feature_flag_values;
// If visibility was forced, we need to use it when creating a new resource and also error if
// we try to parse the <public>, <public-group>, <java-symbol> or <symbol> tags.
diff --git a/tools/aapt2/format/proto/ProtoDeserialize.cpp b/tools/aapt2/format/proto/ProtoDeserialize.cpp
index e1a3013..aaab315 100644
--- a/tools/aapt2/format/proto/ProtoDeserialize.cpp
+++ b/tools/aapt2/format/proto/ProtoDeserialize.cpp
@@ -16,6 +16,7 @@
#include "format/proto/ProtoDeserialize.h"
+#include "Resource.h"
#include "ResourceTable.h"
#include "ResourceUtils.h"
#include "ResourceValues.h"
@@ -533,6 +534,8 @@
return false;
}
+ config_value->flag_status = (FlagStatus)pb_config_value.flag_status();
+
config_value->value = DeserializeValueFromPb(pb_config_value.value(), src_pool, config,
&out_table->string_pool, files, out_error);
if (config_value->value == nullptr) {
diff --git a/tools/aapt2/format/proto/ProtoSerialize.cpp b/tools/aapt2/format/proto/ProtoSerialize.cpp
index 0903205..c1e15bc 100644
--- a/tools/aapt2/format/proto/ProtoSerialize.cpp
+++ b/tools/aapt2/format/proto/ProtoSerialize.cpp
@@ -426,6 +426,7 @@
pb_config_value->mutable_config()->set_product(config_value->product);
SerializeValueToPb(*config_value->value, pb_config_value->mutable_value(),
source_pool.get());
+ pb_config_value->set_flag_status((uint32_t)config_value->flag_status);
}
}
}
diff --git a/tools/aapt2/xml/XmlPullParser.cpp b/tools/aapt2/xml/XmlPullParser.cpp
index 8abc26d..1527d68 100644
--- a/tools/aapt2/xml/XmlPullParser.cpp
+++ b/tools/aapt2/xml/XmlPullParser.cpp
@@ -309,7 +309,14 @@
}
std::optional<StringPiece> FindAttribute(const XmlPullParser* parser, StringPiece name) {
- auto iter = parser->FindAttribute("", name);
+ return FindAttribute(parser, "", name);
+}
+
+std::optional<android::StringPiece> FindAttribute(const XmlPullParser* parser,
+ android::StringPiece namespace_uri,
+ android::StringPiece name) {
+ auto iter = parser->FindAttribute(namespace_uri, name);
+
if (iter != parser->end_attributes()) {
return StringPiece(util::TrimWhitespace(iter->value));
}
diff --git a/tools/aapt2/xml/XmlPullParser.h b/tools/aapt2/xml/XmlPullParser.h
index 64274d0..d65ba6f 100644
--- a/tools/aapt2/xml/XmlPullParser.h
+++ b/tools/aapt2/xml/XmlPullParser.h
@@ -194,6 +194,13 @@
android::StringPiece name);
/**
+ * Finds the attribute in the current element within the given namespace.
+ */
+std::optional<android::StringPiece> FindAttribute(const XmlPullParser* parser,
+ android::StringPiece namespace_uri,
+ android::StringPiece name);
+
+/**
* Finds the attribute in the current element within the global namespace. The
* attribute's value
* must not be the empty string.
diff --git a/wifi/wifi.aconfig b/wifi/wifi.aconfig
index c1effe1..f7162f6 100644
--- a/wifi/wifi.aconfig
+++ b/wifi/wifi.aconfig
@@ -25,3 +25,13 @@
description: "Add API to migrate all values from Legacy Keystore to the new Wifi Blobstore database"
bug: "332560152"
}
+
+flag {
+ name: "hotspot_network_unknown_status_resets_connecting_state"
+ namespace: "wifi"
+ description: "Reset the connecting state flags when the hotspot network updates to unknown."
+ bug: "329670511"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}