diff options
806 files changed, 8255 insertions, 4359 deletions
diff --git a/apct-tests/perftests/core/Android.bp b/apct-tests/perftests/core/Android.bp index 65bc8ccd12f8..1e299cdf8002 100644 --- a/apct-tests/perftests/core/Android.bp +++ b/apct-tests/perftests/core/Android.bp @@ -52,7 +52,7 @@ android_test { "guava", ], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], java_resources: [":GoogleFontDancingScript"], diff --git a/apct-tests/perftests/healthconnect/Android.bp b/apct-tests/perftests/healthconnect/Android.bp index c38a24ee05d2..072010e90fae 100644 --- a/apct-tests/perftests/healthconnect/Android.bp +++ b/apct-tests/perftests/healthconnect/Android.bp @@ -37,7 +37,7 @@ android_test { "collector-device-lib-platform", ], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], platform_apis: true, test_suites: ["device-tests"], data: [":perfetto_artifacts"], diff --git a/apct-tests/perftests/packagemanager/Android.bp b/apct-tests/perftests/packagemanager/Android.bp index 02fc12cde04b..b2626911ea1e 100644 --- a/apct-tests/perftests/packagemanager/Android.bp +++ b/apct-tests/perftests/packagemanager/Android.bp @@ -28,7 +28,7 @@ android_test { "services.core", ], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], platform_apis: true, diff --git a/apct-tests/perftests/permission/Android.bp b/apct-tests/perftests/permission/Android.bp index bc8e7696440a..f4c7fbbf6593 100644 --- a/apct-tests/perftests/permission/Android.bp +++ b/apct-tests/perftests/permission/Android.bp @@ -43,7 +43,7 @@ android_test { "cts-install-lib-java", ], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], platform_apis: true, diff --git a/apct-tests/perftests/settingsprovider/Android.bp b/apct-tests/perftests/settingsprovider/Android.bp index e4aa14cd8a77..382803900507 100644 --- a/apct-tests/perftests/settingsprovider/Android.bp +++ b/apct-tests/perftests/settingsprovider/Android.bp @@ -28,7 +28,7 @@ android_test { "services.core", ], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], platform_apis: true, diff --git a/boot/hiddenapi/hiddenapi-unsupported.txt b/boot/hiddenapi/hiddenapi-unsupported.txt index adcc3df2d7fe..70e5a68745bc 100644 --- a/boot/hiddenapi/hiddenapi-unsupported.txt +++ b/boot/hiddenapi/hiddenapi-unsupported.txt @@ -183,7 +183,6 @@ Landroid/view/autofill/IAutoFillManager$Stub$Proxy;-><init>(Landroid/os/IBinder; Landroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager; Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;-><init>()V Landroid/view/IDockedStackListener$Stub;-><init>()V -Landroid/view/IRecentsAnimationRunner$Stub;-><init>()V Landroid/view/IRemoteAnimationRunner$Stub;-><init>()V Landroid/view/IRotationWatcher$Stub;-><init>()V Landroid/view/IWindow$Stub;-><init>()V diff --git a/cmds/uiautomator/library/Android.bp b/cmds/uiautomator/library/Android.bp index cd1fb9a0f047..966bf13adfe4 100644 --- a/cmds/uiautomator/library/Android.bp +++ b/cmds/uiautomator/library/Android.bp @@ -71,7 +71,7 @@ java_library_static { ":uiautomator-stubs", ], libs: [ - "android.test.runner", + "android.test.runner.stubs.system", "junit", ], java_version: "1.8", @@ -84,8 +84,8 @@ java_library_static { "testrunner-src/**/*.java", ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "junit", diff --git a/core/api/current.txt b/core/api/current.txt index 9875c0276bf0..14e749344247 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -34266,9 +34266,14 @@ package android.os { method public final int areAllEffectsSupported(@NonNull int...); method public final boolean areAllPrimitivesSupported(@NonNull int...); method @NonNull public int[] areEffectsSupported(@NonNull int...); + method @FlaggedApi("android.os.vibrator.normalized_pwle_effects") public boolean areEnvelopeEffectsSupported(); method @NonNull public boolean[] arePrimitivesSupported(@NonNull int...); method @RequiresPermission(android.Manifest.permission.VIBRATE) public abstract void cancel(); method public int getId(); + method @FlaggedApi("android.os.vibrator.normalized_pwle_effects") public int getMaxEnvelopeEffectControlPointDurationMillis(); + method @FlaggedApi("android.os.vibrator.normalized_pwle_effects") public int getMaxEnvelopeEffectDurationMillis(); + method @FlaggedApi("android.os.vibrator.normalized_pwle_effects") public int getMaxEnvelopeEffectSize(); + method @FlaggedApi("android.os.vibrator.normalized_pwle_effects") public int getMinEnvelopeEffectControlPointDurationMillis(); method @NonNull public int[] getPrimitiveDurations(@NonNull int...); method public float getQFactor(); method public float getResonantFrequency(); @@ -44067,6 +44072,7 @@ package android.telephony { } public static final class CarrierConfigManager.Gps { + field @FlaggedApi("android.location.flags.enable_ni_supl_message_injection_by_carrier_config") public static final String KEY_ENABLE_NI_SUPL_MESSAGE_INJECTION_BOOL = "gps.enable_ni_supl_message_injection_bool"; field public static final String KEY_PERSIST_LPP_MODE_BOOL = "gps.persist_lpp_mode_bool"; field public static final String KEY_PREFIX = "gps."; } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 7a33ab748597..7a36fbb55dc4 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -1593,17 +1593,6 @@ public class Notification implements Parcelable */ @FlaggedApi(Flags.FLAG_API_RICH_ONGOING) public static final String EXTRA_ENROUTE_LARGE_ICON_SUBTEXT = "android.enrouteLargeIconSubText"; - - /** - * {@link #extras} key: {@link Icon} of an image used as a thumb icon on - * {@link Notification} progress bar for {@link EnRouteStyle} notifications. - * This extra is an {@code Icon}. - * @hide - */ - @FlaggedApi(Flags.FLAG_API_RICH_ONGOING) - public static final String EXTRA_ENROUTE_PROGRESS_THUMB_ICON = - "android.enrouteProgressThumbIcon"; - /** * {@link #extras} key: whether the notification should be colorized as * supplied to {@link Builder#setColorized(boolean)}. @@ -3063,8 +3052,6 @@ public class Notification implements Parcelable if (Flags.apiRichOngoing()) { visitIconUri(visitor, extras.getParcelable(EXTRA_ENROUTE_OVERLAY_ICON, Icon.class)); - visitIconUri(visitor, extras.getParcelable(EXTRA_ENROUTE_PROGRESS_THUMB_ICON, - Icon.class)); } if (mBubbleMetadata != null) { @@ -11028,9 +11015,6 @@ public class Notification implements Parcelable @Nullable private CharSequence mLargeIconSubText = null; - @Nullable - private Icon mProgressThumbIcon = null; - public EnRouteStyle() { } @@ -11074,25 +11058,6 @@ public class Notification implements Parcelable return this; } - /** - * Returns the progress thumb icon. - * @see EnRouteStyle#setProgressThumbIcon - */ - @Nullable - public Icon getProgressThumbIcon() { - return mProgressThumbIcon; - } - - /** - * Optional icon to be used as a progress thumb. - */ - @NonNull - public EnRouteStyle setProgressThumbIcon(@Nullable Icon progressThumbIcon) { - mProgressThumbIcon = progressThumbIcon; - return this; - } - - /** * @hide */ @@ -11104,8 +11069,7 @@ public class Notification implements Parcelable final EnRouteStyle enRouteStyle = (EnRouteStyle) other; return !Objects.equals(mOverlayIcon, enRouteStyle.mOverlayIcon) - || !Objects.equals(mLargeIconSubText, enRouteStyle.mLargeIconSubText) - || !Objects.equals(mProgressThumbIcon, enRouteStyle.mProgressThumbIcon); + || !Objects.equals(mLargeIconSubText, enRouteStyle.mLargeIconSubText); } /** @@ -11116,7 +11080,6 @@ public class Notification implements Parcelable super.addExtras(extras); extras.putParcelable(EXTRA_ENROUTE_OVERLAY_ICON, mOverlayIcon); extras.putCharSequence(EXTRA_ENROUTE_LARGE_ICON_SUBTEXT, mLargeIconSubText); - extras.putParcelable(EXTRA_ENROUTE_PROGRESS_THUMB_ICON, mProgressThumbIcon); } /** @@ -11127,8 +11090,6 @@ public class Notification implements Parcelable super.restoreFromExtras(extras); mOverlayIcon = extras.getParcelable(EXTRA_ENROUTE_OVERLAY_ICON, Icon.class); mLargeIconSubText = extras.getCharSequence(EXTRA_ENROUTE_LARGE_ICON_SUBTEXT); - mProgressThumbIcon = - extras.getParcelable(EXTRA_ENROUTE_PROGRESS_THUMB_ICON, Icon.class); } /** @@ -11140,10 +11101,6 @@ public class Notification implements Parcelable if (mOverlayIcon != null) { mOverlayIcon.convertToAshmem(); } - - if (mProgressThumbIcon != null) { - mProgressThumbIcon.convertToAshmem(); - } } /** diff --git a/core/java/android/content/IntentFilter.java b/core/java/android/content/IntentFilter.java index e895d7be1102..60d1b0d45365 100644 --- a/core/java/android/content/IntentFilter.java +++ b/core/java/android/content/IntentFilter.java @@ -3141,6 +3141,14 @@ public class IntentFilter implements Parcelable { for (int i = 0; i < N; i++) { mUriRelativeFilterGroups.add(new UriRelativeFilterGroup(source)); } + if (source.dataAvail() > 0) { + Log.e(TAG, "Parcel data not fully consumed after completed reading" + + " UriRelativeFilterGroup data"); + } + } + if (source.dataAvail() > 0) { + Log.e(TAG, "Parcel data not fully consumed when unparceling intent filter", + new Exception()); } } diff --git a/core/java/android/content/UriRelativeFilterGroup.java b/core/java/android/content/UriRelativeFilterGroup.java index 0e49b4fe427a..07aeb26216b1 100644 --- a/core/java/android/content/UriRelativeFilterGroup.java +++ b/core/java/android/content/UriRelativeFilterGroup.java @@ -63,6 +63,7 @@ import java.util.Objects; */ @FlaggedApi(Flags.FLAG_RELATIVE_REFERENCE_INTENT_FILTERS) public final class UriRelativeFilterGroup { + private static final String TAG = "UriRelativeFilterGroup"; private static final String ALLOW_STR = "allow"; private static final String URI_RELATIVE_FILTER_GROUP_STR = "uriRelativeFilterGroup"; @@ -233,9 +234,16 @@ public final class UriRelativeFilterGroup { final int n = mUriRelativeFilters.size(); if (n > 0) { dest.writeInt(n); + int i = 0; Iterator<UriRelativeFilter> it = mUriRelativeFilters.iterator(); while (it.hasNext()) { it.next().writeToParcel(dest, flags); + i++; + } + if (i != n) { + Log.e(TAG, "UriRelativeFilters was unexpectedly" + + " modified while writing to parcel. Expected " + + n + " but found " + i + " filters", new Exception()); } } else { dest.writeInt(0); diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java index f54be00c9e69..60fd0ce59209 100644 --- a/core/java/android/database/sqlite/SQLiteDatabase.java +++ b/core/java/android/database/sqlite/SQLiteDatabase.java @@ -236,15 +236,21 @@ public final class SQLiteDatabase extends SQLiteClosable { * * {@more} Note that the value of this flag is 0, so it is the default. */ - public static final int OPEN_READWRITE = 0x00000000; // update native code if changing + // LINT.IfChange + public static final int OPEN_READWRITE = 0x00000000; + // LINT.ThenChange(/core/jni/android_database_SQLiteConnection.cpp) /** * Open flag: Flag for {@link #openDatabase} to open the database for reading only. * This is the only reliable way to open a database if the disk may be full. */ - public static final int OPEN_READONLY = 0x00000001; // update native code if changing + // LINT.IfChange + public static final int OPEN_READONLY = 0x00000001; + // LINT.ThenChange(/core/jni/android_database_SQLiteConnection.cpp) - private static final int OPEN_READ_MASK = 0x00000001; // update native code if changing + // LINT.IfChange + private static final int OPEN_READ_MASK = 0x00000001; + // LINT.ThenChange(/core/jni/android_database_SQLiteConnection.cpp) /** * Open flag: Flag for {@link #openDatabase} to open the database without support for @@ -254,13 +260,31 @@ public final class SQLiteDatabase extends SQLiteClosable { * You must be consistent when using this flag to use the setting the database was * created with. If this is set, {@link #setLocale} will do nothing. */ - public static final int NO_LOCALIZED_COLLATORS = 0x00000010; // update native code if changing + // LINT.IfChange + public static final int NO_LOCALIZED_COLLATORS = 0x00000010; + // LINT.ThenChange(/core/jni/android_database_SQLiteConnection.cpp) + + /** + * Open flag: Flag for {@link #openDatabase} to open a database, disallowing double-quoted + * strings. + * + * This causes sqlite to reject SQL statements with double-quoted string literals. String + * literals must be enclosed in single quotes; double-quotes are reserved for identifiers like + * column names. + * See https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted + * @hide + */ + // LINT.IfChange + public static final int NO_DOUBLE_QUOTED_STRS = 0x00000020; + // LINT.ThenChange(/core/jni/android_database_SQLiteConnection.cpp) /** * Open flag: Flag for {@link #openDatabase} to create the database file if it does not * already exist. */ - public static final int CREATE_IF_NECESSARY = 0x10000000; // update native code if changing + // LINT.IfChange + public static final int CREATE_IF_NECESSARY = 0x10000000; + // LINT.ThenChange(/core/jni/android_database_SQLiteConnection.cpp) /** * Open flag: Flag for {@link #openDatabase} to open the database file with @@ -490,6 +514,9 @@ public final class SQLiteDatabase extends SQLiteClosable { if (SQLiteCompatibilityWalFlags.isLegacyCompatibilityWalEnabled()) { mConfigurationLocked.openFlags |= ENABLE_LEGACY_COMPATIBILITY_WAL; } + if (SQLiteDebug.NoPreloadHolder.NO_DOUBLE_QUOTED_STRS) { + mConfigurationLocked.openFlags |= NO_DOUBLE_QUOTED_STRS; + } mConfigurationLocked.journalMode = journalMode; mConfigurationLocked.syncMode = syncMode; } @@ -3275,6 +3302,7 @@ public final class SQLiteDatabase extends SQLiteClosable { OPEN_READONLY, CREATE_IF_NECESSARY, NO_LOCALIZED_COLLATORS, + NO_DOUBLE_QUOTED_STRS, ENABLE_WRITE_AHEAD_LOGGING }) @Retention(RetentionPolicy.SOURCE) diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java index 93d74b1fbdff..b648e053eea0 100644 --- a/core/java/android/database/sqlite/SQLiteDebug.java +++ b/core/java/android/database/sqlite/SQLiteDebug.java @@ -66,7 +66,6 @@ public final class SQLiteDebug { public static final boolean DEBUG_SQL_TIME = Log.isLoggable("SQLiteTime", Log.VERBOSE); - /** * True to enable database performance testing instrumentation. */ @@ -83,6 +82,15 @@ public final class SQLiteDebug { */ public static final boolean DEBUG_LOG_DETAILED = Build.IS_DEBUGGABLE && SystemProperties.getBoolean("db.log.detailed", false); + + /** + * Whether to accept double-quoted strings in SQL statements. Double-quoted strings are a + * syntax error but are accepted by sqlite in compatibility mode (the default). If the + * property is set to true, double-quoted strings will be treated by sqlite as a syntax + * error. + */ + public static final boolean NO_DOUBLE_QUOTED_STRS = + SystemProperties.getBoolean("debug.sqlite.no_double_quoted_strs", false); } private SQLiteDebug() { diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java index c7dba6c83895..84072585d7f0 100644 --- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java @@ -364,16 +364,11 @@ public class CameraDeviceImpl extends CameraDevice throw new IllegalArgumentException("Null argument given"); } mCameraId = cameraId; - if (Flags.singleThreadExecutor()) { - mDeviceCallback = new ClientStateCallback(executor, callback); - if (Flags.singleThreadExecutorNaming()) { - mDeviceExecutor = Executors.newSingleThreadExecutor(sThreadFactory); - } else { - mDeviceExecutor = Executors.newSingleThreadExecutor(); - } + mDeviceCallback = new ClientStateCallback(executor, callback); + if (Flags.singleThreadExecutorNaming()) { + mDeviceExecutor = Executors.newSingleThreadExecutor(sThreadFactory); } else { - mDeviceCallback = callback; - mDeviceExecutor = executor; + mDeviceExecutor = Executors.newSingleThreadExecutor(); } mCharacteristics = characteristics; mCameraManager = manager; diff --git a/core/java/android/hardware/input/input_framework.aconfig b/core/java/android/hardware/input/input_framework.aconfig index fcd6c31d7d18..4478592ae8a5 100644 --- a/core/java/android/hardware/input/input_framework.aconfig +++ b/core/java/android/hardware/input/input_framework.aconfig @@ -117,3 +117,10 @@ flag { description: "Allow configurable timeout before key repeat and repeat delay rate for key repeats" bug: "336585002" } + +flag { + name: "mouse_reverse_vertical_scrolling" + namespace: "input" + description: "Controls whether external mouse vertical scrolling can be reversed" + bug: "352598211" +} diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index 36233b7be2bb..84325b7c2874 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -17,6 +17,7 @@ package android.os; import android.annotation.CallbackExecutor; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -30,6 +31,7 @@ import android.content.Context; import android.content.res.Resources; import android.hardware.vibrator.IVibrator; import android.media.AudioAttributes; +import android.os.vibrator.Flags; import android.os.vibrator.VibrationConfig; import android.os.vibrator.VibratorFrequencyProfile; import android.util.Log; @@ -313,6 +315,86 @@ public abstract class Vibrator { } /** + * Checks whether the vibrator supports the creation of envelope effects. + * + * Envelope effects are defined by a series of frequency-amplitude pairs with specified + * transition times, allowing the creation of more complex vibration patterns. + * + * @return True if the hardware supports creating envelope effects, false otherwise. + */ + @FlaggedApi(Flags.FLAG_NORMALIZED_PWLE_EFFECTS) + public boolean areEnvelopeEffectsSupported() { + return getInfo().areEnvelopeEffectsSupported(); + } + + /** + * Retrieves the maximum duration supported for an envelope effect, in milliseconds. + * + * <p>If the device supports envelope effects (check {@link #areEnvelopeEffectsSupported}), + * this value will be positive. Devices with envelope effects capabilities guarantees a + * maximum duration equivalent to the product of {@link #getMaxEnvelopeEffectSize()} and + * {@link #getMaxEnvelopeEffectControlPointDurationMillis()}. If the device does not support + * envelope effects, this method will return 0. + * + * @return The maximum duration (in milliseconds) allowed for an envelope effect, or 0 if + * envelope effects are not supported. + */ + @FlaggedApi(Flags.FLAG_NORMALIZED_PWLE_EFFECTS) + public int getMaxEnvelopeEffectDurationMillis() { + return getInfo().getMaxEnvelopeEffectDurationMillis(); + } + + /** + * Retrieves the maximum number of control points supported for an envelope effect. + * + * <p>If the device supports envelope effects (check {@link #areEnvelopeEffectsSupported}), + * this value will be positive. Devices with envelope effects capabilities guarantee support + * for a minimum of 16 control points. If the device does not support envelope effects, + * this method will return 0. + * + * @return the maximum number of control points allowed for an envelope effect, or 0 if + * envelope effects are not supported. + */ + @FlaggedApi(Flags.FLAG_NORMALIZED_PWLE_EFFECTS) + public int getMaxEnvelopeEffectSize() { + return getInfo().getMaxEnvelopeEffectSize(); + } + + /** + * Retrieves the minimum duration supported between two control points within an envelope + * effect, in milliseconds. + * + * <p>If the device supports envelope effects (check {@link #areEnvelopeEffectsSupported}), + * this value will be positive. Devices with envelope effects capabilities guarantee + * support for durations down to at least 20 milliseconds. If the device does + * not support envelope effects, this method will return 0. + * + * @return the minimum allowed duration between two control points in an envelope effect, + * or 0 if envelope effects are not supported. + */ + @FlaggedApi(Flags.FLAG_NORMALIZED_PWLE_EFFECTS) + public int getMinEnvelopeEffectControlPointDurationMillis() { + return getInfo().getMinEnvelopeEffectControlPointDurationMillis(); + } + + /** + * Retrieves the maximum duration supported between two control points within an envelope + * effect, in milliseconds. + * + * <p>If the device supports envelope effects (check {@link #areEnvelopeEffectsSupported}), + * this value will be positive. Devices with envelope effects capabilities guarantee support + * for durations up to at least 1 second. If the device does not support envelope effects, + * this method will return 0. + * + * @return the maximum allowed duration between two control points in an envelope effect, + * or 0 if envelope effects are not supported. + */ + @FlaggedApi(Flags.FLAG_NORMALIZED_PWLE_EFFECTS) + public int getMaxEnvelopeEffectControlPointDurationMillis() { + return getInfo().getMaxEnvelopeEffectControlPointDurationMillis(); + } + + /** * Configure an always-on haptics effect. * * @param alwaysOnId The board-specific always-on ID to configure. diff --git a/core/java/android/os/VibratorInfo.java b/core/java/android/os/VibratorInfo.java index 4f8c24d1f905..5378295e3720 100644 --- a/core/java/android/os/VibratorInfo.java +++ b/core/java/android/os/VibratorInfo.java @@ -60,6 +60,9 @@ public class VibratorInfo implements Parcelable { private final int mPwleSizeMax; private final float mQFactor; private final FrequencyProfile mFrequencyProfile; + private final int mMaxEnvelopeEffectSize; + private final int mMinEnvelopeEffectControlPointDurationMillis; + private final int mMaxEnvelopeEffectControlPointDurationMillis; VibratorInfo(Parcel in) { mId = in.readInt(); @@ -73,6 +76,9 @@ public class VibratorInfo implements Parcelable { mPwleSizeMax = in.readInt(); mQFactor = in.readFloat(); mFrequencyProfile = FrequencyProfile.CREATOR.createFromParcel(in); + mMaxEnvelopeEffectSize = in.readInt(); + mMinEnvelopeEffectControlPointDurationMillis = in.readInt(); + mMaxEnvelopeEffectControlPointDurationMillis = in.readInt(); } public VibratorInfo(int id, @NonNull VibratorInfo baseVibratorInfo) { @@ -80,7 +86,10 @@ public class VibratorInfo implements Parcelable { baseVibratorInfo.mSupportedBraking, baseVibratorInfo.mSupportedPrimitives, baseVibratorInfo.mPrimitiveDelayMax, baseVibratorInfo.mCompositionSizeMax, baseVibratorInfo.mPwlePrimitiveDurationMax, baseVibratorInfo.mPwleSizeMax, - baseVibratorInfo.mQFactor, baseVibratorInfo.mFrequencyProfile); + baseVibratorInfo.mQFactor, baseVibratorInfo.mFrequencyProfile, + baseVibratorInfo.mMaxEnvelopeEffectSize, + baseVibratorInfo.mMinEnvelopeEffectControlPointDurationMillis, + baseVibratorInfo.mMaxEnvelopeEffectControlPointDurationMillis); } /** @@ -111,7 +120,9 @@ public class VibratorInfo implements Parcelable { @Nullable SparseBooleanArray supportedBraking, @NonNull SparseIntArray supportedPrimitives, int primitiveDelayMax, int compositionSizeMax, int pwlePrimitiveDurationMax, int pwleSizeMax, - float qFactor, @NonNull FrequencyProfile frequencyProfile) { + float qFactor, @NonNull FrequencyProfile frequencyProfile, + int maxEnvelopeEffectSize, int minEnvelopeEffectControlPointDurationMillis, + int maxEnvelopeEffectControlPointDurationMillis) { Preconditions.checkNotNull(supportedPrimitives); Preconditions.checkNotNull(frequencyProfile); mId = id; @@ -125,6 +136,11 @@ public class VibratorInfo implements Parcelable { mPwleSizeMax = pwleSizeMax; mQFactor = qFactor; mFrequencyProfile = frequencyProfile; + mMaxEnvelopeEffectSize = maxEnvelopeEffectSize; + mMinEnvelopeEffectControlPointDurationMillis = + minEnvelopeEffectControlPointDurationMillis; + mMaxEnvelopeEffectControlPointDurationMillis = + maxEnvelopeEffectControlPointDurationMillis; } @Override @@ -140,6 +156,9 @@ public class VibratorInfo implements Parcelable { dest.writeInt(mPwleSizeMax); dest.writeFloat(mQFactor); mFrequencyProfile.writeToParcel(dest, flags); + dest.writeInt(mMaxEnvelopeEffectSize); + dest.writeInt(mMinEnvelopeEffectControlPointDurationMillis); + dest.writeInt(mMaxEnvelopeEffectControlPointDurationMillis); } @Override @@ -186,7 +205,12 @@ public class VibratorInfo implements Parcelable { && Objects.equals(mSupportedEffects, that.mSupportedEffects) && Objects.equals(mSupportedBraking, that.mSupportedBraking) && Objects.equals(mQFactor, that.mQFactor) - && Objects.equals(mFrequencyProfile, that.mFrequencyProfile); + && Objects.equals(mFrequencyProfile, that.mFrequencyProfile) + && mMaxEnvelopeEffectSize == that.mMaxEnvelopeEffectSize + && mMinEnvelopeEffectControlPointDurationMillis + == that.mMinEnvelopeEffectControlPointDurationMillis + && mMaxEnvelopeEffectControlPointDurationMillis + == that.mMaxEnvelopeEffectControlPointDurationMillis; } @Override @@ -215,6 +239,11 @@ public class VibratorInfo implements Parcelable { + ", mPwleSizeMax=" + mPwleSizeMax + ", mQFactor=" + mQFactor + ", mFrequencyProfile=" + mFrequencyProfile + + ", mMaxEnvelopeEffectSize=" + mMaxEnvelopeEffectSize + + ", mMinEnvelopeEffectControlPointDurationMillis=" + + mMinEnvelopeEffectControlPointDurationMillis + + ", mMaxEnvelopeEffectControlPointDurationMillis=" + + mMaxEnvelopeEffectControlPointDurationMillis + '}'; } @@ -234,6 +263,11 @@ public class VibratorInfo implements Parcelable { pw.println("pwleSizeMax = " + mPwleSizeMax); pw.println("q-factor = " + mQFactor); pw.println("frequencyProfile = " + mFrequencyProfile); + pw.println("mMaxEnvelopeEffectSize = " + mMaxEnvelopeEffectSize); + pw.println("mMinEnvelopeEffectControlPointDurationMillis = " + + mMinEnvelopeEffectControlPointDurationMillis); + pw.println("mMaxEnvelopeEffectControlPointDurationMillis = " + + mMaxEnvelopeEffectControlPointDurationMillis); pw.decreaseIndent(); } @@ -414,6 +448,58 @@ public class VibratorInfo implements Parcelable { } /** + * Check whether the vibrator supports the creation of envelope effects. + * + * <p>See {@link Vibrator#areEnvelopeEffectsSupported()} for more information on envelope + * effects. + * + * @return True if the hardware supports creating envelope effects, false otherwise. + */ + public boolean areEnvelopeEffectsSupported() { + return hasCapability(IVibrator.CAP_COMPOSE_PWLE_EFFECTS_V2); + } + + /** + * Calculates the maximum allowed duration for an envelope effect, measured in milliseconds. + * + * @return The maximum duration (in milliseconds) that an envelope effect can have. + */ + public int getMaxEnvelopeEffectDurationMillis() { + return mMaxEnvelopeEffectSize * mMaxEnvelopeEffectControlPointDurationMillis; + } + + /** + * Gets the maximum number of control points supported for envelope effects on this device. + * + * @return The maximum number of control points that can be used to define an envelope effect. + */ + public int getMaxEnvelopeEffectSize() { + return mMaxEnvelopeEffectSize; + } + + /** + * Gets the minimum allowed duration for any individual segment within an envelope effect, + * measured in milliseconds. + * + * @return The minimum duration (in milliseconds) that a segment within an envelope effect + * can have. + */ + public int getMinEnvelopeEffectControlPointDurationMillis() { + return mMinEnvelopeEffectControlPointDurationMillis; + } + + /** + * Gets the maximum allowed duration for any individual segment within an envelope effect, + * measured in milliseconds. + * + * @return The maximum duration (in milliseconds) that a segment within an envelope effect + * can have. + */ + public int getMaxEnvelopeEffectControlPointDurationMillis() { + return mMaxEnvelopeEffectControlPointDurationMillis; + } + + /** * Check against this vibrator capabilities. * * @param capability one of IVibrator.CAP_* @@ -489,6 +575,9 @@ public class VibratorInfo implements Parcelable { if (hasCapability(IVibrator.CAP_EXTERNAL_AMPLITUDE_CONTROL)) { names.add("EXTERNAL_AMPLITUDE_CONTROL"); } + if (hasCapability(IVibrator.CAP_COMPOSE_PWLE_EFFECTS_V2)) { + names.add("CAP_COMPOSE_PWLE_EFFECTS_V2"); + } return names.toArray(new String[names.size()]); } @@ -745,6 +834,9 @@ public class VibratorInfo implements Parcelable { private float mQFactor = Float.NaN; private FrequencyProfile mFrequencyProfile = new FrequencyProfile(Float.NaN, Float.NaN, Float.NaN, null); + private int mMaxEnvelopeEffectSize; + private int mMinEnvelopeEffectControlPointDurationMillis; + private int mMaxEnvelopeEffectControlPointDurationMillis; /** A builder class for a {@link VibratorInfo}. */ public Builder(int id) { @@ -821,12 +913,46 @@ public class VibratorInfo implements Parcelable { return this; } + /** + * Configure the maximum number of control points supported for envelope effects on this + * device. + */ + @NonNull + public Builder setMaxEnvelopeEffectSize(int maxEnvelopeEffectSize) { + mMaxEnvelopeEffectSize = maxEnvelopeEffectSize; + return this; + } + + /** + * Configure the minimum supported duration for any individual segment within an + * envelope effect in milliseconds. + */ + @NonNull + public Builder setMinEnvelopeEffectControlPointDurationMillis( + int minEnvelopeEffectControlPointDuration) { + mMinEnvelopeEffectControlPointDurationMillis = minEnvelopeEffectControlPointDuration; + return this; + } + + /** + * Configure the maximum supported duration for any individual segment within an + * envelope effect in milliseconds. + */ + @NonNull + public Builder setMaxEnvelopeEffectControlPointDurationMillis( + int maxEnvelopeEffectControlPointDuration) { + mMaxEnvelopeEffectControlPointDurationMillis = maxEnvelopeEffectControlPointDuration; + return this; + } + /** Build the configured {@link VibratorInfo}. */ @NonNull public VibratorInfo build() { return new VibratorInfo(mId, mCapabilities, mSupportedEffects, mSupportedBraking, mSupportedPrimitives, mPrimitiveDelayMax, mCompositionSizeMax, - mPwlePrimitiveDurationMax, mPwleSizeMax, mQFactor, mFrequencyProfile); + mPwlePrimitiveDurationMax, mPwleSizeMax, mQFactor, mFrequencyProfile, + mMaxEnvelopeEffectSize, mMinEnvelopeEffectControlPointDurationMillis, + mMaxEnvelopeEffectControlPointDurationMillis); } /** diff --git a/core/java/android/os/vibrator/MultiVibratorInfo.java b/core/java/android/os/vibrator/MultiVibratorInfo.java index 5f3273129213..9c2b9782ffb3 100644 --- a/core/java/android/os/vibrator/MultiVibratorInfo.java +++ b/core/java/android/os/vibrator/MultiVibratorInfo.java @@ -59,7 +59,13 @@ public final class MultiVibratorInfo extends VibratorInfo { integerLimitIntersection(vibrators, VibratorInfo::getPwlePrimitiveDurationMax), integerLimitIntersection(vibrators, VibratorInfo::getPwleSizeMax), floatPropertyIntersection(vibrators, VibratorInfo::getQFactor), - mergedProfile); + mergedProfile, + integerLimitIntersection(vibrators, + VibratorInfo::getMaxEnvelopeEffectSize), + integerLimitIntersection(vibrators, + VibratorInfo::getMinEnvelopeEffectControlPointDurationMillis), + integerLimitIntersection(vibrators, + VibratorInfo::getMaxEnvelopeEffectControlPointDurationMillis)); } private static int capabilitiesIntersection(VibratorInfo[] infos, diff --git a/core/java/android/os/vibrator/VibrationConfig.java b/core/java/android/os/vibrator/VibrationConfig.java index e6e5a27bd731..bc6c5706f6fd 100644 --- a/core/java/android/os/vibrator/VibrationConfig.java +++ b/core/java/android/os/vibrator/VibrationConfig.java @@ -30,13 +30,17 @@ import static android.os.VibrationAttributes.USAGE_UNKNOWN; import android.annotation.Nullable; import android.content.res.Resources; +import android.os.SystemProperties; import android.os.VibrationAttributes; import android.os.Vibrator; import android.os.Vibrator.VibrationIntensity; import android.util.IndentingPrintWriter; +import com.android.internal.annotations.VisibleForTesting; + import java.io.PrintWriter; import java.util.Arrays; +import java.util.function.Function; /** * List of device-specific internal vibration configuration loaded from platform config.xml. @@ -50,6 +54,37 @@ import java.util.Arrays; public class VibrationConfig { /** + * The default gain to be applied between vibration scale levels. + * + * <p>Scale levels are defined as the difference between the user vibration intensity setting + * and the device default config for each usage. The intensity values are defined as one of + * Vibrator.VIBRATION_INTENSITY_*. + * + * <p>A user setting HIGH set on a device with default value LOW will cause the vibration + * intensity to be scaled up 2 levels, i.e. scale with a factor of gain^2. A system with 3 + * intensities LOW, MEDIUM and HIGH has the following 5 scale levels: + * + * <ol> + * <li>VERY_HIGH: user(HIGH) - device(LOW) + * <li>HIGH: user(HIGH) - device(MEDIUM) / user(MEDIUM) - device(LOW) + * <li>NONE: user == device + * <li>LOW: user(MEDIUM) - device(HIGH) / user(LOW) - device(MEDIUM) + * <li>VERY_LOW: user(LOW) - device(HIGH) + * </ol> + * + * <p>A device will only ever apply 3 out of these 5 levels based on the default intensity + * config set for each usage (e.g. config_default[Alarm|Ring|Notification]VibrationIntensity). + * + * <p>This value must be greater than 1. The {@link #DEFAULT_SCALE_LEVEL_GAIN} will be used if + * this property is undefined or invalid. + * + * @hide + */ + @VisibleForTesting + static final String SCALE_LEVEL_GAIN_SYSTEM_PROPERTY = + "vendor.vibrator.scale.level.gain"; + + /** * Hardcoded default scale level gain to be applied between each scale level to define their * scale factor value. * @@ -69,7 +104,7 @@ public class VibrationConfig { private final int mRampDownDurationMs; private final int mRequestVibrationParamsTimeoutMs; private final int[] mRequestVibrationParamsForUsages; - + private final float mDefaultVibrationScaleLevelGain; private final boolean mIgnoreVibrationsOnWirelessCharger; @VibrationIntensity @@ -89,8 +124,18 @@ public class VibrationConfig { /** @hide */ public VibrationConfig(@Nullable Resources resources) { - mDefaultVibrationAmplitude = resources.getInteger( - com.android.internal.R.integer.config_defaultVibrationAmplitude); + this(resources, SystemProperties::get); + } + + /** @hide */ + @VisibleForTesting + public VibrationConfig(@Nullable Resources resources, + Function<String, String> systemPropertiesGetter) { + mDefaultVibrationAmplitude = loadInteger(resources, + com.android.internal.R.integer.config_defaultVibrationAmplitude, + DEFAULT_AMPLITUDE); + mDefaultVibrationScaleLevelGain = loadFloat(systemPropertiesGetter, + SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, DEFAULT_SCALE_LEVEL_GAIN); mHapticChannelMaxVibrationAmplitude = loadFloat(resources, com.android.internal.R.dimen.config_hapticChannelMaxVibrationAmplitude); mRampDownDurationMs = loadInteger(resources, @@ -135,6 +180,15 @@ public class VibrationConfig { return res != null ? res.getFloat(resId) : 0f; } + private static float loadFloat(Function<String, String> systemPropertiesGetter, + String propertyKey, float defaultValue) { + try { + return Float.parseFloat(systemPropertiesGetter.apply(propertyKey)); + } catch (Exception e) { + return defaultValue; + } + } + private static int loadInteger(@Nullable Resources res, int resId, int defaultValue) { return res != null ? res.getInteger(resId) : defaultValue; } @@ -176,8 +230,10 @@ public class VibrationConfig { * for each level. */ public float getDefaultVibrationScaleLevelGain() { - // TODO(b/356407380): add device config for this - return DEFAULT_SCALE_LEVEL_GAIN; + if (mDefaultVibrationScaleLevelGain <= 1) { + return DEFAULT_SCALE_LEVEL_GAIN; + } + return mDefaultVibrationScaleLevelGain; } /** @@ -270,6 +326,7 @@ public class VibrationConfig { return "VibrationConfig{" + "mIgnoreVibrationsOnWirelessCharger=" + mIgnoreVibrationsOnWirelessCharger + ", mDefaultVibrationAmplitude=" + mDefaultVibrationAmplitude + + ", mDefaultVibrationScaleLevelGain=" + mDefaultVibrationScaleLevelGain + ", mHapticChannelMaxVibrationAmplitude=" + mHapticChannelMaxVibrationAmplitude + ", mRampStepDurationMs=" + mRampStepDurationMs + ", mRampDownDurationMs=" + mRampDownDurationMs @@ -296,6 +353,7 @@ public class VibrationConfig { pw.increaseIndent(); pw.println("ignoreVibrationsOnWirelessCharger = " + mIgnoreVibrationsOnWirelessCharger); pw.println("defaultVibrationAmplitude = " + mDefaultVibrationAmplitude); + pw.println("defaultVibrationScaleLevelGain = " + mDefaultVibrationScaleLevelGain); pw.println("hapticChannelMaxAmplitude = " + mHapticChannelMaxVibrationAmplitude); pw.println("rampStepDurationMs = " + mRampStepDurationMs); pw.println("rampDownDurationMs = " + mRampDownDurationMs); diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java index 815fd1c49a38..dd950e83dd52 100644 --- a/core/java/android/view/PointerIcon.java +++ b/core/java/android/view/PointerIcon.java @@ -540,8 +540,6 @@ public final class PointerIcon implements Parcelable { // Assumes they have the exact duration. mDurationPerFrame = animationDrawable.getDuration(0); mBitmapFrames = new Bitmap[frames - 1]; - final int width = drawable.getIntrinsicWidth(); - final int height = drawable.getIntrinsicHeight(); final boolean isVectorAnimation = drawable instanceof VectorDrawable; mDrawNativeDropShadow = isVectorAnimation; for (int i = 1; i < frames; ++i) { @@ -556,9 +554,6 @@ public final class PointerIcon implements Parcelable { + "is a different type from the others. All frames should be the " + "same type."); } - // TODO(b/361232935): Check when bitmap size of the ith frame is different - // drawableFrame.getIntrinsicWidth() != width || - // drawableFrame.getIntrinsicHeight() != height if (isVectorAnimation) { drawableFrame = getBitmapDrawableFromVectorDrawable(resources, (VectorDrawable) drawableFrame, pointerScale); diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 4fe11e6ce274..5b39f62db261 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -6183,7 +6183,8 @@ public interface WindowManager extends ViewManager { } /** - * Returns the size of the provided insets. + * Returns the size of the provided insets. May be {@code null} if the provided insets have + * the same size as the window frame. */ public @Nullable Insets getInsetsSize() { return mInsets; diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index a395c1a05744..89ea85200cd6 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -153,6 +153,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.Predicate; /** @@ -712,6 +713,24 @@ public class RemoteViews implements Parcelable, Filter { } public abstract void writeToParcel(Parcel dest, int flags); + + /** + * Override to return true if this Action can be serialized to Protobuf, and implement + * writeToProto / createFromProto. + * + * If this returns false, then the action will be omitted from RemoteViews previews created + * with createPreviewFromProto / writePreviewToProto. + * + * Because Parcelables should not be serialized to disk, any action that contains an Intent, + * PendingIntent, or Bundle should return false here. + */ + public boolean canWriteToProto() { + return false; + } + + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + throw new UnsupportedOperationException(); + } } /** @@ -1506,6 +1525,7 @@ public class RemoteViews implements Parcelable, Filter { switch (in.getFieldNumber()) { case (int) RemoteViewsProto.RemoteCollectionCache.ENTRIES: final LongSparseArray<Object> entry = new LongSparseArray<>(); + final long entryToken = in.start( RemoteViewsProto.RemoteCollectionCache.ENTRIES); while (in.nextField() != NO_MORE_FIELDS) { @@ -1533,10 +1553,12 @@ public class RemoteViews implements Parcelable, Filter { } } in.end(entryToken); + checkContainsKeys(entry, new long[]{RemoteViewsProto.RemoteCollectionCache.Entry.ID, RemoteViewsProto.RemoteCollectionCache.Entry.URI, RemoteViewsProto.RemoteCollectionCache.Entry.ITEMS}); + entries.add(entry); break; default: @@ -2247,6 +2269,62 @@ public class RemoteViews implements Parcelable, Filter { public int getActionTag() { return BITMAP_REFLECTION_ACTION_TAG; } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start(RemoteViewsProto.Action.BITMAP_REFLECTION_ACTION); + out.write(RemoteViewsProto.BitmapReflectionAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.write(RemoteViewsProto.BitmapReflectionAction.METHOD_NAME, mMethodName); + out.write(RemoteViewsProto.BitmapReflectionAction.BITMAP_ID, mBitmapId); + out.end(token); + } + } + + private PendingResources<Action> createFromBitmapReflectionActionFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start(RemoteViewsProto.Action.BITMAP_REFLECTION_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.BitmapReflectionAction.VIEW_ID: + values.put(RemoteViewsProto.BitmapReflectionAction.VIEW_ID, + in.readString(RemoteViewsProto.BitmapReflectionAction.VIEW_ID)); + break; + case (int) RemoteViewsProto.BitmapReflectionAction.METHOD_NAME: + values.put(RemoteViewsProto.BitmapReflectionAction.METHOD_NAME, + in.readString(RemoteViewsProto.BitmapReflectionAction.METHOD_NAME)); + break; + case (int) RemoteViewsProto.BitmapReflectionAction.BITMAP_ID: + values.put(RemoteViewsProto.BitmapReflectionAction.BITMAP_ID, + in.readInt(RemoteViewsProto.BitmapReflectionAction.BITMAP_ID)); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, new long[]{RemoteViewsProto.BitmapReflectionAction.VIEW_ID, + RemoteViewsProto.BitmapReflectionAction.METHOD_NAME}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.BitmapReflectionAction.VIEW_ID); + return new BitmapReflectionAction(viewId, + (String) values.get(RemoteViewsProto.BitmapReflectionAction.METHOD_NAME), + rootData.mBitmapCache.getBitmapForId( + (int) values.get(RemoteViewsProto.BitmapReflectionAction.BITMAP_ID, + 0))); + }; + } /** @@ -2560,6 +2638,268 @@ public class RemoteViews implements Parcelable, Filter { public int getActionTag() { return REFLECTION_ACTION_TAG; } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start(RemoteViewsProto.Action.REFLECTION_ACTION); + out.write(RemoteViewsProto.ReflectionAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.write(RemoteViewsProto.ReflectionAction.METHOD_NAME, mMethodName); + out.write(RemoteViewsProto.ReflectionAction.PARAMETER_TYPE, mType); + if (this.mValue != null) { + switch (this.mType) { + case BOOLEAN: + // ProtoOutputStream will omit this write if the value is false + out.write(RemoteViewsProto.ReflectionAction.BOOLEAN_VALUE, + (boolean) this.mValue); + break; + case BYTE: + out.write(RemoteViewsProto.ReflectionAction.BYTE_VALUE, + new byte[]{(byte) this.mValue}); + break; + case SHORT: + out.write(RemoteViewsProto.ReflectionAction.SHORT_VALUE, + (short) this.mValue); + break; + case INT: + out.write(RemoteViewsProto.ReflectionAction.INT_VALUE, (int) this.mValue); + break; + case LONG: + out.write(RemoteViewsProto.ReflectionAction.LONG_VALUE, (long) this.mValue); + break; + case FLOAT: + out.write(RemoteViewsProto.ReflectionAction.FLOAT_VALUE, + (float) this.mValue); + break; + case DOUBLE: + out.write(RemoteViewsProto.ReflectionAction.DOUBLE_VALUE, + (double) this.mValue); + break; + case CHAR: + out.write(RemoteViewsProto.ReflectionAction.CHAR_VALUE, + (Character) this.mValue); + break; + case STRING: + out.write(RemoteViewsProto.ReflectionAction.STRING_VALUE, + (String) this.mValue); + break; + case CHAR_SEQUENCE: + long csToken = out.start( + RemoteViewsProto.ReflectionAction.CHAR_SEQUENCE_VALUE); + RemoteViewsSerializers.writeCharSequenceToProto(out, + (CharSequence) this.mValue); + out.end(csToken); + break; + case URI: + out.write(RemoteViewsProto.ReflectionAction.URI_VALUE, + ((Uri) this.mValue).toString()); + break; + case BITMAP: + final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + ((Bitmap) this.mValue).compress(Bitmap.CompressFormat.WEBP_LOSSLESS, 100, + bytes); + out.write(RemoteViewsProto.ReflectionAction.BITMAP_VALUE, + bytes.toByteArray()); + break; + case BLEND_MODE: + out.write(RemoteViewsProto.ReflectionAction.BLEND_MODE_VALUE, + BlendMode.toValue((BlendMode) this.mValue)); + break; + case COLOR_STATE_LIST: + writeColorStateListToProto(out, (ColorStateList) this.mValue, + RemoteViewsProto.ReflectionAction.COLOR_STATE_LIST_VALUE); + break; + case ICON: + writeIconToProto(out, appResources, (Icon) this.mValue, + RemoteViewsProto.ReflectionAction.ICON_VALUE); + break; + case BUNDLE: + case INTENT: + default: + break; + } + } + out.end(token); + } + + public static PendingResources<Action> createFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start(RemoteViewsProto.Action.REFLECTION_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.ReflectionAction.VIEW_ID: + values.put(RemoteViewsProto.ReflectionAction.VIEW_ID, + in.readString(RemoteViewsProto.ReflectionAction.VIEW_ID)); + break; + case (int) RemoteViewsProto.ReflectionAction.METHOD_NAME: + values.put(RemoteViewsProto.ReflectionAction.METHOD_NAME, + in.readString(RemoteViewsProto.ReflectionAction.METHOD_NAME)); + break; + case (int) RemoteViewsProto.ReflectionAction.PARAMETER_TYPE: + values.put(RemoteViewsProto.ReflectionAction.PARAMETER_TYPE, + in.readInt(RemoteViewsProto.ReflectionAction.PARAMETER_TYPE)); + break; + case (int) RemoteViewsProto.ReflectionAction.BOOLEAN_VALUE: + values.put(RemoteViewsProto.ReflectionAction.BOOLEAN_VALUE, + in.readBoolean(RemoteViewsProto.ReflectionAction.BOOLEAN_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.BYTE_VALUE: + values.put(RemoteViewsProto.ReflectionAction.BYTE_VALUE, + in.readBytes(RemoteViewsProto.ReflectionAction.BYTE_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.SHORT_VALUE: + values.put(RemoteViewsProto.ReflectionAction.SHORT_VALUE, + (short) in.readInt(RemoteViewsProto.ReflectionAction.SHORT_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.INT_VALUE: + values.put(RemoteViewsProto.ReflectionAction.INT_VALUE, + in.readInt(RemoteViewsProto.ReflectionAction.INT_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.LONG_VALUE: + values.put(RemoteViewsProto.ReflectionAction.LONG_VALUE, + in.readLong(RemoteViewsProto.ReflectionAction.LONG_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.FLOAT_VALUE: + values.put(RemoteViewsProto.ReflectionAction.FLOAT_VALUE, + in.readFloat(RemoteViewsProto.ReflectionAction.FLOAT_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.DOUBLE_VALUE: + values.put(RemoteViewsProto.ReflectionAction.DOUBLE_VALUE, + in.readDouble(RemoteViewsProto.ReflectionAction.DOUBLE_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.CHAR_VALUE: + values.put(RemoteViewsProto.ReflectionAction.CHAR_VALUE, + (char) in.readInt(RemoteViewsProto.ReflectionAction.CHAR_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.STRING_VALUE: + values.put(RemoteViewsProto.ReflectionAction.STRING_VALUE, + in.readString(RemoteViewsProto.ReflectionAction.STRING_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.CHAR_SEQUENCE_VALUE: + values.put(RemoteViewsProto.ReflectionAction.CHAR_SEQUENCE_VALUE, + createCharSequenceFromProto(in, + RemoteViewsProto.ReflectionAction.CHAR_SEQUENCE_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.URI_VALUE: + values.put(RemoteViewsProto.ReflectionAction.URI_VALUE, + in.readString(RemoteViewsProto.ReflectionAction.URI_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.BITMAP_VALUE: + byte[] bitmapData = in.readBytes( + RemoteViewsProto.ReflectionAction.BITMAP_VALUE); + values.put(RemoteViewsProto.ReflectionAction.BITMAP_VALUE, + BitmapFactory.decodeByteArray(bitmapData, 0, bitmapData.length)); + break; + case (int) RemoteViewsProto.ReflectionAction.COLOR_STATE_LIST_VALUE: + values.put(RemoteViewsProto.ReflectionAction.COLOR_STATE_LIST_VALUE, + createColorStateListFromProto(in, + RemoteViewsProto.ReflectionAction.COLOR_STATE_LIST_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.ICON_VALUE: + values.put(RemoteViewsProto.ReflectionAction.ICON_VALUE, + createIconFromProto(in, + RemoteViewsProto.ReflectionAction.ICON_VALUE)); + break; + case (int) RemoteViewsProto.ReflectionAction.BLEND_MODE_VALUE: + values.put(RemoteViewsProto.ReflectionAction.BLEND_MODE_VALUE, + BlendMode.fromValue(in.readInt( + RemoteViewsProto.ReflectionAction.BLEND_MODE_VALUE))); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, new long[]{RemoteViewsProto.ReflectionAction.VIEW_ID, + RemoteViewsProto.ReflectionAction.METHOD_NAME, + RemoteViewsProto.ReflectionAction.PARAMETER_TYPE}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.ReflectionAction.VIEW_ID); + Object value = null; + int parameterType = (int) values.get( + RemoteViewsProto.ReflectionAction.PARAMETER_TYPE); + switch (parameterType) { + case BOOLEAN: + value = (boolean) values.get( + RemoteViewsProto.ReflectionAction.BOOLEAN_VALUE, false); + break; + case BYTE: + byte[] bytes = (byte[]) values.get( + RemoteViewsProto.ReflectionAction.BYTE_VALUE); + if (bytes != null && bytes.length > 0) { + value = bytes[0]; + } + break; + case SHORT: + value = (short) values.get(RemoteViewsProto.ReflectionAction.SHORT_VALUE, + 0); + break; + case INT: + value = (int) values.get(RemoteViewsProto.ReflectionAction.INT_VALUE, 0); + break; + case LONG: + value = (long) values.get(RemoteViewsProto.ReflectionAction.LONG_VALUE, 0); + break; + case FLOAT: + value = (float) values.get(RemoteViewsProto.ReflectionAction.FLOAT_VALUE, + 0); + break; + case DOUBLE: + value = (double) values.get(RemoteViewsProto.ReflectionAction.DOUBLE_VALUE, + 0); + break; + case CHAR: + value = (char) values.get(RemoteViewsProto.ReflectionAction.CHAR_VALUE, 0); + break; + case STRING: + value = (String) values.get(RemoteViewsProto.ReflectionAction.STRING_VALUE); + break; + case CHAR_SEQUENCE: + value = (CharSequence) values.get( + RemoteViewsProto.ReflectionAction.CHAR_SEQUENCE_VALUE); + break; + case URI: + value = Uri.parse( + (String) values.get(RemoteViewsProto.ReflectionAction.URI_VALUE)); + break; + case BITMAP: + value = (Bitmap) values.get(RemoteViewsProto.ReflectionAction.BITMAP_VALUE); + break; + case BLEND_MODE: + value = (BlendMode) values.get( + RemoteViewsProto.ReflectionAction.BLEND_MODE_VALUE); + break; + case COLOR_STATE_LIST: + value = (ColorStateList) values.get( + RemoteViewsProto.ReflectionAction.COLOR_STATE_LIST_VALUE); + break; + case ICON: + value = ((PendingResources<Icon>) values.get( + RemoteViewsProto.ReflectionAction.ICON_VALUE)).create(context, + resources, rootData, depth); + break; + case BUNDLE: + case INTENT: + default: + // omit the action for unsupported parameter types + return null; + } + return new ReflectionAction(viewId, + (String) values.get(RemoteViewsProto.ReflectionAction.METHOD_NAME), + parameterType, value); + }; + } } private static final class ResourceReflectionAction extends BaseReflectionAction { @@ -2740,7 +3080,87 @@ public class RemoteViews implements Parcelable, Filter { public int getActionTag() { return ATTRIBUTE_REFLECTION_ACTION_TAG; } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start(RemoteViewsProto.Action.ATTRIBUTE_REFLECTION_ACTION); + out.write(RemoteViewsProto.AttributeReflectionAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.write(RemoteViewsProto.AttributeReflectionAction.METHOD_NAME, mMethodName); + out.write(RemoteViewsProto.AttributeReflectionAction.PARAMETER_TYPE, mType); + out.write(RemoteViewsProto.AttributeReflectionAction.RESOURCE_TYPE, mResourceType); + if (mAttrId != 0) { + out.write(RemoteViewsProto.AttributeReflectionAction.ATTRIBUTE_ID, + appResources.getResourceName(mAttrId)); + } + out.end(token); + } + + public static PendingResources<Action> createFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start(RemoteViewsProto.Action.ATTRIBUTE_REFLECTION_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.AttributeReflectionAction.VIEW_ID: { + values.put(RemoteViewsProto.AttributeReflectionAction.VIEW_ID, + in.readString(RemoteViewsProto.AttributeReflectionAction.VIEW_ID)); + break; + } + case (int) RemoteViewsProto.AttributeReflectionAction.METHOD_NAME: + values.put(RemoteViewsProto.AttributeReflectionAction.METHOD_NAME, + in.readString( + RemoteViewsProto.AttributeReflectionAction.METHOD_NAME)); + break; + case (int) RemoteViewsProto.AttributeReflectionAction.ATTRIBUTE_ID: + values.put(RemoteViewsProto.AttributeReflectionAction.ATTRIBUTE_ID, + in.readString( + RemoteViewsProto.AttributeReflectionAction.ATTRIBUTE_ID)); + break; + case (int) RemoteViewsProto.AttributeReflectionAction.PARAMETER_TYPE: + values.put(RemoteViewsProto.AttributeReflectionAction.PARAMETER_TYPE, + in.readInt( + RemoteViewsProto.AttributeReflectionAction.PARAMETER_TYPE)); + break; + case (int) RemoteViewsProto.AttributeReflectionAction.RESOURCE_TYPE: + values.put(RemoteViewsProto.AttributeReflectionAction.RESOURCE_TYPE, + in.readInt( + RemoteViewsProto.AttributeReflectionAction.RESOURCE_TYPE)); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, new long[]{RemoteViewsProto.AttributeReflectionAction.VIEW_ID, + RemoteViewsProto.AttributeReflectionAction.METHOD_NAME, + RemoteViewsProto.AttributeReflectionAction.PARAMETER_TYPE, + RemoteViewsProto.AttributeReflectionAction.RESOURCE_TYPE}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.AttributeReflectionAction.VIEW_ID); + int attributeId = (values.indexOfKey( + RemoteViewsProto.AttributeReflectionAction.ATTRIBUTE_ID) >= 0) + ? getAsIdentifier(resources, values, + RemoteViewsProto.AttributeReflectionAction.ATTRIBUTE_ID) : 0; + return new AttributeReflectionAction(viewId, + (String) values.get(RemoteViewsProto.AttributeReflectionAction.METHOD_NAME), + (int) values.get(RemoteViewsProto.AttributeReflectionAction.PARAMETER_TYPE), + (int) values.get(RemoteViewsProto.AttributeReflectionAction.RESOURCE_TYPE), + attributeId); + }; + } } + private static final class ComplexUnitDimensionReflectionAction extends BaseReflectionAction { private final float mValue; @ComplexDimensionUnit @@ -2794,6 +3214,101 @@ public class RemoteViews implements Parcelable, Filter { public int getActionTag() { return COMPLEX_UNIT_DIMENSION_REFLECTION_ACTION_TAG; } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start( + RemoteViewsProto.Action.COMPLEX_UNIT_DIMENSION_REFLECTION_ACTION); + out.write(RemoteViewsProto.ComplexUnitDimensionReflectionAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.write(RemoteViewsProto.ComplexUnitDimensionReflectionAction.METHOD_NAME, + mMethodName); + out.write(RemoteViewsProto.ComplexUnitDimensionReflectionAction.PARAMETER_TYPE, mType); + out.write(RemoteViewsProto.ComplexUnitDimensionReflectionAction.DIMENSION_VALUE, + mValue); + out.write(RemoteViewsProto.ComplexUnitDimensionReflectionAction.UNIT, mUnit); + out.end(token); + } + + public static PendingResources<Action> createFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start( + RemoteViewsProto.Action.COMPLEX_UNIT_DIMENSION_REFLECTION_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.ComplexUnitDimensionReflectionAction.VIEW_ID: + values.put(RemoteViewsProto.ComplexUnitDimensionReflectionAction.VIEW_ID, + in.readString( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.VIEW_ID)); + break; + case (int) RemoteViewsProto.ComplexUnitDimensionReflectionAction.METHOD_NAME: + values.put( + RemoteViewsProto.ComplexUnitDimensionReflectionAction.METHOD_NAME, + in.readString( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.METHOD_NAME)); + break; + case (int) RemoteViewsProto.ComplexUnitDimensionReflectionAction.PARAMETER_TYPE: + values.put( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.PARAMETER_TYPE, + in.readInt( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction + .PARAMETER_TYPE)); + break; + case (int) RemoteViewsProto + .ComplexUnitDimensionReflectionAction.DIMENSION_VALUE: + values.put( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.DIMENSION_VALUE, + in.readFloat( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction + .DIMENSION_VALUE)); + break; + case (int) RemoteViewsProto.ComplexUnitDimensionReflectionAction.UNIT: + values.put(RemoteViewsProto.ComplexUnitDimensionReflectionAction.UNIT, + in.readInt( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.UNIT)); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, + new long[]{RemoteViewsProto.ComplexUnitDimensionReflectionAction.VIEW_ID, + RemoteViewsProto.ComplexUnitDimensionReflectionAction.METHOD_NAME, + RemoteViewsProto.ComplexUnitDimensionReflectionAction.PARAMETER_TYPE}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.ComplexUnitDimensionReflectionAction.VIEW_ID); + return new ComplexUnitDimensionReflectionAction(viewId, (String) values.get( + RemoteViewsProto.ComplexUnitDimensionReflectionAction.METHOD_NAME), + (int) values.get( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.PARAMETER_TYPE), + (float) values.get( + RemoteViewsProto + .ComplexUnitDimensionReflectionAction.DIMENSION_VALUE, + 0), + (int) values.get(RemoteViewsProto.ComplexUnitDimensionReflectionAction.UNIT, + 0)); + }; + } } private static final class NightModeReflectionAction extends BaseReflectionAction { @@ -2868,6 +3383,145 @@ public class RemoteViews implements Parcelable, Filter { visitIconUri((Icon) mLightValue, visitor); } } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start(RemoteViewsProto.Action.NIGHT_MODE_REFLECTION_ACTION); + out.write(RemoteViewsProto.NightModeReflectionAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.write(RemoteViewsProto.NightModeReflectionAction.METHOD_NAME, mMethodName); + out.write(RemoteViewsProto.NightModeReflectionAction.PARAMETER_TYPE, mType); + switch (this.mType) { + case ICON: + writeIconToProto(out, appResources, (Icon) mLightValue, + RemoteViewsProto.NightModeReflectionAction.LIGHT_ICON); + writeIconToProto(out, appResources, (Icon) mDarkValue, + RemoteViewsProto.NightModeReflectionAction.DARK_ICON); + break; + case COLOR_STATE_LIST: + writeColorStateListToProto(out, (ColorStateList) mLightValue, + RemoteViewsProto.NightModeReflectionAction.LIGHT_COLOR_STATE_LIST); + writeColorStateListToProto(out, (ColorStateList) mDarkValue, + RemoteViewsProto.NightModeReflectionAction.DARK_COLOR_STATE_LIST); + break; + case INT: + out.write(RemoteViewsProto.NightModeReflectionAction.LIGHT_INT, + (int) mLightValue); + out.write(RemoteViewsProto.NightModeReflectionAction.DARK_INT, + (int) mDarkValue); + break; + } + out.end(token); + } + + public static PendingResources<Action> createFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start(RemoteViewsProto.Action.NIGHT_MODE_REFLECTION_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.NightModeReflectionAction.VIEW_ID: + values.put(RemoteViewsProto.NightModeReflectionAction.VIEW_ID, + in.readString(RemoteViewsProto.NightModeReflectionAction.VIEW_ID)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.METHOD_NAME: + values.put(RemoteViewsProto.NightModeReflectionAction.METHOD_NAME, + in.readString( + RemoteViewsProto.NightModeReflectionAction.METHOD_NAME)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.PARAMETER_TYPE: + values.put(RemoteViewsProto.NightModeReflectionAction.PARAMETER_TYPE, + in.readInt( + RemoteViewsProto.NightModeReflectionAction.PARAMETER_TYPE)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.LIGHT_ICON: + values.put(RemoteViewsProto.NightModeReflectionAction.LIGHT_ICON, + createIconFromProto(in, + RemoteViewsProto.NightModeReflectionAction.LIGHT_ICON)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.LIGHT_COLOR_STATE_LIST: + values.put( + RemoteViewsProto.NightModeReflectionAction.LIGHT_COLOR_STATE_LIST, + createColorStateListFromProto(in, + RemoteViewsProto + .NightModeReflectionAction.LIGHT_COLOR_STATE_LIST)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.LIGHT_INT: + values.put(RemoteViewsProto.NightModeReflectionAction.LIGHT_INT, + in.readInt(RemoteViewsProto.NightModeReflectionAction.LIGHT_INT)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.DARK_ICON: + values.put(RemoteViewsProto.NightModeReflectionAction.DARK_ICON, + createIconFromProto(in, + RemoteViewsProto.NightModeReflectionAction.DARK_ICON)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.DARK_COLOR_STATE_LIST: + values.put(RemoteViewsProto.NightModeReflectionAction.DARK_COLOR_STATE_LIST, + createColorStateListFromProto(in, + RemoteViewsProto + .NightModeReflectionAction.DARK_COLOR_STATE_LIST)); + break; + case (int) RemoteViewsProto.NightModeReflectionAction.DARK_INT: + values.put(RemoteViewsProto.NightModeReflectionAction.DARK_INT, + in.readInt(RemoteViewsProto.NightModeReflectionAction.DARK_INT)); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, new long[]{RemoteViewsProto.NightModeReflectionAction.VIEW_ID, + RemoteViewsProto.NightModeReflectionAction.METHOD_NAME, + RemoteViewsProto.NightModeReflectionAction.PARAMETER_TYPE}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.NightModeReflectionAction.VIEW_ID); + String methodName = (String) values.get( + RemoteViewsProto.NightModeReflectionAction.METHOD_NAME); + int parameterType = (int) values.get( + RemoteViewsProto.NightModeReflectionAction.PARAMETER_TYPE); + switch (parameterType) { + case ICON: + PendingResources<Icon> pendingLightIcon = + (PendingResources<Icon>) values.get( + RemoteViewsProto.NightModeReflectionAction.LIGHT_ICON); + PendingResources<Icon> pendingDarkIcon = + (PendingResources<Icon>) values.get( + RemoteViewsProto.NightModeReflectionAction.DARK_ICON); + Icon lightIcon = pendingLightIcon != null ? pendingLightIcon.create(context, + resources, rootData, depth) : null; + Icon darkIcon = pendingDarkIcon != null ? pendingDarkIcon.create(context, + resources, rootData, depth) : null; + return new NightModeReflectionAction(viewId, methodName, parameterType, + lightIcon, darkIcon); + case COLOR_STATE_LIST: + return new NightModeReflectionAction(viewId, methodName, parameterType, + (ColorStateList) values.get( + RemoteViewsProto + .NightModeReflectionAction.LIGHT_COLOR_STATE_LIST), + (ColorStateList) values.get( + RemoteViewsProto + .NightModeReflectionAction.DARK_COLOR_STATE_LIST)); + case INT: + return new NightModeReflectionAction(viewId, methodName, parameterType, + (int) values.get( + RemoteViewsProto.NightModeReflectionAction.LIGHT_INT, 0), + (int) values.get( + RemoteViewsProto.NightModeReflectionAction.DARK_INT, 0)); + default: + throw new RuntimeException("Unknown parameterType: " + parameterType); + } + }; + } } /** @@ -3353,6 +4007,46 @@ public class RemoteViews implements Parcelable, Filter { public int mergeBehavior() { return MERGE_APPEND; } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start(RemoteViewsProto.Action.REMOVE_FROM_PARENT_ACTION); + out.write(RemoteViewsProto.RemoveFromParentAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.end(token); + } + + public static PendingResources<Action> createFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start(RemoteViewsProto.Action.REMOVE_FROM_PARENT_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.RemoveFromParentAction.VIEW_ID: + values.put(RemoteViewsProto.RemoveFromParentAction.VIEW_ID, + in.readString(RemoteViewsProto.RemoveFromParentAction.VIEW_ID)); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, new long[]{RemoteViewsProto.RemoveFromParentAction.VIEW_ID}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.RemoveFromParentAction.VIEW_ID); + return new RemoveFromParentAction(viewId); + }; + } } /** @@ -3768,6 +4462,64 @@ public class RemoteViews implements Parcelable, Filter { public String getUniqueKey() { return super.getUniqueKey() + mProperty; } + + @Override + public boolean canWriteToProto() { + return true; + } + + @Override + public void writeToProto(ProtoOutputStream out, Context context, Resources appResources) { + final long token = out.start(RemoteViewsProto.Action.LAYOUT_PARAM_ACTION); + out.write(RemoteViewsProto.LayoutParamAction.VIEW_ID, + appResources.getResourceName(mViewId)); + out.write(RemoteViewsProto.LayoutParamAction.PROPERTY, mProperty); + out.write(RemoteViewsProto.LayoutParamAction.LAYOUT_VALUE, mValue); + out.write(RemoteViewsProto.LayoutParamAction.VALUE_TYPE, mValueType); + out.end(token); + } + + public static PendingResources<Action> createFromProto(ProtoInputStream in) + throws Exception { + final LongSparseArray<Object> values = new LongSparseArray<>(); + + final long token = in.start(RemoteViewsProto.Action.LAYOUT_PARAM_ACTION); + while (in.nextField() != NO_MORE_FIELDS) { + switch (in.getFieldNumber()) { + case (int) RemoteViewsProto.LayoutParamAction.VIEW_ID: + values.put(RemoteViewsProto.LayoutParamAction.VIEW_ID, + in.readString(RemoteViewsProto.LayoutParamAction.VIEW_ID)); + break; + case (int) RemoteViewsProto.LayoutParamAction.PROPERTY: + values.put(RemoteViewsProto.LayoutParamAction.PROPERTY, + in.readInt(RemoteViewsProto.LayoutParamAction.PROPERTY)); + break; + case (int) RemoteViewsProto.LayoutParamAction.LAYOUT_VALUE: + values.put(RemoteViewsProto.LayoutParamAction.LAYOUT_VALUE, + in.readInt(RemoteViewsProto.LayoutParamAction.LAYOUT_VALUE)); + break; + case (int) RemoteViewsProto.LayoutParamAction.VALUE_TYPE: + values.put(RemoteViewsProto.LayoutParamAction.VALUE_TYPE, + in.readInt(RemoteViewsProto.LayoutParamAction.VALUE_TYPE)); + break; + default: + Log.w(LOG_TAG, "Unhandled field while reading RemoteViews proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + in.end(token); + + checkContainsKeys(values, new long[]{RemoteViewsProto.LayoutParamAction.VIEW_ID}); + + return (context, resources, rootData, depth) -> { + int viewId = getAsIdentifier(resources, values, + RemoteViewsProto.LayoutParamAction.VIEW_ID); + return new LayoutParamAction(viewId, + (int) values.get(RemoteViewsProto.LayoutParamAction.PROPERTY, 0), + (int) values.get(RemoteViewsProto.LayoutParamAction.LAYOUT_VALUE, 0), + (int) values.get(RemoteViewsProto.LayoutParamAction.VALUE_TYPE, 0)); + }; + } } /** @@ -7668,6 +8420,7 @@ public class RemoteViews implements Parcelable, Filter { values.put(RemoteViewsProto.RemoteCollectionItems.IDS, new ArrayList<Long>()); values.put(RemoteViewsProto.RemoteCollectionItems.VIEWS, new ArrayList<PendingResources<RemoteViews>>()); + while (in.nextField() != NO_MORE_FIELDS) { switch (in.getFieldNumber()) { case (int) RemoteViewsProto.RemoteCollectionItems.IDS: @@ -7704,6 +8457,7 @@ public class RemoteViews implements Parcelable, Filter { checkContainsKeys(values, new long[]{RemoteViewsProto.RemoteCollectionItems.VIEW_TYPE_COUNT}); + return (context, resources, rootData, depth) -> { List<Long> idList = (List<Long>) values.get( RemoteViewsProto.RemoteCollectionItems.IDS); @@ -8149,6 +8903,16 @@ public class RemoteViews implements Parcelable, Filter { out.write(SizeFProto.HEIGHT, mIdealSize.getHeight()); out.end(token); } + + if (mActions != null) { + for (Action action : mActions) { + if (action.canWriteToProto()) { + final long token = out.start(RemoteViewsProto.ACTIONS); + action.writeToProto(out, context, appResources); + out.end(token); + } + } + } } else if (hasSizedRemoteViews()) { out.write(RemoteViewsProto.MODE, MODE_HAS_SIZED_REMOTEVIEWS); for (RemoteViews view : mSizedRemoteViews) { @@ -8192,6 +8956,7 @@ public class RemoteViews implements Parcelable, Filter { String mLayoutResName = null; String mLightBackgroundResName = null; String mViewResName = null; + final List<PendingResources<Action>> mActions = new ArrayList<>(); final List<PendingResources<RemoteViews>> mSizedRemoteViews = new ArrayList<>(); PendingResources<RemoteViews> mLandscapeViews = null; PendingResources<RemoteViews> mPortraitViews = null; @@ -8230,6 +8995,14 @@ public class RemoteViews implements Parcelable, Filter { case (int) RemoteViewsProto.PROVIDER_INSTANCE_ID: ref.mProviderInstanceId = in.readInt(RemoteViewsProto.PROVIDER_INSTANCE_ID); break; + case (int) RemoteViewsProto.ACTIONS: + final long actionsToken = in.start(RemoteViewsProto.ACTIONS); + final PendingResources<Action> action = createActionFromProto(ref.mRv, in); + if (action != null) { + ref.mActions.add(action); + } + in.end(actionsToken); + break; case (int) RemoteViewsProto.SIZED_REMOTEVIEWS: final long sizedToken = in.start(RemoteViewsProto.SIZED_REMOTEVIEWS); ref.mSizedRemoteViews.add(createFromProto(in)); @@ -8328,19 +9101,27 @@ public class RemoteViews implements Parcelable, Filter { } } if (ref.mPopulateRemoteCollectionCache != null) { - ref.mPopulateRemoteCollectionCache.create(context, resources, rootData, depth); + ref.mPopulateRemoteCollectionCache.create(appContext, appResources, rootData, + depth); } if (ref.mProviderInstanceId != -1) { rv.mProviderInstanceId = ref.mProviderInstanceId; } if (ref.mMode == MODE_NORMAL) { rv.setIdealSize(ref.mIdealSize); + for (PendingResources<Action> pendingAction : ref.mActions) { + Action action = pendingAction.create(appContext, appResources, rootData, depth); + if (action != null) { + rv.addAction(action); + } + } return rv; } else if (ref.mMode == MODE_HAS_SIZED_REMOTEVIEWS) { List<RemoteViews> sizedViews = new ArrayList<>(); for (RemoteViews.PendingResources<RemoteViews> pendingViews : ref.mSizedRemoteViews) { - RemoteViews views = pendingViews.create(context, resources, rootData, depth); + RemoteViews views = pendingViews.create(appContext, appResources, rootData, + depth); sizedViews.add(views); } rv.initializeSizedRemoteViews(sizedViews.iterator()); @@ -8349,8 +9130,8 @@ public class RemoteViews implements Parcelable, Filter { checkProtoResultNotNull(ref.mLandscapeViews, "Missing landscape views"); checkProtoResultNotNull(ref.mPortraitViews, "Missing portrait views"); RemoteViews parentRv = new RemoteViews( - ref.mLandscapeViews.create(context, resources, rootData, depth), - ref.mPortraitViews.create(context, resources, rootData, depth)); + ref.mLandscapeViews.create(appContext, appResources, rootData, depth), + ref.mPortraitViews.create(appContext, appResources, rootData, depth)); parentRv.initializeFrom(/* src= */ rv, /* hierarchyRoot= */ rv); return parentRv; } else { @@ -8370,6 +9151,35 @@ public class RemoteViews implements Parcelable, Filter { throws Exception; } + @Nullable + private static PendingResources<Action> createActionFromProto(RemoteViews rv, + ProtoInputStream in) throws Exception { + int actionFieldId = in.nextField(); + if (actionFieldId == NO_MORE_FIELDS) { + // action was omitted + return null; + } + switch (actionFieldId) { + case (int) RemoteViewsProto.Action.ATTRIBUTE_REFLECTION_ACTION: + return AttributeReflectionAction.createFromProto(in); + case (int) RemoteViewsProto.Action.BITMAP_REFLECTION_ACTION: + return rv.createFromBitmapReflectionActionFromProto(in); + case (int) RemoteViewsProto.Action.COMPLEX_UNIT_DIMENSION_REFLECTION_ACTION: + return ComplexUnitDimensionReflectionAction.createFromProto(in); + case (int) RemoteViewsProto.Action.LAYOUT_PARAM_ACTION: + return LayoutParamAction.createFromProto(in); + case (int) RemoteViewsProto.Action.NIGHT_MODE_REFLECTION_ACTION: + return NightModeReflectionAction.createFromProto(in); + case (int) RemoteViewsProto.Action.REFLECTION_ACTION: + return ReflectionAction.createFromProto(in); + case (int) RemoteViewsProto.Action.REMOVE_FROM_PARENT_ACTION: + return RemoveFromParentAction.createFromProto(in); + default: + throw new RuntimeException("Unhandled field while reading Action proto!\n" + + ProtoUtils.currentFieldToString(in)); + } + } + private static void checkValidResource(int id, String message, String resName) throws Exception { if (id == 0) throw new Exception(message + ": " + resName); @@ -8392,6 +9202,22 @@ public class RemoteViews implements Parcelable, Filter { } } + private static int getAsIdentifier(Resources resources, LongSparseArray<?> array, long fieldId) + throws Exception { + String resName = (String) array.get(fieldId); + int id = resources.getIdentifier(resName, /* defType= */ null, /* defPackage= */ null); + checkValidResource(id, "Invalid id", resName); + return id; + } + + private static int getAsIdentifier(Resources resources, SparseArray<?> array, int key) + throws Exception { + String resName = (String) array.get(key); + int id = resources.getIdentifier(resName, /* defType= */ null, /* defPackage= */ null); + checkValidResource(id, "Invalid id", resName); + return id; + } + private static SizeF createSizeFFromProto(ProtoInputStream in) throws Exception { float width = 0; float height = 0; @@ -8411,4 +9237,43 @@ public class RemoteViews implements Parcelable, Filter { return new SizeF(width, height); } + + private static void writeIconToProto(ProtoOutputStream out, Resources appResources, Icon icon, + long fieldId) { + long token = out.start(fieldId); + RemoteViewsSerializers.writeIconToProto(out, appResources, icon); + out.end(token); + } + + private static PendingResources<Icon> createIconFromProto(ProtoInputStream in, long fieldId) + throws Exception { + long token = in.start(fieldId); + Function<Resources, Icon> icon = RemoteViewsSerializers.createIconFromProto(in); + in.end(token); + return (context, resources, rootData, depth) -> icon.apply(resources); + } + + private static void writeColorStateListToProto(ProtoOutputStream out, + ColorStateList colorStateList, long fieldId) { + long token = out.start(fieldId); + colorStateList.writeToProto(out); + out.end(token); + } + + private static ColorStateList createColorStateListFromProto(ProtoInputStream in, long fieldId) + throws Exception { + long token = in.start(fieldId); + ColorStateList colorStateList = ColorStateList.createFromProto(in); + in.end(token); + return colorStateList; + } + + private static CharSequence createCharSequenceFromProto(ProtoInputStream in, long fieldId) + throws Exception { + long token = in.start(fieldId); + CharSequence cs = RemoteViewsSerializers.createCharSequenceFromProto(in); + in.end(token); + return cs; + } + } diff --git a/core/java/android/window/BackProgressAnimator.java b/core/java/android/window/BackProgressAnimator.java index 12d4ab8bc963..465e11a048f0 100644 --- a/core/java/android/window/BackProgressAnimator.java +++ b/core/java/android/window/BackProgressAnimator.java @@ -212,6 +212,17 @@ public class BackProgressAnimator implements DynamicAnimation.OnAnimationUpdateL mBackCancelledFinishRunnable = null; } + /** + * Removes the finishCallback passed into {@link #onBackCancelled} + */ + public void removeOnBackInvokedFinishCallback() { + if (mBackInvokedFlingAnim != null) { + mBackInvokedFlingAnim.removeUpdateListener(mOnBackInvokedFlingUpdateListener); + mBackInvokedFlingAnim.removeEndListener(mOnAnimationEndListener); + } + mBackInvokedFinishRunnable = null; + } + /** Returns true if the back animation is in progress. */ @VisibleForTesting(visibility = PACKAGE) public boolean isBackAnimationInProgress() { diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java index b6c0d7cb00ef..bb89a2499838 100644 --- a/core/java/android/window/WindowOnBackInvokedDispatcher.java +++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java @@ -243,6 +243,8 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher { if (previousTopCallback == callback) { // We should call onBackCancelled() when an active callback is removed from // dispatcher. + mProgressAnimator.removeOnBackCancelledFinishCallback(); + mProgressAnimator.removeOnBackInvokedFinishCallback(); sendCancelledIfInProgress(callback); mHandler.post(mProgressAnimator::reset); setTopOnBackInvokedCallback(getTopCallback()); diff --git a/core/java/com/android/internal/app/SetScreenLockDialogActivity.java b/core/java/com/android/internal/app/SetScreenLockDialogActivity.java index 360fcafe3318..4c3af4d45380 100644 --- a/core/java/com/android/internal/app/SetScreenLockDialogActivity.java +++ b/core/java/com/android/internal/app/SetScreenLockDialogActivity.java @@ -60,6 +60,7 @@ public class SetScreenLockDialogActivity extends AlertActivity LAUNCH_REASON_PRIVATE_SPACE_SETTINGS_ACCESS, LAUNCH_REASON_DISABLE_QUIET_MODE, LAUNCH_REASON_UNKNOWN, + LAUNCH_REASON_RESET_PRIVATE_SPACE_SETTINGS_ACCESS, }) @Retention(RetentionPolicy.SOURCE) public @interface LaunchReason { @@ -67,6 +68,7 @@ public class SetScreenLockDialogActivity extends AlertActivity public static final int LAUNCH_REASON_UNKNOWN = -1; public static final int LAUNCH_REASON_DISABLE_QUIET_MODE = 1; public static final int LAUNCH_REASON_PRIVATE_SPACE_SETTINGS_ACCESS = 2; + public static final int LAUNCH_REASON_RESET_PRIVATE_SPACE_SETTINGS_ACCESS = 3; private @LaunchReason int mReason; private int mOriginUserId; @@ -139,7 +141,11 @@ public class SetScreenLockDialogActivity extends AlertActivity // Always set private space message if launch reason is specific to private space builder.setMessage(R.string.private_space_set_up_screen_lock_message); return; + } else if (mReason == LAUNCH_REASON_RESET_PRIVATE_SPACE_SETTINGS_ACCESS) { + builder.setMessage(R.string.private_space_set_up_screen_lock_for_reset); + return; } + final UserManager userManager = getApplicationContext().getSystemService(UserManager.class); if (userManager != null) { UserInfo userInfo = userManager.getUserInfo(mOriginUserId); diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp index 7410468199b8..3370f386f4d2 100644 --- a/core/jni/android_database_SQLiteConnection.cpp +++ b/core/jni/android_database_SQLiteConnection.cpp @@ -70,11 +70,14 @@ struct SQLiteConnection { // Open flags. // Must be kept in sync with the constants defined in SQLiteDatabase.java. enum { + // LINT.IfChange OPEN_READWRITE = 0x00000000, OPEN_READONLY = 0x00000001, OPEN_READ_MASK = 0x00000001, NO_LOCALIZED_COLLATORS = 0x00000010, + NO_DOUBLE_QUOTED_STRS = 0x00000020, CREATE_IF_NECESSARY = 0x10000000, + // LINT.ThenChange(/core/java/android/database/sqlite/SQLiteDatabase.java) }; sqlite3* const db; @@ -156,6 +159,18 @@ static jlong nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFla } } + // Disallow double-quoted string literals if the proper flag is set. + if ((openFlags & SQLiteConnection::NO_DOUBLE_QUOTED_STRS) != 0) { + void *setting = 0; + int err = 0; + if ((err = sqlite3_db_config(db, SQLITE_DBCONFIG_DQS_DDL, 0, setting)) != SQLITE_OK) { + ALOGE("failed to configure SQLITE_DBCONFIG_DQS_DDL: %d", err); + } + if ((err = sqlite3_db_config(db, SQLITE_DBCONFIG_DQS_DML, 0, setting)) != SQLITE_OK) { + ALOGE("failed to configure SQLITE_DBCONFIG_DQS_DML: %d", err); + } + } + // Check that the database is really read/write when that is what we asked for. if ((sqliteFlags & SQLITE_OPEN_READWRITE) && sqlite3_db_readonly(db, NULL)) { throw_sqlite3_exception(env, db, "Could not open the database in read/write mode."); diff --git a/core/proto/android/widget/remoteviews.proto b/core/proto/android/widget/remoteviews.proto index 5892396bddc4..47c97b08666b 100644 --- a/core/proto/android/widget/remoteviews.proto +++ b/core/proto/android/widget/remoteviews.proto @@ -54,6 +54,7 @@ message RemoteViewsProto { optional bool has_draw_instructions = 13; repeated bytes bitmap_cache = 14; optional RemoteCollectionCache remote_collection_cache = 15; + repeated Action actions = 16; message RemoteCollectionCache { message Entry { @@ -288,6 +289,91 @@ message RemoteViewsProto { } } } + + message Action { + oneof action { + AttributeReflectionAction attribute_reflection_action = 1; + BitmapReflectionAction bitmap_reflection_action = 2; + ComplexUnitDimensionReflectionAction complex_unit_dimension_reflection_action = 3; + LayoutParamAction layout_param_action = 4; + NightModeReflectionAction night_mode_reflection_action = 5; + ReflectionAction reflection_action = 6; + RemoveFromParentAction remove_from_parent_action = 7; + } + } + + message AttributeReflectionAction { + optional string view_id = 1; + optional string method_name = 2; + optional int32 parameter_type = 3; + optional int32 resource_type = 4; + optional string attribute_id = 5; + } + + message BitmapReflectionAction { + optional string view_id = 1; + optional string method_name = 2; + optional int32 bitmap_id = 3; + } + + message ComplexUnitDimensionReflectionAction { + optional string view_id = 1; + optional string method_name = 2; + optional int32 parameter_type = 3; + optional float dimension_value = 4; + optional int32 unit = 5; + } + + message LayoutParamAction { + optional string view_id = 1; + optional int32 property = 2; + optional int32 layout_value = 3; + optional int32 value_type = 4; + } + + message NightModeReflectionAction { + optional string view_id = 1; + optional string method_name = 2; + optional int32 parameter_type = 3; + oneof light { + Icon light_icon = 4; + android.content.res.ColorStateListProto light_color_state_list = 5; + int32 light_int = 6; + } + oneof dark { + Icon dark_icon = 7; + android.content.res.ColorStateListProto dark_color_state_list = 8; + int32 dark_int = 9; + } + } + + message ReflectionAction { + optional string view_id = 1; + optional string method_name = 2; + optional int32 parameter_type = 3; + oneof reflection_value { + bool boolean_value = 4; + bytes byte_value = 5; + int32 short_value = 6; + int32 int_value = 7; + int64 long_value = 8; + float float_value = 9; + double double_value = 10; + int32 char_value = 11; + string string_value = 12; + CharSequence char_sequence_value = 13; + string uri_value = 14; + bytes bitmap_value = 15; + android.content.res.ColorStateListProto color_state_list_value = 16; + Icon icon_value = 17; + int32 blend_mode_value = 18; + // Intent and Bundle values are excluded. + } + } + + message RemoveFromParentAction { + optional string view_id = 1; + } } diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 2873785e9387..a7b6661a42e5 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"አንድ መተግበሪያ የፍቃድ ጥያቄውን እያደበዘዘ ነው ስለዚህ የእርስዎ ምላሽ ሊረጋገጥ አይችልም።"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"አንድ ባህሪን መጠቀም ለመጀመር መታ ያድርጉት፦"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"በተደራሽነት አዝራር የሚጠቀሙባቸው ባሕሪያት ይምረጡ"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"በድምፅ ቁልፍ አቋራጭ የሚጠቀሙባቸው ባህሪያት ይምረጡ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ጠፍቷል"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"አቋራጮችን አርትዕ ያድርጉ"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ተከናውኗል"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index bc1dba27ff5f..c5ad8bab39d0 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -1356,7 +1356,7 @@ <item msgid="9177085807664964627">"ভিপিএন"</item> </string-array> <string name="network_switch_type_name_unknown" msgid="3665696841646851068">"অজ্ঞাত প্ৰকাৰৰ নেটৱৰ্ক"</string> - <string name="accept" msgid="5447154347815825107">"স্বীকাৰ কৰক"</string> + <string name="accept" msgid="5447154347815825107">"গ্ৰহণ কৰক"</string> <string name="decline" msgid="6490507610282145874">"প্ৰত্যাখ্যান কৰক"</string> <string name="select_character" msgid="3352797107930786979">"বর্ণ লিখক"</string> <string name="sms_control_title" msgid="4748684259903148341">"এছএমএছ বার্তাবোৰ পঠিয়াই থকা হৈছে"</string> @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"এটা এপে অনুমতিৰ অনুৰোধটো অস্পষ্ট কৰি আছে আৰু সেয়েহে আপোনাৰ সঁহাৰিটো সত্যাপন কৰিব নোৱাৰি।"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"কোনো এটা সুবিধা ব্যৱহাৰ কৰিবলৈ সেইটোত টিপক:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"সাধ্য-সুবিধা বুটামটোৰ জৰিয়তে ব্যৱহাৰ কৰিবলৈ সুবিধাসমূহ বাছনি কৰক"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"ভলিউম কীৰ শ্বৰ্টকাটটোৰ জৰিয়তে ব্যৱহাৰ কৰিবলৈ সুবিধাসমূহ বাছনি কৰক"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> বন্ধ কৰা হৈছে"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"শ্বৰ্টকাটসমূহ সম্পাদনা কৰক"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"কৰা হ’ল"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index b83eca56023f..8f0f4b2259c8 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1747,8 +1747,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Aplikacija krije zahtev za dozvolu, pa odgovor ne može da se verifikuje."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite neku funkciju da biste počeli da je koristite:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Odaberite funkcije koje ćete koristiti sa dugmetom Pristupačnost"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Odaberite funkcije koje će se koristiti sa prečicom za tastere za jačinu zvuka"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Izmenite prečice"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 596457066268..7a49bf348acf 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1748,8 +1748,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Праграма хавае запыт дазволу, таму ваш адказ немагчыма спраўдзіць."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Каб пачаць выкарыстоўваць функцыю, націсніце на яе:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Выберыце функцыі, якія будзеце выкарыстоўваць з кнопкай спецыяльных магчымасцей"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Выберыце функцыі для выкарыстання з клавішамі гучнасці"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сэрвіс \"<xliff:g id="SERVICE_NAME">%s</xliff:g>\" выключаны"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Змяніць ярлыкі"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Гатова"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index b9ceede3c8be..69e6483a03f4 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1748,8 +1748,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Žádost o oprávnění skrývá nějaká aplikace, proto vaši odpověď nelze ověřit."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Chcete-li některou funkci začít používat, klepněte na ni:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Vyberte funkce, které budete používat s tlačítkem přístupnosti"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Vyberte funkce, které budete používat se zkratkou tlačítek hlasitosti"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> byla vypnuta"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Upravit zkratky"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hotovo"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 19547f81d636..dad63334dc6c 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"An app is obscuring the permission request so your response cannot be verified."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choose features to use with the accessibility button"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Choose features to use with the volume keys shortcut"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index c1eade14fbc6..0bcbed786d44 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"An app is obscuring the permission request so your response cannot be verified."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Choose features to use with the accessibility button"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Choose features to use with the volume keys shortcut"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index ff7d912255cb..e50d5faea41b 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1747,8 +1747,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Una aplicación está ocultando la solicitud de permiso, por lo que no se puede verificar tu respuesta."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toca una función para empezar a usarla:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Selecciona qué funciones usar con el botón de accesibilidad"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Selecciona qué funciones usar con el acceso directo de teclas de volumen"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Se ha desactivado <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar accesos directos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hecho"</string> @@ -1758,7 +1757,7 @@ <string name="color_correction_feature_name" msgid="7975133554160979214">"Corrección de color"</string> <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo Una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> - <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> + <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Audífonos"</string> <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> diff --git a/core/res/res/values-et-rEE/config.xml b/core/res/res/values-et-rEE/config.xml new file mode 100644 index 000000000000..cf4d07f2ead0 --- /dev/null +++ b/core/res/res/values-et-rEE/config.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2024, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources> + <bool name="config_use_sim_language_file">false</bool> +</resources> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 5e474cde8a09..0c46ed93a602 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"پاسخ شما تأیید نشد زیرا یک برنامه درخواست اجازه را مسدود کرده است."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"برای استفاده از ویژگی، روی آن تکضرب بزنید:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"انتخاب ویژگیهای موردنظر برای استفاده با دکمه دسترسپذیری"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"انتخاب کنید کدام ویژگیها با میانبر کلیدهای میزان صدا استفاده شود"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> خاموش شده است"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ویرایش میانبرها"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"تمام"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 2810b5e40107..2ac70ab79c3b 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"કોઈ ઍપ પરવાનગીની વિનંતીને ઢાંકી રહી છે, તેથી તમારા પ્રતિસાદની ચકાસણી કરી શકાતી નથી."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"સુવિધાનો ઉપયોગ શરૂ કરવા તેના પર ટૅપ કરો:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ઍક્સેસિબિલિટી બટન વડે તમે ઉપયોગમાં લેવા માગો છો તે સુવિધાઓ પસંદ કરો"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"વૉલ્યૂમ કી શૉર્ટકટ વડે તમે ઉપયોગમાં લેવા માગો છો તે સુવિધાઓ પસંદ કરો"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> બંધ કરવામાં આવ્યું છે"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"શૉર્ટકટમાં ફેરફાર કરો"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"થઈ ગયું"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 700e91ad8eb8..5f1bb9a74d27 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"ऐप्लिकेशन की वजह से, अनुमति का अनुरोध समझने में परेशानी हो रही है. इसलिए, आपके जवाब की पुष्टि नहीं की जा सकी."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"किसी सुविधा का इस्तेमाल करने के लिए, उस पर टैप करें:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"सुलभता बटन पर टैप करके, इस्तेमाल करने के लिए सुविधाएं चुनें"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"वे सुविधाएं चुनें जिन्हें आवाज़ बटनों के शॉर्टकट के ज़रिए इस्तेमाल करना है"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> को बंद कर दिया गया है"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"शॉर्टकट में बदलाव करें"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"हो गया"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 3eb2e4bd0a2c..057b830d4fb7 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Forrit er að fela heimildarbeiðnina svo ekki er hægt að staðfesta svarið þitt."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ýttu á eiginleika til að byrja að nota hann:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Veldu eiginleika sem á að nota með aðgengishnappinum"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Veldu eiginleika sem á að nota með flýtileið hljóðstyrkstakka"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Slökkt hefur verið á <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Breyta flýtileiðum"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Lokið"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index bcff8138c103..0705b36d9450 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1400,10 +1400,10 @@ <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB テザリング ON"</string> <string name="usb_midi_notification_title" msgid="7404506788950595557">"USB MIDI モード ON"</string> <string name="usb_uvc_notification_title" msgid="2030032862673400008">"ウェブカメラとしてデバイスを接続しました"</string> - <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB アクセサリが接続されました"</string> + <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB アクセサリーが接続されました"</string> <string name="usb_notification_message" msgid="4715163067192110676">"タップしてその他のオプションを表示します。"</string> <string name="usb_power_notification_message" msgid="7284765627437897702">"接続されているデバイスを充電しています。タップすると、他の項目が表示されます。"</string> - <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"アナログのオーディオ アクセサリを検出"</string> + <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"アナログのオーディオ アクセサリーを検出"</string> <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"接続したデバイスはこのスマートフォンと互換性がありません。タップすると、詳細を確認できます。"</string> <string name="adb_active_notification_title" msgid="408390247354560331">"USB デバッグが接続されました"</string> <string name="adb_active_notification_message" msgid="5617264033476778211">"無効にするにはここをタップしてください"</string> @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"権限のリクエストを遮っているアプリがあるため、同意の回答を確認できません。"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"使用を開始する機能をタップ:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ユーザー補助機能ボタンで使用する機能の選択"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"音量ボタンのショートカットで使用する機能の選択"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> はオフになっています"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ショートカットの編集"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完了"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 0adebb002c05..bac23337e0d1 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"აპი მალავს ნებართვის მოთხოვნას, ასე რომ, თქვენი პასუხი ვერ დადასტურდება."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"შეეხეთ ფუნქციას მისი გამოყენების დასაწყებად:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"აირჩიეთ ფუნქციები, რომელთა გამოყენებაც გსურთ მარტივი წვდომის ღილაკით"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"ხმის კლავიშების მალსახმობების მეშვეობით გამოსაყენებელი ფუნქციების არჩევა"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> გამორთულია"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"მალსახმობების რედაქტირება"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"მზადაა"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index f3dd775defef..1f931c6644e3 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"កម្មវិធីមួយកំពុងបិទបាំងសំណើសុំការអនុញ្ញាត ដូច្នេះមិនអាចផ្ទៀងផ្ទាត់ការឆ្លើយតបរបស់អ្នកបានទេ។"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ចុចមុខងារណាមួយ ដើម្បចាប់ផ្ដើមប្រើ៖"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ជ្រើសរើសមុខងារ ដើម្បីប្រើជាមួយប៊ូតុងភាពងាយស្រួល"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"ជ្រើសរើសមុខងារ ដើម្បីប្រើជាមួយផ្លូវកាត់គ្រាប់ចុចកម្រិតសំឡេង"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"បានបិទ <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"កែផ្លូវកាត់"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"រួចរាល់"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index a772e32c1221..941a1b2572ce 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"ಆ್ಯಪ್ವೊಂದು ಅನುಮತಿ ವಿನಂತಿಯನ್ನು ಮರೆಮಾಚುತ್ತಿರುವ ಕಾರಣ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ವೈಶಿಷ್ಟ್ದ ಬಳಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ ಜೊತೆಗೆ ಬಳಸಲು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"ವಾಲ್ಯೂಮ್ ಕೀ ಶಾರ್ಟ್ಕಟ್ ಜೊತೆಗೆ ಬಳಸಲು ಫೀಚರ್ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ಅನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ಪೂರ್ಣಗೊಂಡಿದೆ"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 4c2ee5f88d99..43fd6a78cc73 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Колдонмо уруксат суроону жашырып койгондуктан, жообуңузду ырастоо мүмкүн эмес."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны колдонуп баштоо үчүн аны таптап коюңуз:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Атайын мүмкүнчүлүктөр баскычы менен колдонгуңуз келген функцияларды тандаңыз"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Үн баскычтары менен кайсы функцияларды иштеткиңиз келет?"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> өчүрүлдү"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Кыска жолдорду түзөтүү"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Бүттү"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index b62750311caa..dc15e9afc0cf 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"ແອັບໜຶ່ງກຳລັງປິດບັງຄຳຮ້ອງຂໍການອະນຸຍາດ ດັ່ງນັ້ນຈຶ່ງບໍ່ສາມາດຢັ້ງຢືນຄຳຕອບຂອງທ່ານໄດ້."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ແຕະໃສ່ຄຸນສົມບັດໃດໜຶ່ງເພື່ອເລີ່ມການນຳໃຊ້ມັນ:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ເລືອກຄຸນສົມບັດເພື່ອໃຊ້ກັບປຸ່ມການຊ່ວຍເຂົ້າເຖິງ"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"ເລືອກຄຸນສົມບັດທີ່ຈະໃຊ້ກັບທາງລັດຂອງປຸ່ມລະດັບສຽງ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"ປິດ <xliff:g id="SERVICE_NAME">%s</xliff:g> ໄວ້ແລ້ວ"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ແກ້ໄຂທາງລັດ"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ແລ້ວໆ"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 2b1c52ff0825..6d60696f40e9 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"ഒരു ആപ്പ്, അനുമതി അഭ്യർത്ഥന മറയ്ക്കുന്നതിനാൽ നിങ്ങളുടെ പ്രതികരണം പരിശോധിച്ചുറപ്പിക്കാനാകില്ല."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ഉപയോഗിച്ച് തുടങ്ങാൻ ഫീച്ചർ ടാപ്പ് ചെയ്യുക:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ഉപയോഗസഹായി ബട്ടണിന്റെ സഹായത്തോടെ, ഉപയോഗിക്കാൻ ഫീച്ചറുകൾ തിരഞ്ഞെടുക്കുക"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"വോളിയം കീകളുടെ കുറുക്കുവഴികൾക്കൊപ്പം ഉപയോഗിക്കേണ്ട ഫീച്ചറുകൾ തിരഞ്ഞെടുക്കുക"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ഓഫാക്കിയിരിക്കുന്നു"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"കുറുക്കുവഴികൾ തിരുത്തുക"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"പൂർത്തിയാക്കി"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 67c3b980d700..30403cf0984f 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"परवानगी मागणारी विनंती अॅपमुळे अस्पष्ट होत असल्याने, तुमच्या प्रतिसादाची पडताळणी केली जाऊ शकत नाही."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"वैशिष्ट्य वापरणे सुरू करण्यासाठी त्यावर टॅप करा:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"अॅक्सेसिबिलिटी बटणासोबत वापरायची असलेली ॲप्स निवडा"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"व्हॉल्यूम की शॉर्टकटसोबत वापरायची असलेली ॲप्स निवडा"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> बंद केले आहे"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"शॉर्टकट संपादित करा"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"पूर्ण झाले"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 5eac79316474..e17c62bb168e 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Apl menghalang permintaan kebenaran, maka jawapan anda tidak dapat disahkan."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketik ciri untuk mula menggunakan ciri itu:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Pilih ciri untuk digunakan dengan butang kebolehaksesan"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Pilih ciri untuk digunakan dengan pintasan kekunci kelantangan"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> telah dimatikan"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit pintasan"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Selesai"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index b09539c27bac..85fb0e9e27d7 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"အက်ပ်တစ်ခုသည် ခွင့်ပြုချက်တောင်းဆိုမှုကို ပိတ်နေသဖြင့် သင့်တုံ့ပြန်မှုကို စိစစ်၍မရပါ။"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ဝန်ဆောင်မှုကို စတင်အသုံးပြုရန် တို့ပါ−"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"အများသုံးနိုင်မှု ခလုတ်ဖြင့် အသုံးပြုရန် ဝန်ဆောင်မှုများကို ရွေးပါ"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"အသံထိန်းခလုတ်ဖြတ်လမ်းဖြင့် အသုံးပြုရန်အတွက် တူးလ်များကိုရွေးပါ"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ကို ပိတ်ထားသည်"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ဖြတ်လမ်းများကို တည်းဖြတ်ရန်"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ပြီးပြီ"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 9f3530a3e15d..36e3254135eb 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"कुनै एपका कारण अनुमतिसम्बन्धी अनुरोध बुझ्न कठिनाइ भइरहेकाले तपाईंको जवाफको पुष्टि गर्न सकिएन।"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"कुनै सुविधा प्रयोग गर्न थाल्न उक्त सुविधामा ट्याप गर्नुहोस्:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"पहुँचको बटनमार्फत प्रयोग गर्न चाहेका सुविधाहरू छनौट गर्नुहोस्"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"भोल्युम बटनको सर्टकटमार्फत प्रयोग गर्न चाहेका सुविधाहरू छनौट गर्नुहोस्"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> निष्क्रिय पारिएको छ"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"सर्टकटहरू सम्पादन गर्नुहोस्"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"सम्पन्न भयो"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 8209504a62f3..18773f6c1473 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -642,7 +642,7 @@ <string name="permdesc_mediaLocation" msgid="597912899423578138">"Hiermee sta je de app toe locaties van je mediacollectie te bekijken."</string> <string name="biometric_app_setting_name" msgid="3339209978734534457">"Biometrische gegevens gebruiken"</string> <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Biometrische gegevens of schermvergrendeling gebruiken"</string> - <string name="biometric_dialog_default_title" msgid="55026799173208210">"Je identiteit verifiëren"</string> + <string name="biometric_dialog_default_title" msgid="55026799173208210">"Je identiteit bevestigen"</string> <string name="biometric_dialog_default_subtitle" msgid="8457232339298571992">"Gebruik je biometrische gegevens om door te gaan"</string> <string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"Gebruik je biometrische gegevens of schermvergrendeling om door te gaan"</string> <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Biometrische hardware niet beschikbaar"</string> @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Een app dekt het verzoek om rechten af, waardoor je reactie niet kan worden geverifieerd."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tik op een functie om deze te gebruiken:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Functies kiezen voor gebruik met de knop Toegankelijkheid"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Functies kiezen voor gebruik met de snelkoppeling met volumeknoppen"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is uitgezet"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Snelkoppelingen bewerken"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klaar"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 71940ef78cbd..28c130c42fe4 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1747,8 +1747,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Uma app está a ocultar o pedido de autorização e, por isso, não é possível validar a sua resposta."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque numa funcionalidade para começar a utilizá-la:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Escolha funcionalidades para utilizar com o botão Acessibilidade"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Escolha funcionalidades para usar com o atalho de teclas de volume"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 22501f2a01b1..3c374ef5de28 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1748,8 +1748,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Невозможно принять ваш ответ, поскольку запрос разрешения скрыт другим приложением."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Выберите, какую функцию использовать:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Выберите функции, которые будут запускаться с помощью кнопки специальных возможностей"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Выберите функции, которые вы хотите запускать кнопками регулировки громкости"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сервис \"<xliff:g id="SERVICE_NAME">%s</xliff:g>\" отключен."</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Изменить ярлыки"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 3289bbc7416f..7185bcdb0de6 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1748,8 +1748,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Aplikácia zakrýva žiadosť o povolenie, takže vaša odpoveď sa nedá overiť."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Klepnutím na funkciu ju začnite používať:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Výber funkcií, ktoré chcete používať tlačidlom dostupnosti"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Vyberte funkcie, ktoré chcete používať so skratkou tlačidiel hlasitosti"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> bola vypnutá"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Upraviť skratky"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hotovo"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 99ce0469be55..e67bf9c910a3 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1748,8 +1748,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Aplikacija zakriva zahtevo za dovoljenje, zato ni mogoče potrditi vašega odgovora."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Če želite začeti uporabljati funkcijo, se je dotaknite:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Izberite funkcije, ki jih želite uporabljati z gumbom za dostopnost"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Izberite funkcije, ki jih želite uporabljati z bližnjico gumbov za glasnost"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Storitev <xliff:g id="SERVICE_NAME">%s</xliff:g> je izklopljena"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi bližnjice"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Končano"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 0451b561347b..f5988c282e36 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1747,8 +1747,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"Апликација крије захтев за дозволу, па одговор не може да се верификује."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Додирните неку функцију да бисте почели да је користите:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Одаберите функције које ћете користити са дугметом Приступачност"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Одаберите функције које ће се користити са пречицом за тастере за јачину звука"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Услуга <xliff:g id="SERVICE_NAME">%s</xliff:g> је искључена"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Измените пречице"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index b1ce5149861d..626205e42483 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"அணுகல் கோரிக்கையை ஓர் ஆப்ஸ் மறைப்பதால் உங்கள் பதிலைச் சரிபார்க்க முடியாது."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ஒரு அம்சத்தைப் பயன்படுத்த அதைத் தட்டவும்:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"அணுகல்தன்மை பட்டன் மூலம் பயன்படுத்த விரும்பும் அம்சங்களைத் தேர்வுசெய்யுங்கள்"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"ஒலியளவு விசைகளுக்கான ஷார்ட்கட்டுடன் பயன்படுத்துவதற்கான அம்சங்களைத் தேர்வுசெய்யுங்கள்"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ஆஃப் செய்யப்பட்டுள்ளது"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ஷார்ட்கட்களை மாற்று"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"முடிந்தது"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 4b655d156a50..db19868b37dd 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"ఒక యాప్ అనుమతి రిక్వెస్ట్కు అడ్డు తగులుతోంది కాబట్టి మీ సమాధానం వెరిఫై చేయడం సాధ్యం కాదు."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ఫీచర్ని ఉపయోగించడం ప్రారంభించడానికి, దాన్ని ట్యాప్ చేయండి:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"యాక్సెసిబిలిటీ బటన్తో ఉపయోగించడానికి ఫీచర్లను ఎంచుకోండి"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"వాల్యూమ్ కీల షార్ట్కట్తో ఉపయోగించడానికి ఫీచర్లను ఎంచుకోండి"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ఆఫ్ చేయబడింది"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"షార్ట్కట్లను ఎడిట్ చేయండి"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"పూర్తయింది"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index d979c340e216..b34cf59a2bb8 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"มีแอปหนึ่งบดบังคำขอสิทธิ์ เราจึงยืนยันการตอบกลับของคุณไม่ได้"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"แตะฟีเจอร์เพื่อเริ่มใช้"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"เลือกฟีเจอร์ที่จะใช้กับปุ่มการช่วยเหลือพิเศษ"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"เลือกฟีเจอร์ที่จะใช้กับทางลัดปุ่มปรับระดับเสียง"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"ปิด <xliff:g id="SERVICE_NAME">%s</xliff:g> แล้ว"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"แก้ไขทางลัด"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"เสร็จ"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index fbbb32c1c8fa..b976f204e395 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"May app na pumipigil sa kahilingan sa pahintulot kaya hindi ma-verify ang iyong sagot."</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"I-tap ang isang feature para simulan itong gamitin:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Pumili ng mga feature na gagana sa pamamagitan ng button ng accessibility"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"Pumili ng mga feature na gagana sa pamamagitan ng shortcut ng mga volume key"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Na-off ang <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"I-edit ang mga shortcut"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Tapos na"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index d2f0898acd0c..fcfff0faa88c 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -1746,8 +1746,7 @@ <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"ایپ اجازت کی درخواست کو مبہم کر رہی ہے لہذا آپ کے جواب کی تصدیق نہیں کی جا سکتی۔"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ایک خصوصیت کا استعمال شروع کرنے کیلئے اسے تھپتھپائیں:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"ایکسیسبیلٹی بٹن کے ساتھ استعمال کرنے کیلئے خصوصیات منتخب کریں"</string> - <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2245540598834891500) --> - <skip /> + <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"والیوم کلیدوں کے شارٹ کٹ کے ساتھ استعمال کرنے کیلئے خصوصیات منتخب کریں"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> کو آف کر دیا گیا ہے"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"شارٹ کٹس میں ترمیم کریں"</string> <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ہو گیا"</string> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 606c7fdaa954..d63421057939 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -5509,6 +5509,9 @@ <!-- Message shown in the dialog prompting the user to set up a screen lock to access private space [CHAR LIMIT=120] --> <string name="private_space_set_up_screen_lock_message">To use your private space, set a screen lock on this device</string> + <!-- Message shown in the dialog prompting the user to set up a screen lock to delete private space from Reset Options [CHAR LIMIT=120] --> + <string name="private_space_set_up_screen_lock_for_reset">To delete private space, set a screen lock on this device</string> + <!-- Title of the dialog that is shown when the user tries to launch a blocked application [CHAR LIMIT=50] --> <string name="app_blocked_title">App is not available</string> <!-- Default message shown in the dialog that is shown when the user tries to launch a blocked application [CHAR LIMIT=NONE] --> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 3c8c04e23087..bd8077e71c5a 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3299,6 +3299,8 @@ <java-symbol type="string" name="set_up_screen_lock_action_label" /> <!-- Message for the alert dialog prompting the user to set up a screen lock to access private space --> <java-symbol type="string" name="private_space_set_up_screen_lock_message" /> + <!-- Message shown in the dialog prompting the user to set up a screen lock to delete private space from Reset Options [CHAR LIMIT=120] --> + <java-symbol type="string" name="private_space_set_up_screen_lock_for_reset" /> <java-symbol type="string" name="deprecated_target_sdk_message" /> <java-symbol type="string" name="deprecated_target_sdk_app_store" /> diff --git a/core/tests/BroadcastRadioTests/Android.bp b/core/tests/BroadcastRadioTests/Android.bp index beffb9aac12b..7d4ae00c405a 100644 --- a/core/tests/BroadcastRadioTests/Android.bp +++ b/core/tests/BroadcastRadioTests/Android.bp @@ -45,7 +45,7 @@ android_test { "flag-junit", "mockito-target-extended", ], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], test_suites: [ "general-tests", "automotive-general-tests", diff --git a/core/tests/ConnectivityManagerTest/Android.bp b/core/tests/ConnectivityManagerTest/Android.bp index f17a28d22c17..6421899631ff 100644 --- a/core/tests/ConnectivityManagerTest/Android.bp +++ b/core/tests/ConnectivityManagerTest/Android.bp @@ -24,8 +24,8 @@ package { android_test { name: "ConnectivityManagerTest", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "junit", diff --git a/core/tests/GameManagerTests/Android.bp b/core/tests/GameManagerTests/Android.bp index a252f8b53fab..1abceb820fc1 100644 --- a/core/tests/GameManagerTests/Android.bp +++ b/core/tests/GameManagerTests/Android.bp @@ -32,7 +32,7 @@ android_test { "platform-test-annotations", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", test_suites: ["device-tests"], diff --git a/core/tests/InputMethodCoreTests/Android.bp b/core/tests/InputMethodCoreTests/Android.bp index ac6462589e16..2b524d58ced7 100644 --- a/core/tests/InputMethodCoreTests/Android.bp +++ b/core/tests/InputMethodCoreTests/Android.bp @@ -42,9 +42,9 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs", + "android.test.base.stubs", + "android.test.mock.stubs", "framework", "ext", "framework-res", diff --git a/core/tests/PackageInstallerSessions/Android.bp b/core/tests/PackageInstallerSessions/Android.bp index b631df1fcf57..d10ecd07a44c 100644 --- a/core/tests/PackageInstallerSessions/Android.bp +++ b/core/tests/PackageInstallerSessions/Android.bp @@ -39,8 +39,8 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs", + "android.test.base.stubs", "framework", "framework-res", ], diff --git a/core/tests/PlatformCompatFramework/Android.bp b/core/tests/PlatformCompatFramework/Android.bp index 2621d280bd9d..a3fdf7b43bee 100644 --- a/core/tests/PlatformCompatFramework/Android.bp +++ b/core/tests/PlatformCompatFramework/Android.bp @@ -12,8 +12,8 @@ android_test { // Include all test java files. srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "junit", diff --git a/core/tests/bandwidthtests/Android.bp b/core/tests/bandwidthtests/Android.bp index 8645b39da5a8..b7357122dff8 100644 --- a/core/tests/bandwidthtests/Android.bp +++ b/core/tests/bandwidthtests/Android.bp @@ -27,9 +27,9 @@ android_test { // Include all test java files. srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "org.apache.http.legacy", - "android.test.base", + "android.test.runner.stubs", + "org.apache.http.legacy.stubs", + "android.test.base.stubs", ], static_libs: [ "junit", diff --git a/core/tests/batterystatstests/BatteryStatsLoadTests/Android.bp b/core/tests/batterystatstests/BatteryStatsLoadTests/Android.bp index 1c0ea839ec02..926edfed16ef 100644 --- a/core/tests/batterystatstests/BatteryStatsLoadTests/Android.bp +++ b/core/tests/batterystatstests/BatteryStatsLoadTests/Android.bp @@ -16,7 +16,7 @@ android_test { "compatibility-device-util-axt", "junit", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", } diff --git a/core/tests/bugreports/Android.bp b/core/tests/bugreports/Android.bp index 15e07e535b39..c1022a54207d 100644 --- a/core/tests/bugreports/Android.bp +++ b/core/tests/bugreports/Android.bp @@ -26,8 +26,8 @@ android_test { srcs: ["src/**/*.java"], data: [":bugreport_artifacts"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.test", + "android.test.base.stubs.test", ], static_libs: [ "android.tracing.flags-aconfig-java", diff --git a/core/tests/companiontests/Android.bp b/core/tests/companiontests/Android.bp index d31b8f470108..cb0951e59d04 100644 --- a/core/tests/companiontests/Android.bp +++ b/core/tests/companiontests/Android.bp @@ -12,8 +12,8 @@ android_test { // Include all test java files. srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: ["junit"], platform_apis: true, diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp index 41599aea1a80..5111d2d1e044 100644 --- a/core/tests/coretests/Android.bp +++ b/core/tests/coretests/Android.bp @@ -107,10 +107,10 @@ android_test { ], libs: [ - "android.test.runner", - "org.apache.http.legacy", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs", + "org.apache.http.legacy.stubs", + "android.test.base.stubs", + "android.test.mock.stubs", "framework", "ext", "framework-res", @@ -158,8 +158,8 @@ android_app { use_resource_processor: false, libs: [ "framework-res", - "android.test.runner", - "org.apache.http.legacy", + "android.test.runner.stubs", + "org.apache.http.legacy.stubs", ], uses_libs: [ "android.test.runner", @@ -225,9 +225,9 @@ android_library { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "framework", "framework-res", ], @@ -236,8 +236,8 @@ android_library { android_ravenwood_test { name: "FrameworksCoreTestsRavenwood", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "core-test-rules", // for libcore.dalvik.system.CloseGuardSupport diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java index 519f23b0deb6..00978a099f13 100644 --- a/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java +++ b/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java @@ -538,4 +538,58 @@ public class SQLiteDatabaseTest { assertEquals(1, db.mConnection.size()); } + + // Create and open the database, allowing or disallowing double-quoted strings. + private void createDatabase(boolean noDoubleQuotedStrs) throws Exception { + // The open-flags that do not change in this test. + int flags = SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.OPEN_READWRITE; + + // The flag to be tested. + int flagUnderTest = SQLiteDatabase.NO_DOUBLE_QUOTED_STRS; + + if (noDoubleQuotedStrs) { + flags |= flagUnderTest; + } else { + flags &= ~flagUnderTest; + } + mDatabase = SQLiteDatabase.openDatabase(mDatabaseFile.getPath(), null, flags, null); + } + + /** + * This test verifies that the NO_DOUBLE_QUOTED_STRS flag works as expected when opening a + * database. This does not test that the flag is initialized as expected from the system + * properties. + */ + @Test + public void testNoDoubleQuotedStrings() throws Exception { + closeAndDeleteDatabase(); + createDatabase(/* noDoubleQuotedStrs */ false); + + mDatabase.beginTransaction(); + try { + mDatabase.execSQL("CREATE TABLE t1 (t text);"); + // Insert a value in double-quotes. This is invalid but accepted. + mDatabase.execSQL("INSERT INTO t1 (t) VALUES (\"foo\")"); + } finally { + mDatabase.endTransaction(); + } + + closeAndDeleteDatabase(); + createDatabase(/* noDoubleQuotedStrs */ true); + + mDatabase.beginTransaction(); + try { + mDatabase.execSQL("CREATE TABLE t1 (t text);"); + try { + // Insert a value in double-quotes. This is invalid and must throw. + mDatabase.execSQL("INSERT INTO t1 (t) VALUES (\"foo\")"); + fail("expected an exception"); + } catch (SQLiteException e) { + assertTrue(e.toString().contains("no such column")); + } + } finally { + mDatabase.endTransaction(); + } + closeAndDeleteDatabase(); + } } diff --git a/core/tests/coretests/src/android/widget/RemoteViewsProtoTest.java b/core/tests/coretests/src/android/widget/RemoteViewsProtoTest.java deleted file mode 100644 index 7c140329f0e4..000000000000 --- a/core/tests/coretests/src/android/widget/RemoteViewsProtoTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.widget; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import android.content.Context; -import android.util.SizeF; -import android.util.proto.ProtoInputStream; -import android.util.proto.ProtoOutputStream; -import android.view.View; - -import androidx.test.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.filters.SmallTest; - -import com.android.frameworks.coretests.R; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; - -import java.util.Map; - -/** - * Tests for RemoteViews. - */ -@RunWith(AndroidJUnit4.class) -@SmallTest -public class RemoteViewsProtoTest { - - // This can point to any other package which exists on the device. - private static final String OTHER_PACKAGE = "com.android.systemui"; - - @Rule - public final ExpectedException exception = ExpectedException.none(); - - private Context mContext; - private String mPackage; - private LinearLayout mContainer; - - @Before - public void setup() { - mContext = InstrumentationRegistry.getContext(); - mPackage = mContext.getPackageName(); - mContainer = new LinearLayout(mContext); - } - - @Test - public void copy_canStillBeApplied() { - RemoteViews original = new RemoteViews(mPackage, R.layout.remote_views_test); - - RemoteViews clone = recreateFromProto(original); - - clone.apply(mContext, mContainer); - } - - @SuppressWarnings("ReturnValueIgnored") - @Test - public void clone_repeatedly() { - RemoteViews original = new RemoteViews(mPackage, R.layout.remote_views_test); - - recreateFromProto(original); - recreateFromProto(original); - - original.apply(mContext, mContainer); - } - - @Test - public void clone_chained() { - RemoteViews original = new RemoteViews(mPackage, R.layout.remote_views_test); - - RemoteViews clone = recreateFromProto(recreateFromProto(original)); - - - clone.apply(mContext, mContainer); - } - - @Test - public void landscapePortraitViews_lightBackgroundLayoutFlag() { - RemoteViews inner = new RemoteViews(mPackage, R.layout.remote_views_text); - inner.setLightBackgroundLayoutId(R.layout.remote_views_light_background_text); - - RemoteViews parent = new RemoteViews(inner, inner); - parent.addFlags(RemoteViews.FLAG_USE_LIGHT_BACKGROUND_LAYOUT); - - View view = recreateFromProto(parent).apply(mContext, mContainer); - assertNull(view.findViewById(R.id.text)); - assertNotNull(view.findViewById(R.id.light_background_text)); - } - - @Test - public void sizedViews_lightBackgroundLayoutFlag() { - RemoteViews inner = new RemoteViews(mPackage, R.layout.remote_views_text); - inner.setLightBackgroundLayoutId(R.layout.remote_views_light_background_text); - - RemoteViews parent = new RemoteViews( - Map.of(new SizeF(0, 0), inner, new SizeF(100, 100), inner)); - parent.addFlags(RemoteViews.FLAG_USE_LIGHT_BACKGROUND_LAYOUT); - - View view = recreateFromProto(parent).apply(mContext, mContainer); - assertNull(view.findViewById(R.id.text)); - assertNotNull(view.findViewById(R.id.light_background_text)); - } - - @Test - public void nestedLandscapeViews() throws Exception { - RemoteViews views = new RemoteViews(mPackage, R.layout.remote_views_test); - for (int i = 0; i < 10; i++) { - views = new RemoteViews(views, new RemoteViews(mPackage, R.layout.remote_views_test)); - } - // writeTo/createFromProto works - recreateFromProto(views); - - views = new RemoteViews(mPackage, R.layout.remote_views_test); - for (int i = 0; i < 11; i++) { - views = new RemoteViews(views, new RemoteViews(mPackage, R.layout.remote_views_test)); - } - // writeTo/createFromProto fails - exception.expect(IllegalArgumentException.class); - recreateFromProtoNoRethrow(views); - } - - private RemoteViews recreateFromProto(RemoteViews views) { - try { - return recreateFromProtoNoRethrow(views); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private RemoteViews recreateFromProtoNoRethrow(RemoteViews views) throws Exception { - ProtoOutputStream out = new ProtoOutputStream(); - views.writePreviewToProto(mContext, out); - ProtoInputStream in = new ProtoInputStream(out.getBytes()); - return RemoteViews.createPreviewFromProto(mContext, in); - } -} diff --git a/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java b/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java index d153edd9da39..46dfcb5247fb 100644 --- a/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java +++ b/core/tests/coretests/src/android/window/WindowOnBackInvokedDispatcherTest.java @@ -44,6 +44,7 @@ import android.view.IWindowSession; import android.view.ImeBackAnimationController; import android.view.MotionEvent; +import androidx.annotation.NonNull; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; @@ -61,6 +62,10 @@ import org.mockito.junit.MockitoRule; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; /** * Tests for {@link WindowOnBackInvokedDispatcherTest} @@ -117,6 +122,8 @@ public class WindowOnBackInvokedDispatcherTest { mDispatcher = new WindowOnBackInvokedDispatcher(mContext, Looper.getMainLooper()); mDispatcher.attachToWindow(mWindowSession, mWindow, null, mImeBackAnimationController); + clearInvocations(mCallback1); + clearInvocations(mCallback2); } private void waitForIdle() { @@ -472,6 +479,102 @@ public class WindowOnBackInvokedDispatcherTest { verifyImeCallackRegistrations(); } + @Test + public void onBackInvoked_notCalledAfterCallbackUnregistration() + throws RemoteException, InterruptedException { + // Setup a callback that unregisters itself after the gesture is finished but before the + // fling animation has ended + final AtomicBoolean unregisterOnProgressUpdate = new AtomicBoolean(false); + final AtomicInteger onBackInvokedCalled = new AtomicInteger(0); + final CountDownLatch onBackCancelledCalled = new CountDownLatch(1); + OnBackAnimationCallback onBackAnimationCallback = new OnBackAnimationCallback() { + @Override + public void onBackProgressed(@NonNull BackEvent backEvent) { + if (unregisterOnProgressUpdate.get()) { + mDispatcher.unregisterOnBackInvokedCallback(this); + } + } + + @Override + public void onBackInvoked() { + onBackInvokedCalled.getAndIncrement(); + } + + @Override + public void onBackCancelled() { + onBackCancelledCalled.countDown(); + } + }; + mDispatcher.registerOnBackInvokedCallback(PRIORITY_DEFAULT, onBackAnimationCallback); + OnBackInvokedCallbackInfo callbackInfo = assertSetCallbackInfo(); + + callbackInfo.getCallback().onBackStarted(mBackEvent); + waitForIdle(); + assertTrue(mDispatcher.mProgressAnimator.isBackAnimationInProgress()); + + // simulate back gesture finished and onBackInvoked() called, which starts the fling slow + // down animation. By setting unregisterOnProgressUpdate to true, the callback will + // unregister itself as soon as it receives the first progress event (coming from the + // generated fling slow down events) + unregisterOnProgressUpdate.set(true); + callbackInfo.getCallback().onBackInvoked(); + waitForIdle(); + onBackCancelledCalled.await(1000, TimeUnit.MILLISECONDS); + + // verify that onBackCancelled is called in this case instead of onBackInvoked + assertEquals(0, onBackCancelledCalled.getCount()); + assertEquals(0, onBackInvokedCalled.get()); + verify(mWindowSession).setOnBackInvokedCallbackInfo(Mockito.eq(mWindow), isNull()); + assertFalse(mDispatcher.mProgressAnimator.isBackAnimationInProgress()); + } + + @Test + public void onBackCancelled_calledOnceAfterCallbackUnregistration() + throws RemoteException, InterruptedException { + // Setup a callback that unregisters itself after the gesture is finished but before the + // progress is animated back to 0f + final AtomicBoolean unregisterOnProgressUpdate = new AtomicBoolean(false); + final AtomicInteger onBackInvokedCalled = new AtomicInteger(0); + final CountDownLatch onBackCancelledCalled = new CountDownLatch(1); + OnBackAnimationCallback onBackAnimationCallback = new OnBackAnimationCallback() { + @Override + public void onBackProgressed(@NonNull BackEvent backEvent) { + if (unregisterOnProgressUpdate.get()) { + mDispatcher.unregisterOnBackInvokedCallback(this); + } + } + + @Override + public void onBackInvoked() { + onBackInvokedCalled.getAndIncrement(); + } + + @Override + public void onBackCancelled() { + onBackCancelledCalled.countDown(); + } + }; + mDispatcher.registerOnBackInvokedCallback(PRIORITY_DEFAULT, onBackAnimationCallback); + OnBackInvokedCallbackInfo callbackInfo = assertSetCallbackInfo(); + + callbackInfo.getCallback().onBackStarted(mBackEvent); + waitForIdle(); + assertTrue(mDispatcher.mProgressAnimator.isBackAnimationInProgress()); + + // simulate back gesture finished and onBackCancelled() called, which starts the progress + // animation back to 0f. On the first progress emission, the callback will unregister itself + unregisterOnProgressUpdate.set(true); + callbackInfo.getCallback().onBackCancelled(); + waitForIdle(); + onBackCancelledCalled.await(1000, TimeUnit.MILLISECONDS); + + // verify that onBackCancelled is called exactly once in this case + assertEquals(0, onBackCancelledCalled.getCount()); + assertEquals(0, onBackInvokedCalled.get()); + verify(mWindowSession).setOnBackInvokedCallbackInfo(Mockito.eq(mWindow), isNull()); + assertFalse(mDispatcher.mProgressAnimator.isBackAnimationInProgress()); + } + private void verifyImeCallackRegistrations() throws RemoteException { // verify default callback is replaced with ImeBackAnimationController mDispatcher.registerOnBackInvokedCallbackUnchecked(mDefaultImeCallback, PRIORITY_DEFAULT); diff --git a/core/tests/devicestatetests/Android.bp b/core/tests/devicestatetests/Android.bp index 60848b31eaec..a3303c6ca6d7 100644 --- a/core/tests/devicestatetests/Android.bp +++ b/core/tests/devicestatetests/Android.bp @@ -32,7 +32,7 @@ android_test { "platform-test-annotations", "testng", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", } diff --git a/core/tests/featureflagtests/Android.bp b/core/tests/featureflagtests/Android.bp index d9f608ea34c4..c08066720477 100644 --- a/core/tests/featureflagtests/Android.bp +++ b/core/tests/featureflagtests/Android.bp @@ -19,8 +19,8 @@ android_test { "androidx.test.rules", ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], platform_apis: true, certificate: "platform", diff --git a/core/tests/hdmitests/Android.bp b/core/tests/hdmitests/Android.bp index e11bc552cf15..7a5757cc7a85 100644 --- a/core/tests/hdmitests/Android.bp +++ b/core/tests/hdmitests/Android.bp @@ -32,7 +32,7 @@ android_test { "platform-test-annotations", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", test_suites: ["device-tests"], diff --git a/core/tests/hosttests/test-apps/DownloadManagerTestApp/Android.bp b/core/tests/hosttests/test-apps/DownloadManagerTestApp/Android.bp index d439124c72cb..c9fdec0e61fd 100644 --- a/core/tests/hosttests/test-apps/DownloadManagerTestApp/Android.bp +++ b/core/tests/hosttests/test-apps/DownloadManagerTestApp/Android.bp @@ -27,8 +27,8 @@ android_test { "junit", ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], platform_apis: true, diff --git a/core/tests/mockingcoretests/Android.bp b/core/tests/mockingcoretests/Android.bp index 7fd813a7421a..8657b8ca52e1 100644 --- a/core/tests/mockingcoretests/Android.bp +++ b/core/tests/mockingcoretests/Android.bp @@ -44,9 +44,9 @@ android_test { ], libs: [ - "android.test.base", - "android.test.mock", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", + "android.test.runner.stubs.system", ], // These are not normally accessible from apps so they must be explicitly included. diff --git a/core/tests/packagemanagertests/Android.bp b/core/tests/packagemanagertests/Android.bp index 5ce71c902c7c..8ff499826866 100644 --- a/core/tests/packagemanagertests/Android.bp +++ b/core/tests/packagemanagertests/Android.bp @@ -17,7 +17,7 @@ android_test { "frameworks-base-testutils", "mockito-target-minus-junit4", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", } diff --git a/core/tests/packagemonitortests/Android.bp b/core/tests/packagemonitortests/Android.bp index b08850e90d28..c3b084e4368e 100644 --- a/core/tests/packagemonitortests/Android.bp +++ b/core/tests/packagemonitortests/Android.bp @@ -34,7 +34,7 @@ android_test { "mockito-target-minus-junit4", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", test_suites: ["device-tests"], @@ -52,7 +52,7 @@ android_test { "compatibility-device-util-axt", "frameworks-base-testutils", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", test_suites: ["device-tests"], diff --git a/core/tests/privacytests/Android.bp b/core/tests/privacytests/Android.bp index 4e24cd5d91cb..ac9cede84483 100644 --- a/core/tests/privacytests/Android.bp +++ b/core/tests/privacytests/Android.bp @@ -16,7 +16,7 @@ android_test { "androidx.test.rules", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", test_suites: ["device-tests"], diff --git a/core/tests/screenshothelpertests/Android.bp b/core/tests/screenshothelpertests/Android.bp index 3c71e6e4247b..49c3ee94bfd0 100644 --- a/core/tests/screenshothelpertests/Android.bp +++ b/core/tests/screenshothelpertests/Android.bp @@ -25,9 +25,9 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], platform_apis: true, diff --git a/core/tests/systemproperties/Android.bp b/core/tests/systemproperties/Android.bp index ed52cccfb9b9..ed99a1f5cc4a 100644 --- a/core/tests/systemproperties/Android.bp +++ b/core/tests/systemproperties/Android.bp @@ -20,8 +20,8 @@ android_test { "ravenwood-junit", ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], platform_apis: true, certificate: "platform", @@ -37,8 +37,8 @@ android_ravenwood_test { "ravenwood-junit", ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], srcs: [ "src/**/*.java", diff --git a/core/tests/timetests/Android.bp b/core/tests/timetests/Android.bp index c33d5ee5008b..04bbe692e488 100644 --- a/core/tests/timetests/Android.bp +++ b/core/tests/timetests/Android.bp @@ -19,7 +19,7 @@ android_test { "platform-test-annotations", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], certificate: "platform", test_suites: ["device-tests"], } diff --git a/core/tests/utillib/Android.bp b/core/tests/utillib/Android.bp index 1d5c16c7a536..b6f046bd12d5 100644 --- a/core/tests/utillib/Android.bp +++ b/core/tests/utillib/Android.bp @@ -28,5 +28,5 @@ java_library { srcs: ["**/*.java"], static_libs: ["junit"], - libs: ["android.test.base"], + libs: ["android.test.base.stubs"], } diff --git a/core/tests/utiltests/Android.bp b/core/tests/utiltests/Android.bp index f5563a710563..cdc8a9e06d0b 100644 --- a/core/tests/utiltests/Android.bp +++ b/core/tests/utiltests/Android.bp @@ -39,9 +39,9 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], platform_apis: true, @@ -55,7 +55,7 @@ android_test { android_ravenwood_test { name: "FrameworksUtilTestsRavenwood", libs: [ - "android.test.mock", + "android.test.mock.stubs.system", ], static_libs: [ "androidx.annotation_annotation", diff --git a/core/tests/vibrator/Android.bp b/core/tests/vibrator/Android.bp index 920ab5914548..848e079a2270 100644 --- a/core/tests/vibrator/Android.bp +++ b/core/tests/vibrator/Android.bp @@ -25,9 +25,9 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs", + "android.test.base.stubs", + "android.test.mock.stubs", "framework", "framework-res", ], diff --git a/core/tests/vibrator/src/android/os/VibratorInfoTest.java b/core/tests/vibrator/src/android/os/VibratorInfoTest.java index 73cd4647415d..c81081075859 100644 --- a/core/tests/vibrator/src/android/os/VibratorInfoTest.java +++ b/core/tests/vibrator/src/android/os/VibratorInfoTest.java @@ -139,6 +139,35 @@ public class VibratorInfoTest { } @Test + public void testAreEnvelopeEffectsSupported() { + VibratorInfo noCapabilities = new VibratorInfo.Builder(TEST_VIBRATOR_ID).build(); + assertFalse(noCapabilities.areEnvelopeEffectsSupported()); + VibratorInfo envelopeEffectCapability = new VibratorInfo.Builder(TEST_VIBRATOR_ID) + .setCapabilities(IVibrator.CAP_COMPOSE_PWLE_EFFECTS_V2) + .build(); + assertTrue(envelopeEffectCapability.areEnvelopeEffectsSupported()); + } + + @Test + public void testEnvelopeEffectLimits() { + VibratorInfo info = new VibratorInfo.Builder(TEST_VIBRATOR_ID) + .setMaxEnvelopeEffectSize(16) + .setMinEnvelopeEffectControlPointDurationMillis(20) + .setMaxEnvelopeEffectControlPointDurationMillis(1_000) + .build(); + assertEquals(16, info.getMaxEnvelopeEffectSize()); + assertEquals(20, info.getMinEnvelopeEffectControlPointDurationMillis()); + assertEquals(1_000, info.getMaxEnvelopeEffectControlPointDurationMillis()); + assertEquals(16_000, info.getMaxEnvelopeEffectDurationMillis()); + + VibratorInfo emptyInfo = new VibratorInfo.Builder(TEST_VIBRATOR_ID).build(); + assertEquals(0, emptyInfo.getMaxEnvelopeEffectSize()); + assertEquals(0, emptyInfo.getMinEnvelopeEffectControlPointDurationMillis()); + assertEquals(0, emptyInfo.getMaxEnvelopeEffectControlPointDurationMillis()); + assertEquals(0, emptyInfo.getMaxEnvelopeEffectDurationMillis()); + } + + @Test public void testGetDefaultBraking_returnsFirstSupportedBraking() { assertEquals(Braking.NONE, new VibratorInfo.Builder( TEST_VIBRATOR_ID).build().getDefaultBraking()); @@ -262,17 +291,20 @@ public class VibratorInfoTest { VibratorInfo.Builder completeBuilder2 = new VibratorInfo.Builder(TEST_VIBRATOR_ID + 2); for (VibratorInfo.Builder builder : - new VibratorInfo.Builder[] {completeBuilder, completeBuilder2}) { + new VibratorInfo.Builder[]{completeBuilder, completeBuilder2}) { builder.setCapabilities(IVibrator.CAP_AMPLITUDE_CONTROL) - .setSupportedEffects(VibrationEffect.EFFECT_CLICK) - .setSupportedPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK, 20) - .setPrimitiveDelayMax(100) - .setCompositionSizeMax(10) - .setSupportedBraking(Braking.CLAB) - .setPwlePrimitiveDurationMax(50) - .setPwleSizeMax(20) - .setQFactor(2f) - .setFrequencyProfile(TEST_FREQUENCY_PROFILE); + .setSupportedEffects(VibrationEffect.EFFECT_CLICK) + .setSupportedPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK, 20) + .setPrimitiveDelayMax(100) + .setCompositionSizeMax(10) + .setSupportedBraking(Braking.CLAB) + .setPwlePrimitiveDurationMax(50) + .setPwleSizeMax(20) + .setQFactor(2f) + .setFrequencyProfile(TEST_FREQUENCY_PROFILE) + .setMaxEnvelopeEffectSize(16) + .setMinEnvelopeEffectControlPointDurationMillis(20) + .setMaxEnvelopeEffectControlPointDurationMillis(1_000); } VibratorInfo complete = completeBuilder.build(); diff --git a/core/tests/vibrator/src/android/os/vibrator/VibrationConfigTest.java b/core/tests/vibrator/src/android/os/vibrator/VibrationConfigTest.java new file mode 100644 index 000000000000..a2ff9d77674a --- /dev/null +++ b/core/tests/vibrator/src/android/os/vibrator/VibrationConfigTest.java @@ -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 android.os.vibrator; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.when; + +import android.content.res.Resources; + +import com.android.internal.R; + +import org.junit.Rule; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; + +import java.util.HashMap; +import java.util.Map; + +public class VibrationConfigTest { + + @Rule + public MockitoRule rule = MockitoJUnit.rule(); + + @Mock + private Resources mResourcesMock; + + private final Map<String, String> mSystemProperties = new HashMap<>(); + + @Test + public void getDefaultVibrationAmplitude_returnsConfiguredAmplitude() { + when(mResourcesMock.getInteger(R.integer.config_defaultVibrationAmplitude)).thenReturn(1); + assertThat(createConfig().getDefaultVibrationAmplitude()).isEqualTo(1); + + when(mResourcesMock.getInteger(R.integer.config_defaultVibrationAmplitude)).thenReturn(123); + assertThat(createConfig().getDefaultVibrationAmplitude()).isEqualTo(123); + + when(mResourcesMock.getInteger(R.integer.config_defaultVibrationAmplitude)).thenReturn(255); + assertThat(createConfig().getDefaultVibrationAmplitude()).isEqualTo(255); + } + + @Test + public void getDefaultVibrationAmplitude_invalidValue_returnsMaxAmplitude() { + when(mResourcesMock.getInteger(R.integer.config_defaultVibrationAmplitude)).thenReturn(-1); + assertThat(createConfig().getDefaultVibrationAmplitude()).isEqualTo(255); + + when(mResourcesMock.getInteger(R.integer.config_defaultVibrationAmplitude)).thenReturn(0); + assertThat(createConfig().getDefaultVibrationAmplitude()).isEqualTo(255); + + when(mResourcesMock.getInteger(R.integer.config_defaultVibrationAmplitude)).thenReturn(500); + assertThat(createConfig().getDefaultVibrationAmplitude()).isEqualTo(255); + } + + @Test + public void getDefaultVibrationScaleLevelGain_returnsConfiguredGain() { + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, "1.2"); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(1.2f); + + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, "2"); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(2f); + } + + @Test + public void getDefaultVibrationScaleLevelGain_invalidValue_returnsFixedScaleGain() { + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, ""); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(1.4f); + + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, "invalid"); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(1.4f); + + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, "-1"); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(1.4f); + + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, "0.5"); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(1.4f); + + mSystemProperties.put(VibrationConfig.SCALE_LEVEL_GAIN_SYSTEM_PROPERTY, "1.0"); + assertThat(createConfig().getDefaultVibrationScaleLevelGain()).isEqualTo(1.4f); + } + + private VibrationConfig createConfig() { + return new VibrationConfig(mResourcesMock, mSystemProperties::get); + } +} diff --git a/keystore/tests/Android.bp b/keystore/tests/Android.bp index 7de45233494b..0dcf597644ee 100644 --- a/keystore/tests/Android.bp +++ b/keystore/tests/Android.bp @@ -31,6 +31,6 @@ android_test { "mockito-target-minus-junit4", ], platform_apis: true, - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], certificate: "platform", } diff --git a/libs/WindowManager/Jetpack/tests/unittest/Android.bp b/libs/WindowManager/Jetpack/tests/unittest/Android.bp index 139ddda5af3c..bc46b70793cd 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/Android.bp +++ b/libs/WindowManager/Jetpack/tests/unittest/Android.bp @@ -47,9 +47,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], // These are not normally accessible from apps so they must be explicitly included. diff --git a/libs/WindowManager/Shell/multivalentTests/Android.bp b/libs/WindowManager/Shell/multivalentTests/Android.bp index 1ad19c9f3033..ee0d5bbed324 100644 --- a/libs/WindowManager/Shell/multivalentTests/Android.bp +++ b/libs/WindowManager/Shell/multivalentTests/Android.bp @@ -77,8 +77,8 @@ android_test { "platform-test-rules", ], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], jni_libs: [ "libdexmakerjvmtiagent", diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml index 0ed5a72af44c..4dbff346fbac 100644 --- a/libs/WindowManager/Shell/res/values-af/strings.xml +++ b/libs/WindowManager/Shell/res/values-af/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"vou <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> in"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-instellings"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Maak borrel toe"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Gaan na volskerm"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Moenie dat gesprek \'n borrel word nie"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Klets met borrels"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nuwe gesprekke verskyn as swerwende ikone, of borrels Tik op borrel om dit oop te maak. Sleep om dit te skuif."</string> diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml index c4d9158caf46..d70a317bf36c 100644 --- a/libs/WindowManager/Shell/res/values-am/strings.xml +++ b/libs/WindowManager/Shell/res/values-am/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>ን ሰብስብ"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"የ<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ቅንብሮች"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"አረፋን አሰናብት"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ወደ ሙሉ ማያ ገፅ ያንቀሳቅሱ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ውይይቶችን በአረፋ አታሳይ"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"አረፋዎችን በመጠቀም ይወያዩ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"አዲስ ውይይቶች እንደ ተንሳፋፊ አዶዎች ወይም አረፋዎች ሆነው ይታያሉ። አረፋን ለመክፈት መታ ያድርጉ። ለመውሰድ ይጎትቱት።"</string> diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml index ced9ee95a178..cb316e914d2a 100644 --- a/libs/WindowManager/Shell/res/values-ar/strings.xml +++ b/libs/WindowManager/Shell/res/values-ar/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"تصغير <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"إعدادات <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"إغلاق فقاعة المحادثة"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"الانتقال إلى وضع ملء الشاشة"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"عدم عرض المحادثة كفقاعة محادثة"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"الدردشة باستخدام فقاعات المحادثات"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"تظهر المحادثات الجديدة كرموز عائمة أو كفقاعات. انقر لفتح فقاعة المحادثة، واسحبها لتحريكها."</string> diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml index 273d043c4532..9f7fa7cfd0b9 100644 --- a/libs/WindowManager/Shell/res/values-as/strings.xml +++ b/libs/WindowManager/Shell/res/values-as/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> সংকোচন কৰক"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ছেটিং"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"বাবল অগ্ৰাহ্য কৰক"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"পূৰ্ণ স্ক্ৰীনলৈ নিয়ক"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"বাৰ্তালাপ বাবল নকৰিব"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bubbles ব্যৱহাৰ কৰি চাট কৰক"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"নতুন বাৰ্তালাপ উপঙি থকা চিহ্নসমূহ অথবা bubbles হিচাপে প্ৰদর্শিত হয়। Bubbles খুলিবলৈ টিপক। এইটো স্থানান্তৰ কৰিবলৈ টানি নিয়ক।"</string> diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml index 81bb544217d5..90962f0b5c79 100644 --- a/libs/WindowManager/Shell/res/values-az/strings.xml +++ b/libs/WindowManager/Shell/res/values-az/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"yığcamlaşdırın: <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ayarları"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Yumrucuğu ləğv edin"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Tam ekrana keçin"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Söhbəti yumrucuqda göstərmə"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Yumrucuqlardan istifadə edərək söhbət edin"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Yeni söhbətlər üzən nişanlar və ya yumrucuqlar kimi görünür. Yumrucuğu açmaq üçün toxunun. Hərəkət etdirmək üçün sürüşdürü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 898b8445d0e1..9c6ed6b95b80 100644 --- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml +++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"skupite oblačić <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Podešavanja za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Prebaci na ceo ekran"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne koristi oblačiće za konverzaciju"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Ćaskajte u oblačićima"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nove konverzacije se prikazuju kao plutajuće ikone ili oblačići. Dodirnite da biste otvorili oblačić. Prevucite da biste ga premestili."</string> diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml index c3407296a007..e8b24bdd7bd5 100644 --- a/libs/WindowManager/Shell/res/values-be/strings.xml +++ b/libs/WindowManager/Shell/res/values-be/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>: згарнуць"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Налады \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\""</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Адхіліць апавяшчэнне"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Адкрыць у поўнаэкранным рэжыме"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Не паказваць размову ў выглядзе ўсплывальных апавяшчэнняў"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Усплывальныя чаты"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Новыя размовы будуць паказвацца як рухомыя значкі ці ўсплывальныя чаты. Націсніце, каб адкрыць усплывальны чат. Перацягніце яго, каб перамясціць."</string> diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml index 076a815a25ae..1f188f6ec6f9 100644 --- a/libs/WindowManager/Shell/res/values-bg/strings.xml +++ b/libs/WindowManager/Shell/res/values-bg/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"свиване на <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Настройки за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Отхвърляне на балончетата"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Преместване на цял екран"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Без балончета за разговора"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Чат с балончета"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Новите разговори се показват като плаващи икони, или балончета. Докоснете балонче, за да го отворите, или го плъзнете, за да го преместите."</string> diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml index b0d66967bbb4..b572038ada84 100644 --- a/libs/WindowManager/Shell/res/values-bn/strings.xml +++ b/libs/WindowManager/Shell/res/values-bn/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> আড়াল করুন"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> সেটিংস"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"বাবল খারিজ করুন"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ফুল-স্ক্রিন ব্যবহার করুন"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"কথোপকথন বাবল হিসেবে দেখাবে না"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"বাবল ব্যবহার করে চ্যাট করুন"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"নতুন কথোপকথন ভেসে থাকা আইকন বা বাবল হিসেবে দেখানো হয়। বাবল খুলতে ট্যাপ করুন। সেটি সরাতে ধরে টেনে আনুন।"</string> diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml index 0196e5e93a17..630b31b59520 100644 --- a/libs/WindowManager/Shell/res/values-bs/strings.xml +++ b/libs/WindowManager/Shell/res/values-bs/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"sužavanje oblačića <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Postavke aplikacije <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Prikaži preko cijelog ekrana"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nemoj prikazivati razgovor u oblačićima"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatajte koristeći oblačiće"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novi razgovori se prikazuju kao plutajuće ikone ili oblačići. Dodirnite da otvorite oblačić. Prevucite da ga premjestite."</string> diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml index fa4b627805c0..98ec381f9085 100644 --- a/libs/WindowManager/Shell/res/values-ca/strings.xml +++ b/libs/WindowManager/Shell/res/values-ca/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"replega <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Configuració de l\'aplicació <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignora la bombolla"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Mou a pantalla completa"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"No mostris la conversa com a bombolla"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Xateja amb bombolles"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Les converses noves es mostren com a icones flotants o bombolles. Toca per obrir una bombolla. Arrossega-la per moure-la."</string> diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml index 3956fcacbb50..08d5bb51edff 100644 --- a/libs/WindowManager/Shell/res/values-cs/strings.xml +++ b/libs/WindowManager/Shell/res/values-cs/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"sbalit <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Nastavení <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Zavřít bublinu"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Přejít na celou obrazovku"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nezobrazovat konverzaci v bublinách"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatujte pomocí bublin"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nové konverzace se zobrazují jako plovoucí ikony, neboli bubliny. Klepnutím bublinu otevřete. Přetažením ji posunete."</string> diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml index afe4a1ab877c..ae1bb9afb1ad 100644 --- a/libs/WindowManager/Shell/res/values-da/strings.xml +++ b/libs/WindowManager/Shell/res/values-da/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"skjul <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Indstillinger for <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Afvis boble"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Flyt til fuld skærm"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Vis ikke samtaler i bobler"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat ved hjælp af bobler"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nye samtaler vises som svævende ikoner eller bobler. Tryk for at åbne boblen. Træk for at flytte den."</string> diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml index 1e503393eb8d..abbfa66be780 100644 --- a/libs/WindowManager/Shell/res/values-de/strings.xml +++ b/libs/WindowManager/Shell/res/values-de/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> minimieren"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Einstellungen für <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Bubble schließen"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Vollbildmodus"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Unterhaltung nicht als Bubble anzeigen"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bubbles zum Chatten verwenden"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Neue Unterhaltungen erscheinen als unverankerte Symbole, „Bubbles“ genannt. Wenn du eine Bubble öffnen möchtest, tippe sie an. Wenn du sie verschieben möchtest, zieh an ihr."</string> diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml index 5c3c6dedd632..0f762d37e7c2 100644 --- a/libs/WindowManager/Shell/res/values-el/strings.xml +++ b/libs/WindowManager/Shell/res/values-el/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"σύμπτυξη <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Ρυθμίσεις <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Παράβλ. για συννεφ."</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Μετακίνηση σε πλήρη οθόνη"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Να μην γίνει προβολή της συζήτησης σε συννεφάκια."</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Συζητήστε χρησιμοποιώντας συννεφάκια."</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Οι νέες συζητήσεις εμφανίζονται ως κινούμενα εικονίδια ή συννεφάκια. Πατήστε για να ανοίξετε το συννεφάκι. Σύρετε για να το μετακινήσετε."</string> diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml index 51c69e559f16..2314e6bc3ec0 100644 --- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"collapse <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Move to fullscreen"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string> diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml index 51c69e559f16..2314e6bc3ec0 100644 --- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"collapse <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Move to fullscreen"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string> diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml index 51c69e559f16..2314e6bc3ec0 100644 --- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"collapse <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> settings"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dismiss bubble"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Move to fullscreen"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Don’t bubble conversation"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat using bubbles"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it."</string> diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml index d36a8d14e76b..cfaa0d317ddc 100644 --- a/libs/WindowManager/Shell/res/values-et/strings.xml +++ b/libs/WindowManager/Shell/res/values-et/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"ahenda <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Rakenduse <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> seaded"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Sule mull"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Lülitu täisekraanile"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ära kuva vestlust mullina"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Vestelge mullide abil"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Uued vestlused kuvatakse hõljuvate ikoonidena ehk mullidena. Puudutage mulli avamiseks. Lohistage mulli, et seda liigutada."</string> diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml index 2ee086e47429..509c97e21ddb 100644 --- a/libs/WindowManager/Shell/res/values-eu/strings.xml +++ b/libs/WindowManager/Shell/res/values-eu/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"tolestu <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> aplikazioaren ezarpenak"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Baztertu burbuila"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Joan pantaila osora"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ez erakutsi elkarrizketak burbuila gisa"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Txateatu burbuilen bidez"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Elkarrizketa berriak ikono gainerakor edo burbuila gisa agertzen dira. Sakatu burbuila irekitzeko. Arrasta ezazu mugitzeko."</string> diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml index f4cdd5f6672d..223b67130705 100644 --- a/libs/WindowManager/Shell/res/values-fa/strings.xml +++ b/libs/WindowManager/Shell/res/values-fa/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"جمع کردن <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"تنظیمات <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"رد کردن حبابک"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"رفتن به حالت تمامصفحه"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"مکالمه در حباب نشان داده نشود"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"گپ بااستفاده از حبابکها"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"مکالمههای جدید بهصورت نمادهای شناور یا حبابکها نشان داده میشوند. برای باز کردن حبابکها تکضرب بزنید. برای جابهجایی، آن را بکشید."</string> diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml index 6be2ee2f00b0..9083c4dae9c3 100644 --- a/libs/WindowManager/Shell/res/values-fi/strings.xml +++ b/libs/WindowManager/Shell/res/values-fi/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"tiivistä <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>: asetukset"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ohita kupla"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Siirrä koko näytölle"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Älä näytä kuplia keskusteluista"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chattaile kuplien avulla"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Uudet keskustelut näkyvät kelluvina kuvakkeina tai kuplina. Avaa kupla napauttamalla. Siirrä sitä vetämällä."</string> diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml index 54700990bf6c..2f284ad333cd 100644 --- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"réduire <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Paramètres <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignorer la bulle"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Passez en plein écran"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne pas afficher les conversations dans des bulles"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Clavarder en utilisant des bulles"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Les nouvelles conversations s\'affichent sous forme d\'icônes flottantes (de bulles). Touchez une bulle pour l\'ouvrir. Faites-la glisser pour la déplacer."</string> diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml index 36ad52108337..5126aa29af95 100644 --- a/libs/WindowManager/Shell/res/values-gl/strings.xml +++ b/libs/WindowManager/Shell/res/values-gl/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"contraer <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Configuración de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignorar burbulla"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Cambiar á pantalla completa"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Non mostrar a conversa como burbulla"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatear usando burbullas"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"As conversas novas aparecen como iconas flotantes ou burbullas. Toca para abrir a burbulla e arrastra para movela."</string> diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml index 868ef5b077ae..3418637283c1 100644 --- a/libs/WindowManager/Shell/res/values-gu/strings.xml +++ b/libs/WindowManager/Shell/res/values-gu/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> નાનું કરો"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> સેટિંગ"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"બબલને છોડી દો"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"પૂર્ણસ્ક્રીન પર ખસો"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"વાતચીતને બબલ કરશો નહીં"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"બબલનો ઉપયોગ કરીને ચૅટ કરો"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"નવી વાતચીત ફ્લોટિંગ આઇકન અથવા બબલ જેવી દેખાશે. બબલને ખોલવા માટે ટૅપ કરો. તેને ખસેડવા માટે ખેંચો."</string> diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml index 31c7307688af..8eaa86fe2710 100644 --- a/libs/WindowManager/Shell/res/values-hi/strings.xml +++ b/libs/WindowManager/Shell/res/values-hi/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> को छोटा करें"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> की सेटिंग"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"बबल खारिज करें"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"फ़ुलस्क्रीन पर मूव करें"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"बातचीत को बबल न करें"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"बबल्स का इस्तेमाल करके चैट करें"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"नई बातचीत फ़्लोटिंग आइकॉन या बबल्स की तरह दिखेंगी. बबल को खोलने के लिए टैप करें. इसे एक जगह से दूसरी जगह ले जाने के लिए खींचें और छोड़ें."</string> diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml index d99a65d89107..5427a9b357f1 100644 --- a/libs/WindowManager/Shell/res/values-hr/strings.xml +++ b/libs/WindowManager/Shell/res/values-hr/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"sažmite oblačić <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Postavke za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Prebaci na cijeli zaslon"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Zaustavi razgovor u oblačićima"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Oblačići u chatu"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novi razgovori pojavljuju se kao pomične ikone ili oblačići. Dodirnite za otvaranje oblačića. Povucite da biste ga premjestili."</string> diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml index bed760eb5ed7..5b337ea7b41a 100644 --- a/libs/WindowManager/Shell/res/values-hu/strings.xml +++ b/libs/WindowManager/Shell/res/values-hu/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> összecsukása"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> beállításai"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Buborék elvetése"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Áthelyezés teljes képernyőre"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne jelenjen meg a beszélgetés buborékban"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Buborékokat használó csevegés"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Az új beszélgetések lebegő ikonként, vagyis buborékként jelennek meg. A buborék megnyitásához koppintson rá. Áthelyezéshez húzza a kívánt helyre."</string> diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml index fcb725432286..ef38307dc920 100644 --- a/libs/WindowManager/Shell/res/values-hy/strings.xml +++ b/libs/WindowManager/Shell/res/values-hy/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>. ծալել"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> – կարգավորումներ"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Փակել ամպիկը"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Տեղափոխել լիաէկրան ռեժիմ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Զրույցը չցուցադրել ամպիկի տեսքով"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Զրույցի ամպիկներ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Նոր զրույցները կհայտնվեն լողացող պատկերակների կամ ամպիկների տեսքով։ Հպեք՝ ամպիկը բացելու համար։ Քաշեք՝ այն տեղափոխելու համար։"</string> diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml index 85a9bbf253a5..fcb3e7200403 100644 --- a/libs/WindowManager/Shell/res/values-in/strings.xml +++ b/libs/WindowManager/Shell/res/values-in/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"ciutkan <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Setelan <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Tutup balon"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Pindahkan ke layar penuh"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Jangan gunakan percakapan balon"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat dalam tampilan balon"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Percakapan baru muncul sebagai ikon mengambang, atau balon. Ketuk untuk membuka balon. Tarik untuk memindahkannya."</string> diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml index 8041162f7b5c..9755083d853d 100644 --- a/libs/WindowManager/Shell/res/values-is/strings.xml +++ b/libs/WindowManager/Shell/res/values-is/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"minnka <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Stillingar <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Loka blöðru"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Færa í allan skjáinn"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ekki setja samtal í blöðru"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Spjalla með blöðrum"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Ný samtöl birtast sem fljótandi tákn eða blöðrur. Ýttu til að opna blöðru. Dragðu hana til að færa."</string> diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml index e1854fa16303..ddbb89ab2211 100644 --- a/libs/WindowManager/Shell/res/values-iw/strings.xml +++ b/libs/WindowManager/Shell/res/values-iw/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"כיווץ של <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"הגדרות <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"סגירת בועה"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"הצגה במסך מלא"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"אין להציג בועות לשיחה"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"לדבר בבועות"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"שיחות חדשות מופיעות כסמלים צפים, או בועות. יש להקיש כדי לפתוח בועה. יש לגרור כדי להזיז אותה."</string> diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml index 1f1ddc71efa8..82848371d45d 100644 --- a/libs/WindowManager/Shell/res/values-ja/strings.xml +++ b/libs/WindowManager/Shell/res/values-ja/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>を閉じます"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> の設定"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"バブルを閉じる"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"全画面表示に移動する"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"会話をバブルで表示しない"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"チャットでバブルを使う"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"新しい会話はフローティング アイコン(バブル)として表示されます。タップするとバブルが開きます。ドラッグしてバブルを移動できます。"</string> diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml index e201a2023d33..82828d81d61a 100644 --- a/libs/WindowManager/Shell/res/values-ka/strings.xml +++ b/libs/WindowManager/Shell/res/values-ka/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>-ის ჩაკეცვა"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-ის პარამეტრები"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ბუშტის დახურვა"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"სრულეკრანიან რეჟიმზე გადატანა"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"აიკრძალოს საუბრის ბუშტები"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ჩეთი ბუშტების გამოყენებით"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"ახალი საუბრები გამოჩნდება როგორც მოტივტივე ხატულები ან ბუშტები. შეეხეთ ბუშტის გასახსნელად. გადაიტანეთ ჩავლებით."</string> diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml index 1c335dd4714d..af4e4f33492d 100644 --- a/libs/WindowManager/Shell/res/values-kk/strings.xml +++ b/libs/WindowManager/Shell/res/values-kk/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>: жию"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> параметрлері"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Қалқымалы хабарды жабу"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Толық экранға ауысу"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Әңгіменің қалқыма хабары көрсетілмесін"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Қалқыма хабарлар арқылы сөйлесу"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Жаңа әңгімелер қалқыма белгішелер немесе хабарлар түрінде көрсетіледі. Қалқыма хабарды ашу үшін түртіңіз. Жылжыту үшін сүйреңіз."</string> diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml index d0cceee8aba5..c3a38006374b 100644 --- a/libs/WindowManager/Shell/res/values-km/strings.xml +++ b/libs/WindowManager/Shell/res/values-km/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"បង្រួម <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"ការកំណត់ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ច្រានចោលពពុះ"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ផ្លាស់ទីទៅអេក្រង់ពេញ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"កុំបង្ហាញការសន្ទនាជាពពុះ"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ជជែកដោយប្រើពពុះ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"ការសន្ទនាថ្មីៗបង្ហាញជាពពុះ ឬរូបអណ្ដែត។ ចុច ដើម្បីបើកពពុះ។ អូស ដើម្បីផ្លាស់ទីពពុះនេះ។"</string> diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml index 63b5c68a96fc..aa8cec582a28 100644 --- a/libs/WindowManager/Shell/res/values-kn/strings.xml +++ b/libs/WindowManager/Shell/res/values-kn/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ಅನ್ನು ಕುಗ್ಗಿಸಿ"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ಬಬಲ್ ವಜಾಗೊಳಿಸಿ"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ಫುಲ್ಸ್ಕ್ರೀನ್ಗೆ ಸರಿಸಿ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ಸಂಭಾಷಣೆಯನ್ನು ಬಬಲ್ ಮಾಡಬೇಡಿ"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ಬಬಲ್ಸ್ ಬಳಸಿ ಚಾಟ್ ಮಾಡಿ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"ಹೊಸ ಸಂಭಾಷಣೆಗಳು ತೇಲುವ ಐಕಾನ್ಗಳು ಅಥವಾ ಬಬಲ್ಸ್ ಆಗಿ ಗೋಚರಿಸುತ್ತವೆ. ಬಬಲ್ ತೆರೆಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಅದನ್ನು ಡ್ರ್ಯಾಗ್ ಮಾಡಲು ಎಳೆಯಿರಿ."</string> diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml index b5efd10ad19f..fc2a1b91760a 100644 --- a/libs/WindowManager/Shell/res/values-ko/strings.xml +++ b/libs/WindowManager/Shell/res/values-ko/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> 접기"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> 설정"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"대화창 닫기"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"전체 화면으로 이동"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"대화를 대화창으로 표시하지 않기"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"대화창으로 채팅하기"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"새로운 대화가 플로팅 아이콘인 대화창으로 표시됩니다. 대화창을 열려면 탭하세요. 드래그하여 이동할 수 있습니다."</string> diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml index e001efe9296a..c294725e8ff9 100644 --- a/libs/WindowManager/Shell/res/values-ky/strings.xml +++ b/libs/WindowManager/Shell/res/values-ky/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> жыйыштыруу"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> параметрлери"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Калкып чыкма билдирмени жабуу"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Толук экранга өтүү"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Жазышууда калкып чыкма билдирмелер көрүнбөсүн"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Калкып чыкма билдирмелер аркылуу маектешүү"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Жаңы жазышуулар калкыма сүрөтчөлөр же калкып чыкма билдирмелер түрүндө көрүнөт. Калкып чыкма билдирмелерди ачуу үчүн тийип коюңуз. Жылдыруу үчүн сүйрөңүз."</string> diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml index 029c95b18ce9..7d2f999f4975 100644 --- a/libs/WindowManager/Shell/res/values-lo/strings.xml +++ b/libs/WindowManager/Shell/res/values-lo/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"ຫຍໍ້ <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ລົງ"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"ການຕັ້ງຄ່າ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ປິດຟອງໄວ້"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ຍ້າຍໄປໂໝດເຕັມຈໍ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ຢ່າໃຊ້ຟອງໃນການສົນທະນາ"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ສົນທະນາໂດຍໃຊ້ຟອງ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"ການສົນທະນາໃໝ່ຈະປາກົດເປັນໄອຄອນ ຫຼື ຟອງແບບລອຍ. ແຕະເພື່ອເປີດຟອງ. ລາກເພື່ອຍ້າຍມັນ."</string> diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml index 791ddcd48933..be446a6d3fba 100644 --- a/libs/WindowManager/Shell/res/values-lt/strings.xml +++ b/libs/WindowManager/Shell/res/values-lt/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"sutraukti „<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>“"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ nustatymai"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Atsisakyti burbulo"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Pereiti į viso ekrano režimą"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nerodyti pokalbio burbule"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Pokalbis naudojant burbulus"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nauji pokalbiai rodomi kaip slankiosios piktogramos arba burbulai. Palieskite, kad atidarytumėte burbulą. Vilkite, kad perkeltumėte."</string> diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml index 8a86687ebe8e..ed0c05e0a393 100644 --- a/libs/WindowManager/Shell/res/values-lv/strings.xml +++ b/libs/WindowManager/Shell/res/values-lv/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"Sakļaut “<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>”"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Lietotnes <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iestatījumi"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Nerādīt burbuli"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Pārvietot uz pilnekrāna režīmu"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nerādīt sarunu burbuļos"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Tērzēšana, izmantojot burbuļus"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Jaunas sarunas tiek rādītas kā peldošas ikonas vai burbuļi. Pieskarieties, lai atvērtu burbuli. Velciet, lai to pārvietotu."</string> diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml index 3a6b2f0a1e4f..9b24b7fa567a 100644 --- a/libs/WindowManager/Shell/res/values-mk/strings.xml +++ b/libs/WindowManager/Shell/res/values-mk/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"собери <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Поставки за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Отфрли балонче"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Префрлете на цел екран"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Не прикажувај го разговорот во балончиња"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Разговор во балончиња"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Новите разговори ќе се појавуваат како лебдечки икони или балончиња. Допрете за отворање на балончето. Повлечете за да го преместите."</string> diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml index 26e4a4661d89..ac67f8d62339 100644 --- a/libs/WindowManager/Shell/res/values-ml/strings.xml +++ b/libs/WindowManager/Shell/res/values-ml/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ചുരുക്കുക"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ക്രമീകരണം"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ബബിൾ ഡിസ്മിസ് ചെയ്യൂ"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"പൂർണ്ണസ്ക്രീനിലേക്ക് നീങ്ങുക"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"സംഭാഷണം ബബിൾ ചെയ്യരുത്"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ബബിളുകൾ ഉപയോഗിച്ച് ചാറ്റ് ചെയ്യുക"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"പുതിയ സംഭാഷണങ്ങൾ ഫ്ലോട്ടിംഗ് ഐക്കണുകളോ ബബിളുകളോ ആയി ദൃശ്യമാവുന്നു. ബബിൾ തുറക്കാൻ ടാപ്പ് ചെയ്യൂ. ഇത് നീക്കാൻ വലിച്ചിടുക."</string> diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml index 505a4ad66c96..6d5deb3a1a32 100644 --- a/libs/WindowManager/Shell/res/values-mn/strings.xml +++ b/libs/WindowManager/Shell/res/values-mn/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>-г хураах"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-н тохиргоо"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Бөмбөлгийг хаах"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Бүтэн дэлгэц рүү очих"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Харилцан яриаг бүү бөмбөлөг болго"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Бөмбөлөг ашиглан чатлаарай"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Шинэ харилцан яриа нь хөвөгч дүрс тэмдэг эсвэл бөмбөлөг хэлбэрээр харагддаг. Бөмбөлгийг нээхийн тулд товшино уу. Түүнийг зөөхийн тулд чирнэ үү."</string> diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml index cc35f11fa308..49747f21902c 100644 --- a/libs/WindowManager/Shell/res/values-mr/strings.xml +++ b/libs/WindowManager/Shell/res/values-mr/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> कोलॅप्स करा"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> सेटिंग्ज"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"बबल डिसमिस करा"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"फुलस्क्रीनवर हलवा"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"संभाषणाला बबल करू नका"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"बबल वापरून चॅट करा"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"नवीन संभाषणे फ्लोटिंग आयकन किंवा बबल म्हणून दिसतात. बबल उघडण्यासाठी टॅप करा. हे हलवण्यासाठी ड्रॅग करा."</string> diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml index 61d66144cb0c..dec389327c3c 100644 --- a/libs/WindowManager/Shell/res/values-ms/strings.xml +++ b/libs/WindowManager/Shell/res/values-ms/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"kuncupkan <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Tetapan <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ketepikan gelembung"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Alihkan kepada skrin penuh"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Jangan jadikan perbualan dalam bentuk gelembung"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bersembang menggunakan gelembung"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Perbualan baharu muncul sebagai ikon terapung atau gelembung. Ketik untuk membuka gelembung. Seret untuk mengalihkan gelembung tersebut."</string> diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml index 7841e07aa949..908ef812ab53 100644 --- a/libs/WindowManager/Shell/res/values-my/strings.xml +++ b/libs/WindowManager/Shell/res/values-my/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ကို ချုံ့ရန်"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ဆက်တင်များ"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ပူဖောင်းကွက် ပယ်ရန်"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ဖန်သားပြင်အပြည့်သို့ ရွှေ့ရန်"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"စကားဝိုင်းကို ပူဖောင်းကွက် မပြုလုပ်ပါနှင့်"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ပူဖောင်းကွက် သုံး၍ ချတ်လုပ်ခြင်း"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"စကားဝိုင်းအသစ်များကို မျောနေသည့် သင်္ကေတများ သို့မဟုတ် ပူဖောင်းကွက်များအဖြစ် မြင်ရပါမည်။ ပူဖောင်းကွက်ကိုဖွင့်ရန် တို့ပါ။ ရွှေ့ရန် ၎င်းကို ဖိဆွဲပါ။"</string> diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml index ea2ae1ba1db4..01ca4ed6fbbb 100644 --- a/libs/WindowManager/Shell/res/values-nb/strings.xml +++ b/libs/WindowManager/Shell/res/values-nb/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"skjul <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>-innstillinger"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Lukk boblen"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Flytt til fullskjerm"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ikke vis samtaler i bobler"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat med bobler"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nye samtaler vises som flytende ikoner eller bobler. Trykk for å åpne en boble. Dra for å flytte den."</string> diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml index a3bd5eec6d5e..05ce071fd8e4 100644 --- a/libs/WindowManager/Shell/res/values-ne/strings.xml +++ b/libs/WindowManager/Shell/res/values-ne/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> कोल्याप्स गर्नुहोस्"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> का सेटिङहरू"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"बबल खारेज गर्नुहोस्"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"सारेर फुल स्क्रिनमा लैजानुहोस्"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"वार्तालाप बबलको रूपमा नदेखाउनुहोस्"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"बबलहरू प्रयोग गरी कुराकानी गर्नुहोस्"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"नयाँ वार्तालापहरू तैरने आइकन वा बबलका रूपमा देखिन्छन्। बबल खोल्न ट्याप गर्नुहोस्। बबल सार्न सो बबललाई ड्र्याग गर्नुहोस्।"</string> diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml index ad2c60fe4517..9ec44440a697 100644 --- a/libs/WindowManager/Shell/res/values-nl/strings.xml +++ b/libs/WindowManager/Shell/res/values-nl/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> samenvouwen"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Instellingen voor <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Bubbel sluiten"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Naar volledig scherm"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Gesprekken niet in bubbels tonen"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatten met bubbels"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nieuwe gesprekken worden als zwevende iconen of bubbels getoond. Tik om een bubbel te openen. Sleep om een bubbel te verplaatsen."</string> diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml index 76f2715b54c9..7ee734215708 100644 --- a/libs/WindowManager/Shell/res/values-or/strings.xml +++ b/libs/WindowManager/Shell/res/values-or/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ସଙ୍କୁଚିତ କରନ୍ତୁ"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ସେଟିଂସ୍"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ବବଲ୍ ଖାରଜ କରନ୍ତୁ"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ପୂର୍ଣ୍ଣସ୍କ୍ରିନକୁ ମୁଭ କରନ୍ତୁ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ବାର୍ତ୍ତାଳାପକୁ ବବଲ୍ କରନ୍ତୁ ନାହିଁ"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ବବଲଗୁଡ଼ିକୁ ବ୍ୟବହାର କରି ଚାଟ୍ କରନ୍ତୁ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"ନୂଆ ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ଫ୍ଲୋଟିଂ ଆଇକନ୍ କିମ୍ବା ବବଲ୍ ଭାବେ ଦେଖାଯିବ। ବବଲ୍ ଖୋଲିବାକୁ ଟାପ୍ କରନ୍ତୁ। ଏହାକୁ ମୁଭ୍ କରିବାକୁ ଟାଣନ୍ତୁ।"</string> diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml index cd7fd4716c65..cc31e3c3cf6a 100644 --- a/libs/WindowManager/Shell/res/values-pa/strings.xml +++ b/libs/WindowManager/Shell/res/values-pa/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ਨੂੰ ਸਮੇਟੋ"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ਸੈਟਿੰਗਾਂ"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ਬਬਲ ਨੂੰ ਖਾਰਜ ਕਰੋ"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ਪੂਰੀ-ਸਕ੍ਰੀਨ \'ਤੇ ਜਾਓ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ਗੱਲਬਾਤ \'ਤੇ ਬਬਲ ਨਾ ਲਾਓ"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"ਬਬਲ ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"ਨਵੀਆਂ ਗੱਲਾਂਬਾਤਾਂ ਫਲੋਟਿੰਗ ਪ੍ਰਤੀਕਾਂ ਜਾਂ ਬਬਲ ਦੇ ਰੂਪ ਵਿੱਚ ਦਿਸਦੀਆਂ ਹਨ। ਬਬਲ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਟੈਪ ਕਰੋ। ਇਸਨੂੰ ਲਿਜਾਣ ਲਈ ਘਸੀਟੋ।"</string> diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml index d33b6f15ba37..5dd14c972968 100644 --- a/libs/WindowManager/Shell/res/values-pl/strings.xml +++ b/libs/WindowManager/Shell/res/values-pl/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"zwiń dymek <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> – ustawienia"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Zamknij dymek"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Zmień tryb na pełnoekranowy"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nie wyświetlaj rozmowy jako dymka"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Czatuj, korzystając z dymków"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nowe rozmowy będą wyświetlane jako pływające ikony lub dymki. Kliknij, by otworzyć dymek. Przeciągnij, by go przenieść."</string> diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml index c7a00ff3257e..d9c3d44a1563 100644 --- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"fechar <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Configurações de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dispensar balão"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Mude para tela cheia"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Não criar balões de conversa"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Converse usando balões"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novas conversas aparecerão como ícones flutuantes, ou balões. Toque para abrir o balão. Arraste para movê-lo."</string> diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml index d14144705c56..1ace69998218 100644 --- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"reduzir <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Definições de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ignorar balão"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Mudar para ecrã inteiro"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Não apresentar a conversa em balões"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Converse no chat através de balões"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"As novas conversas aparecem como ícones flutuantes ou balões. Toque para abrir o balão. Arraste para o mover."</string> diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml index c7a00ff3257e..d9c3d44a1563 100644 --- a/libs/WindowManager/Shell/res/values-pt/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"fechar <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Configurações de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Dispensar balão"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Mude para tela cheia"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Não criar balões de conversa"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Converse usando balões"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novas conversas aparecerão como ícones flutuantes, ou balões. Toque para abrir o balão. Arraste para movê-lo."</string> diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml index 9bc76602e1d3..ffaea971229c 100644 --- a/libs/WindowManager/Shell/res/values-ro/strings.xml +++ b/libs/WindowManager/Shell/res/values-ro/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"restrânge <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Setări <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Închide balonul"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Treci la ecran complet"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nu afișa conversația în balon"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat cu baloane"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Conversațiile noi apar ca pictograme flotante sau baloane. Atinge pentru a deschide balonul. Trage pentru a-l muta."</string> diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml index 044e3b02d439..6231e3e82eca 100644 --- a/libs/WindowManager/Shell/res/values-ru/strings.xml +++ b/libs/WindowManager/Shell/res/values-ru/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"Свернуть <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>: настройки"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Скрыть всплывающий чат"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Перейти в полноэкранный режим"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Не показывать всплывающий чат для разговора"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Всплывающие чаты"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Новые разговоры будут появляться в виде плавающих значков, или всплывающих чатов. Чтобы открыть чат, нажмите на него, а чтобы переместить – перетащите."</string> diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml index da2541e2ec14..824bd8d2998f 100644 --- a/libs/WindowManager/Shell/res/values-si/strings.xml +++ b/libs/WindowManager/Shell/res/values-si/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> හකුළන්න"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> සැකසීම්"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"බුබුලු ඉවත ලන්න"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"පූර්ණ තිරය වෙත ගෙන යන්න"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"සංවාදය බුබුලු නොදමන්න"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"බුබුලු භාවිතයෙන් කතාබහ කරන්න"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"නව සංවාද පාවෙන අයිකන හෝ බුබුලු ලෙස දිස් වේ. බුබුල විවෘත කිරීමට තට්ටු කරන්න. එය ගෙන යාමට අදින්න."</string> diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml index 394a4cad292b..4a1508d98717 100644 --- a/libs/WindowManager/Shell/res/values-sk/strings.xml +++ b/libs/WindowManager/Shell/res/values-sk/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"zbaliť <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Nastavenia aplikácie <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Zavrieť bublinu"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Presunúť na celú obrazovku"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Nezobrazovať konverzáciu ako bublinu"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Čet pomocou bublín"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nové konverzácie sa zobrazujú ako plávajúce ikony či bubliny. Bublinu otvoríte klepnutím. Premiestnite ju presunutím."</string> diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml index a90c2c216ef4..dd2f9f0291ff 100644 --- a/libs/WindowManager/Shell/res/values-sl/strings.xml +++ b/libs/WindowManager/Shell/res/values-sl/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"strnitev oblačka <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Nastavitve za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Opusti oblaček"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Premik na celozaslonski način"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Pogovora ne prikaži v oblačku"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Klepet z oblački"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Novi pogovori so prikazani kot lebdeče ikone ali oblački. Če želite odpreti oblaček, se ga dotaknite. Če ga želite premakniti, ga povlecite."</string> diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml index 706e75fc53aa..322525bf97c5 100644 --- a/libs/WindowManager/Shell/res/values-sq/strings.xml +++ b/libs/WindowManager/Shell/res/values-sq/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"palos <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Cilësimet e <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Hiqe flluskën"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Kalo në ekran të plotë"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Mos e vendos bisedën në flluskë"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bisedo duke përdorur flluskat"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Bisedat e reja shfaqen si ikona pluskuese ose flluska. Trokit për të hapur flluskën. Zvarrit për ta zhvendosur."</string> diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml index 539a00a20346..87ae78e63b74 100644 --- a/libs/WindowManager/Shell/res/values-sr/strings.xml +++ b/libs/WindowManager/Shell/res/values-sr/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"скупите облачић <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Подешавања за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Одбаци облачић"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Пребаци на цео екран"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Не користи облачиће за конверзацију"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Ћаскајте у облачићима"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Нове конверзације се приказују као плутајуће иконе или облачићи. Додирните да бисте отворили облачић. Превуците да бисте га преместили."</string> diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml index 549eb109f662..6942e957f9cd 100644 --- a/libs/WindowManager/Shell/res/values-sv/strings.xml +++ b/libs/WindowManager/Shell/res/values-sv/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"komprimera <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Inställningar för <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Stäng bubbla"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Flytta till helskärm"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Visa inte konversationen i bubblor"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chatta med bubblor"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nya konversationer visas som flytande ikoner, så kallade bubblor. Tryck på bubblan om du vill öppna den. Dra den om du vill flytta den."</string> diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml index 9c3469081706..30d68707edc4 100644 --- a/libs/WindowManager/Shell/res/values-sw/strings.xml +++ b/libs/WindowManager/Shell/res/values-sw/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"kunja <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Mipangilio ya <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Ondoa kiputo"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Hamishia kwenye skrini nzima"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Usiweke viputo kwenye mazungumzo"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Piga gumzo ukitumia viputo"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Mazungumzo mapya huonekena kama aikoni au viputo vinavyoelea. Gusa ili ufungue kiputo. Buruta ili ukisogeze."</string> diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml index 7e996f332bc2..9e51416d4c3c 100644 --- a/libs/WindowManager/Shell/res/values-ta/strings.xml +++ b/libs/WindowManager/Shell/res/values-ta/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> ஐச் சுருக்கும்"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> அமைப்புகள்"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"குமிழை அகற்று"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"முழுத்திரைக்கு மாற்று"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"உரையாடலைக் குமிழாக்காதே"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"குமிழ்களைப் பயன்படுத்தி அரட்டையடியுங்கள்"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"புதிய உரையாடல்கள் மிதக்கும் ஐகான்களாகவோ குமிழ்களாகவோ தோன்றும். குமிழைத் திறக்க தட்டவும். நகர்த்த இழுக்கவும்."</string> diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml index 984cea87bbf0..be770ca1c514 100644 --- a/libs/WindowManager/Shell/res/values-te/strings.xml +++ b/libs/WindowManager/Shell/res/values-te/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>ను కుదించండి"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> సెట్టింగ్లు"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"బబుల్ను విస్మరించు"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"ఫుల్ స్క్రీన్కు వెళ్లండి"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"సంభాషణను బబుల్ చేయవద్దు"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"బబుల్స్ను ఉపయోగించి చాట్ చేయండి"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"కొత్త సంభాషణలు తేలియాడే చిహ్నాలుగా లేదా బబుల్స్ లాగా కనిపిస్తాయి. బబుల్ని తెరవడానికి నొక్కండి. తరలించడానికి లాగండి."</string> diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml index 3460b0768ad0..e7975ac7d77d 100644 --- a/libs/WindowManager/Shell/res/values-th/strings.xml +++ b/libs/WindowManager/Shell/res/values-th/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"ยุบ <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"การตั้งค่า <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"ปิดบับเบิล"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"เปลี่ยนเป็นแบบเต็มหน้าจอ"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"ไม่ต้องแสดงการสนทนาเป็นบับเบิล"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"แชทโดยใช้บับเบิล"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"การสนทนาใหม่ๆ จะปรากฏเป็นไอคอนแบบลอยหรือบับเบิล แตะเพื่อเปิดบับเบิล ลากเพื่อย้ายที่"</string> diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml index dc309129ef2e..72d09263ebbc 100644 --- a/libs/WindowManager/Shell/res/values-tl/strings.xml +++ b/libs/WindowManager/Shell/res/values-tl/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"i-collapse ang <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Mga setting ng <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"I-dismiss ang bubble"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Lumipat sa fullscreen"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Huwag ipakita sa bubble ang mga pag-uusap"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Mag-chat gamit ang bubbles"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Lumalabas bilang mga nakalutang na icon o bubble ang mga bagong pag-uusap. I-tap para buksan ang bubble. I-drag para ilipat ito."</string> diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml index e9e21739cb61..2b02f472484c 100644 --- a/libs/WindowManager/Shell/res/values-tr/strings.xml +++ b/libs/WindowManager/Shell/res/values-tr/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"daralt: <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ayarları"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Baloncuğu kapat"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Tam ekrana taşı"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Görüşmeyi baloncuk olarak görüntüleme"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Baloncukları kullanarak sohbet edin"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Yeni görüşmeler kayan simgeler veya baloncuk olarak görünür. Açmak için baloncuğa dokunun. Baloncuğu taşımak için sürükleyin."</string> diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml index e1b6e3505c04..47126acc1213 100644 --- a/libs/WindowManager/Shell/res/values-uk/strings.xml +++ b/libs/WindowManager/Shell/res/values-uk/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"згорнути \"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>\""</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Налаштування параметра \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\""</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Закрити підказку"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Перейти в повноекранний режим"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Не показувати спливаючі чати для розмов"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Спливаючий чат"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Нові повідомлення чату з\'являються у вигляді спливаючих значків. Щоб відкрити чат, натисніть його, а щоб перемістити – перетягніть."</string> diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml index 0508e6d9a7e3..859288f003e7 100644 --- a/libs/WindowManager/Shell/res/values-ur/strings.xml +++ b/libs/WindowManager/Shell/res/values-ur/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g> کو سکیڑیں"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ترتیبات"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"بلبلہ برخاست کریں"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"مکمل اسکرین پر منتقل کریں"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"گفتگو بلبلہ نہ کریں"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"بلبلے کے ذریعے چیٹ کریں"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"نئی گفتگوئیں فلوٹنگ آئیکن یا بلبلے کے طور پر ظاہر ہوں گی۔ بلبلہ کھولنے کے لیے تھپتھپائیں۔ اسے منتقل کرنے کے لیے گھسیٹیں۔"</string> diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml index 5de3b7bf52aa..625fc8ef7635 100644 --- a/libs/WindowManager/Shell/res/values-uz/strings.xml +++ b/libs/WindowManager/Shell/res/values-uz/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>ni yopish"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> sozlamalari"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Bulutchani yopish"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Butun ekranga koʻchirish"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Suhbatlar bulutchalar shaklida chiqmasin"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Bulutchalar yordamida subhatlashish"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Yangi xabarlar qalqib chiquvchi belgilar yoki bulutchalar kabi chiqadi. Xabarni ochish uchun bildirishnoma ustiga bosing. Xabarni qayta joylash uchun bildirishnomani suring."</string> diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml index 9b2f8988fcca..2e643ddc41ca 100644 --- a/libs/WindowManager/Shell/res/values-vi/strings.xml +++ b/libs/WindowManager/Shell/res/values-vi/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"thu gọn <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Cài đặt <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Đóng bong bóng"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Chuyển sang toàn màn hình"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Dừng sử dụng bong bóng cho cuộc trò chuyện"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Trò chuyện bằng bong bóng trò chuyện"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Các cuộc trò chuyện mới sẽ xuất hiện dưới dạng biểu tượng nổi hoặc bong bóng trò chuyện. Nhấn để mở bong bóng trò chuyện. Kéo để di chuyển bong bóng trò chuyệ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 b45b76e876f2..f023f53e3f28 100644 --- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"收起“<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>”"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>设置"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"关闭消息气泡"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"移至全屏"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"不以消息气泡形式显示对话"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"使用消息气泡聊天"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"新对话会以浮动图标或消息气泡形式显示。点按即可打开消息气泡。拖动即可移动消息气泡。"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml index ae776b8c9b12..5c2ef045947a 100644 --- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"收埋<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"「<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>」設定"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"關閉小視窗氣泡"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"移至全螢幕"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"不要透過小視窗顯示對話"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"使用小視窗進行即時通訊"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"新對話會以浮動圖示 (小視窗) 顯示。輕按即可開啟小視窗。拖曳即可移動小視窗。"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml index 5bfc6b843aad..a362d5b5519e 100644 --- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"收合「<xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>」"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"「<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>」設定"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"關閉對話框"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"移至全螢幕"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"不要以對話框形式顯示對話"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"透過對話框來聊天"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"新的對話會以浮動圖示或對話框形式顯示。輕觸即可開啟對話框,拖曳則可移動對話框。"</string> diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml index 0598d62dcbb6..3a3f4313b1ae 100644 --- a/libs/WindowManager/Shell/res/values-zu/strings.xml +++ b/libs/WindowManager/Shell/res/values-zu/strings.xml @@ -73,8 +73,7 @@ <string name="bubble_accessibility_announce_collapse" msgid="3178806224494537097">"goqa <xliff:g id="BUBBLE_TITLE">%1$s</xliff:g>"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> izilungiselelo"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Cashisa ibhamuza"</string> - <!-- no translation found for bubble_fullscreen_text (1006758103218086231) --> - <skip /> + <string name="bubble_fullscreen_text" msgid="1006758103218086231">"Hambisa esikrinini esigcwele"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ungayibhamuzi ingxoxo"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Xoxa usebenzisa amabhamuza"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Izingxoxo ezintsha zivela njengezithonjana ezintantayo, noma amabhamuza. Thepha ukuze uvule ibhamuza. Hudula ukuze ulihambise."</string> 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 156399499c5b..f478b4446cbe 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 @@ -874,10 +874,6 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont // start post animation dispatchOnBackInvoked(mActiveCallback); } else { - if (migrateBackToTransition - && mBackTransitionHandler.mPrepareOpenTransition != null) { - mBackTransitionHandler.createClosePrepareTransition(); - } tryDispatchOnBackCancelled(mActiveCallback); } } @@ -1163,8 +1159,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont IBinder mClosePrepareTransition; TransitionInfo mOpenTransitionInfo; void onAnimationFinished() { - if (!mCloseTransitionRequested && mClosePrepareTransition == null) { - applyFinishOpenTransition(); + if (!mCloseTransitionRequested && mPrepareOpenTransition != null) { + createClosePrepareTransition(); } if (mOnAnimationFinishCallback != null) { mOnAnimationFinishCallback.run(); @@ -1234,7 +1230,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont applyAndFinish(st, ft, finishCallback); return true; } else if (mClosePrepareTransition == null && isPrepareTransition) { - // Gesture animation was cancelled before prepare transition ready, create the + // Gesture animation was cancelled before prepare transition ready, create // the close prepare transition createClosePrepareTransition(); } @@ -1247,6 +1243,10 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont } void createClosePrepareTransition() { + if (mClosePrepareTransition != null) { + Log.e(TAG, "Re-create close prepare transition"); + return; + } final WindowContainerTransaction wct = new WindowContainerTransaction(); wct.restoreBackNavi(); mClosePrepareTransition = mTransitions.startTransition( @@ -1384,10 +1384,10 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont } if (info.getType() == TRANSIT_CLOSE_PREPARE_BACK_NAVIGATION - && !mCloseTransitionRequested && info.getChanges().isEmpty() && mApps != null) { - // Wait for post animation finish + && !mCloseTransitionRequested && info.getChanges().isEmpty() && mApps == null) { finishCallback.onTransitionFinished(null); t.apply(); + applyFinishOpenTransition(); return; } if (isNotGestureBackTransition(info) || shouldCancelAnimation(info) @@ -1598,41 +1598,6 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont } return null; } - - class QueuedTransition { - final TransitionInfo mInfo; - final SurfaceControl.Transaction mSt; - final SurfaceControl.Transaction mFt; - final Transitions.TransitionFinishCallback mFinishCallback; - QueuedTransition(@NonNull TransitionInfo info, - @NonNull SurfaceControl.Transaction st, - @NonNull SurfaceControl.Transaction ft, - @NonNull Transitions.TransitionFinishCallback finishCallback) { - mInfo = info; - mSt = st; - mFt = ft; - mFinishCallback = finishCallback; - } - - void consume() { - // not animating, consume transition directly - if (mApps == null || mApps.length == 0) { - applyAndFinish(mSt, mFt, mFinishCallback); - return; - } - // we are animating - if (handlePrepareTransition(mInfo, mSt, mFt, mFinishCallback)) { - // handle merge transition if any - if (mCloseTransitionRequested) { - mOnAnimationFinishCallback = () -> { - applyFinishOpenTransition(); - mCloseTransitionRequested = false; - }; - } - } - handleCloseTransition(mInfo, mSt, mFt, mFinishCallback); - } - } } private static boolean isNotGestureBackTransition(@NonNull TransitionInfo info) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java index 8156a9c8d04a..f7f45ae36eda 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java @@ -235,7 +235,7 @@ public class DividerSnapAlgorithm { private SnapTarget snap(int position, boolean hardDismiss) { if (shouldApplyFreeSnapMode(position)) { - return new SnapTarget(position, position, SNAP_TO_NONE); + return new SnapTarget(position, SNAP_TO_NONE); } int minIndex = -1; float minDistance = Float.MAX_VALUE; @@ -263,7 +263,7 @@ public class DividerSnapAlgorithm { if (dockedSide == DOCKED_RIGHT) { startPos += mInsets.left; } - mTargets.add(new SnapTarget(startPos, startPos, SNAP_TO_START_AND_DISMISS, 0.35f)); + mTargets.add(new SnapTarget(startPos, SNAP_TO_START_AND_DISMISS, 0.35f)); switch (mSnapMode) { case SNAP_MODE_16_9: addRatio16_9Targets(isHorizontalDivision, dividerMax); @@ -278,7 +278,7 @@ public class DividerSnapAlgorithm { addMinimizedTarget(isHorizontalDivision, dockedSide); break; } - mTargets.add(new SnapTarget(dividerMax, dividerMax, SNAP_TO_END_AND_DISMISS, 0.35f)); + mTargets.add(new SnapTarget(dividerMax, SNAP_TO_END_AND_DISMISS, 0.35f)); } private void addNonDismissingTargets(boolean isHorizontalDivision, int topPosition, @@ -325,14 +325,14 @@ public class DividerSnapAlgorithm { */ private void maybeAddTarget(int position, int smallerSize, @SnapPosition int snapPosition) { if (smallerSize >= mMinimalSizeResizableTask) { - mTargets.add(new SnapTarget(position, position, snapPosition)); + mTargets.add(new SnapTarget(position, snapPosition)); } } private void addMiddleTarget(boolean isHorizontalDivision) { int position = DockedDividerUtils.calculateMiddlePosition(isHorizontalDivision, mInsets, mDisplayWidth, mDisplayHeight, mDividerSize); - mTargets.add(new SnapTarget(position, position, SNAP_TO_50_50)); + mTargets.add(new SnapTarget(position, SNAP_TO_50_50)); } private void addMinimizedTarget(boolean isHorizontalDivision, int dockedSide) { @@ -346,7 +346,7 @@ public class DividerSnapAlgorithm { position = mDisplayWidth - position - mInsets.right - mDividerSize; } } - mTargets.add(new SnapTarget(position, position, SNAP_TO_MINIMIZE)); + mTargets.add(new SnapTarget(position, SNAP_TO_MINIMIZE)); } public SnapTarget getMiddleTarget() { @@ -377,20 +377,15 @@ public class DividerSnapAlgorithm { } /** - * Represents a snap target for the divider. + * An object, calculated at boot time, representing a legal position for the split screen + * divider (i.e. the divider can be dragged to this spot). */ public static class SnapTarget { /** Position of this snap target. The right/bottom edge of the top/left task snaps here. */ public final int position; /** - * Like {@link #position}, but used to calculate the task bounds which might be different - * from the stack bounds. - */ - public final int taskPosition; - - /** - * An int describing the placement of the divider in this snap target. + * An int (enum) describing the placement of the divider in this snap target. */ public final @SnapPosition int snapPosition; @@ -402,14 +397,13 @@ public class DividerSnapAlgorithm { */ private final float distanceMultiplier; - public SnapTarget(int position, int taskPosition, @SnapPosition int snapPosition) { - this(position, taskPosition, snapPosition, 1f); + public SnapTarget(int position, @SnapPosition int snapPosition) { + this(position, snapPosition, 1f); } - public SnapTarget(int position, int taskPosition, @SnapPosition int snapPosition, + public SnapTarget(int position, @SnapPosition int snapPosition, float distanceMultiplier) { this.position = position; - this.taskPosition = taskPosition; this.snapPosition = snapPosition; this.distanceMultiplier = distanceMultiplier; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java index 2a934cba1b50..b8aa1b189f7e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java @@ -72,11 +72,12 @@ import com.android.wm.shell.common.DisplayImeController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.pip.PipUtils; +import com.android.wm.shell.common.split.DividerSnapAlgorithm.SnapTarget; +import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.shared.animation.Interpolators; import com.android.wm.shell.shared.split.SplitScreenConstants.PersistentSnapPosition; import com.android.wm.shell.shared.split.SplitScreenConstants.SnapPosition; import com.android.wm.shell.shared.split.SplitScreenConstants.SplitPosition; -import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.StageTaskListener; import java.io.PrintWriter; @@ -543,7 +544,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange * to middle position if the provided SnapTarget is not supported. */ public void setDivideRatio(@PersistentSnapPosition int snapPosition) { - final DividerSnapAlgorithm.SnapTarget snapTarget = mDividerSnapAlgorithm.findSnapTarget( + final SnapTarget snapTarget = mDividerSnapAlgorithm.findSnapTarget( snapPosition); setDividerPosition(snapTarget != null @@ -577,7 +578,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange * Sets new divider position and updates bounds correspondingly. Notifies listener if the new * target indicates dismissing split. */ - public void snapToTarget(int currentPosition, DividerSnapAlgorithm.SnapTarget snapTarget) { + public void snapToTarget(int currentPosition, SnapTarget snapTarget) { switch (snapTarget.snapPosition) { case SNAP_TO_START_AND_DISMISS: flingDividerPosition(currentPosition, snapTarget.position, FLING_RESIZE_DURATION, @@ -613,10 +614,10 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange } /** - * Returns {@link DividerSnapAlgorithm.SnapTarget} which matches passing position and velocity. + * Returns {@link SnapTarget} which matches passing position and velocity. * If hardDismiss is set to {@code true}, it will be harder to reach dismiss target. */ - public DividerSnapAlgorithm.SnapTarget findSnapTarget(int position, float velocity, + public SnapTarget findSnapTarget(int position, float velocity, boolean hardDismiss) { return mDividerSnapAlgorithm.calculateSnapTarget(position, velocity, hardDismiss); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index 05d19846bfee..2138acc51eb2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -1102,6 +1102,8 @@ public class PipTransition extends PipTransitionController { return; } + // NOTE(b/365300020): Legacy enter PiP path, clear the swipe state. + mPipTransitionState.setInSwipePipToHomeTransition(false); final int enterAnimationType = mEnterAnimationType; if (enterAnimationType == ANIM_TYPE_ALPHA) { startTransaction.setAlpha(leash, 0f); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentTasks.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentTasks.aidl index ebfd3571ae6d..799028a5507a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentTasks.aidl +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentTasks.aidl @@ -21,8 +21,8 @@ import android.app.IApplicationThread; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; -import android.view.IRecentsAnimationRunner; +import com.android.wm.shell.recents.IRecentsAnimationRunner; import com.android.wm.shell.recents.IRecentTasksListener; import com.android.wm.shell.shared.GroupedRecentTaskInfo; diff --git a/core/java/android/view/IRecentsAnimationController.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentsAnimationController.aidl index 55ad4ae6d665..964e5fd62a5f 100644 --- a/core/java/android/view/IRecentsAnimationController.aidl +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentsAnimationController.aidl @@ -14,9 +14,8 @@ * limitations under the License. */ -package android.view; +package com.android.wm.shell.recents; -import android.app.ActivityManager; import android.graphics.GraphicBuffer; import android.view.IRemoteAnimationFinishedCallback; import android.view.RemoteAnimationTarget; @@ -61,7 +60,6 @@ interface IRecentsAnimationController { * @param sendUserLeaveHint If set to true, {@link Activity#onUserLeaving} will be sent to the * top resumed app, false otherwise. */ - @UnsupportedAppUsage void finish(boolean moveHomeToTop, boolean sendUserLeaveHint, in IResultReceiver finishCb); /** @@ -71,75 +69,15 @@ interface IRecentsAnimationController { * may register the recents animation input consumer prior to starting the recents animation * and then enable it mid-animation to start receiving touch events. */ - @UnsupportedAppUsage void setInputConsumerEnabled(boolean enabled); /** - * Informs the system whether the animation targets passed into - * IRecentsAnimationRunner.onAnimationStart are currently behind the system bars. If they are, - * they can control the SystemUI flags, otherwise the SystemUI flags from home activity will be - * taken. - */ - @UnsupportedAppUsage - void setAnimationTargetsBehindSystemBars(boolean behindSystemBars); - - /** - * Clean up the screenshot of previous task which was created during recents animation that - * was cancelled by a stack order change. - * - * @see {@link IRecentsAnimationRunner#onAnimationCanceled} - */ - void cleanupScreenshot(); - - /** - * Set a state for controller whether would like to cancel recents animations with deferred - * task screenshot presentation. - * - * When we cancel the recents animation due to a stack order change, we can't just cancel it - * immediately as it would lead to a flicker in Launcher if we just remove the task from the - * leash. Instead we screenshot the previous task and replace the child of the leash with the - * screenshot, so that Launcher can still control the leash lifecycle & make the next app - * transition animate smoothly without flickering. - * - * @param defer When set {@code true}, means that the recents animation will defer canceling the - * animation when a stack order change is triggered until the subsequent app - * transition start and skip previous task's animation. - * When set to {@code false}, means that the recents animation will be canceled - * immediately when the stack order changes. - * @param screenshot When set {@code true}, means that the system will take previous task's - * screenshot and replace the contents of the leash with it when the next app - * transition starting. The runner must call #cleanupScreenshot() to end the - * recents animation. - * When set to {@code false}, means that the system will simply wait for the - * next app transition start to immediately cancel the recents animation. This - * can be useful when you want an immediate transition into a state where the - * task is shown in the home/recents activity (without waiting for a - * screenshot). - * - * @see #cleanupScreenshot() - * @see IRecentsAnimationRunner#onCancelled - */ - void setDeferCancelUntilNextTransition(boolean defer, boolean screenshot); - - /** * Sets a state for controller to decide which surface is the destination when the recents * animation is cancelled through fail safe mechanism. */ void setWillFinishToHome(boolean willFinishToHome); /** - * Stops controlling a task that is currently controlled by this recents animation. - * - * This method should be called when a task that has been received via {@link #onAnimationStart} - * or {@link #onTaskAppeared} is no longer needed. After calling this method, the task will - * either disappear from the screen, or jump to its final position in case it was the top task. - * - * @param taskId Id of the Task target to remove - * @return {@code true} when target removed successfully, {@code false} otherwise. - */ - boolean removeTask(int taskId); - - /** * Detach navigation bar from app. * * The system reparents the leash of navigation bar to the app when the recents animation starts @@ -155,15 +93,6 @@ interface IRecentsAnimationController { void detachNavigationBarFromApp(boolean moveHomeToTop); /** - * Used for animating the navigation bar during app launch from recents in live tile mode. - * - * First fade out the navigation bar at the bottom of the display and then fade in to the app. - * - * @param duration the duration of the app launch animation - */ - void animateNavigationBarToApp(long duration); - - /** * Hand off the ongoing animation of a set of remote targets, to be run by another handler using * the given starting parameters. * diff --git a/core/java/android/view/IRecentsAnimationRunner.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentsAnimationRunner.aidl index 37663d59cafd..32c79a2d02de 100644 --- a/core/java/android/view/IRecentsAnimationRunner.aidl +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/IRecentsAnimationRunner.aidl @@ -14,15 +14,15 @@ * limitations under the License. */ -package android.view; +package com.android.wm.shell.recents; -import android.app.ActivityManager; import android.graphics.Rect; import android.view.RemoteAnimationTarget; -import android.view.IRecentsAnimationController; import android.window.TaskSnapshot; import android.os.Bundle; +import com.android.wm.shell.recents.IRecentsAnimationController; + /** * Interface that is used to callback from window manager to the process that runs a recents * animation to start or cancel it. @@ -55,7 +55,6 @@ oneway interface IRecentsAnimationRunner { * @param minimizedHomeBounds Specifies the bounds of the minimized home app, will be * {@code null} if the device is not currently in split screen */ - @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) void onAnimationStart(in IRecentsAnimationController controller, in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers, in Rect homeContentInsets, in Rect minimizedHomeBounds, in Bundle extras) = 2; 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 9af33a84b045..a6e25a95e1eb 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 @@ -37,7 +37,6 @@ import android.os.RemoteException; import android.util.Slog; import android.util.SparseArray; import android.util.SparseIntArray; -import android.view.IRecentsAnimationRunner; import android.window.WindowContainerToken; import androidx.annotation.BinderThread; @@ -54,6 +53,7 @@ import com.android.wm.shell.common.TaskStackListenerCallback; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.desktopmode.DesktopModeTaskRepository; import com.android.wm.shell.protolog.ShellProtoLogGroup; +import com.android.wm.shell.recents.IRecentsAnimationRunner; import com.android.wm.shell.shared.GroupedRecentTaskInfo; import com.android.wm.shell.shared.annotations.ExternalThread; import com.android.wm.shell.shared.annotations.ShellMainThread; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java index c90da052dd72..c660000e4f61 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java @@ -49,8 +49,6 @@ import android.util.IntArray; import android.util.Pair; import android.util.Slog; import android.view.Display; -import android.view.IRecentsAnimationController; -import android.view.IRecentsAnimationRunner; import android.view.RemoteAnimationTarget; import android.view.SurfaceControl; import android.window.PictureInPictureSurfaceTransaction; @@ -1024,10 +1022,6 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } @Override - public void setAnimationTargetsBehindSystemBars(boolean behindSystemBars) { - } - - @Override public void setFinishTaskTransaction(int taskId, PictureInPictureSurfaceTransaction finishTransaction, SurfaceControl overlay) { mExecutor.execute(() -> { @@ -1254,14 +1248,6 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } @Override - public void setDeferCancelUntilNextTransition(boolean defer, boolean screenshot) { - } - - @Override - public void cleanupScreenshot() { - } - - @Override public void setWillFinishToHome(boolean willFinishToHome) { mExecutor.execute(() -> { mWillFinishToHome = willFinishToHome; @@ -1269,14 +1255,6 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } /** - * @see IRecentsAnimationController#removeTask - */ - @Override - public boolean removeTask(int taskId) { - return false; - } - - /** * @see IRecentsAnimationController#detachNavigationBarFromApp */ @Override @@ -1292,13 +1270,6 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } }); } - - /** - * @see IRecentsAnimationController#animateNavigationBarToApp(long) - */ - @Override - public void animateNavigationBarToApp(long duration) { - } }; /** Utility class to track the state of a task as-seen by recents. */ diff --git a/services/core/java/com/android/server/input/debug/TouchpadVisualisationView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/AbstractTaskPositionerDecorator.kt index 38442bcc0292..6dd5ac60b063 100644 --- a/services/core/java/com/android/server/input/debug/TouchpadVisualisationView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/AbstractTaskPositionerDecorator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024 The Android Open Source Project + * 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. @@ -14,13 +14,11 @@ * limitations under the License. */ -package com.android.server.input.debug; +package com.android.wm.shell.windowdecor -import android.content.Context; -import android.view.View; - -public class TouchpadVisualisationView extends View { - public TouchpadVisualisationView(Context context) { - super(context); - } -} +/** + * Abstract decorator for a [TaskPositioner]. + */ +abstract class AbstractTaskPositionerDecorator( + private val taskPositioner: TaskPositioner +) : TaskPositioner by taskPositioner 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 79190689adc1..0f8bd2866fa8 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 @@ -199,6 +199,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { }); } }; + private final TaskPositionerFactory mTaskPositionerFactory; public DesktopModeWindowDecorViewModel( Context context, @@ -250,7 +251,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { new SparseArray<>(), interactionJankMonitor, desktopTasksLimiter, - activityOrientationChangeHandler); + activityOrientationChangeHandler, + new TaskPositionerFactory()); } @VisibleForTesting @@ -280,7 +282,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { SparseArray<DesktopModeWindowDecoration> windowDecorByTaskId, InteractionJankMonitor interactionJankMonitor, Optional<DesktopTasksLimiter> desktopTasksLimiter, - Optional<DesktopActivityOrientationChangeHandler> activityOrientationChangeHandler) { + Optional<DesktopActivityOrientationChangeHandler> activityOrientationChangeHandler, + TaskPositionerFactory taskPositionerFactory) { mContext = context; mMainExecutor = shellExecutor; mMainHandler = mainHandler; @@ -335,6 +338,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } } }; + mTaskPositionerFactory = taskPositionerFactory; shellInit.addInitCallback(this::onInit, this); } @@ -828,7 +832,10 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { decoration.mTaskSurface, e.getRawX(dragPointerIdx), newTaskBounds); - updateDragStatus(e.getActionMasked()); + // Flip mIsDragging only if the bounds actually changed. + if (mIsDragging || !newTaskBounds.equals(mOnDragStartInitialBounds)) { + updateDragStatus(e.getActionMasked()); + } return true; } case MotionEvent.ACTION_UP: @@ -1280,23 +1287,18 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mMultiInstanceHelper); mWindowDecorByTaskId.put(taskInfo.taskId, windowDecoration); - final DragPositioningCallback dragPositioningCallback; - if (!DesktopModeStatus.isVeiledResizeEnabled()) { - dragPositioningCallback = new FluidResizeTaskPositioner( - mTaskOrganizer, mTransitions, windowDecoration, mDisplayController, - mDragStartListener, mTransactionFactory); - windowDecoration.setTaskDragResizer( - (FluidResizeTaskPositioner) dragPositioningCallback); - } else { - dragPositioningCallback = new VeiledResizeTaskPositioner( - mTaskOrganizer, windowDecoration, mDisplayController, - mDragStartListener, mTransitions, mInteractionJankMonitor); - windowDecoration.setTaskDragResizer( - (VeiledResizeTaskPositioner) dragPositioningCallback); - } + final TaskPositioner taskPositioner = mTaskPositionerFactory.create( + mTaskOrganizer, + windowDecoration, + mDisplayController, + mDragStartListener, + mTransitions, + mInteractionJankMonitor, + mTransactionFactory); + windowDecoration.setTaskDragResizer(taskPositioner); final DesktopModeTouchEventListener touchEventListener = - new DesktopModeTouchEventListener(taskInfo, dragPositioningCallback); + new DesktopModeTouchEventListener(taskInfo, taskPositioner); windowDecoration.setOnMaximizeOrRestoreClickListener(() -> { onMaximizeOrRestore(taskInfo.taskId, "maximize_menu"); return Unit.INSTANCE; @@ -1330,7 +1332,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { windowDecoration.setCaptionListeners( touchEventListener, touchEventListener, touchEventListener, touchEventListener); windowDecoration.setExclusionRegionListener(mExclusionRegionListener); - windowDecoration.setDragPositioningCallback(dragPositioningCallback); + windowDecoration.setDragPositioningCallback(taskPositioner); windowDecoration.setDragDetector(touchEventListener.mDragDetector); windowDecoration.relayout(taskInfo, startT, finishT, false /* applyStartTransactionOnDraw */, false /* shouldSetTaskPositionAndCrop */); @@ -1479,6 +1481,25 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } } } -} - + @VisibleForTesting + static class TaskPositionerFactory { + TaskPositioner create( + ShellTaskOrganizer taskOrganizer, + DesktopModeWindowDecoration windowDecoration, + DisplayController displayController, + DragPositioningCallbackUtility.DragStartListener dragStartListener, + Transitions transitions, + InteractionJankMonitor interactionJankMonitor, + Supplier<SurfaceControl.Transaction> transactionFactory) { + if (!DesktopModeStatus.isVeiledResizeEnabled()) { + return new FluidResizeTaskPositioner( + taskOrganizer, transitions, windowDecoration, displayController, + dragStartListener, transactionFactory); + } + return new VeiledResizeTaskPositioner( + taskOrganizer, windowDecoration, displayController, + dragStartListener, transitions, interactionJankMonitor); + } + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java index e2d42b2783da..3853f1f086c1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java @@ -49,8 +49,7 @@ import java.util.function.Supplier; * that we send the final shell transition since we still utilize the {@link #onTransitionConsumed} * callback. */ -class FluidResizeTaskPositioner implements DragPositioningCallback, - TaskDragResizer, Transitions.TransitionHandler { +class FluidResizeTaskPositioner implements TaskPositioner, Transitions.TransitionHandler { private final ShellTaskOrganizer mTaskOrganizer; private final Transitions mTransitions; private final WindowDecoration mWindowDecoration; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskDragResizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskDragResizer.java index 40421b599889..d7ea0c3a8e62 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskDragResizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskDragResizer.java @@ -19,7 +19,7 @@ package com.android.wm.shell.windowdecor; /** * Holds the state of a drag resize. */ -interface TaskDragResizer { +public interface TaskDragResizer { /** * Returns true if task is currently being resized or animating the final transition after diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskPositioner.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskPositioner.kt new file mode 100644 index 000000000000..96c43da0cdf2 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskPositioner.kt @@ -0,0 +1,22 @@ +/* + * 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.windowdecor + +/** + * Interface for TaskPositioner. + */ +interface TaskPositioner : DragPositioningCallback, TaskDragResizer diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositioner.java index 4a884eb50595..599815530f63 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositioner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositioner.java @@ -47,8 +47,7 @@ import java.util.function.Supplier; * If the drag is resizing the task, we resize the veil instead. * If the drag is repositioning, we update in the typical manner. */ -public class VeiledResizeTaskPositioner implements DragPositioningCallback, - TaskDragResizer, Transitions.TransitionHandler { +public class VeiledResizeTaskPositioner implements TaskPositioner, Transitions.TransitionHandler { private DesktopModeWindowDecoration mDesktopWindowDecoration; private ShellTaskOrganizer mTaskOrganizer; diff --git a/libs/WindowManager/Shell/tests/flicker/Android.bp b/libs/WindowManager/Shell/tests/flicker/Android.bp index 7305f4988aa9..58559ac2c3ca 100644 --- a/libs/WindowManager/Shell/tests/flicker/Android.bp +++ b/libs/WindowManager/Shell/tests/flicker/Android.bp @@ -59,7 +59,7 @@ java_defaults { enabled: false, }, test_suites: ["device-tests"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], static_libs: [ "wm-shell-flicker-utils", "androidx.test.ext.junit", diff --git a/libs/WindowManager/Shell/tests/unittest/Android.bp b/libs/WindowManager/Shell/tests/unittest/Android.bp index 006a4a9ea435..049a5a0615e0 100644 --- a/libs/WindowManager/Shell/tests/unittest/Android.bp +++ b/libs/WindowManager/Shell/tests/unittest/Android.bp @@ -66,9 +66,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], jni_libs: [ diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java index 1e4b8b62a082..b53ea3837178 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java @@ -692,6 +692,8 @@ public class BackAnimationControllerTest extends ShellTestCase { mBackTransitionHandler.startAnimation(mockBinder, tInfo, st, ft, callback); verify(mBackTransitionHandler).handlePrepareTransition( eq(tInfo), eq(st), eq(ft), eq(callback)); + + mBackTransitionHandler.onAnimationFinished(); final TransitionInfo.Change openToClose = createAppChange(openTaskId, TRANSIT_CLOSE, FLAG_BACK_GESTURE_ANIMATED); tInfo2 = createTransitionInfo(TRANSIT_CLOSE_PREPARE_BACK_NAVIGATION, openToClose); @@ -700,7 +702,6 @@ public class BackAnimationControllerTest extends ShellTestCase { mBackTransitionHandler.mergeAnimation(mBackTransitionHandler.mClosePrepareTransition, tInfo2, st, mock(IBinder.class), mergeCallback); assertTrue("Change should be consumed", tInfo2.getChanges().isEmpty()); - mBackTransitionHandler.onAnimationFinished(); verify(callback).onTransitionFinished(any()); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java index 4d0348b4f470..9b019ddb8362 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java @@ -177,6 +177,31 @@ public class BackProgressAnimatorTest { assertEquals(1, finishCallbackCalled.getCount()); } + @Test + public void testOnBackInvokedFinishCallbackNotInvokedWhenRemoved() throws InterruptedException { + // Give the animator some progress. + final BackMotionEvent backEvent = backMotionEventFrom(100, mTargetProgress); + mMainThreadHandler.post( + () -> mProgressAnimator.onBackProgressed(backEvent)); + mTargetProgressCalled.await(1, TimeUnit.SECONDS); + assertNotNull(mReceivedBackEvent); + + // Trigger back invoked animation + CountDownLatch finishCallbackCalled = new CountDownLatch(1); + InstrumentationRegistry.getInstrumentation().runOnMainSync( + () -> mProgressAnimator.onBackInvoked(finishCallbackCalled::countDown)); + + // remove onBackCancelled finishCallback (while progress is still animating to 0) + InstrumentationRegistry.getInstrumentation().runOnMainSync( + () -> mProgressAnimator.removeOnBackInvokedFinishCallback()); + + // call reset (which triggers the finishCallback invocation, if one is present) + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> mProgressAnimator.reset()); + + // verify that finishCallback is not invoked + assertEquals(1, finishCallbackCalled.getCount()); + } + private void onGestureProgress(BackEvent backEvent) { if (mTargetProgress == backEvent.getProgress()) { mReceivedBackEvent = backEvent; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java index 09fcd8b02010..82b3a7de521b 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java @@ -20,8 +20,6 @@ import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_50_50; -import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_END_AND_DISMISS; -import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_START_AND_DISMISS; import static com.google.common.truth.Truth.assertThat; @@ -150,8 +148,8 @@ public class SplitLayoutTests extends ShellTestCase { @UiThreadTest public void testSnapToDismissStart() { // verify it callbacks properly when the snap target indicates dismissing split. - DividerSnapAlgorithm.SnapTarget snapTarget = getSnapTarget(0 /* position */, - SNAP_TO_START_AND_DISMISS); + DividerSnapAlgorithm.SnapTarget snapTarget = + mSplitLayout.mDividerSnapAlgorithm.getDismissStartTarget(); mSplitLayout.snapToTarget(mSplitLayout.getDividerPosition(), snapTarget); waitDividerFlingFinished(); @@ -162,8 +160,8 @@ public class SplitLayoutTests extends ShellTestCase { @UiThreadTest public void testSnapToDismissEnd() { // verify it callbacks properly when the snap target indicates dismissing split. - DividerSnapAlgorithm.SnapTarget snapTarget = getSnapTarget(0 /* position */, - SNAP_TO_END_AND_DISMISS); + DividerSnapAlgorithm.SnapTarget snapTarget = + mSplitLayout.mDividerSnapAlgorithm.getDismissEndTarget(); mSplitLayout.snapToTarget(mSplitLayout.getDividerPosition(), snapTarget); waitDividerFlingFinished(); @@ -203,9 +201,4 @@ public class SplitLayoutTests extends ShellTestCase { new Rect(0, 0, 1080, 2160)); return configuration; } - - private static DividerSnapAlgorithm.SnapTarget getSnapTarget(int position, int flag) { - return new DividerSnapAlgorithm.SnapTarget( - position /* position */, position /* taskPosition */, flag); - } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java index 7c63fdad660a..7937a843b90a 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java @@ -76,7 +76,6 @@ import android.os.RemoteException; import android.platform.test.flag.junit.SetFlagsRule; import android.util.ArraySet; import android.util.Pair; -import android.view.IRecentsAnimationRunner; import android.view.Surface; import android.view.SurfaceControl; import android.window.IRemoteTransition; @@ -107,6 +106,7 @@ import com.android.wm.shell.TestShellExecutor; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; +import com.android.wm.shell.recents.IRecentsAnimationRunner; import com.android.wm.shell.recents.RecentTasksController; import com.android.wm.shell.recents.RecentsTransitionHandler; import com.android.wm.shell.shared.ShellSharedConstants; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt index 3dd8a2bacbcd..2c805e8e77b3 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt @@ -34,6 +34,7 @@ import android.hardware.display.VirtualDisplay import android.hardware.input.InputManager import android.net.Uri import android.os.Handler +import android.os.SystemClock import android.os.UserHandle import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags @@ -52,10 +53,12 @@ import android.view.InputMonitor import android.view.InsetsSource import android.view.InsetsState import android.view.KeyEvent +import android.view.MotionEvent import android.view.Surface import android.view.SurfaceControl import android.view.SurfaceView import android.view.View +import android.view.ViewRootImpl import android.view.WindowInsets.Type.statusBars import android.widget.Toast import android.window.WindowContainerTransaction @@ -174,6 +177,10 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { @Mock private lateinit var mockFreeformTaskTransitionStarter: FreeformTaskTransitionStarter @Mock private lateinit var mockActivityOrientationChangeHandler: DesktopActivityOrientationChangeHandler + @Mock private lateinit var mockInputManager: InputManager + @Mock private lateinit var mockTaskPositionerFactory: + DesktopModeWindowDecorViewModel.TaskPositionerFactory + @Mock private lateinit var mockTaskPositioner: TaskPositioner private lateinit var spyContext: TestableContext private val transactionFactory = Supplier<SurfaceControl.Transaction> { @@ -203,6 +210,7 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { doNothing().`when`(spyContext).startActivity(any()) shellInit = ShellInit(mockShellExecutor) windowDecorByTaskIdSpy.clear() + spyContext.addMockSystemService(InputManager::class.java, mockInputManager) desktopModeWindowDecorViewModel = DesktopModeWindowDecorViewModel( spyContext, mockShellExecutor, @@ -229,12 +237,15 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { windowDecorByTaskIdSpy, mockInteractionJankMonitor, Optional.of(mockTasksLimiter), - Optional.of(mockActivityOrientationChangeHandler) + Optional.of(mockActivityOrientationChangeHandler), + mockTaskPositionerFactory ) desktopModeWindowDecorViewModel.setSplitScreenController(mockSplitScreenController) whenever(mockDisplayController.getDisplayLayout(any())).thenReturn(mockDisplayLayout) whenever(mockDisplayLayout.stableInsets()).thenReturn(STABLE_INSETS) whenever(mockInputMonitorFactory.create(any(), any())).thenReturn(mockInputMonitor) + whenever(mockTaskPositionerFactory.create(any(), any(), any(), any(), any(), any(), any())) + .thenReturn(mockTaskPositioner) doReturn(mockToast).`when` { Toast.makeText(any(), anyInt(), anyInt()) } @@ -1058,6 +1069,55 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { verify(wct, never()).setBounds(eq(thirdTask.token), any()) } + @Test + fun testCloseButtonInFreeform_closeWindow_ignoreMoveEventsWithoutBoundsChange() { + val onClickListenerCaptor = forClass(View.OnClickListener::class.java) + as ArgumentCaptor<View.OnClickListener> + val onTouchListenerCaptor = forClass(View.OnTouchListener::class.java) + as ArgumentCaptor<View.OnTouchListener> + val decor = createOpenTaskDecoration( + windowingMode = WINDOWING_MODE_FREEFORM, + onCaptionButtonClickListener = onClickListenerCaptor, + onCaptionButtonTouchListener = onTouchListenerCaptor + ) + + whenever(mockTaskPositioner.onDragPositioningStart(any(), any(), any())) + .thenReturn(INITIAL_BOUNDS) + whenever(mockTaskPositioner.onDragPositioningMove(any(), any())) + .thenReturn(INITIAL_BOUNDS) + whenever(mockTaskPositioner.onDragPositioningEnd(any(), any())) + .thenReturn(INITIAL_BOUNDS) + + val view = mock(View::class.java) + whenever(view.id).thenReturn(R.id.close_window) + val viewRootImpl = mock(ViewRootImpl::class.java) + whenever(view.getViewRootImpl()).thenReturn(viewRootImpl) + whenever(viewRootImpl.getInputToken()).thenReturn(null) + + desktopModeWindowDecorViewModel + .setFreeformTaskTransitionStarter(mockFreeformTaskTransitionStarter) + + onTouchListenerCaptor.value.onTouch(view, + MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), + MotionEvent.ACTION_DOWN, /* x= */ 0f, /* y= */ 0f, /* metaState= */ 0)) + onTouchListenerCaptor.value.onTouch(view, + MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), + MotionEvent.ACTION_MOVE, /* x= */ 0f, /* y= */ 0f, /* metaState= */ 0)) + onTouchListenerCaptor.value.onTouch(view, + MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), + MotionEvent.ACTION_UP, /* x= */ 0f, /* y= */ 0f, /* metaState= */ 0)) + onClickListenerCaptor.value.onClick(view) + + val transactionCaptor = argumentCaptor<WindowContainerTransaction>() + verify(mockFreeformTaskTransitionStarter).startRemoveTransition(transactionCaptor.capture()) + val wct = transactionCaptor.firstValue + + assertEquals(1, wct.getHierarchyOps().size) + assertEquals(HierarchyOp.HIERARCHY_OP_TYPE_REMOVE_TASK, + wct.getHierarchyOps().get(0).getType()) + assertEquals(decor.mTaskInfo.token.asBinder(), wct.getHierarchyOps().get(0).getContainer()) + } + private fun createOpenTaskDecoration( @WindowingMode windowingMode: Int, taskSurface: SurfaceControl = SurfaceControl(), @@ -1076,7 +1136,9 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { onOpenInBrowserClickListener: ArgumentCaptor<Consumer<Uri>> = forClass(Consumer::class.java) as ArgumentCaptor<Consumer<Uri>>, onCaptionButtonClickListener: ArgumentCaptor<View.OnClickListener> = - forClass(View.OnClickListener::class.java) as ArgumentCaptor<View.OnClickListener> + forClass(View.OnClickListener::class.java) as ArgumentCaptor<View.OnClickListener>, + onCaptionButtonTouchListener: ArgumentCaptor<View.OnTouchListener> = + forClass(View.OnTouchListener::class.java) as ArgumentCaptor<View.OnTouchListener> ): DesktopModeWindowDecoration { val decor = setUpMockDecorationForTask(createTask(windowingMode = windowingMode)) onTaskOpening(decor.mTaskInfo, taskSurface) @@ -1088,7 +1150,8 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { verify(decor).setOnToSplitScreenClickListener(onToSplitScreenClickListenerCaptor.capture()) verify(decor).setOpenInBrowserClickListener(onOpenInBrowserClickListener.capture()) verify(decor).setCaptionListeners( - onCaptionButtonClickListener.capture(), any(), any(), any()) + onCaptionButtonClickListener.capture(), onCaptionButtonTouchListener.capture(), + any(), any()) return decor } @@ -1175,5 +1238,6 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() { companion object { private const val TAG = "DesktopModeWindowDecorViewModelTests" private val STABLE_INSETS = Rect(0, 100, 0, 0) + private val INITIAL_BOUNDS = Rect(0, 0, 100, 100) } } diff --git a/libs/dream/lowlight/tests/Android.bp b/libs/dream/lowlight/tests/Android.bp index 42547832133b..d3e101681ef2 100644 --- a/libs/dream/lowlight/tests/Android.bp +++ b/libs/dream/lowlight/tests/Android.bp @@ -37,9 +37,9 @@ android_test { "truth", ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], jni_libs: [ "libdexmakerjvmtiagent", diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h index 4eb6918d7e9a..b6988b21333b 100644 --- a/libs/hwui/hwui/Canvas.h +++ b/libs/hwui/hwui/Canvas.h @@ -28,11 +28,9 @@ #include "pipeline/skia/AnimatedDrawables.h" #include "utils/Macros.h" -class SkAnimatedImage; enum class SkBlendMode; class SkCanvasState; class SkRRect; -class SkRuntimeShaderBuilder; class SkVertices; namespace minikin { diff --git a/libs/securebox/tests/Android.bp b/libs/securebox/tests/Android.bp index 80b501da1aa5..8429cf4116c5 100644 --- a/libs/securebox/tests/Android.bp +++ b/libs/securebox/tests/Android.bp @@ -35,9 +35,9 @@ android_test { "truth", ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], jni_libs: [ "libdexmakerjvmtiagent", diff --git a/location/java/android/location/flags/location.aconfig b/location/java/android/location/flags/location.aconfig index 3c387d33286a..bbd91fc19ee5 100644 --- a/location/java/android/location/flags/location.aconfig +++ b/location/java/android/location/flags/location.aconfig @@ -109,3 +109,11 @@ flag { description: "Flag for GNSS configuration from resource" bug: "317734846" } + +flag { + name: "enable_ni_supl_message_injection_by_carrier_config" + namespace: "location" + description: "Flag for enabling NI SUPL message injection by carrier config" + bug: "242105192" + is_fixed_read_only: true +} diff --git a/media/java/android/media/tv/flags/media_tv.aconfig b/media/java/android/media/tv/flags/media_tv.aconfig index 93bca21f3a9d..c814c95e09d9 100644 --- a/media/java/android/media/tv/flags/media_tv.aconfig +++ b/media/java/android/media/tv/flags/media_tv.aconfig @@ -48,3 +48,11 @@ flag { description: "Tuner V4.0 APIs for Android W" bug: "320419647" } + +flag { + name: "hdmi_control_enhanced_behavior" + is_exported: true + namespace: "media_tv" + description: "Enhance HDMI-CEC power state and activeness transitions" + bug: "332780751" +} diff --git a/media/lib/tvremote/tests/Android.bp b/media/lib/tvremote/tests/Android.bp index 280c515e9a9e..83061cf14b0f 100644 --- a/media/lib/tvremote/tests/Android.bp +++ b/media/lib/tvremote/tests/Android.bp @@ -11,9 +11,9 @@ android_test { name: "TvRemoteTests", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", - "com.android.media.tv.remoteprovider", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "com.android.media.tv.remoteprovider.impl", ], static_libs: [ "mockito-target-minus-junit4", diff --git a/media/mca/tests/Android.bp b/media/mca/tests/Android.bp index 04f083dee093..463e131f1dfd 100644 --- a/media/mca/tests/Android.bp +++ b/media/mca/tests/Android.bp @@ -10,8 +10,8 @@ package { android_test { name: "CameraEffectsTests", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "junit", diff --git a/media/packages/BluetoothMidiService/tests/unit/Android.bp b/media/packages/BluetoothMidiService/tests/unit/Android.bp index 67c7e4230f30..54d6dfc658ed 100644 --- a/media/packages/BluetoothMidiService/tests/unit/Android.bp +++ b/media/packages/BluetoothMidiService/tests/unit/Android.bp @@ -39,8 +39,8 @@ android_test { test_suites: ["device-tests"], libs: [ "framework-res", - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], } diff --git a/media/tests/MediaFrameworkTest/Android.bp b/media/tests/MediaFrameworkTest/Android.bp index 028c97ec51f7..571e24f16c78 100644 --- a/media/tests/MediaFrameworkTest/Android.bp +++ b/media/tests/MediaFrameworkTest/Android.bp @@ -11,9 +11,9 @@ android_test { name: "mediaframeworktest", srcs: ["**/*.java"], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], static_libs: [ "mockito-target-inline-minus-junit4", diff --git a/media/tests/MediaRouter/Android.bp b/media/tests/MediaRouter/Android.bp index d21cb9319885..e4f88a65ed1a 100644 --- a/media/tests/MediaRouter/Android.bp +++ b/media/tests/MediaRouter/Android.bp @@ -14,8 +14,8 @@ android_test { srcs: ["**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ diff --git a/media/tests/TunerTest/Android.bp b/media/tests/TunerTest/Android.bp index 8e8816cee876..634438e72b59 100644 --- a/media/tests/TunerTest/Android.bp +++ b/media/tests/TunerTest/Android.bp @@ -13,14 +13,14 @@ android_test { srcs: ["**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "androidx.test.rules", "compatibility-device-util-axt", - "testng" + "testng", ], platform_apis: true, diff --git a/media/tests/projection/Android.bp b/media/tests/projection/Android.bp index fd5f19535537..94db2c02eb28 100644 --- a/media/tests/projection/Android.bp +++ b/media/tests/projection/Android.bp @@ -18,9 +18,9 @@ android_test { srcs: ["**/*.java"], libs: [ - "android.test.base", - "android.test.mock", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", + "android.test.runner.stubs.system", ], static_libs: [ diff --git a/nfc/Android.bp b/nfc/Android.bp index 0282e6f5c246..db3dcb0631dd 100644 --- a/nfc/Android.bp +++ b/nfc/Android.bp @@ -38,8 +38,8 @@ java_sdk_library { name: "framework-nfc", libs: [ "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage - "framework-permission-s", - "framework-permission", + "framework-permission-s.stubs.module_lib", + "framework-permission.stubs.module_lib", ], static_libs: [ "android.nfc.flags-aconfig-java", diff --git a/nfc/tests/Android.bp b/nfc/tests/Android.bp index 6ebc03cc6ffc..bfa814d149f0 100644 --- a/nfc/tests/Android.bp +++ b/nfc/tests/Android.bp @@ -32,7 +32,7 @@ android_test { ], libs: [ "framework-nfc.impl", - "android.test.runner", + "android.test.runner.stubs.system", ], srcs: ["src/**/*.java"], platform_apis: true, diff --git a/packages/CarrierDefaultApp/tests/unit/Android.bp b/packages/CarrierDefaultApp/tests/unit/Android.bp index 0d08ec6ca2b3..bec81ad5f92e 100644 --- a/packages/CarrierDefaultApp/tests/unit/Android.bp +++ b/packages/CarrierDefaultApp/tests/unit/Android.bp @@ -25,8 +25,8 @@ android_test { name: "CarrierDefaultAppUnitTests", certificate: "platform", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", "SlicePurchaseController", ], static_libs: [ diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml index 4df836511a94..63d57c40aa5a 100644 --- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml +++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml @@ -52,7 +52,7 @@ <string name="permission_contacts" msgid="3858319347208004438">"Contactos"</string> <string name="permission_calendar" msgid="6805668388691290395">"Calendario"</string> <string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string> - <string name="permission_call_logs" msgid="5546761417694586041">"Registros de llamadas"</string> + <string name="permission_call_logs" msgid="5546761417694586041">"Llamadas"</string> <string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos cercanos"</string> <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambiar la salida multimedia"</string> <string name="permission_storage" msgid="6831099350839392343">"Fotos y contenido multimedia"</string> diff --git a/packages/CredentialManager/tests/robotests/Android.bp b/packages/CredentialManager/tests/robotests/Android.bp index 75a0dcce0b9e..27afaaa49fdd 100644 --- a/packages/CredentialManager/tests/robotests/Android.bp +++ b/packages/CredentialManager/tests/robotests/Android.bp @@ -48,9 +48,9 @@ android_robolectric_test { "flag-junit-base", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "truth", ], upstream: true, diff --git a/packages/ExternalStorageProvider/tests/Android.bp b/packages/ExternalStorageProvider/tests/Android.bp index 097bb8603877..56348b77e679 100644 --- a/packages/ExternalStorageProvider/tests/Android.bp +++ b/packages/ExternalStorageProvider/tests/Android.bp @@ -21,9 +21,9 @@ android_test { ], libs: [ - "android.test.base", - "android.test.mock", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", + "android.test.runner.stubs.system", ], static_libs: [ diff --git a/packages/FusedLocation/Android.bp b/packages/FusedLocation/Android.bp index 61a82701d155..719aa28a4e30 100644 --- a/packages/FusedLocation/Android.bp +++ b/packages/FusedLocation/Android.bp @@ -35,7 +35,7 @@ android_app { name: "FusedLocation", defaults: ["platform_app_defaults"], srcs: ["src/**/*.java"], - libs: ["com.android.location.provider"], + libs: ["com.android.location.provider.impl"], platform_apis: true, certificate: "platform", privileged: true, @@ -50,9 +50,9 @@ android_test { "src/**/*.java", // include real sources because we're forced to test this directly ], libs: [ - "android.test.base", - "android.test.runner", - "com.android.location.provider", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", + "com.android.location.provider.impl", ], static_libs: [ "androidx.test.core", diff --git a/packages/PrintSpooler/res/values-or/strings.xml b/packages/PrintSpooler/res/values-or/strings.xml index a29f320cabdd..4aca0a49aee5 100644 --- a/packages/PrintSpooler/res/values-or/strings.xml +++ b/packages/PrintSpooler/res/values-or/strings.xml @@ -40,7 +40,7 @@ <string name="print_dialog" msgid="32628687461331979">"ପ୍ରିଣ୍ଟ ଡାୟଲଗ୍"</string> <string name="current_page_template" msgid="5145005201131935302">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string> <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="PAGE_COUNT">%2$d</xliff:g>ରୁ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> ପୃଷ୍ଠା"</string> - <string name="summary_template" msgid="8899734908625669193">"ସାରାଂଶ, କପୀ <xliff:g id="COPIES">%1$s</xliff:g>, କାଗଜ ଆକାର <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string> + <string name="summary_template" msgid="8899734908625669193">"ସାରାଂଶ, କପି <xliff:g id="COPIES">%1$s</xliff:g>, କାଗଜ ଆକାର <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string> <string name="expand_handle" msgid="7282974448109280522">"ହ୍ୟାଣ୍ଡେଲ୍ ବଡ଼ କରନ୍ତୁ"</string> <string name="collapse_handle" msgid="6886637989442507451">"ହ୍ୟାଣ୍ଡେଲ୍ ଛୋଟ କରନ୍ତୁ"</string> <string name="print_button" msgid="645164566271246268">"ପ୍ରିଣ୍ଟ କରନ୍ତୁ"</string> diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java index 81f7315dd422..fe27cee7ba2d 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java +++ b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java @@ -654,52 +654,49 @@ public final class PageContentRepository { public void renderPage(int pageIndex, RenderSpec renderSpec, OnPageContentAvailableCallback callback) { - // First, check if we have a rendered page for this index. - RenderedPage renderedPage = mPageContentCache.getRenderedPage(pageIndex); - if (renderedPage != null && renderedPage.state == RenderedPage.STATE_RENDERED) { - // If we have rendered page with same constraints - done. - if (renderedPage.renderSpec.equals(renderSpec)) { - if (DEBUG) { - Log.i(LOG_TAG, "Cache hit for page: " + pageIndex); - } + synchronized (mPageToRenderTaskMap) { + RenderedPage renderedPage = mPageContentCache.getRenderedPage(pageIndex); + if (renderedPage != null && renderedPage.state == RenderedPage.STATE_RENDERED) { + // If we have rendered page with same constraints - done. + if (renderedPage.renderSpec.equals(renderSpec)) { + if (DEBUG) { + Log.i(LOG_TAG, "Cache hit for page: " + pageIndex); + } - // Announce if needed. - if (callback != null) { - callback.onPageContentAvailable(renderedPage.content); + // Announce if needed. + if (callback != null) { + callback.onPageContentAvailable(renderedPage.content); + } + return; + } else { + // If the constraints changed, mark the page obsolete. + renderedPage.state = RenderedPage.STATE_SCRAP; } - return; - } else { - // If the constraints changed, mark the page obsolete. - renderedPage.state = RenderedPage.STATE_SCRAP; } - } - // Next, check if rendering this page is scheduled. - RenderPageTask renderTask = mPageToRenderTaskMap.get(pageIndex); - if (renderTask != null && !renderTask.isCancelled()) { - // If not rendered and constraints same.... - if (renderTask.mRenderSpec.equals(renderSpec)) { - if (renderTask.mCallback != null) { - // If someone else is already waiting for this page - bad state. - if (callback != null && renderTask.mCallback != callback) { - throw new IllegalStateException("Page rendering not cancelled"); - } - } else { - // No callback means we are preloading so just let the argument - // callback be attached to our work in progress. + // Next, check if rendering this page is scheduled. + RenderPageTask renderTask = mPageToRenderTaskMap.get(pageIndex); + if (renderTask != null && !renderTask.isCancelled()) { + // If not rendered and constraints same.... + if (renderTask.mRenderSpec.equals(renderSpec)) { renderTask.mCallback = callback; + return; + } else { + // If not rendered and constraints changed - cancel rendering. + try { + renderTask.cancel(true); + mPageToRenderTaskMap.remove(pageIndex); + } catch (Exception e) { + Log.e(LOG_TAG, "Error cancelling RenderPageTask ", e); + } } - return; - } else { - // If not rendered and constraints changed - cancel rendering. - renderTask.cancel(true); } - } - // Oh well, we will have work to do... - renderTask = new RenderPageTask(pageIndex, renderSpec, callback); - mPageToRenderTaskMap.put(pageIndex, renderTask); - renderTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); + // Oh well, we will have work to do... + renderTask = new RenderPageTask(pageIndex, renderSpec, callback); + mPageToRenderTaskMap.put(pageIndex, renderTask); + renderTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); + } } public void cancelRendering(int pageIndex) { diff --git a/packages/SettingsLib/Spa/screenshot/robotests/Android.bp b/packages/SettingsLib/Spa/screenshot/robotests/Android.bp index c834c80ad536..f6477e2f052a 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/Android.bp +++ b/packages/SettingsLib/Spa/screenshot/robotests/Android.bp @@ -63,9 +63,9 @@ android_robolectric_test { "uiautomator-helpers", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "truth", ], upstream: true, diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/MainSwitchPreference.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/MainSwitchPreference.kt index 0a469b868562..b28e88eb8af8 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/MainSwitchPreference.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/MainSwitchPreference.kt @@ -18,6 +18,7 @@ package com.android.settingslib.spa.widget.preference import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable @@ -27,6 +28,7 @@ import androidx.compose.ui.unit.dp import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsShape import com.android.settingslib.spa.framework.theme.SettingsTheme +import com.android.settingslib.spa.framework.theme.isSpaExpressiveEnabled import com.android.settingslib.spa.framework.util.EntryHighlight @Composable @@ -38,16 +40,17 @@ fun MainSwitchPreference(model: SwitchPreferenceModel) { true -> MaterialTheme.colorScheme.primaryContainer else -> MaterialTheme.colorScheme.secondaryContainer }, - shape = SettingsShape.CornerExtraLarge, + shape = if (isSpaExpressiveEnabled) CircleShape + else SettingsShape.CornerExtraLarge, ) { InternalSwitchPreference( title = model.title, checked = model.checked(), changeable = model.changeable(), onCheckedChange = model.onCheckedChange, - paddingStart = 20.dp, + paddingStart = if (isSpaExpressiveEnabled) 32.dp else 20.dp, paddingEnd = 20.dp, - paddingVertical = 24.dp, + paddingVertical = if (isSpaExpressiveEnabled) 16.dp else 24.dp, ) } } diff --git a/packages/SettingsLib/res/layout/zen_mode_condition.xml b/packages/SettingsLib/res/layout/zen_mode_condition.xml index 32221744e26f..805c81ff35dd 100644 --- a/packages/SettingsLib/res/layout/zen_mode_condition.xml +++ b/packages/SettingsLib/res/layout/zen_mode_condition.xml @@ -52,6 +52,7 @@ android:ellipsize="end" android:textAlignment="viewStart" android:maxLines="1" + android:scrollbars="none" android:textColor="?android:attr/textColorSecondary" android:textSize="14sp"/> diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java index 8e0cdf8109de..712ddc8aea4b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java +++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java @@ -85,7 +85,7 @@ public class TestModeBuilder { public TestModeBuilder(ZenMode previous) { mId = previous.getId(); - mRule = previous.getRule(); + mRule = new AutomaticZenRule.Builder(previous.getRule()).build(); mConfigZenRule = new ZenModeConfig.ZenRule(); mConfigZenRule.enabled = previous.getRule().isEnabled(); diff --git a/packages/SettingsLib/tests/integ/Android.bp b/packages/SettingsLib/tests/integ/Android.bp index 48a1af6cb0e8..03dd7122660d 100644 --- a/packages/SettingsLib/tests/integ/Android.bp +++ b/packages/SettingsLib/tests/integ/Android.bp @@ -37,10 +37,10 @@ android_test { ], libs: [ - "android.test.runner", + "android.test.runner.stubs", "telephony-common", - "android.test.base", - "android.test.mock", + "android.test.base.stubs", + "android.test.mock.stubs", "truth", ], diff --git a/packages/SettingsProvider/Android.bp b/packages/SettingsProvider/Android.bp index 3e62b7b2cf6e..c107ff5a34ce 100644 --- a/packages/SettingsProvider/Android.bp +++ b/packages/SettingsProvider/Android.bp @@ -76,8 +76,8 @@ android_test { "Harrier", ], libs: [ - "android.test.base", - "android.test.mock", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "unsupportedappusage", ], resource_dirs: [], diff --git a/packages/Shell/tests/Android.bp b/packages/Shell/tests/Android.bp index 0dc331478997..6399ffdfdf2f 100644 --- a/packages/Shell/tests/Android.bp +++ b/packages/Shell/tests/Android.bp @@ -11,9 +11,9 @@ android_test { name: "ShellTests", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], static_libs: [ "androidx.test.rules", diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index a9e81c77acad..be4e9a14b043 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -805,9 +805,9 @@ android_library { "androidx.test.rules", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "keepanno-annotations", ], kotlincflags: [ @@ -897,9 +897,9 @@ android_robolectric_test { "androidx.compose.runtime_runtime", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "truth", ], @@ -972,9 +972,9 @@ android_ravenwood_test { "androidx.compose.runtime_runtime", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], auto_gen_config: true, plugins: [ diff --git a/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp b/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp index 9d5a2e0dba4b..a48476744eeb 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp +++ b/packages/SystemUI/accessibility/accessibilitymenu/tests/Android.bp @@ -24,8 +24,8 @@ android_test { use_resource_processor: true, certificate: "platform", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "androidx.test.core", diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index ad14035d9d0a..02e8cd6c398d 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -247,13 +247,6 @@ flag { } flag { - name: "haptic_brightness_slider" - namespace: "systemui" - description: "Adds haptic feedback to the brightness slider." - bug: "296467915" -} - -flag { name: "unfold_animation_background_progress" namespace: "systemui" description: "Moves unfold animation progress calculation to a background thread" @@ -1401,4 +1394,4 @@ flag { namespace: "systemui" description: "Allow non-touchscreen devices to bypass falsing" bug: "319809270" -}
\ No newline at end of file +} diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt index 8d5189eb34e9..2a2c2fc4934e 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt @@ -21,12 +21,16 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.Layout +import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntRect import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.compose.animation.scene.SceneScope @@ -42,6 +46,7 @@ import com.android.systemui.keyguard.ui.composable.section.SettingsMenuSection import com.android.systemui.keyguard.ui.composable.section.StatusBarSection import com.android.systemui.keyguard.ui.composable.section.TopAreaSection import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel +import com.android.systemui.res.R import java.util.Optional import javax.inject.Inject import kotlin.math.roundToInt @@ -117,7 +122,7 @@ constructor( with(notificationSection) { Notifications( areNotificationsVisible = areNotificationsVisible, - isShadeLayoutWide = isShadeLayoutWide, + isShadeLayoutWide = true, burnInParams = null, modifier = Modifier.fillMaxWidth(0.5f) @@ -127,13 +132,27 @@ constructor( } } } - if (!isShadeLayoutWide && !isBypassEnabled) { - with(notificationSection) { - Notifications( - areNotificationsVisible = areNotificationsVisible, - isShadeLayoutWide = isShadeLayoutWide, - burnInParams = null, - modifier = Modifier.weight(weight = 1f) + + val aodIconPadding: Dp = + dimensionResource(R.dimen.below_clock_padding_start_icons) + + with(notificationSection) { + if (!isShadeLayoutWide && !isBypassEnabled) { + Box(modifier = Modifier.weight(weight = 1f)) { + AodNotificationIcons( + modifier = + Modifier.align(alignment = Alignment.TopStart) + .padding(start = aodIconPadding), + ) + Notifications( + areNotificationsVisible = areNotificationsVisible, + isShadeLayoutWide = false, + burnInParams = null, + ) + } + } else { + AodNotificationIcons( + modifier = Modifier.padding(start = aodIconPadding), ) } } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt index 18e1092fba2e..6fc51e4d0f65 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt @@ -17,32 +17,60 @@ package com.android.systemui.keyguard.ui.composable.section import android.view.ViewGroup +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.MutableTransitionState +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.compose.animation.scene.SceneScope import com.android.compose.modifiers.thenIf +import com.android.systemui.common.ui.ConfigurationState import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.MigrateClocksToBlueprint +import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor +import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn import com.android.systemui.keyguard.ui.composable.modifier.burnInAware import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters +import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.notifications.ui.composable.ConstrainedNotificationStack import com.android.systemui.notifications.ui.composable.SnoozeableHeadsUpNotificationSpace +import com.android.systemui.res.R import com.android.systemui.shade.LargeScreenHeaderHelper +import com.android.systemui.statusbar.notification.icon.ui.viewbinder.AlwaysOnDisplayNotificationIconViewStore +import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder +import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker +import com.android.systemui.statusbar.notification.icon.ui.viewmodel.NotificationIconContainerAlwaysOnDisplayViewModel import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel +import com.android.systemui.statusbar.phone.NotificationIconContainer +import com.android.systemui.statusbar.ui.SystemBarUtilsState +import com.android.systemui.util.ui.isAnimating +import com.android.systemui.util.ui.stopAnimating +import com.android.systemui.util.ui.value import dagger.Lazy import javax.inject.Inject +import kotlinx.coroutines.launch @SysUISingleton class NotificationSection @@ -55,6 +83,13 @@ constructor( sharedNotificationContainerViewModel: SharedNotificationContainerViewModel, stackScrollLayout: NotificationStackScrollLayout, sharedNotificationContainerBinder: SharedNotificationContainerBinder, + private val keyguardRootViewModel: KeyguardRootViewModel, + private val configurationState: ConfigurationState, + private val iconBindingFailureTracker: StatusBarIconViewBindingFailureTracker, + private val nicAodViewModel: NotificationIconContainerAlwaysOnDisplayViewModel, + private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore, + private val systemBarUtilsState: SystemBarUtilsState, + private val clockInteractor: KeyguardClockInteractor, ) { init { @@ -80,6 +115,47 @@ constructor( } @Composable + fun AodNotificationIcons(modifier: Modifier = Modifier) { + val isVisible by + keyguardRootViewModel.isNotifIconContainerVisible.collectAsStateWithLifecycle() + val transitionState = remember { MutableTransitionState(isVisible.value) } + LaunchedEffect(key1 = isVisible, key2 = transitionState.isIdle) { + transitionState.targetState = isVisible.value + if (isVisible.isAnimating && transitionState.isIdle) { + isVisible.stopAnimating() + } + } + val burnIn = rememberBurnIn(clockInteractor) + AnimatedVisibility( + visibleState = transitionState, + enter = fadeIn(), + exit = fadeOut(), + modifier = + modifier + .height(dimensionResource(R.dimen.notification_shelf_height)) + .burnInAware(aodBurnInViewModel, burnIn.parameters), + ) { + val scope = rememberCoroutineScope() + AndroidView( + factory = { context -> + NotificationIconContainer(context, null).also { nic -> + scope.launch { + NotificationIconContainerViewBinder.bind( + nic, + nicAodViewModel, + configurationState, + systemBarUtilsState, + iconBindingFailureTracker, + nicAodIconViewStore, + ) + } + } + }, + ) + } + } + + @Composable fun SceneScope.HeadsUpNotifications() { SnoozeableHeadsUpNotificationSpace( stackScrollView = stackScrollView.get(), diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt b/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt index 5dccb681b041..d52323295db7 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt @@ -22,29 +22,32 @@ import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.SceneTransitionLayoutState import com.android.compose.animation.scene.StaticElementContentPicker import com.android.compose.animation.scene.content.state.TransitionState +import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.Scenes +import com.android.systemui.shade.shared.flag.DualShade /** [ElementContentPicker] implementation for the media carousel object. */ object MediaContentPicker : StaticElementContentPicker { override val contents = setOf( + Overlays.NotificationsShade, + Overlays.QuickSettingsShade, Scenes.Lockscreen, Scenes.Shade, Scenes.QuickSettings, - Scenes.QuickSettingsShade, - Scenes.Communal + Scenes.Communal, ) override fun contentDuringTransition( element: ElementKey, transition: TransitionState.Transition, fromContentZIndex: Float, - toContentZIndex: Float + toContentZIndex: Float, ): ContentKey { return when { shouldElevateMedia(transition) -> { - Scenes.Shade + if (DualShade.isEnabled) Overlays.NotificationsShade else Scenes.Shade } transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Communal) -> { Scenes.Lockscreen @@ -52,6 +55,12 @@ object MediaContentPicker : StaticElementContentPicker { transition.isTransitioningBetween(Scenes.QuickSettings, Scenes.Shade) -> { Scenes.QuickSettings } + transition.isTransitioningBetween( + Overlays.QuickSettingsShade, + Overlays.NotificationsShade, + ) -> { + Overlays.QuickSettingsShade + } transition.toContent in contents -> transition.toContent else -> { check(transition.fromContent in contents) { @@ -65,7 +74,8 @@ object MediaContentPicker : StaticElementContentPicker { /** Returns true when the media should be laid on top of the rest for the given [transition]. */ fun shouldElevateMedia(transition: TransitionState.Transition): Boolean { - return transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Shade) + return transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Shade) || + transition.isTransitioningBetween(Scenes.Lockscreen, Overlays.NotificationsShade) } } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateSharedAsState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateSharedAsState.kt index b30f2b7002ce..0fc88b22a4d0 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateSharedAsState.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateSharedAsState.kt @@ -121,7 +121,7 @@ fun ContentScope.animateContentFloatAsState( @Deprecated( "Use animateContentFloatAsState() instead", - replaceWith = ReplaceWith("animateContentFloatAsState(value, key, canOverflow)") + replaceWith = ReplaceWith("animateContentFloatAsState(value, key, canOverflow)"), ) @Composable fun ContentScope.animateSceneFloatAsState( @@ -172,14 +172,11 @@ fun ContentScope.animateContentDpAsState( @Deprecated( "Use animateContentDpAsState() instead", - replaceWith = ReplaceWith("animateContentDpAsState(value, key, canOverflow)") + replaceWith = ReplaceWith("animateContentDpAsState(value, key, canOverflow)"), ) @Composable -fun ContentScope.animateSceneDpAsState( - value: Dp, - key: ValueKey, - canOverflow: Boolean = true, -) = animateContentDpAsState(value, key, canOverflow) +fun ContentScope.animateSceneDpAsState(value: Dp, key: ValueKey, canOverflow: Boolean = true) = + animateContentDpAsState(value, key, canOverflow) /** * Animate a shared element Dp value. @@ -214,10 +211,7 @@ private object SharedDpType : SharedValueType<Dp, Dp> { * @see ContentScope.animateContentValueAsState */ @Composable -fun ContentScope.animateContentColorAsState( - value: Color, - key: ValueKey, -): AnimatedState<Color> { +fun ContentScope.animateContentColorAsState(value: Color, key: ValueKey): AnimatedState<Color> { return animateContentValueAsState(value, key, SharedColorType, canOverflow = false) } @@ -227,10 +221,7 @@ fun ContentScope.animateContentColorAsState( * @see ElementScope.animateElementValueAsState */ @Composable -fun ElementScope<*>.animateElementColorAsState( - value: Color, - key: ValueKey, -): AnimatedState<Color> { +fun ElementScope<*>.animateElementColorAsState(value: Color, key: ValueKey): AnimatedState<Color> { return animateElementValueAsState(value, key, SharedColorType, canOverflow = false) } @@ -274,12 +265,7 @@ private object SharedColorType : SharedValueType<Color, ColorDelta> { * Note: This class is necessary because Color() checks the bounds of its values and UncheckedColor * is internal. */ -private class ColorDelta( - val red: Float, - val green: Float, - val blue: Float, - val alpha: Float, -) +private class ColorDelta(val red: Float, val green: Float, val blue: Float, val alpha: Float) @Composable internal fun <T> animateSharedValueAsState( @@ -331,7 +317,7 @@ internal fun <T> animateSharedValueAsState( private fun <T, Delta> sharedValue( layoutImpl: SceneTransitionLayoutImpl, key: ValueKey, - element: ElementKey? + element: ElementKey?, ): SharedValue<T, Delta> { return layoutImpl.sharedValues[key]?.get(element)?.let { it as SharedValue<T, Delta> } ?: error(valueReadTooEarlyMessage(key)) @@ -342,9 +328,7 @@ private fun valueReadTooEarlyMessage(key: ValueKey) = "means that you are reading it during composition, which you should not do. See the " + "documentation of AnimatedState for more information." -internal class SharedValue<T, Delta>( - val type: SharedValueType<T, Delta>, -) { +internal class SharedValue<T, Delta>(val type: SharedValueType<T, Delta>) { /** The target value of this shared value for each content. */ val targetValues = SnapshotStateMap<ContentKey, T>() 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 007b84a2954a..f38a31026664 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 @@ -109,12 +109,12 @@ internal class DraggableHandlerImpl( return (upOrLeft != null && contentTransition.isTransitioningBetween( fromContent.key, - upOrLeft.toContent(currentScene) + upOrLeft.toContent(currentScene), )) || (downOrRight != null && contentTransition.isTransitioningBetween( fromContent.key, - downOrRight.toContent(currentScene) + downOrRight.toContent(currentScene), )) } @@ -163,7 +163,7 @@ internal class DraggableHandlerImpl( private fun updateDragController( swipes: Swipes, - swipeAnimation: SwipeAnimation<*> + swipeAnimation: SwipeAnimation<*>, ): DragControllerImpl { val newDragController = DragControllerImpl(this, swipes, swipeAnimation) newDragController.updateTransition(swipeAnimation, force = true) @@ -171,10 +171,7 @@ internal class DraggableHandlerImpl( return newDragController } - internal fun createSwipeAnimation( - swipes: Swipes, - result: UserActionResult, - ): SwipeAnimation<*> { + internal fun createSwipeAnimation(swipes: Swipes, result: UserActionResult): SwipeAnimation<*> { val upOrLeftResult = swipes.upOrLeftResult val downOrRightResult = swipes.downOrRightResult val isUpOrLeft = @@ -266,7 +263,7 @@ private class DragControllerImpl( layoutState.startTransitionImmediately( animationScope = draggableHandler.layoutImpl.animationScope, newTransition.contentTransition, - true + true, ) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt index a076f22a74d7..5a084dbd9905 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt @@ -263,7 +263,7 @@ internal class ElementNode( @ExperimentalComposeUiApi override fun MeasureScope.measure( measurable: Measurable, - constraints: Constraints + constraints: Constraints, ): MeasureResult { check(isLookingAhead) @@ -344,7 +344,7 @@ internal class ElementNode( private fun ApproachMeasureScope.doNotPlace( measurable: Measurable, - constraints: Constraints + constraints: Constraints, ): MeasureResult { recursivelyClearPlacementValues() stateInContent.lastSize = Element.SizeUnspecified @@ -355,7 +355,7 @@ internal class ElementNode( private fun ApproachMeasureScope.placeNormally( measurable: Measurable, - constraints: Constraints + constraints: Constraints, ): MeasureResult { val placeable = measurable.measure(constraints) stateInContent.lastSize = placeable.size() @@ -670,10 +670,7 @@ private fun prepareInterruption( * Reconcile the state of [element] in the formContent and toContent of [transition] so that the * values before interruption have their expected values, taking shared transitions into account. */ -private fun reconcileStates( - element: Element, - transition: TransitionState.Transition, -) { +private fun reconcileStates(element: Element, transition: TransitionState.Transition) { val fromContentState = element.stateByContent[transition.fromContent] ?: return val toContentState = element.stateByContent[transition.toContent] ?: return if (!isSharedElementEnabled(element.key, transition)) { @@ -831,15 +828,21 @@ private fun shouldPlaceElement( // Don't place the element in this content if this content is not part of the current element // transition. - if (content != transition.fromContent && content != transition.toContent) { + val isReplacingOverlay = transition is TransitionState.Transition.ReplaceOverlay + if ( + content != transition.fromContent && + content != transition.toContent && + (!isReplacingOverlay || content != transition.currentScene) + ) { return false } // Place the element if it is not shared. - if ( - transition.fromContent !in element.stateByContent || - transition.toContent !in element.stateByContent - ) { + var copies = 0 + if (transition.fromContent in element.stateByContent) copies++ + if (transition.toContent in element.stateByContent) copies++ + if (isReplacingOverlay && transition.currentScene in element.stateByContent) copies++ + if (copies <= 1) { return true } @@ -1139,7 +1142,7 @@ private fun ContentDrawScope.getDrawScale( Offset.Unspecified } else { a.pivot.specifiedOrCenter() - b.pivot.specifiedOrCenter() - } + }, ) }, add = { a, b, bProgress -> @@ -1151,9 +1154,9 @@ private fun ContentDrawScope.getDrawScale( Offset.Unspecified } else { a.pivot.specifiedOrCenter() + b.pivot.specifiedOrCenter() * bProgress - } + }, ) - } + }, ) stateInContent.lastScale = interruptedScale @@ -1272,9 +1275,10 @@ private inline fun <T> computeValue( // If we are replacing an overlay and the element is both in a single overlay and in the current // scene, interpolate the state of the element using the current scene as the other scene. + var currentSceneState: Element.State? = null if (!isSharedElement && transition is TransitionState.Transition.ReplaceOverlay) { - val currentSceneState = element.stateByContent[transition.currentScene] - if (currentSceneState != null) { + currentSceneState = element.stateByContent[transition.currentScene] + if (currentSceneState != null && isSharedElementEnabled(element.key, transition)) { return interpolateSharedElement( transition = transition, contentValue = contentValue, @@ -1293,6 +1297,8 @@ private inline fun <T> computeValue( when { isSharedElement && currentContent == fromContent -> fromState isSharedElement -> toState + currentSceneState != null && currentContent == transition.currentScene -> + currentSceneState else -> fromState ?: toState } ) @@ -1371,7 +1377,7 @@ private inline fun <T> computeValue( lerp( lerp(previewTargetValue, targetValueOrNull ?: idleValue, previewRangeProgress), idleValue, - transformation?.range?.progress(transition.progress) ?: transition.progress + transformation?.range?.progress(transition.progress) ?: transition.progress, ) } else { if (targetValueOrNull == null) { @@ -1384,7 +1390,7 @@ private inline fun <T> computeValue( lerp( lerp(idleValue, previewTargetValue, previewRangeProgress), targetValueOrNull, - transformation.range?.progress(transition.progress) ?: transition.progress + transformation.range?.progress(transition.progress) ?: transition.progress, ) } } @@ -1399,14 +1405,7 @@ private inline fun <T> computeValue( val idleValue = contentValue(contentState) val targetValue = - transformation.transform( - layoutImpl, - content, - element, - contentState, - transition, - idleValue, - ) + transformation.transform(layoutImpl, content, element, contentState, transition, idleValue) // Make sure we don't read progress if values are the same and we don't need to interpolate, so // we don't invalidate the phase where this is read. @@ -1419,7 +1418,13 @@ private inline fun <T> computeValue( val rangeProgress = transformation.range?.progress(progress) ?: progress // Interpolate between the value at rest and the value before entering/after leaving. - val isEntering = content == toContent + val isEntering = + when { + content == toContent -> true + content == fromContent -> false + content == transition.currentScene -> toState == null + else -> content == toContent + } return if (isEntering) { lerp(targetValue, idleValue, rangeProgress) } else { @@ -1433,7 +1438,7 @@ private inline fun <T> interpolateSharedElement( fromState: Element.State, toState: Element.State, isSpecified: (T) -> Boolean, - lerp: (T, T, Float) -> T + lerp: (T, T, Float) -> T, ): T { val start = contentValue(fromState) val end = contentValue(toState) diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/InterruptionHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/InterruptionHandler.kt index cb18c6729170..205714608e3c 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/InterruptionHandler.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/InterruptionHandler.kt @@ -79,9 +79,6 @@ object DefaultInterruptionHandler : InterruptionHandler { interrupted: TransitionState.Transition.ChangeScene, newTargetScene: SceneKey, ): InterruptionResult { - return InterruptionResult( - animateFrom = interrupted.currentScene, - chain = true, - ) + return InterruptionResult(animateFrom = interrupted.currentScene, chain = true) } } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Key.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Key.kt index ced177ccb9a0..f9a9eeb0d34f 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Key.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Key.kt @@ -49,10 +49,7 @@ sealed class ContentKey(debugName: String, identity: Any) : Key(debugName, ident } /** Key for a scene. */ -class SceneKey( - debugName: String, - identity: Any = Object(), -) : ContentKey(debugName, identity) { +class SceneKey(debugName: String, identity: Any = Object()) : ContentKey(debugName, identity) { override val testTag: String = "scene:$debugName" /** The unique [ElementKey] identifying this scene's root element. */ @@ -64,10 +61,7 @@ class SceneKey( } /** Key for an overlay. */ -class OverlayKey( - debugName: String, - identity: Any = Object(), -) : ContentKey(debugName, identity) { +class OverlayKey(debugName: String, identity: Any = Object()) : ContentKey(debugName, identity) { override val testTag: String = "overlay:$debugName" override fun toString(): String { diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt index 471ad3fee9fb..1f26b71cf3e5 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/MovableElement.kt @@ -86,7 +86,7 @@ private abstract class BaseElementScope<ContentScope>( value: T, key: ValueKey, type: SharedValueType<T, *>, - canOverflow: Boolean + canOverflow: Boolean, ): AnimatedState<T> { return animateSharedValueAsState( layoutImpl, @@ -200,7 +200,7 @@ private fun shouldComposeMovableElement( content, element, elementState, - isInContent = { contents.contains(it) } + isInContent = { contents.contains(it) }, ) } } @@ -220,11 +220,7 @@ private fun movableElementContentWhenIdle( elementState: TransitionState.Idle, ): ContentKey { val contents = element.contentPicker.contents - return elementContentWhenIdle( - layoutImpl, - elementState, - isInContent = { contents.contains(it) }, - ) + return elementContentWhenIdle(layoutImpl, elementState, isInContent = { contents.contains(it) }) } /** diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt index 8ae3a1145e24..30eb302b3bcb 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/ObservableTransitionState.kt @@ -57,10 +57,8 @@ sealed interface ObservableTransitionState { /** No transition/animation is currently running. */ data class Idle @JvmOverloads - constructor( - val currentScene: SceneKey, - val currentOverlays: Set<OverlayKey> = emptySet(), - ) : ObservableTransitionState + constructor(val currentScene: SceneKey, val currentOverlays: Set<OverlayKey> = emptySet()) : + ObservableTransitionState /** There is a transition animating between two scenes. */ sealed class Transition( @@ -208,6 +206,17 @@ sealed interface ObservableTransitionState { (from == null || this.fromContent == from) && (to == null || this.toContent == to) } + + /** Whether we are transitioning from [content] to [other], or from [other] to [content]. */ + fun isTransitioningBetween(content: ContentKey, other: ContentKey): Boolean { + return isTransitioning(from = content, to = other) || + isTransitioning(from = other, to = content) + } + + /** Whether we are transitioning from or to [content]. */ + fun isTransitioningFromOrTo(content: ContentKey): Boolean { + return isTransitioning(from = content) || isTransitioning(to = content) + } } /** @@ -219,10 +228,7 @@ fun SceneTransitionLayoutState.observableTransitionState(): Flow<ObservableTrans return snapshotFlow { when (val state = transitionState) { is TransitionState.Idle -> - ObservableTransitionState.Idle( - state.currentScene, - state.currentOverlays, - ) + ObservableTransitionState.Idle(state.currentScene, state.currentOverlays) is TransitionState.Transition.ChangeScene -> { ObservableTransitionState.Transition.ChangeScene( fromScene = state.fromScene, diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt index 8480d3afaed4..b00c8ade07eb 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt @@ -35,9 +35,7 @@ internal fun PredictiveBackHandler( layoutImpl: SceneTransitionLayoutImpl, result: UserActionResult?, ) { - PredictiveBackHandler( - enabled = result != null, - ) { events: Flow<BackEventCompat> -> + PredictiveBackHandler(enabled = result != null) { events: Flow<BackEventCompat> -> if (result == null) { // Note: We have to collect progress otherwise PredictiveBackHandler will throw. events.first() 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 004bb40bb0ad..f20548b1f81b 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 @@ -585,7 +585,7 @@ fun interface UserActionDistance { */ fun UserActionDistanceScope.absoluteDistance( fromSceneSize: IntSize, - orientation: Orientation + orientation: Orientation, ): Float } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt index f36c0fa2d75c..fe052344023c 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt @@ -253,7 +253,7 @@ internal class SceneTransitionLayoutImpl( key: OverlayKey, userActions: Map<UserAction, UserActionResult>, alignment: Alignment, - content: @Composable (ContentScope.() -> Unit) + content: @Composable (ContentScope.() -> Unit), ) { overlaysDefined = true overlaysToRemove.remove(key) @@ -291,7 +291,7 @@ internal class SceneTransitionLayoutImpl( private fun resolveUserActions( key: ContentKey, userActions: Map<UserAction, UserActionResult>, - layoutDirection: LayoutDirection + layoutDirection: LayoutDirection, ): Map<UserAction.Resolved, UserActionResult> { return userActions .mapKeys { it.key.resolve(layoutDirection) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt index c2d5dd053148..dbff8a4f7f45 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutState.kt @@ -328,9 +328,7 @@ internal class MutableSceneTransitionLayoutStateImpl( ): Job { // Note that we start with UNDISPATCHED so that startTransition() is called directly and // transition becomes the current [transitionState] right after this call. - return animationScope.launch( - start = CoroutineStart.UNDISPATCHED, - ) { + return animationScope.launch(start = CoroutineStart.UNDISPATCHED) { startTransition(transition, chain) } } @@ -461,7 +459,7 @@ internal class MutableSceneTransitionLayoutStateImpl( val indicator = if (finishedTransitions.contains(transition)) "x" else " " appendLine(" [$indicator] $from => $to ($transition)") } - } + }, ) } @@ -621,7 +619,7 @@ internal class MutableSceneTransitionLayoutStateImpl( override fun showOverlay( overlay: OverlayKey, animationScope: CoroutineScope, - transitionKey: TransitionKey? + transitionKey: TransitionKey?, ) { checkThread() @@ -654,7 +652,7 @@ internal class MutableSceneTransitionLayoutStateImpl( ) { animate( replacedTransition = currentState, - reversed = overlay == currentState.fromContent + reversed = overlay == currentState.fromContent, ) } else { animate() @@ -664,7 +662,7 @@ internal class MutableSceneTransitionLayoutStateImpl( override fun hideOverlay( overlay: OverlayKey, animationScope: CoroutineScope, - transitionKey: TransitionKey? + transitionKey: TransitionKey?, ) { checkThread() @@ -705,7 +703,7 @@ internal class MutableSceneTransitionLayoutStateImpl( from: OverlayKey, to: OverlayKey, animationScope: CoroutineScope, - transitionKey: TransitionKey? + transitionKey: TransitionKey?, ) { checkThread() diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitions.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitions.kt index e65ed9b7dc97..b358faf2c418 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitions.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitions.kt @@ -50,7 +50,7 @@ internal constructor( private val transitionCache = mutableMapOf< ContentKey, - MutableMap<ContentKey, MutableMap<TransitionKey?, TransitionSpecImpl>> + MutableMap<ContentKey, MutableMap<TransitionKey?, TransitionSpecImpl>>, >() private val overscrollCache = @@ -70,7 +70,7 @@ internal constructor( private fun findSpec( from: ContentKey, to: ContentKey, - key: TransitionKey? + key: TransitionKey?, ): TransitionSpecImpl { val spec = transition(from, to, key) { it.from == from && it.to == to } if (spec != null) { @@ -250,7 +250,7 @@ internal class TransitionSpecImpl( override val to: ContentKey?, private val previewTransformationSpec: (() -> TransformationSpecImpl)? = null, private val reversePreviewTransformationSpec: (() -> TransformationSpecImpl)? = null, - private val transformationSpec: () -> TransformationSpecImpl + private val transformationSpec: () -> TransformationSpecImpl, ) : TransitionSpec { override fun reversed(): TransitionSpecImpl { return TransitionSpecImpl( @@ -265,9 +265,9 @@ internal class TransitionSpecImpl( progressSpec = reverse.progressSpec, swipeSpec = reverse.swipeSpec, distance = reverse.distance, - transformations = reverse.transformations.map { it.reversed() } + transformations = reverse.transformations.map { it.reversed() }, ) - } + }, ) } @@ -382,11 +382,7 @@ internal class TransformationSpecImpl( return ElementTransformations(shared, offset, size, drawScale, alpha) } - private fun throwIfNotNull( - previous: Transformation?, - element: ElementKey, - name: String, - ) { + private fun throwIfNotNull(previous: Transformation?, element: ElementKey, name: String) { if (previous != null) { error("$element has multiple $name transformations") } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt index 966bda410231..84dce0d730c4 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt @@ -54,7 +54,7 @@ internal fun createSwipeAnimation( result: UserActionResult, isUpOrLeft: Boolean, orientation: Orientation, - distance: Float = DistanceUnspecified + distance: Float = DistanceUnspecified, ): SwipeAnimation<*> { var lastDistance = distance 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 dc7eda5b9cf6..98d4aaa91458 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 @@ -39,14 +39,14 @@ import com.android.compose.animation.scene.content.Content @Stable internal fun Modifier.swipeToScene( draggableHandler: DraggableHandlerImpl, - swipeDetector: SwipeDetector + swipeDetector: SwipeDetector, ): Modifier { return this.then(SwipeToSceneElement(draggableHandler, swipeDetector)) } private data class SwipeToSceneElement( val draggableHandler: DraggableHandlerImpl, - val swipeDetector: SwipeDetector + val swipeDetector: SwipeDetector, ) : ModifierNodeElement<SwipeToSceneNode>() { override fun create(): SwipeToSceneNode = SwipeToSceneNode(draggableHandler, swipeDetector) @@ -183,12 +183,12 @@ internal fun interface ScrollBehaviorOwner { */ private class ScrollBehaviorOwnerNode( override val traverseKey: Any, - val nestedScrollHandlerImpl: NestedScrollHandlerImpl + val nestedScrollHandlerImpl: NestedScrollHandlerImpl, ) : Modifier.Node(), TraversableNode, ScrollBehaviorOwner { override fun updateScrollBehaviors( topOrLeftBehavior: NestedScrollBehavior, bottomOrRightBehavior: NestedScrollBehavior, - isExternalOverscrollGesture: () -> Boolean + isExternalOverscrollGesture: () -> Boolean, ) { nestedScrollHandlerImpl.topOrLeftBehavior = topOrLeftBehavior nestedScrollHandlerImpl.bottomOrRightBehavior = bottomOrRightBehavior diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt index 1f82e0bd026a..763dc6bf49e0 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDsl.kt @@ -333,7 +333,7 @@ object HighestZIndexContentPicker : ElementContentPicker { element: ElementKey, transition: TransitionState.Transition, fromContentZIndex: Float, - toContentZIndex: Float + toContentZIndex: Float, ): ContentKey { return if (fromContentZIndex > toContentZIndex) { transition.fromContent @@ -354,7 +354,7 @@ object HighestZIndexContentPicker : ElementContentPicker { element: ElementKey, transition: TransitionState.Transition, fromContentZIndex: Float, - toContentZIndex: Float + toContentZIndex: Float, ): ContentKey { return HighestZIndexContentPicker.contentDuringTransition( element, @@ -375,7 +375,7 @@ object LowestZIndexContentPicker : ElementContentPicker { element: ElementKey, transition: TransitionState.Transition, fromContentZIndex: Float, - toContentZIndex: Float + toContentZIndex: Float, ): ContentKey { return if (fromContentZIndex < toContentZIndex) { transition.fromContent @@ -396,7 +396,7 @@ object LowestZIndexContentPicker : ElementContentPicker { element: ElementKey, transition: TransitionState.Transition, fromContentZIndex: Float, - toContentZIndex: Float + toContentZIndex: Float, ): ContentKey { return LowestZIndexContentPicker.contentDuringTransition( element, @@ -423,9 +423,8 @@ object LowestZIndexContentPicker : ElementContentPicker { * is not the same as when going from scene B to scene A, so it's not usable in situations where * z-ordering during the transition matters. */ -class MovableElementContentPicker( - override val contents: Set<ContentKey>, -) : StaticElementContentPicker { +class MovableElementContentPicker(override val contents: Set<ContentKey>) : + StaticElementContentPicker { override fun contentDuringTransition( element: ElementKey, transition: TransitionState.Transition, @@ -501,7 +500,7 @@ interface PropertyTransformationBuilder { matcher: ElementMatcher, scaleX: Float = 1f, scaleY: Float = 1f, - pivot: Offset = Offset.Unspecified + pivot: Offset = Offset.Unspecified, ) /** diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDslImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDslImpl.kt index da4c8d8db752..7ec5e4f4f149 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDslImpl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/TransitionDslImpl.kt @@ -41,9 +41,7 @@ import com.android.compose.animation.scene.transformation.Transformation import com.android.compose.animation.scene.transformation.TransformationRange import com.android.compose.animation.scene.transformation.Translate -internal fun transitionsImpl( - builder: SceneTransitionsBuilder.() -> Unit, -): SceneTransitions { +internal fun transitionsImpl(builder: SceneTransitionsBuilder.() -> Unit): SceneTransitions { val impl = SceneTransitionsBuilderImpl().apply(builder) return SceneTransitions( impl.defaultSwipeSpec, @@ -67,7 +65,7 @@ private class SceneTransitionsBuilderImpl : SceneTransitionsBuilder { key: TransitionKey?, preview: (TransitionBuilder.() -> Unit)?, reversePreview: (TransitionBuilder.() -> Unit)?, - builder: TransitionBuilder.() -> Unit + builder: TransitionBuilder.() -> Unit, ): TransitionSpec { return transition(from = null, to = to, key = key, preview, reversePreview, builder) } @@ -78,7 +76,7 @@ private class SceneTransitionsBuilderImpl : SceneTransitionsBuilder { key: TransitionKey?, preview: (TransitionBuilder.() -> Unit)?, reversePreview: (TransitionBuilder.() -> Unit)?, - builder: TransitionBuilder.() -> Unit + builder: TransitionBuilder.() -> Unit, ): TransitionSpec { return transition(from = from, to = to, key = key, preview, reversePreview, builder) } @@ -86,7 +84,7 @@ private class SceneTransitionsBuilderImpl : SceneTransitionsBuilder { override fun overscroll( content: ContentKey, orientation: Orientation, - builder: OverscrollBuilder.() -> Unit + builder: OverscrollBuilder.() -> Unit, ): OverscrollSpec { val impl = OverscrollBuilderImpl().apply(builder) check(impl.transformations.isNotEmpty()) { @@ -150,7 +148,7 @@ private class SceneTransitionsBuilderImpl : SceneTransitionsBuilder { to, previewTransformationSpec, reversePreviewTransformationSpec, - transformationSpec + transformationSpec, ) transitionSpecs.add(spec) return spec @@ -167,7 +165,7 @@ internal abstract class BaseTransitionBuilderImpl : BaseTransitionBuilder { start: Float?, end: Float?, easing: Easing, - builder: PropertyTransformationBuilder.() -> Unit + builder: PropertyTransformationBuilder.() -> Unit, ) { range = TransformationRange(start, end, easing) builder() @@ -202,7 +200,7 @@ internal abstract class BaseTransitionBuilderImpl : BaseTransitionBuilder { override fun translate( matcher: ElementMatcher, edge: Edge, - startsOutsideLayoutBounds: Boolean + startsOutsideLayoutBounds: Boolean, ) { transformation(EdgeTranslate(matcher, edge, startsOutsideLayoutBounds)) } @@ -256,7 +254,7 @@ internal class TransitionBuilderImpl : BaseTransitionBuilderImpl(), TransitionBu startMillis: Int?, endMillis: Int?, easing: Easing, - builder: PropertyTransformationBuilder.() -> Unit + builder: PropertyTransformationBuilder.() -> Unit, ) { if (startMillis != null && (startMillis < 0 || startMillis > durationMillis)) { error("invalid start value: startMillis=$startMillis durationMillis=$durationMillis") @@ -278,7 +276,7 @@ internal open class OverscrollBuilderImpl : BaseTransitionBuilderImpl(), Overscr override fun translate( matcher: ElementMatcher, x: OverscrollScope.() -> Float, - y: OverscrollScope.() -> Float + y: OverscrollScope.() -> Float, ) { transformation(OverscrollTranslate(matcher, x, y)) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/UserActionDistanceScopeImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/UserActionDistanceScopeImpl.kt index 9851b32c42c4..b7fa0d497200 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/UserActionDistanceScopeImpl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/UserActionDistanceScopeImpl.kt @@ -19,9 +19,8 @@ package com.android.compose.animation.scene import androidx.compose.ui.geometry.Offset import androidx.compose.ui.unit.IntSize -internal class ElementStateScopeImpl( - private val layoutImpl: SceneTransitionLayoutImpl, -) : ElementStateScope { +internal class ElementStateScopeImpl(private val layoutImpl: SceneTransitionLayoutImpl) : + ElementStateScope { override fun ElementKey.targetSize(scene: SceneKey): IntSize? { return layoutImpl.elements[this]?.stateByContent?.get(scene)?.targetSize.takeIf { it != Element.SizeUnspecified @@ -39,9 +38,8 @@ internal class ElementStateScopeImpl( } } -internal class UserActionDistanceScopeImpl( - private val layoutImpl: SceneTransitionLayoutImpl, -) : UserActionDistanceScope, ElementStateScope by layoutImpl.elementStateScope { +internal class UserActionDistanceScopeImpl(private val layoutImpl: SceneTransitionLayoutImpl) : + UserActionDistanceScope, ElementStateScope by layoutImpl.elementStateScope { override val density: Float get() = layoutImpl.density.density diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt index 59dd896ad9ea..c8407b13db66 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt @@ -106,7 +106,7 @@ internal class ContentScopeImpl( override fun Element( key: ElementKey, modifier: Modifier, - content: @Composable (ElementScope<ElementContentScope>.() -> Unit) + content: @Composable (ElementScope<ElementContentScope>.() -> Unit), ) { Element(layoutImpl, this@ContentScopeImpl.content, key, modifier, content) } @@ -115,7 +115,7 @@ internal class ContentScopeImpl( override fun MovableElement( key: MovableElementKey, modifier: Modifier, - content: @Composable (ElementScope<MovableElementContentScope>.() -> Unit) + content: @Composable (ElementScope<MovableElementContentScope>.() -> Unit), ) { MovableElement(layoutImpl, this@ContentScopeImpl.content, key, modifier, content) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt index a47caaa15f18..364c2036e02d 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt @@ -184,7 +184,7 @@ sealed interface TransitionState { private fun computeCurrentOverlays( include: OverlayKey, - exclude: OverlayKey + exclude: OverlayKey, ): Set<OverlayKey> { return buildSet { addAll(currentOverlaysWhenTransitionStarted) @@ -336,9 +336,7 @@ sealed interface TransitionState { return specForCurrentScene.transformationSpec.transformations.isNotEmpty() } - internal open fun interruptionProgress( - layoutImpl: SceneTransitionLayoutImpl, - ): Float { + internal open fun interruptionProgress(layoutImpl: SceneTransitionLayoutImpl): Float { if (!layoutImpl.state.enableInterruptions) { return 0f } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/modifiers/SizeMatcher.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/modifiers/SizeMatcher.kt index a4bd2be45297..4698e5849d02 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/modifiers/SizeMatcher.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/modifiers/SizeMatcher.kt @@ -119,9 +119,8 @@ fun Modifier.sizeMatcherDestination(matcher: SizeMatcher): Modifier { return this.then(SizeMatcherDestinationElement(matcher)) } -private data class SizeMatcherSourceNodeElement( - private val matcher: SizeMatcher, -) : ModifierNodeElement<SizeMatcherSourceNode>() { +private data class SizeMatcherSourceNodeElement(private val matcher: SizeMatcher) : + ModifierNodeElement<SizeMatcherSourceNode>() { override fun create(): SizeMatcherSourceNode = SizeMatcherSourceNode(matcher) override fun update(node: SizeMatcherSourceNode) { @@ -129,9 +128,8 @@ private data class SizeMatcherSourceNodeElement( } } -private class SizeMatcherSourceNode( - private var matcher: SizeMatcher, -) : Modifier.Node(), LayoutModifierNode { +private class SizeMatcherSourceNode(private var matcher: SizeMatcher) : + Modifier.Node(), LayoutModifierNode { override fun onAttach() { matcher.source = this } @@ -150,7 +148,7 @@ private class SizeMatcherSourceNode( override fun MeasureScope.measure( measurable: Measurable, - constraints: Constraints + constraints: Constraints, ): MeasureResult { return measurable.measure(constraints).run { matcher.sourceSize = IntSize(width, height) @@ -159,9 +157,8 @@ private class SizeMatcherSourceNode( } } -private data class SizeMatcherDestinationElement( - private val matcher: SizeMatcher, -) : ModifierNodeElement<SizeMatcherDestinationNode>() { +private data class SizeMatcherDestinationElement(private val matcher: SizeMatcher) : + ModifierNodeElement<SizeMatcherDestinationNode>() { override fun create(): SizeMatcherDestinationNode = SizeMatcherDestinationNode(matcher) override fun update(node: SizeMatcherDestinationNode) { @@ -169,9 +166,8 @@ private data class SizeMatcherDestinationElement( } } -private class SizeMatcherDestinationNode( - private var matcher: SizeMatcher, -) : Modifier.Node(), LayoutModifierNode { +private class SizeMatcherDestinationNode(private var matcher: SizeMatcher) : + Modifier.Node(), LayoutModifierNode { override fun onAttach() { this.matcher.destinations.add(this) } @@ -190,7 +186,7 @@ private class SizeMatcherDestinationNode( override fun MeasureScope.measure( measurable: Measurable, - constraints: Constraints + constraints: Constraints, ): MeasureResult { val preferredSize = matcher.sourceSize val preferredConstraints = Constraints.fixed(preferredSize.width, preferredSize.height) diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt index 05878c2d3f08..86e06ab1f243 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/AnchoredTranslate.kt @@ -61,15 +61,9 @@ internal class AnchoredTranslate( val offset = anchorToOffset - anchorFromOffset return if (content == transition.toContent) { - Offset( - value.x - offset.x, - value.y - offset.y, - ) + Offset(value.x - offset.x, value.y - offset.y) } else { - Offset( - value.x + offset.x, - value.y + offset.y, - ) + Offset(value.x + offset.x, value.y + offset.y) } } } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/EdgeTranslate.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/EdgeTranslate.kt index a32c7dd09f95..031f50e17225 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/EdgeTranslate.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/EdgeTranslate.kt @@ -36,7 +36,7 @@ internal class EdgeTranslate( element: Element, stateInContent: Element.State, transition: TransitionState.Transition, - value: Offset + value: Offset, ): Offset { val sceneSize = layoutImpl.content(content).targetSize val elementSize = stateInContent.targetSize diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Fade.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Fade.kt index 4528eefedb3e..078aa0f7efe9 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Fade.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Fade.kt @@ -23,16 +23,14 @@ import com.android.compose.animation.scene.SceneTransitionLayoutImpl import com.android.compose.animation.scene.content.state.TransitionState /** Fade an element in or out. */ -internal class Fade( - override val matcher: ElementMatcher, -) : PropertyTransformation<Float> { +internal class Fade(override val matcher: ElementMatcher) : PropertyTransformation<Float> { override fun transform( layoutImpl: SceneTransitionLayoutImpl, content: ContentKey, element: Element, stateInContent: Element.State, transition: TransitionState.Transition, - value: Float + value: Float, ): Float { // Return the alpha value of [element] either when it starts fading in or when it finished // fading out, which is `0` in both cases. diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Transformation.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Transformation.kt index 505ad04c598c..9bb302307359 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Transformation.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Transformation.kt @@ -83,17 +83,13 @@ internal class RangedPropertyTransformation<T>( override fun reversed(): Transformation { return RangedPropertyTransformation( delegate.reversed() as PropertyTransformation<T>, - range.reversed() + range.reversed(), ) } } /** The progress-based range of a [PropertyTransformation]. */ -data class TransformationRange( - val start: Float, - val end: Float, - val easing: Easing, -) { +data class TransformationRange(val start: Float, val end: Float, val easing: Easing) { constructor( start: Float? = null, end: Float? = null, diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Translate.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Translate.kt index 8f845866a0f3..70142717fffe 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Translate.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transformation/Translate.kt @@ -40,12 +40,7 @@ internal class Translate( transition: TransitionState.Transition, value: Offset, ): Offset { - return with(layoutImpl.density) { - Offset( - value.x + x.toPx(), - value.y + y.toPx(), - ) - } + return with(layoutImpl.density) { Offset(value.x + x.toPx(), value.y + y.toPx()) } } } @@ -71,10 +66,7 @@ internal class OverscrollTranslate( val overscrollScope = cachedOverscrollScope.getFromCacheOrCompute(layoutImpl.density, overscrollProperties) - return Offset( - x = value.x + overscrollScope.x(), - y = value.y + overscrollScope.y(), - ) + return Offset(x = value.x + overscrollScope.x(), y = value.y + overscrollScope.y()) } } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/StateLink.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/StateLink.kt index c830ca4fa7c0..2aec5091c3e5 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/StateLink.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/link/StateLink.kt @@ -50,9 +50,7 @@ class StateLink(target: SceneTransitionLayoutState, val transitionLinks: List<Tr error("From and To can't be the same") } - internal fun isMatchingLink( - transition: TransitionState.Transition, - ): Boolean { + internal fun isMatchingLink(transition: TransitionState.Transition): Boolean { return (sourceFrom == null || sourceFrom == transition.fromContent) && (sourceTo == null || sourceTo == transition.toContent) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/grid/Grids.kt b/packages/SystemUI/compose/scene/src/com/android/compose/grid/Grids.kt index 790665aebe3e..f49939ba3a2d 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/grid/Grids.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/grid/Grids.kt @@ -99,10 +99,7 @@ private fun Grid( } } - Layout( - modifier = modifier, - content = content, - ) { measurables, constraints -> + Layout(modifier = modifier, content = content) { measurables, constraints -> val cells = measurables.size val columns: Int val rows: Int @@ -142,7 +139,7 @@ private fun Grid( (constraints.maxHeight - totalVerticalSpacingBetweenChildren) / rows } else { Constraints.Infinity - } + }, ) val placeables = buildList { diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/MathHelpers.kt b/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/MathHelpers.kt index e78ab297bfba..0447c36ea3f4 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/MathHelpers.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/MathHelpers.kt @@ -27,7 +27,7 @@ import com.android.compose.animation.scene.Scale fun lerp(start: IntSize, stop: IntSize, fraction: Float): IntSize { return IntSize( lerp(start.width, stop.width, fraction), - lerp(start.height, stop.height, fraction) + lerp(start.height, stop.height, fraction), ) } @@ -43,6 +43,6 @@ fun lerp(start: Scale, stop: Scale, fraction: Float): Scale { return Scale( lerp(start.scaleX, stop.scaleX, fraction), lerp(start.scaleY, stop.scaleY, fraction), - pivot + pivot, ) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/SpaceVectorConverter.kt b/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/SpaceVectorConverter.kt index a13e9441523a..f08a18046537 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/SpaceVectorConverter.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/ui/util/SpaceVectorConverter.kt @@ -22,8 +22,11 @@ import androidx.compose.ui.unit.Velocity interface SpaceVectorConverter { fun Offset.toFloat(): Float + fun Velocity.toFloat(): Float + fun Float.toOffset(): Offset + fun Float.toVelocity(): Velocity } @@ -36,15 +39,21 @@ fun SpaceVectorConverter(orientation: Orientation) = private val HorizontalConverter = object : SpaceVectorConverter { override fun Offset.toFloat() = x + override fun Velocity.toFloat() = x + override fun Float.toOffset() = Offset(this, 0f) + override fun Float.toVelocity() = Velocity(this, 0f) } private val VerticalConverter = object : SpaceVectorConverter { override fun Offset.toFloat() = y + override fun Velocity.toFloat() = y + override fun Float.toOffset() = Offset(0f, this) + override fun Float.toVelocity() = Velocity(0f, this) } diff --git a/packages/SystemUI/compose/scene/src/com/android/systemui/communal/ui/compose/CommunalSwipeDetector.kt b/packages/SystemUI/compose/scene/src/com/android/systemui/communal/ui/compose/CommunalSwipeDetector.kt index 41b015a2ede8..00e5405dd904 100644 --- a/packages/SystemUI/compose/scene/src/com/android/systemui/communal/ui/compose/CommunalSwipeDetector.kt +++ b/packages/SystemUI/compose/scene/src/com/android/systemui/communal/ui/compose/CommunalSwipeDetector.kt @@ -43,7 +43,7 @@ class CommunalSwipeDetector(private var lastDirection: SwipeSource.Resolved? = n layoutSize: IntSize, position: IntOffset, density: Density, - orientation: Orientation + orientation: Orientation, ): SwipeSource.Resolved? { return lastDirection } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/AnimatedSharedAsStateTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/AnimatedSharedAsStateTest.kt index a491349ca757..3644b3069fb3 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/AnimatedSharedAsStateTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/AnimatedSharedAsStateTest.kt @@ -53,12 +53,7 @@ import org.junit.runner.RunWith class AnimatedSharedAsStateTest { @get:Rule val rule = createComposeRule() - private data class Values( - val int: Int, - val float: Float, - val dp: Dp, - val color: Color, - ) + private data class Values(val int: Int, val float: Float, val dp: Dp, val color: Color) private fun lerp(start: Values, stop: Values, fraction: Float): Values { return Values( @@ -70,10 +65,7 @@ class AnimatedSharedAsStateTest { } @Composable - private fun ContentScope.Foo( - targetValues: Values, - onCurrentValueChanged: (Values) -> Unit, - ) { + private fun ContentScope.Foo(targetValues: Values, onCurrentValueChanged: (Values) -> Unit) { val key = TestElements.Foo Element(key, Modifier) { val int by animateElementIntAsState(targetValues.int, key = TestValues.Value1) @@ -245,7 +237,7 @@ class AnimatedSharedAsStateTest { fromSceneContent = { SceneValues( targetValues = fromValues, - onCurrentValueChanged = { lastValueInFrom = it } + onCurrentValueChanged = { lastValueInFrom = it }, ) }, toSceneContent = { @@ -457,7 +449,7 @@ class AnimatedSharedAsStateTest { rule.runOnUiThread { MutableSceneTransitionLayoutStateImpl( SceneA, - transitions { overscrollDisabled(SceneB, Orientation.Horizontal) } + transitions { overscrollDisabled(SceneB, Orientation.Horizontal) }, ) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt index 5b5935633166..fca92ca804fa 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt @@ -53,9 +53,7 @@ private val LAYOUT_SIZE = IntSize(SCREEN_SIZE.toInt(), SCREEN_SIZE.toInt()) @RunWith(AndroidJUnit4::class) class DraggableHandlerTest { - private class TestGestureScope( - val testScope: MonotonicClockTestScope, - ) { + private class TestGestureScope(val testScope: MonotonicClockTestScope) { var canChangeScene: (SceneKey) -> Boolean = { true } val layoutState = MutableSceneTransitionLayoutStateImpl( @@ -83,24 +81,14 @@ class DraggableHandlerTest { } private val scenesBuilder: SceneTransitionLayoutScope.() -> Unit = { - scene( - key = SceneA, - userActions = mutableUserActionsA, - ) { - Text("SceneA") - } - scene( - key = SceneB, - userActions = mutableUserActionsB, - ) { - Text("SceneB") - } + scene(key = SceneA, userActions = mutableUserActionsA) { Text("SceneA") } + scene(key = SceneB, userActions = mutableUserActionsB) { Text("SceneB") } scene( key = SceneC, userActions = mapOf( Swipe.Up to SceneB, - Swipe(SwipeDirection.Up, fromSource = Edge.Bottom) to SceneA + Swipe(SwipeDirection.Up, fromSource = Edge.Bottom) to SceneA, ), ) { Text("SceneC") @@ -110,16 +98,12 @@ class DraggableHandlerTest { userActions = mapOf( Swipe.Up to UserActionResult.HideOverlay(OverlayA), - Swipe.Down to UserActionResult.ReplaceByOverlay(OverlayB) + Swipe.Down to UserActionResult.ReplaceByOverlay(OverlayB), ), ) { Text("OverlayA") } - overlay( - key = OverlayB, - ) { - Text("OverlayB") - } + overlay(key = OverlayB) { Text("OverlayB") } } val transitionInterceptionThreshold = 0.05f @@ -144,7 +128,7 @@ class DraggableHandlerTest { fun nestedScrollConnection( nestedScrollBehavior: NestedScrollBehavior, - isExternalOverscrollGesture: Boolean = false + isExternalOverscrollGesture: Boolean = false, ) = NestedScrollHandlerImpl( layoutImpl = layoutImpl, @@ -154,7 +138,7 @@ class DraggableHandlerTest { isExternalOverscrollGesture = { isExternalOverscrollGesture }, pointersInfoOwner = { PointersInfo(startedPosition = Offset.Zero, pointersDown = 1) - } + }, ) .connection @@ -202,7 +186,7 @@ class DraggableHandlerTest { progress: Float? = null, previewProgress: Float? = null, isInPreviewStage: Boolean? = null, - isUserInputOngoing: Boolean? = null + isUserInputOngoing: Boolean? = null, ): Transition { val transition = assertThat(transitionState).isSceneTransition() currentScene?.let { assertThat(transition).hasCurrentScene(it) } @@ -269,7 +253,7 @@ class DraggableHandlerTest { fun DragController.onDragStopped( velocity: Float, canChangeScene: Boolean = true, - expectedConsumed: Boolean = true + expectedConsumed: Boolean = true, ) { val consumed = onStop(velocity, canChangeScene) assertThat(consumed).isEqualTo(if (expectedConsumed) velocity else 0f) @@ -280,16 +264,13 @@ class DraggableHandlerTest { consumedByScroll: Offset = Offset.Zero, ) { val consumedByPreScroll = - onPreScroll( - available = available, - source = NestedScrollSource.Drag, - ) + onPreScroll(available = available, source = NestedScrollSource.Drag) val consumed = consumedByPreScroll + consumedByScroll onPostScroll( consumed = consumed, available = available - consumed, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) } @@ -376,7 +357,7 @@ class DraggableHandlerTest { currentScene = SceneA, isInPreviewStage = true, previewProgress = 0.1f, - progress = 0f + progress = 0f, ) // wait for the stop animation @@ -415,7 +396,7 @@ class DraggableHandlerTest { currentScene = SceneA, fromScene = SceneA, toScene = SceneB, - progress = 0.6f + progress = 0.6f, ) // Reverse direction such that A -> C now with 0.4 @@ -424,7 +405,7 @@ class DraggableHandlerTest { currentScene = SceneA, fromScene = SceneA, toScene = SceneC, - progress = 0.4f + progress = 0.4f, ) // After the drag stopped scene C should be committed @@ -463,7 +444,7 @@ class DraggableHandlerTest { currentScene = SceneC, fromScene = SceneC, toScene = SceneB, - progress = -0.1f + progress = -0.1f, ) // Reverse drag direction, it will consume the previous drag @@ -472,7 +453,7 @@ class DraggableHandlerTest { currentScene = SceneC, fromScene = SceneC, toScene = SceneB, - progress = 0.0f + progress = 0.0f, ) // Continue reverse drag direction, it should record progress to Scene B @@ -481,7 +462,7 @@ class DraggableHandlerTest { currentScene = SceneC, fromScene = SceneC, toScene = SceneB, - progress = 0.1f + progress = 0.1f, ) } @@ -492,13 +473,13 @@ class DraggableHandlerTest { // Start dragging from the bottom onDragStarted( startedPosition = Offset(SCREEN_SIZE * 0.5f, SCREEN_SIZE), - overSlop = up(fractionOfScreen = 0.1f) + overSlop = up(fractionOfScreen = 0.1f), ) assertTransition( currentScene = SceneC, fromScene = SceneC, toScene = SceneA, - progress = 0.1f + progress = 0.1f, ) } @@ -509,14 +490,14 @@ class DraggableHandlerTest { currentScene = SceneA, fromScene = SceneA, toScene = SceneC, - progress = 0.3f + progress = 0.3f, ) dragController.onDragDelta(pixels = up(fractionOfScreen = 0.3f)) assertTransition( currentScene = SceneA, fromScene = SceneA, toScene = SceneC, - progress = 0.0f + progress = 0.0f, ) } @@ -537,7 +518,7 @@ class DraggableHandlerTest { currentScene = SceneA, fromScene = SceneA, toScene = SceneB, - progress = 0.2f + progress = 0.2f, ) // Start animation A -> B with progress 0.2 -> 1.0 @@ -552,7 +533,7 @@ class DraggableHandlerTest { currentScene = SceneB, fromScene = SceneB, toScene = SceneC, - progress = 0.2f + progress = 0.2f, ) // After the drag stopped scene C should be committed @@ -646,7 +627,7 @@ class DraggableHandlerTest { val nestedScroll = nestedScrollConnection(nestedScrollBehavior = EdgeWithPreview) nestedScroll.onPreScroll( available = downOffset(fractionOfScreen = 0.1f), - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertIdle(currentScene = SceneA) } @@ -658,7 +639,7 @@ class DraggableHandlerTest { nestedScroll.onPostScroll( consumed = Offset.Zero, available = Offset.Zero, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertIdle(currentScene = SceneA) @@ -672,7 +653,7 @@ class DraggableHandlerTest { nestedScroll.onPostScroll( consumed = Offset.Zero, available = downOffset(fractionOfScreen = 0.1f), - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertTransition(currentScene = SceneA) @@ -692,7 +673,7 @@ class DraggableHandlerTest { val consumed = nestedScroll.onPreScroll( available = downOffset(fractionOfScreen = 0.1f), - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertThat(progress).isEqualTo(0.2f) @@ -700,7 +681,7 @@ class DraggableHandlerTest { nestedScroll.onPostScroll( consumed = consumed, available = Offset.Zero, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertThat(progress).isEqualTo(0.2f) @@ -711,7 +692,7 @@ class DraggableHandlerTest { private fun TestGestureScope.preScrollAfterSceneTransition( firstScroll: Float, - secondScroll: Float + secondScroll: Float, ) { val nestedScroll = nestedScrollConnection(nestedScrollBehavior = EdgeWithPreview) // start scene transition @@ -723,7 +704,7 @@ class DraggableHandlerTest { // a pre scroll event, that could be intercepted by DraggableHandlerImpl nestedScroll.onPreScroll( available = Offset(0f, secondScroll), - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) } @@ -835,7 +816,7 @@ class DraggableHandlerTest { // scroll consumed in child nestedScroll.scroll( available = downOffset(fractionOfScreen = 0.1f), - consumedByScroll = downOffset(fractionOfScreen = 0.1f) + consumedByScroll = downOffset(fractionOfScreen = 0.1f), ) // scroll offsetY10 is all available for parents @@ -879,13 +860,11 @@ class DraggableHandlerTest { val nestedScroll = nestedScrollConnection( nestedScrollBehavior = EdgeWithPreview, - isExternalOverscrollGesture = true + isExternalOverscrollGesture = true, ) // scroll not consumed in child - nestedScroll.scroll( - available = downOffset(fractionOfScreen = 0.1f), - ) + nestedScroll.scroll(available = downOffset(fractionOfScreen = 0.1f)) // scroll offsetY10 is all available for parents nestedScroll.scroll(available = downOffset(fractionOfScreen = 0.1f)) @@ -1015,7 +994,7 @@ class DraggableHandlerTest { layoutState.startTransitionImmediately( animationScope = testScope.backgroundScope, - transition(SceneA, SceneB) + transition(SceneA, SceneB), ) assertThat(draggableHandler.shouldImmediatelyIntercept(startedPosition = null)).isFalse() } 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 60596de29f05..20a1e3c02dd0 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 @@ -229,11 +229,7 @@ class ElementTest { scene(SceneA) { Box(Modifier.size(layoutSize)) { // Transformed element - Element( - TestElements.Bar, - elementSize, - elementOffset, - ) + Element(TestElements.Bar, elementSize, elementOffset) } } scene(SceneB) { Box(Modifier.size(layoutSize)) } @@ -534,10 +530,7 @@ class ElementTest { scene(SceneA) { // The pages are full-size and beyondBoundsPageCount is 0, so at rest only one // page should be composed. - HorizontalPager( - pagerState, - beyondViewportPageCount = 0, - ) { page -> + HorizontalPager(pagerState, beyondViewportPageCount = 0) { page -> when (page) { 0 -> Box(Modifier.element(TestElements.Foo).fillMaxSize()) 1 -> Box(Modifier.fillMaxSize()) @@ -606,7 +599,7 @@ class ElementTest { scaleSize(TestElements.Foo, width = 2f, height = 0.5f) translate(TestElements.Foo, x = 10.dp, y = 10.dp) fade(TestElements.Foo) - } + }, ) { before { assertThat(fooCompositions).isEqualTo(1) } at(16) { assertThat(fooCompositions).isEqualTo(1) } @@ -627,7 +620,7 @@ class ElementTest { from(SceneA, to = SceneB) { scaleSize(TestElements.Foo, width = 2f, height = 2f) } - } + }, ) } @@ -676,13 +669,13 @@ class ElementTest { touchSlop = LocalViewConfiguration.current.touchSlop SceneTransitionLayout( state = state, - modifier = Modifier.size(layoutWidth, layoutHeight) + modifier = Modifier.size(layoutWidth, layoutHeight), ) { scene(key = SceneA, userActions = mapOf(Swipe.Down to SceneB)) { animateContentFloatAsState( value = animatedFloatRange.start, key = TestValues.Value1, - false + false, ) Spacer(Modifier.fillMaxSize()) } @@ -691,7 +684,7 @@ class ElementTest { animateContentFloatAsState( value = animatedFloatRange.endInclusive, key = TestValues.Value1, - canOverflow = false + canOverflow = false, ) Spacer(Modifier.element(TestElements.Foo).fillMaxSize()) LaunchedEffect(Unit) { @@ -786,7 +779,7 @@ class ElementTest { progressConverter = ProgressConverter.linear() translate(TestElements.Foo, y = overscrollTranslateY) } - } + }, ) as MutableSceneTransitionLayoutStateImpl } @@ -795,7 +788,7 @@ class ElementTest { touchSlop = LocalViewConfiguration.current.touchSlop SceneTransitionLayout( state = state, - modifier = Modifier.size(layoutWidth, layoutHeight) + modifier = Modifier.size(layoutWidth, layoutHeight), ) { scene(SceneA) { Spacer(Modifier.fillMaxSize()) } scene(SceneB, userActions = mapOf(Swipe.Up to SceneA)) { @@ -804,7 +797,7 @@ class ElementTest { // A scrollable that does not consume the scroll gesture .scrollable( rememberScrollableState(consumeScrollDelta = { 0f }), - Orientation.Vertical + Orientation.Vertical, ) .fillMaxSize() ) { @@ -869,18 +862,18 @@ class ElementTest { touchSlop = LocalViewConfiguration.current.touchSlop SceneTransitionLayout( state = state, - modifier = Modifier.size(layoutWidth, layoutHeight) + modifier = Modifier.size(layoutWidth, layoutHeight), ) { scene( SceneA, - userActions = mapOf(Swipe(SwipeDirection.Down, pointerCount = 2) to SceneB) + userActions = mapOf(Swipe(SwipeDirection.Down, pointerCount = 2) to SceneB), ) { Box( Modifier // A scrollable that does not consume the scroll gesture .scrollable( rememberScrollableState(consumeScrollDelta = { 0f }), - Orientation.Vertical + Orientation.Vertical, ) .fillMaxSize() ) { @@ -1203,7 +1196,7 @@ class ElementTest { startsOutsideLayoutBounds = false, ) } - } + }, ) } @@ -1621,7 +1614,7 @@ class ElementTest { rule.runOnUiThread { MutableSceneTransitionLayoutStateImpl( SceneA, - transitions { overscrollDisabled(SceneA, Orientation.Horizontal) } + transitions { overscrollDisabled(SceneA, Orientation.Horizontal) }, ) } @@ -1644,7 +1637,7 @@ class ElementTest { from = SceneA, to = SceneB, progress = { -1f }, - orientation = Orientation.Horizontal + orientation = Orientation.Horizontal, ) ) } @@ -1666,7 +1659,7 @@ class ElementTest { rule.runOnUiThread { MutableSceneTransitionLayoutStateImpl( SceneA, - transitions { from(SceneA, to = SceneB) { fade(TestElements.Foo) } } + transitions { from(SceneA, to = SceneB) { fade(TestElements.Foo) } }, ) } @@ -1730,7 +1723,7 @@ class ElementTest { rule.runOnUiThread { MutableSceneTransitionLayoutStateImpl( SceneA, - transitions { from(SceneA, to = SceneB) { fade(TestElements.Foo) } } + transitions { from(SceneA, to = SceneB) { fade(TestElements.Foo) } }, ) } @@ -1781,7 +1774,7 @@ class ElementTest { transitions { overscrollDisabled(SceneA, Orientation.Horizontal) overscrollDisabled(SceneB, Orientation.Horizontal) - } + }, ) } @@ -1830,7 +1823,7 @@ class ElementTest { transitions { overscrollDisabled(SceneA, Orientation.Horizontal) overscrollDisabled(SceneB, Orientation.Horizontal) - } + }, ) } @@ -1886,7 +1879,7 @@ class ElementTest { progressConverter = ProgressConverter.linear() translate(TestElements.Foo, y = 15.dp) } - } + }, ) } @@ -2053,7 +2046,7 @@ class ElementTest { from(SceneB, to = SceneC) { scaleSize(TestElements.Foo, width = 2f, height = 3f) } - } + }, ) } @@ -2171,7 +2164,7 @@ class ElementTest { rule.runOnIdle { MutableSceneTransitionLayoutStateImpl( SceneA, - transitions { overscrollDisabled(SceneA, Orientation.Horizontal) } + transitions { overscrollDisabled(SceneA, Orientation.Horizontal) }, ) } @@ -2231,7 +2224,7 @@ class ElementTest { // In B => A, Foo is shared. sharedElement(TestElements.Foo, enabled = true) } - } + }, ) } @@ -2363,7 +2356,7 @@ class ElementTest { }, previewProgress = 0.5f, progress = 0f, - isInPreviewStage = true + isInPreviewStage = true, ) // verify that preview transition for exiting elements is halfway played from @@ -2419,7 +2412,7 @@ class ElementTest { }, previewProgress = 0.5f, progress = 0.5f, - isInPreviewStage = false + isInPreviewStage = false, ) // verify that exiting elements remain in the preview-end state if no further transition is @@ -2459,13 +2452,13 @@ class ElementTest { transition: TransitionBuilder.() -> Unit, progress: Float = 0f, previewProgress: Float = 0.5f, - isInPreviewStage: Boolean = true + isInPreviewStage: Boolean = true, ): SceneTransitionLayoutImpl { val state = rule.runOnIdle { MutableSceneTransitionLayoutStateImpl( from, - transitions { from(from, to = to, preview = preview, builder = transition) } + transitions { from(from, to = to, preview = preview, builder = transition) }, ) } @@ -2489,7 +2482,7 @@ class ElementTest { to = to, progress = { progress }, previewProgress = { previewProgress }, - isInPreviewStage = { isInPreviewStage } + isInPreviewStage = { isInPreviewStage }, ) scope.launch { state.startTransition(bToA) } rule.waitForIdle() diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt index bc929bd6b4ce..b87cc5c88335 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/InterruptionHandlerTest.kt @@ -70,7 +70,7 @@ class InterruptionHandlerTest { object : InterruptionHandler { override fun onInterruption( interrupted: TransitionState.Transition.ChangeScene, - newTargetScene: SceneKey + newTargetScene: SceneKey, ): InterruptionResult { return InterruptionResult( animateFrom = interrupted.currentScene, @@ -88,7 +88,7 @@ class InterruptionHandlerTest { .comparingElementsUsing(FromToCurrentTriple) .containsExactly( // B to C. - Triple(SceneB, SceneC, SceneC), + Triple(SceneB, SceneC, SceneC) ) .inOrder() } @@ -105,7 +105,7 @@ class InterruptionHandlerTest { object : InterruptionHandler { override fun onInterruption( interrupted: TransitionState.Transition.ChangeScene, - newTargetScene: SceneKey + newTargetScene: SceneKey, ): InterruptionResult { return InterruptionResult( animateFrom = @@ -217,7 +217,7 @@ class InterruptionHandlerTest { { transition: TransitionState.Transition.ChangeScene? -> Triple(transition?.fromScene, transition?.toScene, transition?.currentScene) }, - "(from, to, current) triple" + "(from, to, current) triple", ) } } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/MovableElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/MovableElementTest.kt index e4879d9d8a31..7c9e9ce7c031 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/MovableElementTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/MovableElementTest.kt @@ -161,7 +161,7 @@ class MovableElementTest { element: ElementKey, transition: TransitionState.Transition, fromContentZIndex: Float, - toContentZIndex: Float + toContentZIndex: Float, ): ContentKey { transition as TransitionState.Transition.ChangeScene assertThat(transition).hasFromScene(SceneA) @@ -177,7 +177,7 @@ class MovableElementTest { SceneB } } - } + }, ) rule.testTransition( 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 index d58a0a3cc0aa..5edb99ea0795 100644 --- 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 @@ -51,7 +51,7 @@ class NestedScrollToSceneTest { private val layoutHeight = 400.dp private fun setup2ScenesAndScrollTouchSlop( - modifierSceneA: @Composable ContentScope.() -> Modifier = { Modifier }, + modifierSceneA: @Composable ContentScope.() -> Modifier = { Modifier } ): MutableSceneTransitionLayoutState { val state = rule.runOnUiThread { @@ -62,7 +62,7 @@ class NestedScrollToSceneTest { touchSlop = LocalViewConfiguration.current.touchSlop SceneTransitionLayout( state = state, - modifier = Modifier.size(layoutWidth, layoutHeight) + modifier = Modifier.size(layoutWidth, layoutHeight), ) { scene(SceneA, userActions = mapOf(Swipe.Up to SceneB)) { Spacer(modifierSceneA().fillMaxSize()) diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt index f3161f36bbf0..596e2cda95bb 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ObservableTransitionStateTest.kt @@ -47,12 +47,7 @@ class ObservableTransitionStateTest { @Test fun testObservableTransitionState() = runTest { val state = - rule.runOnUiThread { - MutableSceneTransitionLayoutState( - SceneA, - EmptyTestTransitions, - ) - } + rule.runOnUiThread { MutableSceneTransitionLayoutState(SceneA, EmptyTestTransitions) } // Collect the current observable state into [observableState]. // TODO(b/290184746): Use collectValues {} once it is extracted into a library that can be @@ -82,7 +77,7 @@ class ObservableTransitionStateTest { scene(SceneA) {} scene(SceneB) {} } - } + }, ) { before { assertThat(observableState()).isEqualTo(ObservableTransitionState.Idle(SceneA)) @@ -157,7 +152,7 @@ class ObservableTransitionStateTest { rule.runOnUiThread { MutableSceneTransitionLayoutState( SceneA, - transitions = transitions { from(SceneA, to = SceneB, preview = {}) } + transitions = transitions { from(SceneA, to = SceneB, preview = {}) }, ) } rule.setContent { diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt index 471362ba19e9..ffed15b457f9 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt @@ -654,6 +654,85 @@ class OverlayTest { } @Test + fun replaceAnimation_elementInCurrentSceneAndOneOverlay_sharedElementDisabled() { + rule.testReplaceOverlayTransition( + currentSceneContent = { + Box(Modifier.size(width = 180.dp, height = 120.dp)) { + Foo(width = 60.dp, height = 40.dp) + } + }, + fromContent = {}, + fromAlignment = Alignment.TopStart, + toContent = { Foo(width = 100.dp, height = 80.dp) }, + transition = { + // 4 frames of animation + spec = tween(4 * 16, easing = LinearEasing) + + // Scale Foo to/from size 0 in each content instead of sharing it. + sharedElement(TestElements.Foo, enabled = false) + scaleSize(TestElements.Foo, width = 0f, height = 0f) + }, + ) { + before { + rule + .onNode(isElement(TestElements.Foo, content = SceneA)) + .assertSizeIsEqualTo(60.dp, 40.dp) + .assertPositionInRootIsEqualTo(0.dp, 0.dp) + rule.onNode(isElement(TestElements.Foo, content = OverlayA)).assertDoesNotExist() + rule.onNode(isElement(TestElements.Foo, content = OverlayB)).assertDoesNotExist() + } + + at(16) { + rule + .onNode(isElement(TestElements.Foo, content = SceneA)) + .assertSizeIsEqualTo(45.dp, 30.dp) + .assertPositionInRootIsEqualTo(0.dp, 0.dp) + rule.onNode(isElement(TestElements.Foo, content = OverlayA)).assertDoesNotExist() + rule + .onNode(isElement(TestElements.Foo, content = OverlayB)) + .assertSizeIsEqualTo(25.dp, 20.dp) + .assertPositionInRootIsEqualTo(((180 - 25) / 2f).dp, ((120 - 20) / 2f).dp) + } + + at(32) { + rule + .onNode(isElement(TestElements.Foo, content = SceneA)) + .assertSizeIsEqualTo(30.dp, 20.dp) + .assertPositionInRootIsEqualTo(0.dp, 0.dp) + rule.onNode(isElement(TestElements.Foo, content = OverlayA)).assertDoesNotExist() + rule + .onNode(isElement(TestElements.Foo, content = OverlayB)) + .assertSizeIsEqualTo(50.dp, 40.dp) + .assertPositionInRootIsEqualTo(((180 - 50) / 2f).dp, ((120 - 40) / 2f).dp) + } + + at(48) { + rule + .onNode(isElement(TestElements.Foo, content = SceneA)) + .assertSizeIsEqualTo(15.dp, 10.dp) + .assertPositionInRootIsEqualTo(0.dp, 0.dp) + rule.onNode(isElement(TestElements.Foo, content = OverlayA)).assertDoesNotExist() + rule + .onNode(isElement(TestElements.Foo, content = OverlayB)) + .assertSizeIsEqualTo(75.dp, 60.dp) + .assertPositionInRootIsEqualTo(((180 - 75) / 2f).dp, ((120 - 60) / 2f).dp) + } + + after { + rule + .onNode(isElement(TestElements.Foo, content = SceneA)) + .assertExists() + .assertIsNotDisplayed() + rule.onNode(isElement(TestElements.Foo, content = OverlayA)).assertDoesNotExist() + rule + .onNode(isElement(TestElements.Foo, content = OverlayB)) + .assertSizeIsEqualTo(100.dp, 80.dp) + .assertPositionInRootIsEqualTo(40.dp, 20.dp) + } + } + } + + @Test fun overscrollingOverlay_movableElementNotInOverlay() { val state = rule.runOnUiThread { @@ -664,7 +743,7 @@ class OverlayTest { overscroll(OverlayA, orientation = Orientation.Horizontal) { translate(ElementKey("elementThatDoesNotExist"), x = 10.dp) } - } + }, ) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt index 9284ffddcee3..4224a0ccfd34 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt @@ -78,10 +78,10 @@ class PredictiveBackHandlerTest { spec = tween( durationMillis = transitionFrames * 16, - easing = LinearEasing + easing = LinearEasing, ) } - } + }, ) } rule.setContent { @@ -144,7 +144,7 @@ class PredictiveBackHandlerTest { rule.runOnUiThread { MutableSceneTransitionLayoutState( SceneA, - transitions = transitions { from(SceneA, to = SceneB, preview = {}) } + transitions = transitions { from(SceneA, to = SceneB, preview = {}) }, ) } rule.setContent { @@ -243,7 +243,7 @@ class PredictiveBackHandlerTest { rule.runOnUiThread { MutableSceneTransitionLayoutState( SceneA, - initialOverlays = setOf(OverlayA, OverlayB) + initialOverlays = setOf(OverlayA, OverlayB), ) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt index d356c25262e8..f3a34884c756 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutStateTest.kt @@ -66,7 +66,7 @@ class SceneTransitionLayoutStateTest { val state = MutableSceneTransitionLayoutStateImpl(SceneA, SceneTransitions.Empty) state.startTransitionImmediately( animationScope = backgroundScope, - transition(from = SceneA, to = SceneB) + transition(from = SceneA, to = SceneB), ) assertThat(state.isTransitioning()).isTrue() @@ -137,20 +137,20 @@ class SceneTransitionLayoutStateTest { sourceFrom: SceneKey? = SceneA, sourceTo: SceneKey? = SceneB, targetFrom: SceneKey? = SceneC, - targetTo: SceneKey = SceneD + targetTo: SceneKey = SceneD, ): Pair<MutableSceneTransitionLayoutStateImpl, MutableSceneTransitionLayoutStateImpl> { val parentState = MutableSceneTransitionLayoutState(parentInitialScene) val link = listOf( StateLink( parentState, - listOf(StateLink.TransitionLink(sourceFrom, sourceTo, targetFrom, targetTo)) + listOf(StateLink.TransitionLink(sourceFrom, sourceTo, targetFrom, targetTo)), ) ) val childState = MutableSceneTransitionLayoutState(childInitialScene, stateLinks = link) return Pair( parentState as MutableSceneTransitionLayoutStateImpl, - childState as MutableSceneTransitionLayoutStateImpl + childState as MutableSceneTransitionLayoutStateImpl, ) } @@ -179,7 +179,7 @@ class SceneTransitionLayoutStateTest { listOf( StateLink( parentParentState, - listOf(StateLink.TransitionLink(SceneC, SceneD, SceneB, SceneC)) + listOf(StateLink.TransitionLink(SceneC, SceneD, SceneB, SceneC)), ) ) val parentState = @@ -189,7 +189,7 @@ class SceneTransitionLayoutStateTest { listOf( StateLink( parentState, - listOf(StateLink.TransitionLink(SceneA, SceneB, SceneC, SceneD)) + listOf(StateLink.TransitionLink(SceneA, SceneB, SceneC, SceneD)), ) ) val childState = @@ -300,11 +300,7 @@ class SceneTransitionLayoutStateTest { // Specific transition from A to B. assertThat( - state.setTargetScene( - SceneB, - animationScope = this, - transitionKey = transitionkey, - ) + state.setTargetScene(SceneB, animationScope = this, transitionKey = transitionkey) ) .isNotNull() assertThat(state.currentTransition?.transformationSpec?.transformations).hasSize(2) @@ -315,7 +311,7 @@ class SceneTransitionLayoutStateTest { val state = MutableSceneTransitionLayoutStateImpl(SceneA, SceneTransitions.Empty) state.startTransitionImmediately( animationScope = backgroundScope, - transition(from = SceneA, to = SceneB, current = { SceneA }, progress = { 0.2f }) + transition(from = SceneA, to = SceneB, current = { SceneA }, progress = { 0.2f }), ) assertThat(state.isTransitioning()).isTrue() @@ -334,7 +330,7 @@ class SceneTransitionLayoutStateTest { val state = MutableSceneTransitionLayoutStateImpl(SceneA, SceneTransitions.Empty) state.startTransitionImmediately( animationScope = backgroundScope, - transition(from = SceneA, to = SceneB, progress = { 0.8f }) + transition(from = SceneA, to = SceneB, progress = { 0.8f }), ) assertThat(state.isTransitioning()).isTrue() @@ -381,8 +377,8 @@ class SceneTransitionLayoutStateTest { from = SceneA, to = SceneB, current = { currentScene }, - progress = { progress } - ) + progress = { progress }, + ), ) assertThat(state.isTransitioning()).isTrue() @@ -445,11 +441,7 @@ class SceneTransitionLayoutStateTest { progress: () -> Float, sceneTransitions: SceneTransitions, ): MutableSceneTransitionLayoutStateImpl { - val state = - MutableSceneTransitionLayoutStateImpl( - SceneA, - sceneTransitions, - ) + val state = MutableSceneTransitionLayoutStateImpl(SceneA, sceneTransitions) state.startTransitionImmediately( animationScope = backgroundScope, transition( @@ -457,7 +449,7 @@ class SceneTransitionLayoutStateTest { to = SceneB, progress = progress, orientation = Orientation.Vertical, - ) + ), ) assertThat(state.isTransitioning()).isTrue() return state @@ -472,7 +464,7 @@ class SceneTransitionLayoutStateTest { sceneTransitions = transitions { overscroll(SceneB, Orientation.Vertical) { fade(TestElements.Foo) } - } + }, ) val transition = assertThat(state.transitionState).isSceneTransition() assertThat(transition).hasNoOverscrollSpec() @@ -503,7 +495,7 @@ class SceneTransitionLayoutStateTest { sceneTransitions = transitions { overscroll(SceneA, Orientation.Vertical) { fade(TestElements.Foo) } - } + }, ) val transition = assertThat(state.transitionState).isSceneTransition() @@ -532,7 +524,7 @@ class SceneTransitionLayoutStateTest { val state = startOverscrollableTransistionFromAtoB( progress = { progress.value }, - sceneTransitions = transitions {} + sceneTransitions = transitions {}, ) val transition = assertThat(state.transitionState).isSceneTransition() diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt index 63ab04ffe885..400f0b39a8e5 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt @@ -95,14 +95,8 @@ class SceneTransitionLayoutTest { ) } - SceneTransitionLayout( - state = layoutState, - modifier = Modifier.size(LayoutSize), - ) { - scene( - SceneA, - userActions = mapOf(Back to SceneB), - ) { + SceneTransitionLayout(state = layoutState, modifier = Modifier.size(LayoutSize)) { + scene(SceneA, userActions = mapOf(Back to SceneB)) { Box(Modifier.fillMaxSize()) { SharedFoo(size = 50.dp, childOffset = 0.dp, Modifier.align(Alignment.TopEnd)) Text("SceneA") @@ -250,7 +244,7 @@ class SceneTransitionLayoutTest { sharedFoo.assertHeightIsEqualTo(75.dp) sharedFoo.assertPositionInRootIsEqualTo( expectedTop = 0.dp, - expectedLeft = (LayoutSize - 50.dp) / 2 + expectedLeft = (LayoutSize - 50.dp) / 2, ) // The shared offset of the single child of SharedFoo() is 50dp in scene B and 0dp in Scene @@ -325,7 +319,7 @@ class SceneTransitionLayoutTest { rule.runOnUiThread { MutableSceneTransitionLayoutStateImpl( SceneA, - transitions { overscrollDisabled(SceneB, Orientation.Horizontal) } + transitions { overscrollDisabled(SceneB, Orientation.Horizontal) }, ) } @@ -371,7 +365,7 @@ class SceneTransitionLayoutTest { from(SceneB, to = SceneC) { spec = tween(duration.toInt(), easing = LinearEasing) } - } + }, ) } @@ -447,7 +441,7 @@ class SceneTransitionLayoutTest { } private fun SemanticsNodeInteraction.offsetRelativeTo( - other: SemanticsNodeInteraction, + other: SemanticsNodeInteraction ): DpOffset { val node = fetchSemanticsNode() val bounds = node.boundsInRoot diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt index e48cd81765cb..25e87132eb0e 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt @@ -385,12 +385,9 @@ class SwipeToSceneTest { SceneTransitionLayout( state = layoutState, - modifier = Modifier.size(LayoutWidth, LayoutHeight) + modifier = Modifier.size(LayoutWidth, LayoutHeight), ) { - scene( - SceneA, - userActions = mapOf(Swipe.Down to SceneB), - ) { + scene(SceneA, userActions = mapOf(Swipe.Down to SceneB)) { Spacer(Modifier.fillMaxSize()) } scene(SceneB) { Spacer(Modifier.fillMaxSize()) } @@ -507,7 +504,7 @@ class SwipeToSceneTest { fade(TestElements.Foo) fade(TestElements.Bar) } - } + }, ) var touchSlop = 0f @@ -519,8 +516,8 @@ class SwipeToSceneTest { userActions = mapOf( Swipe.Down to SceneB, - Swipe.Up to UserActionResult(SceneB, transitionKey = transitionkey) - ) + Swipe.Up to UserActionResult(SceneB, transitionKey = transitionkey), + ), ) { Box(Modifier.fillMaxSize()) } @@ -565,7 +562,7 @@ class SwipeToSceneTest { val state = layoutState( SceneA, - transitions { from(SceneA, to = SceneB) { distance = swipeDistance } } + transitions { from(SceneA, to = SceneB) { distance = swipeDistance } }, ) val layoutSize = 200.dp @@ -617,7 +614,7 @@ class SwipeToSceneTest { progressConverter = ProgressConverter.linear() translate(TestElements.Foo, x = { 20.dp.toPx() }, y = { 30.dp.toPx() }) } - } + }, ) } val layoutSize = 200.dp @@ -801,7 +798,7 @@ class SwipeToSceneTest { override fun onPostScroll( consumed: Offset, available: Offset, - source: NestedScrollSource + source: NestedScrollSource, ): Offset { availableOnPostScroll = available.y return super.onPostScroll(consumed, available, source) @@ -814,7 +811,7 @@ class SwipeToSceneTest { transitions { from(SceneA, to = SceneB) { distance = FixedDistance(swipeDistance) } overscrollDisabled(SceneB, Orientation.Vertical) - } + }, ) } val layoutSize = 200.dp diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/TransitionDslTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/TransitionDslTest.kt index f8068e612f11..223af8039fed 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/TransitionDslTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/TransitionDslTest.kt @@ -62,7 +62,7 @@ class TransitionDslTest { .comparingElementsUsing( Correspondence.transforming<TransitionSpecImpl, Pair<ContentKey?, ContentKey?>>( { it?.from to it?.to }, - "has (from, to) equal to" + "has (from, to) equal to", ) ) .containsExactly( @@ -111,7 +111,7 @@ class TransitionDslTest { fractionRange( start = 0.1f, end = 0.8f, - easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f) + easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f), ) { fade(TestElements.Foo) } @@ -126,11 +126,7 @@ class TransitionDslTest { TransformationRange(start = 0.1f, end = 0.8f), TransformationRange(start = 0.2f, end = TransformationRange.BoundUnspecified), TransformationRange(start = TransformationRange.BoundUnspecified, end = 0.9f), - TransformationRange( - start = 0.1f, - end = 0.8f, - CubicBezierEasing(0.1f, 0.1f, 0f, 1f) - ), + TransformationRange(start = 0.1f, end = 0.8f, CubicBezierEasing(0.1f, 0.1f, 0f, 1f)), ) } @@ -146,7 +142,7 @@ class TransitionDslTest { timestampRange( startMillis = 100, endMillis = 300, - easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f) + easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f), ) { fade(TestElements.Foo) } @@ -164,7 +160,7 @@ class TransitionDslTest { TransformationRange( start = 100 / 500f, end = 300 / 500f, - easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f) + easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f), ), ) } @@ -200,7 +196,7 @@ class TransitionDslTest { preview = { fractionRange(start = 0.1f, end = 0.8f) { fade(TestElements.Foo) } }, reversePreview = { fractionRange(start = 0.5f, end = 0.6f) { fade(TestElements.Foo) } - } + }, ) { spec = tween(500) fractionRange(start = 0.1f, end = 0.8f) { fade(TestElements.Foo) } @@ -226,9 +222,7 @@ class TransitionDslTest { assertThat(previewTransformations) .comparingElementsUsing(TRANSFORMATION_RANGE) - .containsExactly( - TransformationRange(start = 0.5f, end = 0.6f), - ) + .containsExactly(TransformationRange(start = 0.5f, end = 0.6f)) } @Test @@ -237,7 +231,7 @@ class TransitionDslTest { from( TestScenes.SceneA, to = TestScenes.SceneB, - preview = { fractionRange(start = 0.1f, end = 0.8f) { fade(TestElements.Foo) } } + preview = { fractionRange(start = 0.1f, end = 0.8f) { fade(TestElements.Foo) } }, ) { spec = tween(500) fractionRange(start = 0.1f, end = 0.8f) { fade(TestElements.Foo) } @@ -251,7 +245,7 @@ class TransitionDslTest { transitions.transitionSpec( from = TestScenes.SceneA, to = TestScenes.SceneB, - key = TransitionKey.PredictiveBack + key = TransitionKey.PredictiveBack, ) val transformations = transitionSpec.transformationSpec().transformations @@ -267,9 +261,7 @@ class TransitionDslTest { assertThat(previewTransformations) .comparingElementsUsing(TRANSFORMATION_RANGE) - .containsExactly( - TransformationRange(start = 0.1f, end = 0.8f), - ) + .containsExactly(TransformationRange(start = 0.1f, end = 0.8f)) } @Test @@ -339,7 +331,7 @@ class TransitionDslTest { private val TRANSFORMATION_RANGE = Correspondence.transforming<Transformation, TransformationRange?>( { it?.range }, - "has range equal to" + "has range equal to", ) } } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt index 44e0ba51f713..313379f4c74b 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt @@ -39,7 +39,7 @@ fun assertThat(transition: TransitionState.Transition.ChangeScene): SceneTransit /** Assert on a [TransitionState.Transition.ShowOrHideOverlay]. */ fun assertThat( - transition: TransitionState.Transition.ShowOrHideOverlay, + transition: TransitionState.Transition.ShowOrHideOverlay ): ShowOrHideOverlayTransitionSubject { return Truth.assertAbout(ShowOrHideOverlayTransitionSubject.showOrHideOverlayTransitions()) .that(transition) @@ -47,17 +47,15 @@ fun assertThat( /** Assert on a [TransitionState.Transition.ReplaceOverlay]. */ fun assertThat( - transition: TransitionState.Transition.ReplaceOverlay, + transition: TransitionState.Transition.ReplaceOverlay ): ReplaceOverlayTransitionSubject { return Truth.assertAbout(ReplaceOverlayTransitionSubject.replaceOverlayTransitions()) .that(transition) } class TransitionStateSubject -private constructor( - metadata: FailureMetadata, - private val actual: TransitionState, -) : Subject(metadata, actual) { +private constructor(metadata: FailureMetadata, private val actual: TransitionState) : + Subject(metadata, actual) { fun hasCurrentScene(sceneKey: SceneKey) { check("currentScene").that(actual.currentScene).isEqualTo(sceneKey) } @@ -181,10 +179,8 @@ abstract class BaseTransitionSubject<T : TransitionState.Transition>( } class SceneTransitionSubject -private constructor( - metadata: FailureMetadata, - actual: TransitionState.Transition.ChangeScene, -) : BaseTransitionSubject<TransitionState.Transition.ChangeScene>(metadata, actual) { +private constructor(metadata: FailureMetadata, actual: TransitionState.Transition.ChangeScene) : + BaseTransitionSubject<TransitionState.Transition.ChangeScene>(metadata, actual) { fun hasFromScene(sceneKey: SceneKey) { check("fromScene").that(actual.fromScene).isEqualTo(sceneKey) } @@ -223,10 +219,8 @@ private constructor( } class ReplaceOverlayTransitionSubject -private constructor( - metadata: FailureMetadata, - actual: TransitionState.Transition.ReplaceOverlay, -) : BaseTransitionSubject<TransitionState.Transition.ReplaceOverlay>(metadata, actual) { +private constructor(metadata: FailureMetadata, actual: TransitionState.Transition.ReplaceOverlay) : + BaseTransitionSubject<TransitionState.Transition.ReplaceOverlay>(metadata, actual) { fun hasFromOverlay(fromOverlay: OverlayKey) { check("fromOverlay").that(actual.fromOverlay).isEqualTo(fromOverlay) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt index c9f71da1691b..de55e2fb7657 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/AnchoredSizeTest.kt @@ -57,7 +57,7 @@ class AnchoredSizeTest { transition = { spec = tween(16 * 4, easing = LinearEasing) anchoredSize(TestElements.Bar, TestElements.Foo) - } + }, ) } @@ -73,7 +73,7 @@ class AnchoredSizeTest { // Scale during 4 frames. spec = tween(16 * 4, easing = LinearEasing) anchoredSize(TestElements.Bar, TestElements.Foo) - } + }, ) } @@ -103,7 +103,7 @@ class AnchoredSizeTest { transition = { spec = tween(16 * 4, easing = LinearEasing) anchoredSize(TestElements.Bar, TestElements.Foo, anchorWidth = false) - } + }, ) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/SharedElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/SharedElementTest.kt index 00acb137a833..4877cd610875 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/SharedElementTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/SharedElementTest.kt @@ -56,7 +56,7 @@ class SharedElementTest { transition = { spec = tween(16 * 4, easing = LinearEasing) // Elements should be shared by default. - } + }, ) { before { onElement(TestElements.Foo).assertPositionInRootIsEqualTo(10.dp, 50.dp) diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/LargeTopAppBarNestedScrollConnectionTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/LargeTopAppBarNestedScrollConnectionTest.kt index ce4c52757e78..a406e13904f5 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/LargeTopAppBarNestedScrollConnectionTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/LargeTopAppBarNestedScrollConnectionTest.kt @@ -117,7 +117,7 @@ class LargeTopAppBarNestedScrollConnectionTest(testCase: TestCase) { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset(x = 0f, y = -1f), - source = scrollSource + source = scrollSource, ) // It should ignore all onPostScroll events @@ -147,7 +147,7 @@ class LargeTopAppBarNestedScrollConnectionTest(testCase: TestCase) { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset(x = 0f, y = 1f), - source = scrollSource + source = scrollSource, ) // It can increase by 1 the height @@ -162,13 +162,13 @@ class LargeTopAppBarNestedScrollConnectionTest(testCase: TestCase) { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset(x = 0f, y = 0.5f), - source = scrollSource + source = scrollSource, ) val offsetConsumed = scrollConnection.onPreScroll( available = Offset(x = 0f, y = 0.5f), - source = scrollSource + source = scrollSource, ) assertThat(offsetConsumed).isEqualTo(Offset(0f, 0.5f)) @@ -185,7 +185,7 @@ class LargeTopAppBarNestedScrollConnectionTest(testCase: TestCase) { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset(x = 0f, y = 1f), - source = scrollSource + source = scrollSource, ) // It should not change the height (already at max) diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/PriorityNestedScrollConnectionTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/PriorityNestedScrollConnectionTest.kt index 8a9a92ead89e..7f1af05b7252 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/PriorityNestedScrollConnectionTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/nestedscroll/PriorityNestedScrollConnectionTest.kt @@ -70,7 +70,7 @@ class PriorityNestedScrollConnectionTest { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset.Zero, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertThat(isStarted).isEqualTo(false) @@ -89,7 +89,7 @@ class PriorityNestedScrollConnectionTest { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset.Zero, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) } @@ -115,7 +115,7 @@ class PriorityNestedScrollConnectionTest { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset.Zero, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertThat(isStarted).isEqualTo(false) @@ -130,7 +130,7 @@ class PriorityNestedScrollConnectionTest { scrollConnection.onPostScroll( consumed = offset1, available = offset2, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertThat(lastScroll).isEqualTo(offset2) @@ -184,10 +184,7 @@ class PriorityNestedScrollConnectionTest { fun receive_onPostFling() = runTest { canStartPostFling = true - scrollConnection.onPostFling( - consumed = velocity1, - available = velocity2, - ) + scrollConnection.onPostFling(consumed = velocity1, available = velocity2) assertThat(lastStop).isEqualTo(velocity2) } @@ -202,7 +199,7 @@ class PriorityNestedScrollConnectionTest { scrollConnection.onPostScroll( consumed = Offset.Zero, available = Offset.Zero, - source = NestedScrollSource.Drag + source = NestedScrollSource.Drag, ) assertThat(isStarted).isEqualTo(false) diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/SetContentAndCreateScope.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/SetContentAndCreateScope.kt index 28a864f8f905..0819dd9fc869 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/SetContentAndCreateScope.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/SetContentAndCreateScope.kt @@ -27,7 +27,7 @@ import kotlinx.coroutines.Dispatchers * and scoped to this rule. */ fun ComposeContentTestRule.setContentAndCreateMainScope( - content: @Composable () -> Unit, + content: @Composable () -> Unit ): CoroutineScope { lateinit var coroutineScope: CoroutineScope setContent { diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/subjects/DpOffsetSubject.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/subjects/DpOffsetSubject.kt index bf7bf98878e6..ab31038fac8f 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/subjects/DpOffsetSubject.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/subjects/DpOffsetSubject.kt @@ -30,10 +30,8 @@ fun assertThat(dpOffset: DpOffset): DpOffsetSubject { } /** A Truth subject to assert on [DpOffset] with some tolerance. Inspired by FloatSubject. */ -class DpOffsetSubject( - metadata: FailureMetadata, - private val actual: DpOffset, -) : Subject(metadata, actual) { +class DpOffsetSubject(metadata: FailureMetadata, private val actual: DpOffset) : + Subject(metadata, actual) { fun isWithin(tolerance: Dp): TolerantDpOffsetComparison { return object : TolerantDpOffsetComparison { override fun of(expected: DpOffset) { diff --git a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt index 25f95645e699..0d2fcfc0b790 100644 --- a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt +++ b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt @@ -101,15 +101,12 @@ fun ComposeContentTestRule.testTransition( runOnUiThread { MutableSceneTransitionLayoutState( fromScene, - transitions { from(fromScene, to = toScene, builder = transition) } + transitions { from(fromScene, to = toScene, builder = transition) }, ) }, to = toScene, transitionLayout = { state -> - SceneTransitionLayout( - state, - layoutModifier, - ) { + SceneTransitionLayout(state, layoutModifier) { scene(fromScene, content = fromSceneContent) scene(toScene, content = toSceneContent) } @@ -212,14 +209,14 @@ fun ComposeContentTestRule.testReplaceOverlayTransition( data class TransitionRecordingSpec( val recordBefore: Boolean = true, val recordAfter: Boolean = true, - val timeSeriesCapture: TimeSeriesCaptureScope<SemanticsNodeInteractionsProvider>.() -> Unit + val timeSeriesCapture: TimeSeriesCaptureScope<SemanticsNodeInteractionsProvider>.() -> Unit, ) /** Captures the feature using [capture] on the [element]. */ fun TimeSeriesCaptureScope<SemanticsNodeInteractionsProvider>.featureOfElement( element: ElementKey, capture: FeatureCapture<SemanticsNode, *>, - name: String = "${element.debugName}_${capture.name}" + name: String = "${element.debugName}_${capture.name}", ) { feature(isElement(element), capture, name) } @@ -238,7 +235,7 @@ fun MotionTestRule<ComposeToolkit>.recordTransition( toolkit.composeContentTestRule.runOnUiThread { MutableSceneTransitionLayoutState( fromScene, - transitions { from(fromScene, to = toScene, builder = transition) } + transitions { from(fromScene, to = toScene, builder = transition) }, ) } @@ -250,10 +247,7 @@ fun MotionTestRule<ComposeToolkit>.recordTransition( } } - SceneTransitionLayout( - state, - layoutModifier, - ) { + SceneTransitionLayout(state, layoutModifier) { scene(fromScene, content = fromSceneContent) scene(toScene, content = toSceneContent) } @@ -264,8 +258,8 @@ fun MotionTestRule<ComposeToolkit>.recordTransition( }, recordBefore = recordingSpec.recordBefore, recordAfter = recordingSpec.recordAfter, - timeSeriesCapture = recordingSpec.timeSeriesCapture - ) + timeSeriesCapture = recordingSpec.timeSeriesCapture, + ), ) } @@ -302,7 +296,7 @@ fun ComposeContentTestRule.testTransition( object : TransitionTestAssertionScope { override fun onElement( element: ElementKey, - scene: SceneKey? + scene: SceneKey?, ): SemanticsNodeInteraction { return onNode(isElement(element, scene)) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt index 1386092ef93e..b7b98d41da93 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManagerTest.kt @@ -18,6 +18,7 @@ package com.android.systemui.accessibility.extradim import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.plugins.ActivityStarter import javax.inject.Provider import org.junit.Before @@ -41,10 +42,12 @@ class ExtraDimDialogManagerTest : SysuiTestCase() { @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var dialogProvider: Provider<ExtraDimDialogDelegate> + @Mock private lateinit var dialogTransitionAnimator: DialogTransitionAnimator @Before fun setUp() { - extraDimDialogManager = ExtraDimDialogManager(dialogProvider, activityStarter) + extraDimDialogManager = + ExtraDimDialogManager(dialogProvider, activityStarter, dialogTransitionAnimator) } @Test @@ -56,7 +59,7 @@ class ExtraDimDialogManagerTest : SysuiTestCase() { /* cancelAction= */ eq(null), /* dismissShade= */ eq(false), /* afterKeyguardGone= */ eq(true), - /* deferred= */ eq(false) + /* deferred= */ eq(false), ) } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadStatsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadStatsInteractorTest.kt index c4fc13227eef..98e09474d5f2 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadStatsInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadStatsInteractorTest.kt @@ -24,12 +24,17 @@ import com.android.systemui.contextualeducation.GestureType.BACK import com.android.systemui.coroutines.collectLastValue import com.android.systemui.education.data.repository.contextualEducationRepository import com.android.systemui.education.data.repository.fakeEduClock +import com.android.systemui.inputdevice.tutorial.data.repository.DeviceType +import com.android.systemui.inputdevice.tutorial.tutorialSchedulerRepository import com.android.systemui.keyboard.data.repository.keyboardRepository import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.touchpad.data.repository.touchpadRepository import com.google.common.truth.Truth.assertThat +import kotlin.time.Duration.Companion.seconds +import kotlinx.coroutines.launch import kotlinx.coroutines.test.runTest +import org.junit.After import org.junit.Test import org.junit.runner.RunWith @@ -42,10 +47,15 @@ class KeyboardTouchpadStatsInteractorTest : SysuiTestCase() { private val keyboardRepository = kosmos.keyboardRepository private val touchpadRepository = kosmos.touchpadRepository private val repository = kosmos.contextualEducationRepository + private val fakeClock = kosmos.fakeEduClock + private val tutorialSchedulerRepository = kosmos.tutorialSchedulerRepository + private val initialDelayElapsedDuration = + KeyboardTouchpadEduStatsInteractorImpl.initialDelayDuration + 1.seconds @Test fun dataUpdatedOnIncrementSignalCountWhenTouchpadConnected() = testScope.runTest { + setUpForInitialDelayElapse() touchpadRepository.setIsAnyTouchpadConnected(true) val model by collectLastValue(repository.readGestureEduModelFlow(BACK)) @@ -58,6 +68,7 @@ class KeyboardTouchpadStatsInteractorTest : SysuiTestCase() { @Test fun dataUnchangedOnIncrementSignalCountWhenTouchpadDisconnected() = testScope.runTest { + setUpForInitialDelayElapse() touchpadRepository.setIsAnyTouchpadConnected(false) val model by collectLastValue(repository.readGestureEduModelFlow(BACK)) @@ -70,6 +81,7 @@ class KeyboardTouchpadStatsInteractorTest : SysuiTestCase() { @Test fun dataUpdatedOnIncrementSignalCountWhenKeyboardConnected() = testScope.runTest { + setUpForInitialDelayElapse() keyboardRepository.setIsAnyKeyboardConnected(true) val model by collectLastValue(repository.readGestureEduModelFlow(ALL_APPS)) @@ -82,6 +94,7 @@ class KeyboardTouchpadStatsInteractorTest : SysuiTestCase() { @Test fun dataUnchangedOnIncrementSignalCountWhenKeyboardDisconnected() = testScope.runTest { + setUpForInitialDelayElapse() keyboardRepository.setIsAnyKeyboardConnected(false) val model by collectLastValue(repository.readGestureEduModelFlow(ALL_APPS)) @@ -99,4 +112,61 @@ class KeyboardTouchpadStatsInteractorTest : SysuiTestCase() { underTest.updateShortcutTriggerTime(BACK) assertThat(model?.lastShortcutTriggeredTime).isEqualTo(kosmos.fakeEduClock.instant()) } + + @Test + fun dataUpdatedOnIncrementSignalCountAfterInitialDelay() = + testScope.runTest { + setUpForDeviceConnection() + tutorialSchedulerRepository.updateLaunchTime(DeviceType.TOUCHPAD, fakeClock.instant()) + + fakeClock.offset(initialDelayElapsedDuration) + val model by collectLastValue(repository.readGestureEduModelFlow(BACK)) + val originalValue = model!!.signalCount + underTest.incrementSignalCount(BACK) + + assertThat(model?.signalCount).isEqualTo(originalValue + 1) + } + + @Test + fun dataUnchangedOnIncrementSignalCountBeforeInitialDelay() = + testScope.runTest { + setUpForDeviceConnection() + tutorialSchedulerRepository.updateLaunchTime(DeviceType.TOUCHPAD, fakeClock.instant()) + + // No offset to the clock to simulate update before initial delay + val model by collectLastValue(repository.readGestureEduModelFlow(BACK)) + val originalValue = model!!.signalCount + underTest.incrementSignalCount(BACK) + + assertThat(model?.signalCount).isEqualTo(originalValue) + } + + @Test + fun dataUnchangedOnIncrementSignalCountWithoutOobeLaunchTime() = + testScope.runTest { + // No update to OOBE launch time to simulate no OOBE is launched yet + setUpForDeviceConnection() + + val model by collectLastValue(repository.readGestureEduModelFlow(BACK)) + val originalValue = model!!.signalCount + underTest.incrementSignalCount(BACK) + + assertThat(model?.signalCount).isEqualTo(originalValue) + } + + private suspend fun setUpForInitialDelayElapse() { + tutorialSchedulerRepository.updateLaunchTime(DeviceType.TOUCHPAD, fakeClock.instant()) + tutorialSchedulerRepository.updateLaunchTime(DeviceType.KEYBOARD, fakeClock.instant()) + fakeClock.offset(initialDelayElapsedDuration) + } + + private fun setUpForDeviceConnection() { + touchpadRepository.setIsAnyTouchpadConnected(true) + keyboardRepository.setIsAnyKeyboardConnected(true) + } + + @After + fun clear() { + testScope.launch { tutorialSchedulerRepository.clearDataStore() } + } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt index 4253c29d241c..a330cf01624f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModelTest.kt @@ -18,6 +18,7 @@ package com.android.systemui.keyguard.ui.viewmodel +import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper.RunWithLooper import androidx.test.filters.SmallTest @@ -27,6 +28,7 @@ import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.UserActionResult +import com.android.compose.animation.scene.UserActionResult.ShowOverlay import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository @@ -42,8 +44,10 @@ import com.android.systemui.lifecycle.activateIn import com.android.systemui.power.data.repository.fakePowerRepository import com.android.systemui.power.shared.model.WakefulnessState import com.android.systemui.scene.domain.interactor.sceneInteractor +import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys +import com.android.systemui.scene.ui.viewmodel.SceneContainerEdge import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.testKosmos @@ -111,12 +115,12 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { private fun expectedDownDestination( downFromEdge: Boolean, - isSingleShade: Boolean, + isNarrowScreen: Boolean, isShadeTouchable: Boolean, ): SceneKey? { return when { !isShadeTouchable -> null - downFromEdge && isSingleShade -> Scenes.QuickSettings + downFromEdge && isNarrowScreen -> Scenes.QuickSettings else -> Scenes.Shade } } @@ -162,7 +166,7 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { @JvmField @Parameter(0) var canSwipeToEnter: Boolean = false @JvmField @Parameter(1) var downWithTwoPointers: Boolean = false @JvmField @Parameter(2) var downFromEdge: Boolean = false - @JvmField @Parameter(3) var isSingleShade: Boolean = true + @JvmField @Parameter(3) var isNarrowScreen: Boolean = true @JvmField @Parameter(4) var isCommunalAvailable: Boolean = false @JvmField @Parameter(5) var isShadeTouchable: Boolean = false @@ -170,7 +174,8 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { @Test @EnableFlags(Flags.FLAG_COMMUNAL_HUB) - fun userActions() = + @DisableFlags(Flags.FLAG_DUAL_SHADE) + fun userActions_fullscreenShade() = testScope.runTest { underTest.activateIn(this) kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true) @@ -182,7 +187,7 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { } ) sceneInteractor.changeScene(Scenes.Lockscreen, "reason") - kosmos.shadeRepository.setShadeLayoutWide(!isSingleShade) + kosmos.shadeRepository.setShadeLayoutWide(!isNarrowScreen) kosmos.setCommunalAvailable(isCommunalAvailable) kosmos.fakePowerRepository.updateWakefulness( rawState = @@ -190,7 +195,7 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { WakefulnessState.AWAKE } else { WakefulnessState.ASLEEP - }, + } ) val userActions by collectLastValue(underTest.actions) @@ -212,7 +217,7 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { .isEqualTo( expectedDownDestination( downFromEdge = downFromEdge, - isSingleShade = isSingleShade, + isNarrowScreen = isNarrowScreen, isShadeTouchable = isShadeTouchable, ) ) @@ -220,10 +225,105 @@ class LockscreenUserActionsViewModelTest : SysuiTestCase() { assertThat(downDestination?.transitionKey) .isEqualTo( expectedDownTransitionKey( - isSingleShade = isSingleShade, + isSingleShade = isNarrowScreen, + isShadeTouchable = isShadeTouchable, + ) + ) + + val upScene by + collectLastValue( + (userActions?.get(Swipe.Up) as? UserActionResult.ChangeScene)?.toScene?.let { + scene -> + kosmos.sceneInteractor.resolveSceneFamily(scene) + } ?: flowOf(null) + ) + + assertThat(upScene) + .isEqualTo( + expectedUpDestination( + canSwipeToEnter = canSwipeToEnter, + isShadeTouchable = isShadeTouchable, + ) + ) + + val leftScene by + collectLastValue( + (userActions?.get(Swipe.Left) as? UserActionResult.ChangeScene)?.toScene?.let { + scene -> + kosmos.sceneInteractor.resolveSceneFamily(scene) + } ?: flowOf(null) + ) + + assertThat(leftScene) + .isEqualTo( + expectedLeftDestination( + isCommunalAvailable = isCommunalAvailable, isShadeTouchable = isShadeTouchable, ) ) + } + + @Test + @EnableFlags(Flags.FLAG_COMMUNAL_HUB, Flags.FLAG_DUAL_SHADE) + fun userActions_dualShade() = + testScope.runTest { + underTest.activateIn(this) + kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true) + kosmos.fakeAuthenticationRepository.setAuthenticationMethod( + if (canSwipeToEnter) { + AuthenticationMethodModel.None + } else { + AuthenticationMethodModel.Pin + } + ) + sceneInteractor.changeScene(Scenes.Lockscreen, "reason") + kosmos.shadeRepository.setShadeLayoutWide(!isNarrowScreen) + kosmos.setCommunalAvailable(isCommunalAvailable) + kosmos.fakePowerRepository.updateWakefulness( + rawState = + if (isShadeTouchable) { + WakefulnessState.AWAKE + } else { + WakefulnessState.ASLEEP + } + ) + + val userActions by collectLastValue(underTest.actions) + + val downDestination = + userActions?.get( + Swipe( + SwipeDirection.Down, + fromSource = Edge.Top.takeIf { downFromEdge }, + pointerCount = if (downWithTwoPointers) 2 else 1, + ) + ) + + if (downFromEdge || downWithTwoPointers || !isShadeTouchable) { + // Top edge is not applicable in dual shade, as well as two-finger swipe. + assertThat(downDestination).isNull() + } else { + assertThat(downDestination).isEqualTo(ShowOverlay(Overlays.NotificationsShade)) + assertThat(downDestination?.transitionKey).isNull() + } + + val downFromTopRightDestination = + userActions?.get( + Swipe( + SwipeDirection.Down, + fromSource = SceneContainerEdge.TopRight, + pointerCount = if (downWithTwoPointers) 2 else 1, + ) + ) + when { + !isShadeTouchable -> assertThat(downFromTopRightDestination).isNull() + downWithTwoPointers -> assertThat(downFromTopRightDestination).isNull() + else -> { + assertThat(downFromTopRightDestination) + .isEqualTo(ShowOverlay(Overlays.QuickSettingsShade)) + assertThat(downFromTopRightDestination?.transitionKey).isNull() + } + } val upScene by collectLastValue( diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt index 313331286b45..b54fd86779e6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractorTest.kt @@ -19,12 +19,15 @@ package com.android.systemui.qs.tiles.impl.reducebrightness.domain.interactor import android.platform.test.annotations.EnabledOnRavenwood import android.platform.test.annotations.RequiresFlagsDisabled import android.platform.test.annotations.RequiresFlagsEnabled +import android.platform.test.flag.junit.CheckFlagsRule +import android.platform.test.flag.junit.DeviceFlagsValueProvider import android.provider.Settings import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.R import com.android.server.display.feature.flags.Flags import com.android.systemui.SysuiTestCase +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager import com.android.systemui.accessibility.reduceBrightColorsController import com.android.systemui.kosmos.Kosmos import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler @@ -33,8 +36,14 @@ import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx import com.android.systemui.qs.tiles.impl.reducebrightness.domain.model.ReduceBrightColorsTileModel import com.google.common.truth.Truth.assertThat 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.Mock +import org.mockito.MockitoAnnotations +import org.mockito.kotlin.anyOrNull +import org.mockito.kotlin.verify @SmallTest @EnabledOnRavenwood @@ -45,21 +54,34 @@ class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() { private val inputHandler = FakeQSTileIntentUserInputHandler() private val controller = kosmos.reduceBrightColorsController - private val underTest = - ReduceBrightColorsTileUserActionInteractor( - context.resources, - inputHandler, - controller, - ) - - private val underTestEvenDimmerEnabled = - ReduceBrightColorsTileUserActionInteractor( - context.orCreateTestableResources - .apply { addOverride(R.bool.config_evenDimmerEnabled, true) } - .resources, - inputHandler, - controller, - ) + @Mock private lateinit var mExtraDimDialogManager: ExtraDimDialogManager + + @get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() + + private lateinit var underTest: ReduceBrightColorsTileUserActionInteractor + private lateinit var underTestEvenDimmerEnabled: ReduceBrightColorsTileUserActionInteractor + + @Before + fun setup() { + MockitoAnnotations.initMocks(this) + underTest = + ReduceBrightColorsTileUserActionInteractor( + context.resources, + inputHandler, + controller, + mExtraDimDialogManager, + ) + + underTestEvenDimmerEnabled = + ReduceBrightColorsTileUserActionInteractor( + context.orCreateTestableResources + .apply { addOverride(R.bool.config_evenDimmerEnabled, true) } + .resources, + inputHandler, + controller, + mExtraDimDialogManager, + ) + } @Test @RequiresFlagsDisabled(Flags.FLAG_EVEN_DIMMER) @@ -142,9 +164,7 @@ class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() { QSTileInputTestKtx.longClick(ReduceBrightColorsTileModel(enabled)) ) - QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput { - assertThat(it.intent.action).isEqualTo(Settings.ACTION_DISPLAY_SETTINGS) - } + verify(mExtraDimDialogManager).dismissKeyguardIfNeededAndShowDialog(anyOrNull()) } @Test @@ -155,9 +175,6 @@ class ReduceBrightColorsTileUserActionInteractorTest : SysuiTestCase() { underTestEvenDimmerEnabled.handleInput( QSTileInputTestKtx.longClick(ReduceBrightColorsTileModel(enabled)) ) - - QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput { - assertThat(it.intent.action).isEqualTo(Settings.ACTION_DISPLAY_SETTINGS) - } + verify(mExtraDimDialogManager).dismissKeyguardIfNeededAndShowDialog(anyOrNull()) } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt index 03106eca1f63..e6a24e373218 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModelTest.kt @@ -16,6 +16,8 @@ package com.android.systemui.scene.ui.viewmodel +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -29,6 +31,7 @@ import com.android.systemui.lifecycle.activateIn import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.shade.domain.interactor.shadeInteractor +import com.android.systemui.shade.shared.flag.DualShade import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -52,14 +55,12 @@ class GoneUserActionsViewModelTest : SysuiTestCase() { @Before fun setUp() { - underTest = - GoneUserActionsViewModel( - shadeInteractor = kosmos.shadeInteractor, - ) + underTest = GoneUserActionsViewModel(shadeInteractor = kosmos.shadeInteractor) underTest.activateIn(testScope) } @Test + @DisableFlags(DualShade.FLAG_NAME) fun downTransitionKey_splitShadeEnabled_isGoneToSplitShade() = testScope.runTest { val userActions by collectLastValue(underTest.actions) @@ -71,6 +72,7 @@ class GoneUserActionsViewModelTest : SysuiTestCase() { } @Test + @DisableFlags(DualShade.FLAG_NAME) fun downTransitionKey_splitShadeDisabled_isNull() = testScope.runTest { val userActions by collectLastValue(underTest.actions) @@ -79,4 +81,15 @@ class GoneUserActionsViewModelTest : SysuiTestCase() { assertThat(userActions?.get(Swipe(SwipeDirection.Down))?.transitionKey).isNull() } + + @Test + @EnableFlags(DualShade.FLAG_NAME) + fun downTransitionKey_dualShadeEnabled_isNull() = + testScope.runTest { + val userActions by collectLastValue(underTest.actions) + shadeRepository.setShadeLayoutWide(true) + runCurrent() + + assertThat(userActions?.get(Swipe(SwipeDirection.Down))?.transitionKey).isNull() + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt index cea8857c01bf..cea8857c01bf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/HeadsUpNotificationInteractorTest.kt 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 3f97f0b7a67d..425f16ec7da1 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 @@ -312,7 +312,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = LOCKSCREEN, to = GLANCEABLE_HUB, value = 0f, - ) + ), ) runCurrent() @@ -321,7 +321,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S Transition( from = Scenes.Lockscreen, to = Scenes.Communal, - progress = flowOf(progress) + progress = flowOf(progress), ), stateTransition = TransitionStep( @@ -329,7 +329,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = LOCKSCREEN, to = GLANCEABLE_HUB, value = progress, - ) + ), ) runCurrent() @@ -344,7 +344,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = LOCKSCREEN, to = GLANCEABLE_HUB, value = 1f, - ) + ), ) assertThat(alpha).isEqualTo(0f) @@ -378,7 +378,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = DREAMING, to = GLANCEABLE_HUB, value = 0f, - ) + ), ) runCurrent() kosmos.setTransition( @@ -386,7 +386,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S Transition( from = Scenes.Lockscreen, to = Scenes.Communal, - progress = flowOf(progress) + progress = flowOf(progress), ), stateTransition = TransitionStep( @@ -394,7 +394,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = DREAMING, to = GLANCEABLE_HUB, value = progress, - ) + ), ) runCurrent() // Keep notifications hidden during the transition from dream to hub @@ -409,7 +409,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = DREAMING, to = GLANCEABLE_HUB, value = 1f, - ) + ), ) assertThat(alpha).isEqualTo(0f) } @@ -435,13 +435,13 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S kosmos.setTransition( sceneTransition = Idle(Scenes.Gone), - stateTransition = TransitionStep(from = LOCKSCREEN, to = GONE) + stateTransition = TransitionStep(from = LOCKSCREEN, to = GONE), ) assertThat(isOnLockscreen).isFalse() kosmos.setTransition( sceneTransition = Idle(Scenes.Lockscreen), - stateTransition = TransitionStep(from = GONE, to = LOCKSCREEN) + stateTransition = TransitionStep(from = GONE, to = LOCKSCREEN), ) assertThat(isOnLockscreen).isTrue() // While progressing from lockscreen, should still be true @@ -452,28 +452,20 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = LOCKSCREEN, to = GONE, value = 0.8f, - transitionState = TransitionState.RUNNING - ) + transitionState = TransitionState.RUNNING, + ), ) assertThat(isOnLockscreen).isTrue() kosmos.setTransition( sceneTransition = Idle(Scenes.Lockscreen), - stateTransition = - TransitionStep( - from = GONE, - to = LOCKSCREEN, - ) + stateTransition = TransitionStep(from = GONE, to = LOCKSCREEN), ) assertThat(isOnLockscreen).isTrue() kosmos.setTransition( sceneTransition = Idle(Scenes.Bouncer), - stateTransition = - TransitionStep( - from = LOCKSCREEN, - to = PRIMARY_BOUNCER, - ) + stateTransition = TransitionStep(from = LOCKSCREEN, to = PRIMARY_BOUNCER), ) assertThat(isOnLockscreen).isTrue() } @@ -527,11 +519,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S // Move to glanceable hub kosmos.setTransition( sceneTransition = Idle(Scenes.Communal), - stateTransition = - TransitionStep( - from = LOCKSCREEN, - to = GLANCEABLE_HUB, - ) + stateTransition = TransitionStep(from = LOCKSCREEN, to = GLANCEABLE_HUB), ) assertThat(isOnGlanceableHubWithoutShade).isTrue() @@ -553,11 +541,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S shadeTestUtil.setLockscreenShadeExpansion(0f) kosmos.setTransition( sceneTransition = Idle(Scenes.Communal), - stateTransition = - TransitionStep( - from = LOCKSCREEN, - to = GLANCEABLE_HUB, - ) + stateTransition = TransitionStep(from = LOCKSCREEN, to = GLANCEABLE_HUB), ) assertThat(isOnGlanceableHubWithoutShade).isTrue() } @@ -779,7 +763,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S configurationRepository.setDimensionPixelSize( R.dimen.keyguard_translate_distance_on_swipe_up, - -100 + -100, ) configurationRepository.onAnyConfigurationChange() @@ -800,7 +784,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S configurationRepository.setDimensionPixelSize( R.dimen.keyguard_translate_distance_on_swipe_up, - -100 + -100, ) configurationRepository.onAnyConfigurationChange() @@ -839,7 +823,8 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S fun alphaOnFullQsExpansion() = testScope.runTest { val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + val alpha by + collectLastValue(underTest.keyguardAlpha(viewState, testScope.backgroundScope)) showLockscreenWithQSExpanded() @@ -856,12 +841,15 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S @Test @BrokenWithSceneContainer(330311871) - fun alphaDoesNotUpdateWhileGoneTransitionIsRunning() = + fun alphaWhenGoneIsSetToOne() = testScope.runTest { val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + val alpha by + collectLastValue(underTest.keyguardAlpha(viewState, testScope.backgroundScope)) showLockscreen() + assertThat(alpha).isEqualTo(1f) + // GONE transition gets to 90% complete keyguardTransitionRepository.sendTransitionStep( TransitionStep( @@ -881,65 +869,23 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S ) ) runCurrent() + // Change in state should not immediately set value to 1f. Should wait for + // transition to complete + keyguardRepository.setStatusBarState(StatusBarState.SHADE) - // At this point, alpha should be zero - assertThat(alpha).isEqualTo(0f) - - // An attempt to override by the shade should be ignored - shadeTestUtil.setQsExpansion(0.5f) - assertThat(alpha).isEqualTo(0f) - } - - @Test - fun alphaDoesNotUpdateWhileOcclusionTransitionIsRunning() = - testScope.runTest { - val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + // Transition is active, and NSSL should be nearly faded out + assertThat(alpha).isLessThan(0.5f) - showLockscreen() - // OCCLUDED transition gets to 90% complete keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = LOCKSCREEN, - to = OCCLUDED, - transitionState = TransitionState.STARTED, - value = 0f, - ) - ) - runCurrent() - keyguardTransitionRepository.sendTransitionStep( - TransitionStep( - from = LOCKSCREEN, - to = OCCLUDED, - transitionState = TransitionState.RUNNING, - value = 0.9f, + to = GONE, + transitionState = TransitionState.FINISHED, + value = 1f, ) ) runCurrent() - - // At this point, alpha should be zero - assertThat(alpha).isEqualTo(0f) - - // An attempt to override by the shade should be ignored - shadeTestUtil.setQsExpansion(0.5f) - assertThat(alpha).isEqualTo(0f) - } - - @Test - fun alphaWhenGoneIsSetToOne() = - testScope.runTest { - val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) - - showLockscreen() - - keyguardTransitionRepository.sendTransitionSteps( - from = LOCKSCREEN, - to = GONE, - testScope - ) - keyguardRepository.setStatusBarState(StatusBarState.SHADE) - + // Should reset to 1f assertThat(alpha).isEqualTo(1f) } @@ -978,11 +924,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(fadeIn[0]).isEqualTo(false) // ... then user hits power to go to AOD - keyguardTransitionRepository.sendTransitionSteps( - from = LOCKSCREEN, - to = AOD, - testScope, - ) + keyguardTransitionRepository.sendTransitionSteps(from = LOCKSCREEN, to = AOD, testScope) // ... followed by a shade collapse showLockscreen() // ... does not trigger a fade in @@ -994,7 +936,8 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S fun alpha_isZero_fromPrimaryBouncerToGoneWhileCommunalSceneVisible() = testScope.runTest { val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + val alpha by + collectLastValue(underTest.keyguardAlpha(viewState, testScope.backgroundScope)) showPrimaryBouncer() showCommunalScene() @@ -1039,7 +982,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = PRIMARY_BOUNCER, to = GONE, transitionState = TransitionState.FINISHED, - value = 1f + value = 1f, ) ) runCurrent() @@ -1052,7 +995,8 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S fun alpha_fromPrimaryBouncerToGoneWhenCommunalSceneNotVisible() = testScope.runTest { val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + val alpha by + collectLastValue(underTest.keyguardAlpha(viewState, testScope.backgroundScope)) showPrimaryBouncer() hideCommunalScene() @@ -1095,7 +1039,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = PRIMARY_BOUNCER, to = GONE, transitionState = TransitionState.FINISHED, - value = 1f + value = 1f, ) ) runCurrent() @@ -1107,7 +1051,8 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S fun alpha_isZero_fromAlternateBouncerToGoneWhileCommunalSceneVisible() = testScope.runTest { val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + val alpha by + collectLastValue(underTest.keyguardAlpha(viewState, testScope.backgroundScope)) showAlternateBouncer() showCommunalScene() @@ -1152,7 +1097,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = ALTERNATE_BOUNCER, to = GONE, transitionState = TransitionState.FINISHED, - value = 1f + value = 1f, ) ) runCurrent() @@ -1165,7 +1110,8 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S fun alpha_fromAlternateBouncerToGoneWhenCommunalSceneNotVisible() = testScope.runTest { val viewState = ViewStateAccessor() - val alpha by collectLastValue(underTest.keyguardAlpha(viewState)) + val alpha by + collectLastValue(underTest.keyguardAlpha(viewState, testScope.backgroundScope)) showAlternateBouncer() hideCommunalScene() @@ -1208,7 +1154,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S from = ALTERNATE_BOUNCER, to = GONE, transitionState = TransitionState.FINISHED, - value = 1f + value = 1f, ) ) runCurrent() @@ -1221,11 +1167,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S runCurrent() keyguardRepository.setStatusBarState(StatusBarState.KEYGUARD) runCurrent() - keyguardTransitionRepository.sendTransitionSteps( - from = AOD, - to = LOCKSCREEN, - testScope, - ) + keyguardTransitionRepository.sendTransitionSteps(from = AOD, to = LOCKSCREEN, testScope) } private suspend fun TestScope.showDream() { @@ -1247,11 +1189,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S runCurrent() keyguardRepository.setStatusBarState(StatusBarState.SHADE_LOCKED) runCurrent() - keyguardTransitionRepository.sendTransitionSteps( - from = AOD, - to = LOCKSCREEN, - testScope, - ) + keyguardTransitionRepository.sendTransitionSteps(from = AOD, to = LOCKSCREEN, testScope) } private suspend fun TestScope.showLockscreenWithQSExpanded() { @@ -1260,11 +1198,7 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S runCurrent() keyguardRepository.setStatusBarState(StatusBarState.SHADE_LOCKED) runCurrent() - keyguardTransitionRepository.sendTransitionSteps( - from = AOD, - to = LOCKSCREEN, - testScope, - ) + keyguardTransitionRepository.sendTransitionSteps(from = AOD, to = LOCKSCREEN, testScope) } private suspend fun TestScope.showPrimaryBouncer() { diff --git a/packages/SystemUI/res/layout/shelf_action_chip.xml b/packages/SystemUI/res/layout/shelf_action_chip.xml index c7606e404215..1c65e366d619 100644 --- a/packages/SystemUI/res/layout/shelf_action_chip.xml +++ b/packages/SystemUI/res/layout/shelf_action_chip.xml @@ -28,6 +28,7 @@ <ImageView android:id="@+id/overlay_action_chip_icon" android:tint="?androidprv:attr/materialColorOnSecondary" + android:tintMode="src_in" android:layout_width="@dimen/overlay_action_chip_icon_size" android:layout_height="@dimen/overlay_action_chip_icon_size"/> <TextView diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index 541aebeed4d3..32bcca1cb23d 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -102,7 +102,9 @@ <include layout="@layout/ongoing_activity_chip" android:id="@+id/ongoing_activity_chip_primary"/> - <!-- TODO(b/364653005): Add a second activity chip. --> + <include layout="@layout/ongoing_activity_chip" + android:id="@+id/ongoing_activity_chip_secondary" + android:visibility="gone"/> <com.android.systemui.statusbar.AlphaOptimizedFrameLayout android:id="@+id/notification_icon_area" diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 2a669de9aeee..0fb0aaf20fe2 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Voeg by nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Sluit skakel in"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Skermopnemer"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Verwerk tans skermopname"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Deurlopende kennisgewing vir \'n skermopnamesessie"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modusse"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Maak Instellings oop"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Ander toestel"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Wissel oorsig"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modusse"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Klaar"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Instellings"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Aan"</string> @@ -1393,18 +1393,12 @@ <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Vou ikoon in"</string> <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Vou ikoon uit"</string> <string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"of"</string> - <!-- no translation found for launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigeer met jou sleutelbord"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Leer kortpadsleutels"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigeer met jou raakpaneel"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Leer raakpaneelgebare"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigeer met jou sleutelbord en raakpaneel"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Leer raakpaneelgebare, kortpadsleutels en meer"</string> <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Teruggebaar"</string> <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Tuisgebaar"</string> <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Handelingsleutel"</string> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Jy kan nou die skerm ekstra donker maak deur die helderheidvlak vanaf die bokant van jou skerm nog laer te maak.\n\nDit werk die beste wanneer jy in ’n donker omgewing is."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Verwyder kortpad vir ekstra donker"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Kortpad vir ekstra donker is verwyder. Gebruik die gewone helderheidbalk om jou helderheid te verlaag."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index f7f97635b34d..286acea48dd3 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"ወደ ማስታወሻ አክል"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"አገናኝ አካትት"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g><xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"አገናኞች ከሌሎች መገለጫዎች ሊታከሉ አይችሉም"</string> <string name="screenrecord_title" msgid="4257171601439507792">"የማያ መቅረጫ"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"የማያ ገፅ ቀረጻን በማሰናዳት ላይ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ለአንድ የማያ ገፅ ቀረጻ ክፍለ-ጊዜ በመካሄድ ያለ ማሳወቂያ"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ሁነታዎች"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ቅንብሮችን ክፈት"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ሌላ መሣሪያ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"አጠቃላይ እይታን ቀያይር"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ሁነታዎች"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ተከናውኗል"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ቅንብሮች"</string> <string name="zen_mode_on" msgid="9085304934016242591">"በርቷል"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"የቁልፍ ሰሌዳዎን በመጠቀም ያስሱ"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"የቁልፍ ሰሌዳ አቋራጮችን ይወቁ"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"የመዳሰሻ ሰሌዳዎን በመጠቀም ያስሱ"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"የመዳሰሻ ሰሌዳ ምልክቶችን ይወቁ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"የእርስዎን የቁልፍ ሰሌዳ እና የመዳሰሻ ሰሌዳ በመጠቀም ያስሱ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"የመዳሰሻ ሰሌዳ ምልክቶችን፣ የቁልፍ ሰሌዳ አቋራጮችን እና ሌሎችን ይወቁ"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"አሁን ከማያ ገፅዎ በላይ የብሩህነት ደረጃውን ይበልጥ በመቀነስ ማያ ገፁን ተጨማሪ ደብዛዛ ማድረግ ይችላሉ።\n\nይህ በጨለማ አካባቢ ውስጥ ሲሆኑ በተሻለ ይሠራል።"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"ተጨማሪ ደብዛዛ አቋራጭን አስወግድ"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"የተጨማሪ ደብዛዛ አቋራጭን ያስወግዱ። የእርስዎን ብሩሃማነት ለመቀነስ መደበኛ የብሩሃማነት አሞሌውን ይጠቀሙ።"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 5d6b90808aa4..5b844f238028 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"إضافة إلى الملاحظة"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"تضمين الرابط"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"مسجّل الشاشة"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"جارٍ معالجة تسجيل الشاشة"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"إشعار مستمر لجلسة تسجيل شاشة"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"الأوضاع"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"فتح الإعدادات"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"جهاز آخر"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"تبديل \"النظرة العامة\""</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"الأوضاع"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"تم"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"الإعدادات"</string> <string name="zen_mode_on" msgid="9085304934016242591">"مفعَّل"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"التنقّل باستخدام لوحة المفاتيح"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"تعرَّف على اختصارات لوحة المفاتيح"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"التنقّل باستخدام لوحة اللمس"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"تعرَّف على إيماءات لوحة اللمس"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"التنقّل باستخدام لوحة المفاتيح ولوحة اللمس"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"تعرَّف على إيماءات لوحة اللمس واختصارات لوحة المفاتيح والمزيد"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"يمكنك الآن زيادة تعتيم الشاشة عن طريق خفض مستوى السطوع بشكل أكبر من أعلى الشاشة.\n\nيُعد هذا الخيار مناسبًا عندما تكون في مكان مظلم."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"إزالة اختصار \"زيادة تعتيم الشاشة\""</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"تمت إزالة اختصار \"زيادة تعتيم الشاشة\". لخفض مستوى سطوع شاشتك، استخدِم شريط مستوى السطوع العادي."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 2e8a552012dd..06f28f11f3a4 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"টোকাত যোগ দিয়ক"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"লিংক অন্তৰ্ভুক্ত কৰক"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"অন্য প্ৰ’ফাইলৰ পৰা লিংক যোগ দিব নোৱাৰি"</string> <string name="screenrecord_title" msgid="4257171601439507792">"স্ক্ৰীন ৰেকৰ্ডাৰ"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"স্ক্রীন ৰেকৰ্ডিঙৰ প্ৰক্ৰিয়াকৰণ হৈ আছে"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"স্ক্রীন ৰেকৰ্ডিং ছেশ্বন চলি থকা সময়ত পোৱা জাননী"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ম’ড"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ছেটিং খোলক"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"অন্য ডিভাইচ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"অৱলোকন ট’গল কৰক"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ম’ড"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"কৰা হ’ল"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ছেটিং"</string> <string name="zen_mode_on" msgid="9085304934016242591">"অন আছে"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"কীব’ৰ্ড ব্যৱহাৰ কৰি নেভিগে’ট কৰক"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"কীব’ৰ্ডৰ শ্বৰ্টকাটসমূহৰ বিষয়ে জানক"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"আপোনাৰ টাচ্চপেড ব্যৱহাৰ কৰি নেভিগে’ট কৰক"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"টাচ্চপেডৰ নিৰ্দেশসমূহ জানক"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"আপোনাৰ কীব’ৰ্ড আৰু টাচ্চপেড ব্যৱহাৰ কৰি নেভিগে’ট কৰক"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"টাচ্চপেডৰ নিৰ্দেশ, কীব’ৰ্ডৰ শ্বৰ্টকাট আৰু অধিকৰ বিষয়ে জানক"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"আপুনি এতিয়া আপোনাৰ স্ক্ৰীনৰ একেবাৰে ওপৰৰ পৰা উজ্জ্বলতাৰ স্তৰ আৰু অধিক হ্ৰাস কৰি স্ক্ৰীনখন এক্সট্ৰা ডিম কৰিব পাৰে।\n\nআপুনি অন্ধকাৰ পৰিৱেশত থাকিলে এই সুবিধাটোৱে আটাইতকৈ ভাল কাম কৰে।"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"এক্সট্ৰা ডিম শ্বৰ্টকাট আঁতৰাওক"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"এক্সট্ৰা ডিম শ্বৰ্টকাট আঁতৰোৱা হৈছে। আপোনাৰ উজ্জ্বলতা হ্ৰাস কৰিবলৈ, নিয়মীয়া উজ্জ্বলতা বাৰ ব্যৱহাৰ কৰক।"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index b011ca646f5d..24ab6aecaff0 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Qeydə əlavə edin"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Keçid daxil edin"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g><xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Ekran yazıcısı"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Ekran çəkilişi emal edilir"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekranın video çəkimi ərzində silinməyən bildiriş"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Rejimlər"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Ayarları açın"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Digər cihaz"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"İcmala Keçin"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Rejimlər"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Hazırdır"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Ayarlar"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Aktiv"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Klaviaturadan istifadə edərək hərəkət edin"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Klaviatura qısayolları haqqında öyrənin"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Taçpeddən istifadə edərək hərəkət edin"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Taçped jestlərini öyrənin"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Klaviatura və taçpeddən istifadə edərək hərəkət edin"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Taçped jestləri, klaviatura qısayolları və s. haqqında öyrənin"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"İndi ekranın yuxarısında parlaqlıq səviyyəsini daha da aşağı salaraq ekranı əlavə qaralda bilərsiniz.\n\nTünd mühitdə olduqda nəticə yaxşı olur."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Əlavə qaraltma qısayolunu silin"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Əlavə qaraltma qısayolu silindi. Parlaqlığı aşağı salmaq üçün adi parlaqlıq panelindən istifadə edin."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index c581fd5b0488..5efa223dcd9a 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Dodaj u belešku"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Uvrsti link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Ne možete da dodate linkove sa drugih profila"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Snimač ekrana"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Obrađujemo video snimka ekrana"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Obaveštenje o sesiji snimanja ekrana je aktivno"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Režimi"</string> <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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Otvori Podešavanja"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Drugi uređaj"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Uključi/isključi pregled"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Režimi"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Gotovo"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Podešavanja"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Uključeno"</string> @@ -488,7 +487,7 @@ <string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Odbaci"</string> <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Dodajte, uklonite i preuredite vidžete ovde"</string> <string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Dodajte još vidžeta"</string> - <string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Dugi pritisak za prilagođavanje vidžeta"</string> + <string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Dugo pritisnite za prilagođavanje vidžeta"</string> <string name="button_to_configure_widgets_text" msgid="4191862850185256901">"Prilagodi vidžete"</string> <string name="unlock_reason_to_customize_widgets" msgid="5011909432460546033">"Otključajte da biste prilagodili vidžete"</string> <string name="icon_description_for_disabled_widget" msgid="4693151565003206943">"Ikona aplikacije za onemogućen vidžet"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krećite se pomoću tastature"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Saznajte više o tasterskim prečicama"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krećite se pomoću tačpeda"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Naučite pokrete za tačped"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Krećite se pomoću tastature i tačpeda"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Naučite pokrete za tačped, tasterske prečice i drugo"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Sada možete dodatno da zatamnite ekran smanjivanjem nivoa osvetljenosti pri vrhu ekrana. \n\nOvo najbolje funkcioniše kada ste u tamnom okruženju."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Ukloni prečicu za dodatno zatamnjivanje"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Uklonjena je prečica za dodatno zatamnjivanje. Da biste smanjili osvetljenost, koristite uobičajenu traku za osvetljenost."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 31854f6822c2..435d8339f943 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Дадаць у нататку"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Дадаць спасылку"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Спасылкі нельга дадаваць з іншых профіляў"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Запіс экрана"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Апрацоўваецца запіс экрана"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Бягучае апавяшчэнне для сеанса запісу экрана"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Рэжымы"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Адкрыць налады"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Іншая прылада"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Уключыць/выключыць агляд"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Рэжымы"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Гатова"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Налады"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Уключана"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навігацыя з дапамогай клавіятуры"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Азнаёмцеся са спалучэннямі клавіш"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навігацыя з дапамогай сэнсарнай панэлі"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Азнаёмцеся з жэстамі для сэнсарнай панэлі"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Навігацыя з дапамогай клавіятуры і сэнсарнай панэлі"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Азнаёмцеся з жэстамі для сэнсарнай панэлі, спалучэннямі клавіш і г. д."</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Цяпер вы можаце дадаткова зацямніць экран, яшчэ больш панізіўшы ўзровень яркасці праз налады ўверсе экрана.\n\nГэта функцыя працуе лепш за ўсё ў цёмным асяроддзі."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Выдаліць хуткую каманду для дадатковага памяншэння яркасці"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Хуткая каманда для дадатковага памяншэння яркасці выдалена. Каб паменшыць яркасць, выкарыстоўвайце звычайную панэль яркасці."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 64ecfd3c0243..adbc13ab590f 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Добавяне към бележката"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Включване на връзката"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Запис на екрана"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Записът на екрана се обработва"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Текущо известие за сесия за записване на екрана"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режими"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Към настройките"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Друго устройство"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Превключване на общия преглед"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режими"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Готово"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Настройки"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Вкл."</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навигирайте посредством клавиатурата си"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Научете за клавишните комбинации"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навигирайте посредством сензорния панел"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Научете за жестовете със сензорния панел"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Навигирайте посредством клавиатурата и сензорния панел"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Научете за жестовете със сензорния панел, клавишните комбинации и др."</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Вече можете да затъмнявате екрана допълнително, като намалявате яркостта още повече от лентата в горната му част.\n\nТова е най-полезно, когато сте на тъмно място."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Премахване на прекия път за допълнително затъмняване"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Прекият път за допълнително затъмняване е премахнат. За да намалите яркостта, използвайте обикновената лента за управлението ѝ."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index f62ee9ecaa34..2aa7786774f9 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"নোটে যোগ করুন"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"লিঙ্ক যোগ করুন"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"স্ক্রিন রেকর্ডার"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"স্ক্রিন রেকর্ডিং প্রসেস হচ্ছে"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"স্ক্রিন রেকর্ডিং সেশন চলার বিজ্ঞপ্তি"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"মোড"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"সেটিংস খুলুন"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"অন্য ডিভাইস"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"\'এক নজরে\' বৈশিষ্ট্যটি চালু বা বন্ধ করুন"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"মোড"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"হয়ে গেছে"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"সেটিংস"</string> <string name="zen_mode_on" msgid="9085304934016242591">"চালু আছে"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"আপনার কীবোর্ড ব্যবহার করে নেভিগেট করুন"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"কীবোর্ড শর্টকাট সম্পর্কে জানুন"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"আপনার টাচপ্যাড ব্যবহার করে নেভিগেট করুন"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"টাচপ্যাডের জেসচার সম্পর্কে জানুন"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"আপনার কীবোর্ড এবং টাচপ্যাড ব্যবহার করে নেভিগেট করুন"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"টাচপ্যাড জেসচার, কীবোর্ড শর্টকাট এবং আরও অনেক কিছু সম্পর্কে জানুন"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"আপনি এখন স্ক্রিনের উপর থেকে ব্রাইটনেস লেভেল কমিয়েও, স্ক্রিন অতিরিক্ত কম ব্রাইট করতে পারবেন।\n\nআপনি অন্ধকার পরিবেশে থাকলে এটি সবথেকে ভালো কাজ করে।"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"\'অতিরিক্ত কম ব্রাইটনেস\' ফিচারের শর্টকাট সরান"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"\'অতিরিক্ত কম ব্রাইটনেস\' ফিচারের শর্টকাট সরানো হয়েছে। আপনার ব্রাইটনেস কম করতে, সাধারণ ব্রাইটনেস বার ব্যবহার করুন।"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 51416ef326ef..4802af846eda 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Dodaj u bilješku"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Uključi link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Snimač ekrana"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Obrađivanje snimka ekrana"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Obavještenje za sesiju snimanja ekrana je u toku"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Načini rada"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Otvori Postavke"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Drugi uređaj"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Pregled uključivanja/isključivanja"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Načini rada"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Gotovo"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Postavke"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Uključeno"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krećite se pomoću tastature"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Saznajte više o prečicama tastature"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krećite se pomoću dodirne podloge"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Saznajte više o pokretima na dodirnoj podlozi"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Krećite se pomoću tastature i dodirne podloge"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Saznajte više o pokretima na dodirnoj podlozi, prečicama tastature i drugim opcijama"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Sada možete dodatno zatamniti ekran daljnjim smanjenjem nivoa osvijetljenosti s vrha ekrana.\n\nOvo najbolje funkcionira u tamnom okruženju."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Ukloni prečicu za dodatno zatamnjenje"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Prečica za dodatno zatamnjenje je uklonjena. Da smanjite osvijetljenost, koristite običnu traku za osvijetljenost."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 182fe02a371c..10fedd8ce7a4 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Afegeix a una nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Inclou l\'enllaç"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Gravació de pantalla"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processant gravació de pantalla"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificació en curs d\'una sessió de gravació de la pantalla"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modes"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Obre Configuració"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Un altre dispositiu"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activa o desactiva Aplicacions recents"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modes"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Fet"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Configuració"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activat"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navega amb el teclat"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprèn les tecles de drecera"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navega amb el ratolí tàctil"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Aprèn els gestos del ratolí tàctil"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navega amb el teclat i el ratolí tàctil"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Aprèn els gestos del ratolí tàctil, les tecles de drecera i més"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Ara pots atenuar encara més la pantalla abaixant-ne el nivell de brillantor des de la part superior.\n\nFunciona millor si et trobes en un lloc fosc."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Suprimeix la drecera d\'atenuació extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"S\'ha suprimit la drecera d\'atenuació extra. Per abaixar la brillantor, utilitza la barra de brillantor normal."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index cebb175e4ae7..f995b294a477 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Přidat do poznámky"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Zahrnout odkaz"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Nelze přidat odkazy z jiných profilů"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Nahrávání obrazovky"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Záznam obrazovky se zpracovává"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Trvalé oznámení o relaci nahrávání"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Režimy"</string> <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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Otevřít nastavení"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Další zařízení"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Přepnout přehled"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Režimy"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Hotovo"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Nastavení"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Zapnuto"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigujte pomocí klávesnice"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Naučte se klávesové zkratky"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigujte pomocí touchpadu"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Naučte se gesta touchpadu"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigujte pomocí klávesnice a touchpadu"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Naučte se gesta touchpadu, klávesové zkratky a další"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Obrazovku můžete v horní části nastavit jako velmi tmavou tím, že ještě víc snížíte jas.\n\nNejlépe to funguje ve tmavém prostředí."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Odstranit zkratku pro velmi tmavou obrazovku"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Zkratka pro velmi tmavou obrazovku byla odstraněna. Jas můžete snížit pomocí standardního sloupce jasu."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 974083e5ffa8..3b74a6db4bdd 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Føj til note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Inkluder link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Skærmoptagelse"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Behandler skærmoptagelse"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Konstant notifikation om skærmoptagelse"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Tilstande"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Åbn Indstillinger"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Anden enhed"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Slå Oversigt til/fra"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Tilstande"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Udfør"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Indstillinger"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Til"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviger ved hjælp af dit tastatur"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Se tastaturgenveje"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviger ved hjælp af din touchplade"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Se bevægelser på touchpladen"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Naviger ved hjælp af dit tastatur og din touchplade"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Se bevægelser på touchpladen, tastaturgenveje m.m."</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Du kan nu dæmpe skærmens belysning ekstra meget ved at reducere lysstyrken endnu mere fra toppen af skærmen.\n\nDette fungerer bedst i mørke omgivelser."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Fjern genvejen til ekstra dæmpet belysning"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Genvejen til ekstra dæmpet belysning er fjernet. Brug den almindelige lysstyrkebjælke til at reducere lysstyrken."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 11dd46e5b11f..fa7ad567e0b9 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Zu Notiz hinzufügen"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Link einschließen"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Bildschirmaufzeichnung"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Bildschirmaufzeichnung…"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Fortlaufende Benachrichtigung für eine Bildschirmaufzeichnung"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modi"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Einstellungen öffnen"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Sonstiges Gerät"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Übersicht ein-/ausblenden"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modi"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Fertig"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Einstellungen"</string> <string name="zen_mode_on" msgid="9085304934016242591">"An"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigation mit der Tastatur"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Informationen zu Tastenkombinationen"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigation mit dem Touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Informationen zu Touchpad-Gesten"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigation mit Tastatur und Touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Informationen zu Touchpad-Gesten, Tastenkombinationen und mehr"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Du kannst das Display jetzt extradunkel machen, indem du die Helligkeit vom oberen Displayrand aus noch weiter senkst.\n\nDas funktioniert in dunklen Umgebungen am besten."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Verknüpfung für „Extradunkel“ entfernen"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Verknüpfung für „Extradunkel“ wurde entfernt. Wenn du die Helligkeit reduzieren möchtest, verwende einfach die normale Helligkeitsleiste."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 433137cb0127..26f1c5666c9c 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Προσθήκη σε σημείωση"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Συμπερίληψη συνδέσμου"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Εγγραφή οθόνης"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Επεξεργασία εγγραφής οθόνης"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ειδοποίηση σε εξέλιξη για μια περίοδο λειτουργίας εγγραφής οθόνης"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Λειτουργίες"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Άνοιγμα Ρυθμίσεων"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Άλλη συσκευή"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Εναλλαγή επισκόπησης"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Λειτουργίες"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Τέλος"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Ρυθμίσεις"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Ενεργό"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Πλοήγηση με το πληκτρολόγιο"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Μάθετε συντομεύσεις πληκτρολογίου"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Πλοήγηση με την επιφάνεια αφής"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Μάθετε κινήσεις επιφάνειας αφής"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Πλοήγηση με το πληκτρολόγιο και την επιφάνεια αφής"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Μάθετε κινήσεις επιφάνειας αφής, συντομεύσεις πληκτρολογίου και άλλα"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Τώρα μπορείτε να μειώσετε επιπλέον τη φωτεινότητα της οθόνης, χαμηλώνοντας το επίπεδο φωτεινότητας ακόμα περισσότερο από το επάνω μέρος της οθόνης.\n\nΑυτό λειτουργεί καλύτερα όταν βρίσκεστε σε σκοτεινό περιβάλλον."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Κατάργηση συντόμευσης επιπλέον μείωσης φωτεινότητας"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Η συντόμευση της επιπλέον μείωσης φωτεινότητας καταργήθηκε. Για να χαμηλώσετε τη φωτεινότητα, χρησιμοποιήστε την κανονική γραμμή φωτεινότητας."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index cb9dfe5a8d54..24922ac29c7e 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Add to note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Include link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Screen recorder"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> @@ -292,8 +294,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> - <!-- no translation found for quick_settings_modes_label (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Open settings"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Other device"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Toggle Overview"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modes"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Done"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Settings"</string> <string name="zen_mode_on" msgid="9085304934016242591">"On"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Learn touchpad gestures"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigate using your keyboard and touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Learn touchpad gestures, keyboards shortcuts and more"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"You can now make the screen extra dim by lowering the brightness level even further from the top of your screen.\n\nThis works best when you\'re in a dark environment."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remove extra dim shortcut"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Extra dim shortcut removed. To lower your brightness, use the regular brightness bar."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 3d4c31f9f60e..88f175393e0c 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Add to note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Include link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Links can\'t be added from other profiles"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Screen Recorder"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> @@ -1436,4 +1437,11 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"You can now make the screen extra dim by lowering the brightness level even further from the top of your screen.\n\nThis works best when you\'re in a dark environment."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remove extra dim shortcut"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Extra dim shortcut removed. To lower your brightness, use the regular brightness bar."</string> + <string name="qs_edit_mode_category_connectivity" msgid="4559726936546032672">"Connectivity"</string> + <string name="qs_edit_mode_category_accessibility" msgid="7969091385071475922">"Accessibility"</string> + <string name="qs_edit_mode_category_utilities" msgid="8123080090108420095">"Utilities"</string> + <string name="qs_edit_mode_category_privacy" msgid="6577774443194551775">"Privacy"</string> + <string name="qs_edit_mode_category_providedByApps" msgid="8346112074897919019">"Provided by apps"</string> + <string name="qs_edit_mode_category_display" msgid="4749511439121053942">"Display"</string> + <string name="qs_edit_mode_category_unknown" msgid="509314252124053550">"Unknown"</string> </resources> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index cb9dfe5a8d54..24922ac29c7e 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Add to note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Include link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Screen recorder"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> @@ -292,8 +294,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> - <!-- no translation found for quick_settings_modes_label (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Open settings"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Other device"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Toggle Overview"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modes"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Done"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Settings"</string> <string name="zen_mode_on" msgid="9085304934016242591">"On"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Learn touchpad gestures"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigate using your keyboard and touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Learn touchpad gestures, keyboards shortcuts and more"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"You can now make the screen extra dim by lowering the brightness level even further from the top of your screen.\n\nThis works best when you\'re in a dark environment."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remove extra dim shortcut"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Extra dim shortcut removed. To lower your brightness, use the regular brightness bar."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index cb9dfe5a8d54..24922ac29c7e 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Add to note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Include link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Screen recorder"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> @@ -292,8 +294,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> - <!-- no translation found for quick_settings_modes_label (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Open settings"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Other device"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Toggle Overview"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modes"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Done"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Settings"</string> <string name="zen_mode_on" msgid="9085304934016242591">"On"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Learn touchpad gestures"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigate using your keyboard and touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Learn touchpad gestures, keyboards shortcuts and more"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"You can now make the screen extra dim by lowering the brightness level even further from the top of your screen.\n\nThis works best when you\'re in a dark environment."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remove extra dim shortcut"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Extra dim shortcut removed. To lower your brightness, use the regular brightness bar."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index eb94d598bf6e..e8b32060b03f 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Add to note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Include link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Links can\'t be added from other profiles"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Screen Recorder"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> @@ -1436,4 +1437,11 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"You can now make the screen extra dim by lowering the brightness level even further from the top of your screen.\n\nThis works best when you\'re in a dark environment."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remove extra dim shortcut"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Extra dim shortcut removed. To lower your brightness, use the regular brightness bar."</string> + <string name="qs_edit_mode_category_connectivity" msgid="4559726936546032672">"Connectivity"</string> + <string name="qs_edit_mode_category_accessibility" msgid="7969091385071475922">"Accessibility"</string> + <string name="qs_edit_mode_category_utilities" msgid="8123080090108420095">"Utilities"</string> + <string name="qs_edit_mode_category_privacy" msgid="6577774443194551775">"Privacy"</string> + <string name="qs_edit_mode_category_providedByApps" msgid="8346112074897919019">"Provided by apps"</string> + <string name="qs_edit_mode_category_display" msgid="4749511439121053942">"Display"</string> + <string name="qs_edit_mode_category_unknown" msgid="509314252124053550">"Unknown"</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 2af8bd128d95..42c35109be8a 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Agregar a la nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Incluir vínculo"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Grabadora de pantalla"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Procesando grabación pantalla"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación constante para una sesión de grabación de pantalla"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modos"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Abrir Configuración"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Otro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Ocultar o mostrar Recientes"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modos"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Listo"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Configuración"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activado"</string> @@ -1444,4 +1444,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Ahora puedes bajar el nivel del brillo desde la parte superior de la pantalla para atenuarla aún más.\n\nEsto funciona mejor si estás en un ambiente oscuro."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Quitar la combinación de teclas de atenuación extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Se quitó el atajo de atenuación extra. Para bajar el brillo, usa la barra de brillo normal."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 2e823eda8fc7..6595258bc8e8 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Añadir a nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Incluir enlace"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"No se pueden añadir enlaces de otros perfiles"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Grabación de pantalla"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Procesando grabación de pantalla"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación continua de una sesión de grabación de la pantalla"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modos"</string> <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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Abrir Ajustes"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Otro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Mostrar u ocultar aplicaciones recientes"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modos"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Hecho"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Ajustes"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activado"</string> @@ -1444,4 +1443,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Ahora puedes atenuar aún más tu pantalla reduciendo el nivel de brillo desde la parte superior.\n\nFunciona mejor cuando estás en un lugar con poca luz."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Eliminar acceso directo a la atenuación extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Acceso directo a la atenuación extra eliminado. Para reducir el brillo, usa la barra de brillo normal."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 09f461f07003..7042ac136845 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Lisa märkmesse"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Kaasa link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Ekraanisalvesti"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Ekraanisalvestuse töötlemine"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Pooleli märguanne ekraanikuva salvestamise seansi puhul"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Režiimid"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Ava menüü Seaded"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Muu seade"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Lehe Ülevaade sisse- ja väljalülitamine"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Režiimid"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Valmis"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Seaded"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Sees"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigeerige klaviatuuri abil"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Õppige klaviatuuri otseteid"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigeerige puuteplaadi abil"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Õppige puuteplaadi liigutusi"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigeerige klaviatuuri ja puuteplaadi abil"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Õppige puuteplaadi liigutusi, klaviatuuri otseteid ja palju muud"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Nüüd saate muuta ekraani eriti tumedaks, vähendades ereduse taset ekraani ülaosast veelgi rohkem.\n\nSee toimib kõige paremini hämaras keskkonnas."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Eemalda funktsiooni „Eriti tume“ otsetee"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Funktsiooni „Eriti tume“ otsetee eemaldati. Kasutage ereduse vähendamiseks tavapärast ereduse reguleerimise riba."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index 329b6e2bb0d9..e51e37530751 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Gehitu oharrean"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Sartu esteka"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Pantaila-grabagailua"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Pantaila-grabaketa prozesatzen"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Pantailaren grabaketa-saioaren jakinarazpen jarraitua"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Moduak"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Ireki Ezarpenak"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Beste gailu bat"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Aldatu ikuspegi orokorra"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Moduak"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Eginda"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Ezarpenak"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Aktibatuta"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Nabigatu teklatua erabilita"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Ikasi lasterbideak"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Nabigatu ukipen-panela erabilita"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Ikasi ukipen-paneleko keinuak"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Nabigatu teklatua eta ukipen-panela erabilita"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Ikasi ukipen-paneleko keinuak, lasterbideak eta abar"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Orain, pantaila are ilunago jar dezakezu, pantailaren goialdetik argitasun-maila are gehiago jaitsita.\n\nIngurune ilun batean zaudenean funtzionatzen du ondoen."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Kendu Are ilunago eginbidearen lasterbidea"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Kendu da Are ilunago eginbidearen lasterbidea. Argitasuna murrizteko, erabili argitasun-barra arrunta."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index f845027a38df..13d403b1d274 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"افزودن به یادداشت"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"اضافه کردن پیوند"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"نمیتوان از نمایههای دیگر پیوند اضافه کرد"</string> <string name="screenrecord_title" msgid="4257171601439507792">"ضبطکن صفحهنمایش"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"درحال پردازش ضبط صفحهنمایش"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"اعلان درحال انجام برای جلسه ضبط صفحهنمایش"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"حالتها"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"باز کردن تنظیمات"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"دستگاه دیگر"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"تغییر وضعیت نمای کلی"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"حالتها"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"تمام"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"تنظیمات"</string> <string name="zen_mode_on" msgid="9085304934016242591">"روشن"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"پیمایش کردن بااستفاده از صفحهکلید"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"آشنایی با میانبرهای صفحهکلید"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"پیمایش کردن بااستفاده از صفحه لمسی"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"آشنایی با اشارههای صفحه لمسی"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"پیمایش کردن بااستفاده از صفحهکلید و صفحه لمسی"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"آشنایی با اشارههای صفحه لمسی، میانبرهای صفحهکلید، و موارد دیگر"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ازاینپس میتوانید با پایینتر آوردن سطح روشنایی از بالای صفحهنمایش، صفحهنمایش را بسیار کمنور کنید.\n\nاین ویژگی زمانی بهترین عملکرد را دارد که در محیطی تاریک باشید."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"حذف میانبر «بسیار کمنور»"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"میانبر «بسیار کمنور» حذف شد. برای کم کردن روشنایی، از نوار معمول روشنایی استفاده کنید."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index b9afcd567242..ab31329cf26c 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Lisää muistiinpanoon"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Lisää linkki"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Näytön tallentaja"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Näytön tallennusta käsitellään"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Pysyvä ilmoitus näytön tallentamisesta"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Tilat"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Avaa Asetukset"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Muu laite"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Näytä/piilota viimeisimmät"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Tilat"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Valmis"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Asetukset"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Päällä"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Siirry käyttämällä näppäimistöä"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Opettele pikanäppäimiä"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Siirry käyttämällä kosketuslevyä"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Opettele kosketuslevyn eleitä"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Siirry käyttämällä näppäimistöä ja kosketuslevyä"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Opettele kosketuslevyn eleitä, pikanäppäimiä ja muuta"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Voit nyt tehdä näytöstä erittäin himmeän vähentämällä kirkkautta vieläkin enemmän näytön yläreunasta.\n\nTämä toimii parhaiten pimeässä ympäristössä."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Poista erittäin himmeä ‑pikakomento"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Erittäin himmeä ‑pikakomento poistettu. Voit vähentää kirkkautta tavallisesta kirkkauspalkista."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 07e131ed0e71..ecb17f9ca1ed 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Ajouter à une note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Inclure le lien"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Enregistreur d\'écran"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Trait. de l\'enregist. d\'écran…"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notification en cours pour une session d\'enregistrement d\'écran"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modes"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Ouvrir les paramètres"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Autre appareil"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Basculer l\'aperçu"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modes"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"OK"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Paramètres"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activé"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviguer à l\'aide de votre clavier"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Apprenez à utiliser les raccourcis-clavier"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviguer à l\'aide de votre pavé tactile"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Apprenez à utiliser les gestes du pavé tactile"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Naviguer à l\'aide de votre clavier et de votre pavé tactile"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Apprenez les gestes du pavé tactile, les raccourcis-clavier et bien plus encore"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Vous pouvez désormais rendre l\'écran encore plus sombre en réduisant davantage le niveau de luminosité à partir du haut de l\'écran.\n\nCela fonctionne mieux lorsque vous êtes dans un environnement sombre."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Retirer le raccourci de réduction supplémentaire de la luminosité"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Le raccourci de réduction supplémentaire de la luminosité à été retiré. Pour réduire la luminosité, utilisez la barre de luminosité habituelle."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 9d3bbd70116a..c023f1b0f42e 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Ajouter à la note"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Inclure le lien"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Enregistreur d\'écran"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Enregistrement de l\'écran…"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notification en cours pour une session d\'enregistrement de l\'écran"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modes"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Ouvrir les paramètres"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Autre appareil"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activer/Désactiver l\'écran Récents"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modes"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"OK"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Paramètres"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activé"</string> @@ -498,7 +498,7 @@ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Ajouter un widget"</string> <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"OK"</string> <string name="label_for_button_in_empty_state_cta" msgid="7314975555382055823">"Ajouter des widgets"</string> - <string name="title_for_empty_state_cta" msgid="6161654421223450530">"Accéder rapidement aux widgets de vos applis préférées sans déverrouiller votre tablette."</string> + <string name="title_for_empty_state_cta" msgid="6161654421223450530">"Accédez rapidement aux widgets de vos applis préférées sans déverrouiller votre tablette."</string> <string name="dialog_title_to_allow_any_widget" msgid="1004820948962675644">"Autoriser n\'importe quel widget sur l\'écran de verrouillage ?"</string> <string name="button_text_to_open_settings" msgid="1987729256950941628">"Ouvrir les paramètres"</string> <string name="work_mode_off_title" msgid="5794818421357835873">"Réactiver les applis pro ?"</string> @@ -1444,4 +1444,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Désormais, vous pouvez rendre l\'écran encore plus sombre en abaissant davantage le niveau de luminosité en haut de l\'écran.\n\nCela fonctionne mieux lorsque vous êtes dans un environnement sombre."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Supprimer le raccourci Luminosité ultra-réduite"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Raccourci Luminosité ultra-réduite supprimé. Pour diminuer la luminosité, utilisez la barre de luminosité habituelle."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 6281570d84b4..b525bb8f1234 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Engadir a unha nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Incluír ligazón"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Gravadora da pantalla"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Procesando gravación pantalla"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación de actividade en curso sobre unha sesión de gravación de pantalla"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modos"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Abrir Configuración"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activar/desactivar Visión xeral"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modos"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Feito"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Configuración"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activado"</string> @@ -1393,18 +1393,12 @@ <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Icona de contraer"</string> <string name="shortcut_helper_content_description_expand_icon" msgid="1084435697860417390">"Icona de despregar"</string> <string name="shortcut_helper_key_combinations_or_separator" msgid="7082902112102125540">"ou"</string> - <!-- no translation found for launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navega co teclado"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprende a usar os atallos de teclado"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navega co panel táctil"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Aprende a usar os xestos do panel táctil"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navega co teclado e o panel táctil"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Aprende a usar os xestos do panel táctil, atallos de teclado e moito máis"</string> <string name="touchpad_tutorial_back_gesture_button" msgid="2746834288077265946">"Xesto para volver"</string> <string name="touchpad_tutorial_home_gesture_button" msgid="7640544867625955304">"Xesto para ir ao inicio"</string> <string name="touchpad_tutorial_action_key_button" msgid="3220074511852927267">"Tecla de acción"</string> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Agora podes aumentar a atenuación da pantalla: só tes que baixar o nivel de brillo aínda máis desde a parte superior.\n\nEsta opción funciona mellor se estás nun ambiente escuro."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Quitar atallo de atenuación extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Quitouse o atallo de atenuación extra. Para reducir o brillo, usa a barra de brillo normal."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 2be88f2ecfe4..9afbf8e4f857 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"નોંધમાં ઉમેરો"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"લિંક શામેલ કરો"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"અન્ય પ્રોફાઇલમાંથી લિંક ઉમેરી શકાતી નથી"</string> <string name="screenrecord_title" msgid="4257171601439507792">"સ્ક્રીન રેકોર્ડર"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"સ્ક્રીન રેકૉર્ડિંગ ચાલુ છે"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"સ્ક્રીન રેકોર્ડિંગ સત્ર માટે ચાલુ નોટિફિકેશન"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"મોડ"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"સેટિંગ ખોલો"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"અન્ય ડિવાઇસ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ઝલકને ટૉગલ કરો"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"મોડ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"થઈ ગયું"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"સેટિંગ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ચાલુ"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"તમારા કીબોર્ડ વડે નૅવિગેટ કરો"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"કીબોર્ડ શૉર્ટકર્ટ જાણો"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"તમારા ટચપૅડ વડે નૅવિગેટ કરો"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ટચપૅડના સંકેતો વિશે જાણો"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"તમારા કીબોર્ડ અને ટચપૅડ વડે નૅવિગેટ કરો"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ટચપૅડના સંકેતો અને કીબોર્ડના શૉર્ટકટ જેવું બીજું ઘણું જાણો"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"તમે હવે તમારી સ્ક્રીનના સૌથી ઉપરના ભાગમાંથી બ્રાઇટનેસ લેવલને હજી પણ ઘટાડીને સ્ક્રીનને એક્સ્ટ્રા ડિમ બનાવી શકો છો.\n\nતમે ડાર્ક વાતાવરણમાં હો, ત્યારે આ શ્રેષ્ઠ રીતે કામ કરે છે."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"એક્સ્ટ્રા ડિમ શૉર્ટકટ કાઢી નાખો"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"એક્સ્ટ્રા ડિમ શૉર્ટકટ કાઢી નાખ્યો. તમારી બ્રાઇટનેસ ઘટાડવા માટે, નિયમિત બ્રાઇટનેસ બારનો ઉપયોગ કરો."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 7c267bf2e86c..2b28b7a12522 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"नोट में जोड़ें"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"लिंक जोड़ें"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"अन्य प्रोफ़ाइलों से लिंक नहीं जोड़े जा सकते"</string> <string name="screenrecord_title" msgid="4257171601439507792">"स्क्रीन रिकॉर्डर"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"स्क्रीन रिकॉर्डिंग को प्रोसेस किया जा रहा है"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रिकॉर्ड सेशन के लिए जारी सूचना"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"मोड"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"सेटिंग खोलें"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"अन्य डिवाइस"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"खास जानकारी टॉगल करें"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"मोड"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"हो गया"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"सेटिंग"</string> <string name="zen_mode_on" msgid="9085304934016242591">"चालू है"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"कीबोर्ड का इस्तेमाल करके नेविगेट करें"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"कीबोर्ड शॉर्टकट के बारे में जानें"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"टचपैड का इस्तेमाल करके नेविगेट करें"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"टचपैड पर हाथ के जेस्चर के बारे में जानें"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"कीबोर्ड और टचपैड का इस्तेमाल करके नेविगेट करें"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"टचपैड पर हाथ के जेस्चर, कीबोर्ड शॉर्टकट वगैरह के बारे में जानें"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"अब स्क्रीन के सबसे ऊपरी हिस्से से, स्क्रीन की रोशनी सामान्य लेवल से और कम की जा सकती है.\n\nयह सुविधा, अंधेरे वाली जगह पर बेहतर तरीके से काम करती है."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा का शॉर्टकट हटाएं"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा का शॉर्टकट हटा दिया गया. स्क्रीन की रोशनी कम करने के लिए, ब्राइटनेस बार का इस्तेमाल करें."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index bdf6e13a9d7a..34bccbd6229e 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Dodaj bilješci"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Uključi vezu"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Snimač zaslona"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Obrada snimanja zaslona"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Tekuća obavijest za sesiju snimanja zaslona"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Načini"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Otvori postavke"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Ostali uređaji"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Uključivanje/isključivanje pregleda"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Načini"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Gotovo"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Postavke"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Uključeno"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krećite se pomoću tipkovnice"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Saznajte više o tipkovnim prečacima"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krećite se pomoću dodirne podloge"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Saznajte više o pokretima za dodirnu podlogu"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Krećite se pomoću tipkovnice i dodirne podloge"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Saznajte više o pokretima za dodirnu podlogu, tipkovnim prečacima i ostalom"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Zaslon možete dodatno zatamniti daljnjim smanjivanjem razine svjetline na vrhu zaslona.\n\nTo najbolje funkcionira kada ste u tamnom okruženju."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Ukloni prečac za dodatno zatamnjenje"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Prečac za dodatno zatamnjenje je uklonjen. Da biste smanjili svjetlinu, upotrijebite regularnu traku za svjetlinu."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 773d9baf3a17..cc2f66e1a04a 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Hozzáadás jegyzethez"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Linkkel együtt"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Képernyőrögzítő"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Képernyőrögzítés feldolgozása"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Folyamatban lévő értesítés képernyőrögzítési munkamenethez"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Módok"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Beállítások megnyitása"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Más eszköz"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Áttekintés be- és kikapcsolása"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Módok"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Kész"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Beállítások"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Be"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigáció a billentyűzet segítségével"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Billentyűparancsok megismerése"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigálás az érintőpaddal"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Érintőpad-kézmozdulatok megismerése"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigálás a billentyűzet és az érintőpad használatával"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Érintőpad-kézmozdulatok, billentyűparancsok és egyebek megismerése"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"A képernyő tetején mostantól extrasötétre állíthatja a képernyőt, amivel a korábbinál még jobban csökkentheti a fényerőt.\n\nA funkció sötét környezetben használható a legjobban."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Az extrasötét funkció gyorsparancsának eltávolítása"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Eltávolította az extrasötét funkció gyorsparancsát. A fényerő csökkentéséhez használja a fényerő-beállítási sávot."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 6a64c5d26c8d..c017263b2810 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Ավելացնել նշմանը"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Ներառել հղումը"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Էկրանի տեսագրում"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Էկրանի տեսագրության մշակում"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Էկրանի տեսագրման աշխատաշրջանի ընթացիկ ծանուցում"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Ռեժիմներ"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Բացել կարգավորումները"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Այլ սարք"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Միացնել/անջատել համատեսքը"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Ռեժիմներ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Պատրաստ է"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Կարգավորումներ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Միացված է"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Կողմնորոշվեք ձեր ստեղնաշարի օգնությամբ"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Սովորեք օգտագործել ստեղնային դյուրանցումները"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Կողմնորոշվեք ձեր հպահարթակի օգնությամբ"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Սովորեք օգտագործել հպահարթակի ժեստերը"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Կողմնորոշվեք ստեղնաշարի և հպահարթակի օգնությամբ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Սովորեք օգտագործել հպահարթակի ժեստերը, ստեղնային դյուրանցումները և ավելին"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Էկրանը հավելյալ խամրեցնելու համար բացեք կարգավորումները էկրանի վերևի մասից։\n\nԽորհուրդ ենք տալիս օգտագործել այս գործառույթը, երբ շուրջը մութ է։"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Հեռացնել հավելյալ խամրեցման դյուրանցումը"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Հավելյալ խամրեցման դյուրանցումը հեռացվեց։ Պայծառության մակարդակը նվազեցնելու համար օգտագործեք պայծառության գոտին։"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 8c58012a2124..a3ea9b26c49e 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Tambahkan ke catatan"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Sertakan link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Perekam Layar"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Memproses perekaman layar"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notifikasi yang sedang berjalan untuk sesi rekaman layar"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Mode"</string> <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 mulai atau berhenti menghubungkan perangkat"</string> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Buka Setelan"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Perangkat lainnya"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Aktifkan Ringkasan"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Mode"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Selesai"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Setelan"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Aktif"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Menavigasi menggunakan keyboard"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Pelajari pintasan keyboard"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Menavigasi menggunakan touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Pelajari gestur touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Menavigasi menggunakan keyboard dan touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Pelajari gestur touchpad, pintasan keyboard, dan lainnya"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Anda kini dapat membuat layar menjadi ekstra redup dengan menurunkan tingkat kecerahan lebih banyak lagi dari bagian atas layar.\n\nFitur ini berfungsi optimal saat Anda berada di tempat yang gelap."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Hapus pintasan ekstra redup"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Pintasan ekstra redup dihapus. Untuk menurunkan kecerahan, gunakan panel kecerahan biasa."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 6b3b6732d9bc..2468bcc9f2c1 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Bæta við glósu"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Hafa tengil með"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Ekki er hægt að bæta við tenglum frá öðrum prófílum"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Skjáupptaka"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Vinnur úr skjáupptöku"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Áframhaldandi tilkynning fyrir skjáupptökulotu"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Stillingar"</string> <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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Opna stillingar"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Annað tæki"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Kveikja/slökkva á yfirliti"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Stillingar"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Lokið"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Stillingar"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Kveikt"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Flettu með því að nota lyklaborðið"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Kynntu þér flýtilykla"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Flettu með því að nota snertiflötinn"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Nánar um bendingar á snertifleti"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Flettu með því að nota lyklaborðið og snertiflötinn"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Kynntu þér bendingar á snertifleti, flýtilykla og fleira"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Nú geturðu gert skjáinn mjög dökkan með því að lækka birtustigið enn frekar efst á skjánum.\n\nÞetta virkar best þegar umhverfi þitt er mjög dimmt."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Fjarlægja flýtilykil á mjög dökka stillingu"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Flýtilykill á mjög dökka stillingu fjarlægður. Notaðu hefðbundnu birtustigsstikuna til að lækka birtustigið."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 958d67bdfb36..5ea4486f35af 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Aggiungi alla nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Includi link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Registrazione dello schermo"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Elaborazione registrazione…"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notifica costante per una sessione di registrazione dello schermo"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modalità"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Apri Impostazioni"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Altro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Attiva/disattiva la panoramica"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modalità"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Fine"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Impostazioni"</string> <string name="zen_mode_on" msgid="9085304934016242591">"On"</string> @@ -1444,4 +1444,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Ora puoi usare l\'attenuazione extra per lo schermo abbassando il livello di luminosità ancora di più dalla parte superiore della schermata.\n\nQuesta funzionalità opera in modo ottimale quando ti trovi in un ambiente buio."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Rimuovi scorciatoia attenuazione extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Scorciatoia attenuazione extra rimossa. Per diminuire la luminosità, usa la normale barra della luminosità."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 1161fa0e9a38..5fd5ca6fcaf3 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"הוספה לפתק"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"הכנסת הקישור"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"מקליט המסך"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"מתבצע עיבוד של הקלטת מסך"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"התראה מתמשכת לסשן הקלטת מסך"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"מצבים"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"פתיחת ההגדרות"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"מכשיר אחר"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"החלפת מצב של מסכים אחרונים"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"מצבים"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"סיום"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"הגדרות"</string> <string name="zen_mode_on" msgid="9085304934016242591">"מצב מופעל"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ניווט באמצעות המקלדת"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"מידע על מקשי קיצור"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ניווט באמצעות לוח המגע"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"מידע על התנועות בלוח המגע"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ניווט באמצעות המקלדת ולוח המגע"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"מידע על התנועות בלוח המגע, מקשי קיצור ועוד"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"עכשיו אפשר להפוך את המסך למעומעם במיוחד באמצעות הפחתה נוספת של רמת הבהירות דרך החלק העליון במסך.\n\nהפעולה הזו עובדת הכי טוב בסביבה חשוכה."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"הסרה של קיצור הדרך לתכונה \'מעומעם במיוחד\'"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"קיצור הדרך לתכונה \'מעומעם במיוחד\' הוסר. כדי להפחית את הבהירות, אפשר להשתמש בסרגל הבהירות הרגיל."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 6436cdd3293c..7897f4826155 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -44,8 +44,8 @@ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"<xliff:g id="APPLICATION">%1$s</xliff:g> を起動して <xliff:g id="USB_DEVICE">%2$s</xliff:g> を処理しますか?"</string> <string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"<xliff:g id="APPLICATION">%1$s</xliff:g> を開いて <xliff:g id="USB_DEVICE">%2$s</xliff:g>を利用しますか?\nこのアプリに録音権限は付与されていませんが、この USB デバイスから音声を収集できるようになります。"</string> <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"<xliff:g id="APPLICATION">%1$s</xliff:g> を起動して <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> を処理しますか?"</string> - <string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"このUSBアクセサリを扱うアプリはインストールされていません。詳細: <xliff:g id="URL">%1$s</xliff:g>"</string> - <string name="title_usb_accessory" msgid="1236358027511638648">"USBアクセサリ"</string> + <string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"このUSBアクセサリーを扱うアプリはインストールされていません。詳細: <xliff:g id="URL">%1$s</xliff:g>"</string> + <string name="title_usb_accessory" msgid="1236358027511638648">"USBアクセサリー"</string> <string name="label_view" msgid="6815442985276363364">"表示"</string> <string name="always_use_device" msgid="210535878779644679">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> を接続している場合は常に <xliff:g id="APPLICATION">%1$s</xliff:g> を起動する"</string> <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g> を接続している場合は常に <xliff:g id="APPLICATION">%1$s</xliff:g> を起動する"</string> @@ -67,8 +67,8 @@ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ワイヤレス デバッグは許可されていません"</string> <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"このデバイスに現在ログインしているユーザーはワイヤレス デバッグを ON にできません。この機能を使用するには、管理者ユーザーに切り替えてください。"</string> <string name="usb_contaminant_title" msgid="894052515034594113">"USB ポート無効"</string> - <string name="usb_contaminant_message" msgid="7730476585174719805">"液体やゴミからデバイスを保護するため、USB ポートは無効になっています。アクセサリの検出は行われません。\n\nUSB ポートを再び安全に使用できるようになりましたらお知らせします。"</string> - <string name="usb_port_enabled" msgid="531823867664717018">"USB ポートが有効になり、充電器やアクセサリを検出できるようになりました"</string> + <string name="usb_contaminant_message" msgid="7730476585174719805">"液体やゴミからデバイスを保護するため、USB ポートは無効になっています。アクセサリーの検出は行われません。\n\nUSB ポートを再び安全に使用できるようになりましたらお知らせします。"</string> + <string name="usb_port_enabled" msgid="531823867664717018">"USB ポートが有効になり、充電器やアクセサリーを検出できるようになりました"</string> <string name="usb_disable_contaminant_detection" msgid="3827082183595978641">"USB を有効にする"</string> <string name="learn_more" msgid="4690632085667273811">"詳細"</string> <string name="global_action_screenshot" msgid="2760267567509131654">"スクリーンショット"</string> @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"メモに追加"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"リンクを含める"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"他のプロファイルからリンクを追加することはできません"</string> <string name="screenrecord_title" msgid="4257171601439507792">"スクリーン レコーダー"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"画面の録画を処理しています"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"画面の録画セッション中の通知"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"モード"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"設定を開く"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"その他のデバイス"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"概要を切り替え"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"モード"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"完了"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"設定"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ON"</string> @@ -949,7 +948,7 @@ <string name="thermal_shutdown_dialog_help_text" msgid="6413474593462902901">"取り扱いに関する手順をご覧ください"</string> <string name="high_temp_dialog_help_text" msgid="7380171287943345858">"取り扱いに関する手順をご覧ください"</string> <string name="high_temp_alarm_title" msgid="8654754369605452169">"デバイスを電源から外します"</string> - <string name="high_temp_alarm_notify_message" msgid="3917622943609118956">"充電ポートの近くにデバイスを置くと、本体が熱くなります。デバイスが充電器や USB アクセサリに接続されている場合は外してください。ケーブルが熱くなっていることもあるので注意してください。"</string> + <string name="high_temp_alarm_notify_message" msgid="3917622943609118956">"充電ポートの近くにデバイスを置くと、本体が熱くなります。デバイスが充電器や USB アクセサリーに接続されている場合は外してください。ケーブルが熱くなっていることもあるので注意してください。"</string> <string name="high_temp_alarm_help_care_steps" msgid="5017002218341329566">"取り扱いに関する手順をご覧ください"</string> <string name="lockscreen_shortcut_left" msgid="1238765178956067599">"左ショートカット"</string> <string name="lockscreen_shortcut_right" msgid="4138414674531853719">"右ショートカット"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"キーボードを使用して移動する"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"キーボード ショートカットの詳細"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"タッチパッドを使用して移動する"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"タッチパッド操作の詳細"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"キーボードとタッチパッドを使用して移動する"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"タッチパッド操作やキーボード ショートカットなどの詳細"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"画面の上部で明るさを大幅に低く設定することで、画面の輝度をさらに下げられるようになりました。\n\nこの設定は暗い場所での操作に最適です。"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"「さらに輝度を下げる」のショートカットを削除する"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"「さらに輝度を下げる」のショートカットを削除しました。明るさを下げるには、通常の明るさのバーを使用してください。"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 7d5276053220..5550a63ad9a2 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"დაამატეთ შენიშვნა"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"ბმულის დართვა"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"სხვა პროფილებიდან ბმულების დამატება შეუძლებელია"</string> <string name="screenrecord_title" msgid="4257171601439507792">"ეკრანის ჩამწერი"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ეკრანის ჩანაწერი მუშავდება"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"უწყვეტი შეტყობინება ეკრანის ჩაწერის სესიისთვის"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"რეჟიმები"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"პარამეტრების გახსნა"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"სხვა მოწყობილობა"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"მიმოხილვის გადართვა"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"რეჟიმები"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"მზადაა"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"პარამეტრები"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ჩართული"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ნავიგაცია კლავიატურის გამოყენებით"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"კლავიატურის მალსახმობების სწავლა"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ნავიგაცია სენსორული პანელის გამოყენებით"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"სენსორული პანელის ჟესტების სწავლა"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ნავიგაცია კლავიატურის და სენსორული პანელის გამოყენებით"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"სენსორული პანელის ჟესტების, კლავიატურის მალსახმობების და სხვა ფუნქციების სწავლა"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ახლა თქვენ შეგიძლიათ დამატებით დაბინდოთ ეკრანი მის ზედა ნაწილში სიკაშკაშის დონის კიდევ უფრო შემცირების გზით.\n\nეს ყველაზე უკეთ ბნელ გარემოში ყოფნისას მუშაობს."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"დამატებითი დაბინდვის მალსახმობის ამოშლა"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"დამატებითი დაბინდვის მალსახმობი ამოშლილია. სიკაშკაშის შესამცირებლად გამოიყენეთ სიკაშკაშის ჩვეულებრივი პანელი."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 7b32db1b9d61..d8b454218ac2 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Ескертпеге қосу"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Сілтеме қосу"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Экран жазғыш"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Экран жазғыш бейнесін өңдеу"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Экранды бейнеге жазудың ағымдағы хабарландыруы"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режимдер"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Параметрлерді ашу"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Басқа құрылғы"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Шолуды қосу/өшіру"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режимдер"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Дайын"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Параметрлер"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Қосулы"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Пернетақтамен жұмыс істеңіз"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Перне тіркесімдерін үйреніңіз."</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Сенсорлық тақтамен жұмыс істеңіз"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Сенсорлық тақта қимылдарын үйреніңіз."</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Пернетақтамен және сенсорлық тақтамен жұмыс істеңіз"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Сенсорлық тақта қимылдарын, перне тіркесімдерін және т.б. үйреніңіз."</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Енді экранның жоғарғы бөлігінде жарықтық деңгейін түсіру арқылы экранды одан сайын қарайтуға болады.\n\nБұл мүмкіндіктің артықшылығын қараңғы жерде көруге болады."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Экранды қарайту жылдам пәрменін өшіру"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Экранды қарайту жылдам пәрмені өшірілді. Жарықтықты азайту үшін әдеттегі жарықтық панелін пайдаланыңыз."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 81664cabd896..f2fc313a4bb2 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"បញ្ចូលទៅក្នុងកំណត់ចំណាំ"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"រួមបញ្ចូលតំណ"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"មិនអាចបញ្ចូលតំណពីកម្រងព័ត៌មានផ្សេងទៀតបានទេ"</string> <string name="screenrecord_title" msgid="4257171601439507792">"មុខងារថតវីដេអូអេក្រង់"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"កំពុងដំណើរការការថតអេក្រង់"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ការជូនដំណឹងដែលកំពុងដំណើរការសម្រាប់រយៈពេលប្រើការថតសកម្មភាពអេក្រង់"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"មុខងារ"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"បើកការកំណត់"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ឧបករណ៍ផ្សេងទៀត"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"បិទ/បើកទិដ្ឋភាពរួម"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"មុខងារ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"រួចរាល់"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ការកំណត់"</string> <string name="zen_mode_on" msgid="9085304934016242591">"បើក"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"រុករកដោយប្រើក្ដារចុចរបស់អ្នក"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ស្វែងយល់អំពីផ្លូវកាត់ក្ដារចុច"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"រុករកដោយប្រើផ្ទាំងប៉ះរបស់អ្នក"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ស្វែងយល់អំពីចលនាផ្ទាំងប៉ះ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"រុករកដោយប្រើក្ដារចុច និងផ្ទាំងប៉ះរបស់អ្នក"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ស្វែងយល់អំពីចលនាផ្ទាំងប៉ះ ផ្លូវកាត់ក្ដារចុច និងអ្វីៗជាច្រើនទៀត"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ឥឡូវនេះ អ្នកអាចធ្វើឱ្យអេក្រង់ងងឹតខ្លាំងបានដោយបន្ថយកម្រិតពន្លឺបន្ថែមទៀតដោយចូលទៅកាន់ផ្នែកខាងលើនៃអេក្រង់របស់អ្នក។\n\nការធ្វើបែបនេះទទួលបានលទ្ធផលប្រសើរបំផុត ពេលអ្នកស្ថិតនៅកន្លែងងងឹត។"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"ដកផ្លូវកាត់មុខងារងងឹតខ្លាំងចេញ"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"ផ្លូវកាត់មុខងារងងឹតខ្លាំងត្រូវបានដកចេញ។ ដើម្បីបន្ថយពន្លឺរបស់អ្នក សូមប្រើរបារពន្លឺធម្មតា។"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index e1b119cee100..6f6333299129 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -74,8 +74,8 @@ <string name="global_action_screenshot" msgid="2760267567509131654">"ಸ್ಕ್ರೀನ್ಶಾಟ್"</string> <string name="global_action_smart_lock_disabled" msgid="6286551337177954859">"ಎಕ್ಸ್ಟೆಂಡ್ ಅನ್ಲಾಕ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string> <string name="remote_input_image_insertion_text" msgid="4850791636452521123">"ಚಿತ್ರವನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ"</string> - <string name="screenshot_saving_title" msgid="2298349784913287333">"ಸ್ಕ್ರೀನ್ಶಾಟ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ…"</string> - <string name="screenshot_saving_work_profile_title" msgid="5332829607308450880">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ಗೆ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ…"</string> + <string name="screenshot_saving_title" msgid="2298349784913287333">"ಸ್ಕ್ರೀನ್ಶಾಟ್ ಸೇವ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string> + <string name="screenshot_saving_work_profile_title" msgid="5332829607308450880">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ಗೆ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಸೇವ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string> <string name="screenshot_saving_private_profile" msgid="8934706048497093297">"ಸ್ಕ್ರೀನ್ಶಾಟ್ ಅನ್ನು ಖಾಸಗಿ ಪ್ರೊಫೈಲ್ಗೆ ಸೇವ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="screenshot_saved_title" msgid="8893267638659083153">"ಸ್ಕ್ರೀನ್ಶಾಟ್ ಅನ್ನು ಸೇವ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="screenshot_failed_title" msgid="3259148215671936891">"ಸ್ಕ್ರೀನ್ಶಾಟ್ ಅನ್ನು ಉಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string> @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"ಟಿಪ್ಪಣಿಗೆ ಸೇರಿಸಿ"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಿ"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"ಇತರ ಪ್ರೊಫೈಲ್ಗಳಿಂದ ಲಿಂಕ್ಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <string name="screenrecord_title" msgid="4257171601439507792">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡರ್"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ಆಗುತ್ತಿದೆ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್ ಸೆಶನ್ಗಾಗಿ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ನೋಟಿಫಿಕೇಶನ್"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ಮೋಡ್ಗಳು"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ಅನ್ಯ ಸಾಧನ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ಟಾಗಲ್ ನ ಅವಲೋಕನ"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ಮೋಡ್ಗಳು"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ಮುಗಿದಿದೆ"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ಆನ್ ಆಗಿದೆ"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಬಳಸಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಕಲಿಯಿರಿ"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ ಬಳಸಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ಟಚ್ಪ್ಯಾಡ್ ಗೆಸ್ಚರ್ಗಳನ್ನು ಕಲಿಯಿರಿ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಮತ್ತು ಟಚ್ಪ್ಯಾಡ್ ಬಳಸಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ಟಚ್ಪ್ಯಾಡ್ ಗೆಸ್ಚರ್ಗಳು, ಕೀಬೋರ್ಡ್ಗಳ ಶಾರ್ಟ್ಕಟ್ಗಳು ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ತಿಳಿಯಿರಿ"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲ್ಭಾಗದಿಂದ ಬ್ರೈಟ್ನೆಸ್ ಮಟ್ಟವನ್ನು ಇನ್ನಷ್ಟು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ನೀವು ಈಗ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಇನ್ನಷ್ಟು ಮಬ್ಬುಗೊಳಿಸಬಹುದು.\n\nನೀವು ಕತ್ತಲೆಯ ವಾತಾವರಣದಲ್ಲಿರುವಾಗ ಇದು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"ಇನ್ನಷ್ಟು ಮಬ್ಬು ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"ಇನ್ನಷ್ಟು ಮಬ್ಬು ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ. ನಿಮ್ಮ ಬ್ರೈಟ್ನೆಸ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು, ಸಾಮಾನ್ಯ ಬ್ರೈಟ್ನೆಸ್ ಬಾರ್ ಬಳಸಿ."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 27aa785186d9..75bc3b26f61c 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"메모에 추가"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"링크 포함"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g><xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"화면 녹화"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"화면 녹화 처리 중"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"화면 녹화 세션에 관한 지속적인 알림"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"모드"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"설정 열기"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"기타 기기"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"최근 사용 버튼 전환"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"모드"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"완료"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"설정"</string> <string name="zen_mode_on" msgid="9085304934016242591">"사용"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"키보드를 사용하여 이동"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"단축키 알아보기"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"터치패드를 사용하여 이동"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"터치패드 동작 알아보기"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"키보드와 터치패드를 사용하여 이동"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"터치패드 동작, 단축키 등 알아보기"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"이제 화면 상단에서 밝기 수준을 더 낮춰 화면을 더 어둡게 만들 수 있습니다\n\n이 기능은 어두운 환경에서 가장 잘 작동합니다."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"\'더 어둡게\' 단축키 삭제"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"\'더 어둡게\' 단축키가 삭제되었습니다. 밝기를 낮추려면 일반 밝기 막대를 사용하세요."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 306baa7fb3b1..9bf427c0bfb9 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Кыска жазууга кошуу"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Шилтеме кошуу"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Башка профилдердеги шилтемелерди кошууга болбойт"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Экрандан видео жаздырып алуу"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Экрандан жаздырылып алынган видео иштетилүүдө"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Экранды жаздыруу сеансы боюнча учурдагы билдирме"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режимдер"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Параметрлерди ачуу"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Башка түзмөк"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Назар режимин өчүрүү/күйгүзүү"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режимдер"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Бүттү"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Параметрлер"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Күйүк"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Нерселерге баскычтоп аркылуу өтүңүз"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Ыкчам баскычтар тууралуу билип алыңыз"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Нерселерге сенсордук такта аркылуу өтүңүз"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Сенсордук тактадагы жаңсоолорду үйрөнүп алыңыз"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Нерселерге баскычтоп жана сенсордук такта аркылуу өтүңүз"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Сенсордук тактадагы жаңсоолор, ыкчам баскычтар жана башкалар жөнүндө билип алыңыз"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Эми экраныңыздын өйдө жагынан жарыктыктын деңгээлин азайтып, экранды кошумча караңгылата аласыз.\n\nМуну караңгы жерде турганыңызда колдонуу сунушталат."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Кошумча караңгылатуу ыкчам баскычын өчүрүү"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Кошумча караңгылатуу ыкчам баскычы өчүрүлдү. Жарыктыкты азайтуу үчүн кадимки жарыктык тилкесин колдонуңуз."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 75f579c83c76..bc0c22d92373 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"ເພີ່ມໃສ່ບັນທຶກ"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"ຮວມລິ້ງ"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"ບໍ່ສາມາດເພີ່ມລິ້ງຈາກໂປຣໄຟລ໌ອື່ນໆໄດ້"</string> <string name="screenrecord_title" msgid="4257171601439507792">"ໂປຣແກຣມບັນທຶກໜ້າຈໍ"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ກຳລັງປະມວນຜົນການບັນທຶກໜ້າຈໍ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ການແຈ້ງເຕືອນສຳລັບເຊດຊັນການບັນທຶກໜ້າຈໍໃດໜຶ່ງ"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ໂໝດ"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ເປີດການຕັ້ງຄ່າ"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ອຸປະກອນອື່ນໆ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ສະຫຼັບພາບຮວມ"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ໂໝດ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ແລ້ວໆ"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ການຕັ້ງຄ່າ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ເປີດ"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ນຳທາງໂດຍໃຊ້ແປ້ນພິມຂອງທ່ານ"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ສຶກສາຄີລັດ"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ນຳທາງໂດຍໃຊ້ແຜ່ນສຳຜັດຂອງທ່ານ"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ສຶກສາທ່າທາງຂອງແຜ່ນສຳຜັດ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ນຳທາງໂດຍໃຊ້ແປ້ນພິມ ແລະ ແຜ່ນສຳຜັດຂອງທ່ານ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ສຶກສາທ່າທາງຂອງແຜ່ນສຳຜັດ, ຄີລັດ ແລະ ອື່ນໆ"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ຕອນນີ້ທ່ານສາມາດເຮັດໃຫ້ໜ້າຈໍມືດລົງເປັນພິເສດໄດ້ໂດຍການຫຼຸດລະດັບຄວາມສະຫວ່າງລົງໃຫ້ຫຼາຍຂຶ້ນຈາກເທິງສຸດຂອງໜ້າຈໍຂອງທ່ານ.\n\nຄຸນສົມບັດນີ້ຈະເຮັດວຽກໄດ້ດີທີ່ສຸດເມື່ອທ່ານຢູ່ໃນສະພາບແວດລ້ອມທີ່ມືດ."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"ລຶບທາງລັດທີ່ຫຼຸດແສງເປັນພິເສດອອກ"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"ລຶບທາງລັດທີ່ຫຼຸດແສງເປັນພິເສດອອກແລ້ວ. ເພື່ອຫຼຸດຄວາມສະຫວ່າງຂອງທ່ານລົງ, ໃຫ້ໃຊ້ແຖບຄວາມສະຫວ່າງປົກກະຕິ."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 61516fed7111..91f8398c8e16 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Pridėti prie užrašo"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Įtraukti nuorodą"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"„<xliff:g id="APPNAME">%1$s</xliff:g>“ <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Ekrano vaizdo įrašytuvas"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Apdorojam. ekrano vaizdo įraš."</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Šiuo metu rodomas ekrano įrašymo sesijos pranešimas"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Režimai"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Atidaryti nustatymus"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Kitas įrenginys"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Perjungti apžvalgą"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Režimai"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Atlikta"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Nustatymai"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Įjungta"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naršykite naudodamiesi klaviatūra"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Sužinokite apie sparčiuosius klavišus"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naršykite naudodamiesi jutikline dalimi"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Sužinokite jutiklinės dalies gestus"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Naršykite naudodamiesi klaviatūra ir jutikline dalimi"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Sužinokite jutiklinės dalies gestus, sparčiuosius klavišus ir kt."</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Dabar galite padaryti ekraną itin blankų, dar labiau sumažindami ryškumo lygį nuo ekrano viršaus.\n\nŠi funkcija geriausiai veikia, kai esate tamsioje aplinkoje."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Pašalinti funkcijos „Itin blanku“ spartųjį klavišą"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Funkcijos „Itin blanku“ spartusis klavišas pašalintas. Jei norite sumažinti ryškumą, naudokite įprastą ryškumo juostą."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 1b48d3f613b5..29af399aaf94 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Pievienot piezīmei"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Iekļaut saiti"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Ekrāna ierakstītājs"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Ekrāna ieraksta apstrāde"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Aktīvs paziņojums par ekrāna ierakstīšanas sesiju"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Režīmi"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Atvērt iestatījumus"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Cita ierīce"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Pārskata pārslēgšana"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Režīmi"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Gatavs"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Iestatījumi"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Ieslēgts"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Pārvietošanās, izmantojot tastatūru"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Uzziniet par īsinājumtaustiņiem."</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Pārvietošanās, izmantojot skārienpaliktni"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Apgūstiet skārienpaliktņa žestus."</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Pārvietošanās, izmantojot tastatūru un skārienpaliktni"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Uzziniet par skārienpaliktņa žestiem, īsinājumtaustiņiem un citām iespējām."</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Tagad varat veikt ekrāna papildu aptumšošanu, vēl vairāk samazinot spilgtumu ekrāna augšdaļā.\n\nTas darbojas vislabāk, ja esat tumšā vietā."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Noņemt papildu aptumšošanas saīsni"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Papildu aptumšošanas saīsne ir noņemta. Lai samazinātu spilgtumu, izmantojiet parasto spilgtuma joslu."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 1c853df520cb..11fb67c759e0 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Додај во белешка"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Опфати линк"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Снимач на екран"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Се обработува снимка од екран"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Тековно известување за сесија за снимање на екранот"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режими"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Отворете „Поставки“"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Друг уред"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Вклучи/исклучи преглед"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режими"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Готово"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Поставки"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Вклучено"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Движете се со користење на тастатурата"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Научете кратенки од тастатурата"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Движете се со користење на допирната подлога"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Научете движења за допирната подлога"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Движете се со користење на тастатурата и допирната подлога"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Научете движења за допирната подлога, кратенки од тастатурата и друго"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Отсега може да го затемнувате екранот дополнително со намалување на нивото на осветленост од горниот дел на екранот.\n\nОва функционира најдобро кога сте во темна средина."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Отстрани ја кратенката за „Дополнително затемнување“"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Кратенката за „Дополнително затемнување“ е отстранета. Користете ја стандардната лента за осветленост за да ја намалите осветленоста."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index ef63d675ed42..720275e3a6a4 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"കുറിപ്പിലേക്ക് ചേർക്കുക"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"ലിങ്ക് ഉൾപ്പെടുത്തുക"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"മറ്റ് പ്രൊഫൈലുകളിൽ നിന്ന് ലിങ്കുകൾ ചേർക്കാനാകില്ല"</string> <string name="screenrecord_title" msgid="4257171601439507792">"സ്ക്രീൻ റെക്കോർഡർ"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"സ്ക്രീൻ റെക്കോർഡിംഗ് പ്രോസസുചെയ്യുന്നു"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ഒരു സ്ക്രീൻ റെക്കോർഡിംഗ് സെഷനായി നിലവിലുള്ള അറിയിപ്പ്"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"മോഡുകൾ"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ക്രമീകരണം തുറക്കുക"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"മറ്റ് ഉപകരണം"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"അവലോകനം മാറ്റുക"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"മോഡുകൾ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ശരി"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ക്രമീകരണം"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ഓണാണ്"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"നിങ്ങളുടെ കീബോർഡ് ഉപയോഗിച്ച് നാവിഗേറ്റ് ചെയ്യുക"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"കീബോർഡ് കുറുക്കുവഴികൾ മനസ്സിലാക്കുക"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"നിങ്ങളുടെ ടച്ച്പാഡ് ഉപയോഗിച്ച് നാവിഗേറ്റ് ചെയ്യുക"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ടച്ച്പാഡ് ജെസ്ച്ചറുകൾ മനസ്സിലാക്കുക"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"നിങ്ങളുടെ കീപാഡ്, ടച്ച്പാഡ് എന്നിവ ഉപയോഗിച്ച് നാവിഗേറ്റ് ചെയ്യുക"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ടച്ച്പാഡ് ജെസ്ച്ചറുകൾ, കീബോർഡ് കുറുക്കുവഴികൾ എന്നിവയും മറ്റും മനസ്സിലാക്കുക"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"മുകളിൽ നിന്ന് തെളിച്ചം കുറയ്ക്കുന്നതിലൂടെ നിങ്ങൾക്ക് ഇപ്പോൾ സ്ക്രീൻ കൂടുതൽ മങ്ങിക്കാൻ കഴിയും.\n\nനിങ്ങൾ ഇരുണ്ട മുറിയിലായിരിക്കുമ്പോൾ ഇത് മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"കൂടുതൽ ഡിം ചെയ്യൽ കുറുക്കുവഴി നീക്കം ചെയ്യുക"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"കൂടുതൽ ഡിം ചെയ്യാനുള്ള കുറുക്കുവഴി നീക്കം ചെയ്തു. തെളിച്ചം കുറയ്ക്കാൻ, സാധാരണ \'തെളിച്ചം ബാർ\' ഉപയോഗിക്കുക."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index ff8c52be79f8..50a942e4a2c8 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Тэмдэглэлд нэмэх"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Холбоосыг оруулах"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Дэлгэцийн үйлдэл бичигч"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Дэлгэц бичлэг боловсруулж байна"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Дэлгэц бичих горимын үргэлжилж буй мэдэгдэл"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Горим"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Тохиргоог нээх"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Бусад төхөөрөмж"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Тоймыг асаах/унтраах"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Горим"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Болсон"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Тохиргоо"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Асаалттай"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Гараа ашиглан шилжих"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Товчлуурын шууд холбоосыг мэдэж аваарай"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Мэдрэгч самбараа ашиглан шилжээрэй"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Мэдрэгч самбарын зангааг мэдэж аваарай"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Гар эсвэл мэдрэгч самбараа ашиглан шилжээрэй"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Мэдрэгч самбарын зангаа, товчлуурын шууд холбоос болон бусад зүйлийг мэдэж аваарай"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Та одоо дэлгэцийнхээ дээд талаас гэрэлтүүлгийн түвшнийг бүр илүү багасгаснаар дэлгэцийг хэт бүүдгэр болгох боломжтой.\n\nЭнэ нь таныг харанхуй орчинд байхад хамгийн сайн ажилладаг."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Хэт бүүдгэр онцлогийн товчлолыг хасах"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Хэт бүүдгэр онцлогийн товчлолыг хассан. Гэрэлтүүлгээ багасгахын тулд энгийн гэрэлтүүлгийн самбарыг ашиглана уу."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 76515d2d4892..75ef6e0394ac 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"टीप जोडा"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"लिंकचा समावेश करा"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"इतर प्रोफाइलवरून लिंक जोडल्या जाऊ शकत नाहीत"</string> <string name="screenrecord_title" msgid="4257171601439507792">"स्क्रीन रेकॉर्डर"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"स्क्रीन रेकॉर्डिंग प्रोसेस सुरू"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रेकॉर्ड सत्रासाठी सुरू असलेली सूचना"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"मोड"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"सेटिंग्ज उघडा"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"इतर डिव्हाइस"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"अवलोकन टॉगल करा."</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"मोड"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"पूर्ण झाले"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"सेटिंग्ज"</string> <string name="zen_mode_on" msgid="9085304934016242591">"सुरू आहे"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"तुमचा कीबोर्ड वापरून नेव्हिगेट करा"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"कीबोर्ड शॉर्टकट जाणून घ्या"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"तुमचा टचपॅड वापरून नेव्हिगेट करा"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"टचपॅड जेश्चर जाणून घ्या"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"तुमचा कीबोर्ड आणि टचपॅड वापरून नेव्हिगेट करा"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"टचपॅड जेश्चर, कीबोर्ड शॉर्टकट आणि आणखी बरेच काही जाणून घ्या"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"तुम्ही आता तुमच्या स्क्रीनच्या सर्वात वरून ब्राइटनेसची पातळी आणखी कमी करून स्क्रीनला आणखी डिम करू शकता.\n\nतुम्ही गडद वातावरणात असता, तेव्हा हे सर्वोत्तम कार्य करते."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"आणखी डिमचा शॉर्टकट काढून टाका"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"आणखी डिमचा शॉर्टकट काढून टाकला आहे. तुमचा ब्राइटनेस कमी करण्यासाठी, नेहमीचा ब्राइटनेस बार वापरा."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index 181b0c7eb1bb..e8213ba5f74c 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Tambahkan pada nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Sertakan pautan"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Pautan tidak dapat ditambahkan daripada profil lain"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Perakam Skrin"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Memproses rakaman skrin"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Pemberitahuan breterusan untuk sesi rakaman skrin"</string> @@ -1391,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigasi menggunakan papan kekunci anda"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Ketahui pintasan papan kekunci"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigasi menggunakan pad sentuh anda"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Ketahui gerak isyarat pad sentuh"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigasi menggunakan papan kekunci dan pad sentuh anda"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Ketahui gerak isyarat pad sentuh, pintasan papan kekunci dan pelbagai lagi"</string> <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> @@ -1442,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Kini anda boleh menjadikan skrin amat malap dengan merendahkan tahap kecerahan lebih jauh daripada bahagian atas skrin anda.\n\nCiri ini berfungsi paling baik apabila anda berada dalam persekitaran yang gelap."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Alih keluar pintasan amat malap"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Pintasan amat malap dialih keluar. Untuk mengurangkan kecerahan anda, gunakan bar kecerahan biasa."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index afc57ac30166..8abb63da1b3a 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"မှတ်စုတွင် ထည့်ရန်"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"လင့်ခ်ထည့်သွင်းရန်"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"လင့်ခ်များကို အခြားပရိုဖိုင်များမှ ထည့်၍မရပါ"</string> <string name="screenrecord_title" msgid="4257171601439507792">"ဖန်သားပြင်ရိုက်ကူးစက်"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"စကရင်ရိုက်ကူးမှု အပြီးသတ်နေသည်"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ဖန်သားပြင် ရိုက်ကူးသည့် စက်ရှင်အတွက် ဆက်တိုက်လာနေသော အကြောင်းကြားချက်"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"မုဒ်များ"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ဆက်တင်များဖွင့်ရန်"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"အခြားစက်ပစ္စည်း"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ဖွင့်၊ ပိတ် အနှစ်ချုပ်"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"မုဒ်များ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ပြီးပြီ"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ဆက်တင်များ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ဖွင့်"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"သင့်ကီးဘုတ်ကိုသုံး၍ လမ်းညွှန်ခြင်း"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"လက်ကွက်ဖြတ်လမ်းများကို လေ့လာပါ"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"သင့်တာ့ချ်ပက်ကိုသုံး၍ လမ်းညွှန်ခြင်း"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"တာ့ချ်ပက်လက်ဟန်များကို လေ့လာပါ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"သင်၏ ကီးဘုတ်နှင့် တာ့ချ်ပက်တို့ကိုသုံး၍ လမ်းညွှန်ခြင်း"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"တာ့ချ်ပက်လက်ဟန်များ၊ လက်ကွက်ဖြတ်လမ်းများ စသည်တို့ကို လေ့လာပါ"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"သင့်စခရင်ထိပ်ဆုံး၌ပင် တောက်ပမှုအဆင့်လျှော့ချခြင်းဖြင့် စခရင်ကို ပိုမှိန်အောင် လုပ်နိုင်ပါပြီ။\n\nသင်သည် မှောင်သောပတ်ဝန်းကျင်၌ရှိချိန် ၎င်းက အကောင်းဆုံးအလုပ်လုပ်သည်။"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"ပိုမှိန်ခြင်း ဖြတ်လမ်း ဖယ်ရှားရန်"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"ပိုမှိန်ခြင်း ဖြတ်လမ်းကို ဖယ်ရှားလိုက်ပြီ။ တောက်ပမှုလျှော့ရန် ပုံမှန် တောက်ပမှုဘားကို အသုံးပြုပါ။"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index d222f314f025..8ccb77618fa1 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Legg til i notat"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Inkluder linken"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Skjermopptak"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Behandler skjermopptaket"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Vedvarende varsel for et skjermopptak"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Moduser"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Åpne Innstillinger"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Annen enhet"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Slå oversikten av eller på"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Moduser"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Ferdig"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Innstillinger"</string> <string name="zen_mode_on" msgid="9085304934016242591">"På"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviger med tastaturet"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Lær deg hurtigtaster"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviger med styreflaten"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Lær deg styreflatebevegelser"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Naviger med tastaturet og styreflaten"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Lær deg styreflatebevegelser, hurtigtaster med mer"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Nå kan du gjøre skjermen ekstra dimmet ved å redusere lysstyrkenivået enda mer fra toppen av skjermen.\n\nDette fungerer best i mørke omgivelser."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Fjern hurtigtasten for ekstra dimmet"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Hurtigtasten for ekstra dimmet er fjernet. For å redusere lysstyrken kan du bruke den vanlige lysstyrkeraden."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 8af52a1d3b68..60e99eaf48b6 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"नोटमा सेभ गर्नुहोस्"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"लिंक समावेश गर्नुहोस्"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"अन्य प्रोफाइलबाट लिंकहरू हाल्न मिल्दैन"</string> <string name="screenrecord_title" msgid="4257171601439507792">"स्क्रिन रेकर्डर"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"स्क्रिन रेकर्डिङको प्रक्रिया अघि बढाइँदै"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"कुनै स्क्रिन रेकर्ड गर्ने सत्रका लागि चलिरहेको सूचना"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"मोडहरू"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"सेटिङ खोल्नुहोस्"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"अर्को डिभाइड"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"परिदृश्य टगल गर्नुहोस्"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"मोडहरू"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"सम्पन्न भयो"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"सेटिङ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"अन छ"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"किबोर्ड प्रयोग गरी नेभिगेट गर्नुहोस्"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"किबोर्डका सर्टकटहरू प्रयोग गर्न सिक्नुहोस्"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"टचप्याड प्रयोग गरी नेभिगेट गर्नुहोस्"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"टचप्याड जेस्चर प्रयोग गर्न सिक्नुहोस्"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"किबोर्ड र टचप्याड प्रयोग गरी नेभिगेट गर्नुहोस्"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"टचप्याड जेस्चर, किबोर्डका सर्टकट र अन्य कुरा प्रयोग गर्न सिक्नुहोस्"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"तपाईं अब आफ्नो स्क्रिनको सिरानबाट चमकको स्तर घटाएर आफ्नो स्क्रिन अझै मधुरो बनाउन सक्नुहुन्छ।\n\nतपाईं अँध्यारो ठाउँमा भएका बेला यो सुविधाले अझ राम्रोसँग काम गर्छ।"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"\"अझै मधुरो\" सर्टकट हटाउनुहोस्"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"\"अझै मधुरो\" सर्टकट हटाइएको छ। स्क्रिनको चमक घटाउन \"रेगुलर ब्राइटनेस बार\" प्रयोग गर्नुहोस्।"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 24a483503454..4b43ab173d3a 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Toevoegen aan notitie"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Link opnemen"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Je kunt geen links toevoegen vanuit andere profielen"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Schermopname"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Schermopname verwerken"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Doorlopende melding voor een schermopname-sessie"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modi"</string> <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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Instellingen openen"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Ander apparaat"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Overzicht aan- of uitzetten"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modi"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Klaar"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Instellingen"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Aan"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigeren met je toetsenbord"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Leer sneltoetsen die je kunt gebruiken"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigeren met je touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Leer touchpadgebaren die je kunt gebruiken"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigeren met je toetsenbord en touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Leer meer over onder andere touchpadgebaren en sneltoetsen"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Je kunt het scherm nu extra dimmen door het helderheidsniveau nog verder te verlagen vanaf de bovenkant van het scherm.\n\nDit werkt het beste als je in een donkere omgeving bent."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Snelkoppeling voor extra dimmen verwijderen"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Snelkoppeling voor extra dimmen verwijderd. Als je de helderheid wilt verlagen, gebruik je de gewone helderheidsbalk."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 67537c2b9a2d..af4ee77c04ed 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"ନୋଟରେ ଯୋଗ କରନ୍ତୁ"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"ଲିଙ୍କକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରନ୍ତୁ"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"ସ୍କ୍ରିନ ରେକର୍ଡର"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ସ୍କ୍ରିନ ରେକର୍ଡିଂର ପ୍ରକ୍ରିୟାକରଣ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ଏକ ସ୍କ୍ରିନ୍ ରେକର୍ଡ୍ ସେସନ୍ ପାଇଁ ଚାଲୁଥିବା ବିଜ୍ଞପ୍ତି"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ମୋଡ"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ସେଟିଂସ ଖୋଲନ୍ତୁ"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ଅନ୍ୟ ଡିଭାଇସ୍"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ସଂକ୍ଷିପ୍ତ ବିବରଣୀକୁ ଟୋଗଲ୍ କରନ୍ତୁ"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ମୋଡ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ହୋଇଗଲା"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ସେଟିଂସ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ଚାଲୁ ଅଛି"</string> @@ -653,7 +653,7 @@ <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"ଏହି ଆପକୁ ଅନପିନ କରିବାକୁ, \"ବ୍ୟାକ\" ଏବଂ \"ହୋମ\" ବଟନକୁ ସ୍ପର୍ଶ କରି ଦବାଇ ଧରନ୍ତୁ"</string> <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"ଏହି ଆପକୁ ଅନପିନ୍ କରିବାକୁ, ଉପରକୁ ସ୍ୱାଇପ୍ କରି ଧରି ରଖନ୍ତୁ"</string> <string name="screen_pinning_positive" msgid="3285785989665266984">"ବୁଝିଗଲି"</string> - <string name="screen_pinning_negative" msgid="6882816864569211666">"ନାହିଁ, ଥାଉ"</string> + <string name="screen_pinning_negative" msgid="6882816864569211666">"ନା, ଧନ୍ୟବାଦ"</string> <string name="screen_pinning_start" msgid="7483998671383371313">"ଆପ୍ ପିନ୍ କରାଯାଇଛି"</string> <string name="screen_pinning_exit" msgid="4553787518387346893">"ଆପ୍ ଅନପିନ୍ କରାଯାଇଛି"</string> <string name="stream_voice_call" msgid="7468348170702375660">"କଲ କରନ୍ତୁ"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ଆପଣଙ୍କ କୀବୋର୍ଡ ବ୍ୟବହାର କରି ନାଭିଗେଟ କରନ୍ତୁ"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"କୀବୋର୍ଡ ସର୍ଟକଟଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ଆପଣଙ୍କ ଟଚପେଡ ବ୍ୟବହାର କରି ନାଭିଗେଟ କରନ୍ତୁ"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ଟଚପେଡର ଜେଶ୍ଚରଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ଆପଣଙ୍କ କୀବୋର୍ଡ ଏବଂ ଟଚପେଡ ବ୍ୟବହାର କରି ନାଭିଗେଟ କରନ୍ତୁ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ଟଚପେଡ ଜେଶ୍ଚର, କୀବୋର୍ଡ ସର୍ଟକଟ ଏବଂ ଆହୁରି ଅନେକ କିଛି ବିଷୟରେ ଜାଣନ୍ତୁ"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ବର୍ତ୍ତମାନ ଆପଣ ଆପଣଙ୍କ ସ୍କ୍ରିନର ଶୀର୍ଷରୁ ଉଜ୍ଜ୍ୱଳତାର ଲେଭେଲ ହ୍ରାସ କରି ସ୍କ୍ରିନକୁ ଅତିରିକ୍ତ ଡିମ କରିପାରିବେ।\n\nଆପଣ ଏକ ଡାର୍କ ପରିବେଶରେ ଥିଲେ ଏହା ସବୁଠାରୁ ଭଲ କାମ କରେ।"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"ଅତିରିକ୍ତ ଡିମ ସର୍ଟକଟକୁ କାଢ଼ି ଦିଅନ୍ତୁ"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"ଅତିରିକ୍ତ ଡିମର ସର୍ଟକଟ କାଢ଼ି ଦିଆଯାଇଛି। ଆପଣଙ୍କ ଉଜ୍ଜ୍ୱଳତା ହ୍ରାସ କରିବା ପାଇଁ ନିୟମିତ ଉଜ୍ଜ୍ୱଳତା ବାର ବ୍ୟବହାର କରନ୍ତୁ।"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 1927d45ea248..e6b275a5cef0 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"ਨੋਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"ਲਿੰਕ ਸ਼ਾਮਲ ਕਰੋ"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਰ"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ ਜਾਰੀ ਹੈ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"ਕਿਸੇ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ ਸੈਸ਼ਨ ਲਈ ਚੱਲ ਰਹੀ ਸੂਚਨਾ"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ਮੋਡ"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ਹੋਰ ਡੀਵਾਈਸ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ਰੂਪ-ਰੇਖਾ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ਮੋਡ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ਹੋ ਗਿਆ"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ਸੈਟਿੰਗਾਂ"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ਚਾਲੂ"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ਆਪਣੇ ਕੀ-ਬੋਰਡ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨੈਵੀਗੇਟ ਕਰੋ"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਬਾਰੇ ਜਾਣੋ"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ਆਪਣੇ ਟੱਚਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨੈਵੀਗੇਟ ਕਰੋ"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ਟੱਚਪੈਡ ਇਸ਼ਾਰਿਆਂ ਬਾਰੇ ਜਾਣੋ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ਆਪਣੇ ਕੀ-ਬੋਰਡ ਅਤੇ ਟੱਚਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨੈਵੀਗੇਟ ਕਰੋ"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ਟੱਚਪੈਡ ਇਸ਼ਾਰੇ, ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਬਾਰੇ ਜਾਣੋ"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ਤੁਸੀਂ ਹੁਣ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰ ਤੋਂ ਚਕਮ ਦੇ ਪੱਧਰ ਨੂੰ ਹੋਰ ਵੀ ਘੱਟ ਕਰ ਕੇ ਸਕ੍ਰੀਨ ਦੀ ਚਮਕ ਨੂੰ ਜ਼ਿਆਦਾ ਘੱਟ ਕਰ ਸਕਦੇ ਹੋ।\n\nਇਹ ਉਦੋਂ ਬਿਹਤਰੀਨ ਕੰਮ ਕਰਦੀ ਹੈ, ਜਦੋਂ ਤੁਸੀਂ ਹਨੇਰੇ ਵਿੱਚ ਹੁੰਦੇ ਹੋ।"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"\'ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ\' ਸ਼ਾਰਟਕੱਟ ਹਟਾਓ"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"\'ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ\' ਸ਼ਾਰਟਕੱਟ ਹਟਾਇਆ ਗਿਆ। ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੀ ਚਕਮ ਨੂੰ ਘੱਟ ਕਰਨ ਲਈ, ਨਿਯਮਿਤ ਚਮਕ ਪੱਟੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 1b27dba60258..0fefcaecbdb6 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Dodaj do notatek"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Dołącz link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Nagrywanie ekranu"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Przetwarzam nagrywanie ekranu"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Stałe powiadomienie o sesji rejestrowania zawartości ekranu"</string> @@ -292,8 +294,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> - <!-- no translation found for quick_settings_modes_label (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Tryby"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Otwórz Ustawienia"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Inne urządzenie"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Przełącz Przegląd"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Tryby"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Gotowe"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Ustawienia"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Wł."</string> @@ -510,7 +510,7 @@ <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> <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_widget_picker_description" msgid="490515450110487871">"Widżety są widoczne na ekranie blokady, nawet gdy tablet jest zablokowany."</string> <string name="accessibility_action_label_unselect_widget" msgid="1041811747619468698">"odznacz widżet"</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> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Nawiguj za pomocą klawiatury"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Dowiedz się więcej o skrótach klawiszowych"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Nawiguj za pomocą touchpada"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Poznaj gesty na touchpada"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Nawiguj za pomocą klawiatury i touchpada"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Poznaj gesty na touchpada, skróty klawiszowe i inne funkcje"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Możesz teraz dodatkowo przyciemnić ekran, jeszcze bardziej zmniejszając poziom jasności u góry ekranu.\n\nTa funkcja sprawdza się najlepiej, gdy jesteś w ciemnym otoczeniu."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Usuń skrót do dodatkowego przyciemnienia"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Skrót do dodatkowego przyciemnienia został usunięty. Aby zmniejszyć jasność, użyj standardowego paska jasności."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index d5856af1f6d8..1331ee65a716 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Incluir anotação"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Incluir link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Gravador de tela"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processando gravação de tela"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação contínua para uma sessão de gravação de tela"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modos"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Abrir as Configurações"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Alternar Visão geral"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modos"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Concluído"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Configurações"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Ativado"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navegue usando o teclado"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprenda atalhos do teclado"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navegue usando o touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Aprenda gestos do touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navegue usando o teclado e o touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Aprenda gestos do touchpad, atalhos do teclado e muito mais"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Agora, na parte de cima, é possível usar o recurso Escurecer a tela, que diminui ainda mais o nível de brilho.\n\nIsso funciona melhor quando você está em um ambiente escuro."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remover atalho de Escurecer a tela"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Atalho de Escurecer a tela removido. Use a barra normal para diminuir o brilho."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 6589b0fdbca7..e811fff9782b 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Adicionar a uma nota"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Incluir link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Não é possível adicionar links de outros perfis"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Gravador de ecrã"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"A processar a gravação de ecrã"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação persistente de uma sessão de gravação de ecrã"</string> @@ -292,8 +293,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> - <!-- no translation found for quick_settings_modes_label (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modos"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Abrir definições"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Ativar/desativar Vista geral"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modos"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Concluir"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Definições"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Ativado"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navegue com o teclado"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprenda atalhos de teclado"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navegue com o touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Aprenda gestos do touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navegue com o teclado e o touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Aprenda gestos do touchpad, atalhos de teclado e muito mais"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Agora, pode tornar o ecrã ainda mais escuro reduzindo ainda mais o nível de brilho a partir da parte superior do ecrã.\n\nIsto funciona melhor quando está num ambiente escuro."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remover atalho do escurecimento extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Atalho do escurecimento extra removido. Para reduzir o brilho, use a barra do brilho normal."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index d5856af1f6d8..1331ee65a716 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Incluir anotação"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Incluir link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Gravador de tela"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processando gravação de tela"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação contínua para uma sessão de gravação de tela"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modos"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Abrir as Configurações"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Alternar Visão geral"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modos"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Concluído"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Configurações"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Ativado"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navegue usando o teclado"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprenda atalhos do teclado"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navegue usando o touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Aprenda gestos do touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navegue usando o teclado e o touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Aprenda gestos do touchpad, atalhos do teclado e muito mais"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Agora, na parte de cima, é possível usar o recurso Escurecer a tela, que diminui ainda mais o nível de brilho.\n\nIsso funciona melhor quando você está em um ambiente escuro."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Remover atalho de Escurecer a tela"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Atalho de Escurecer a tela removido. Use a barra normal para diminuir o brilho."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 59136e0b953f..35d00254bd09 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Adaugă în notă"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Include linkul"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Recorder pentru ecran"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Se procesează înregistrarea"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificare în curs pentru o sesiune de înregistrare a ecranului"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Moduri"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Deschide Setări"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Alt dispozitiv"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Comută secțiunea Recente"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Moduri"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Gata"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Setări"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Activat"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navighează folosind tastatura"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Învață comenzile rapide de la tastatură"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navighează folosind touchpadul"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Învață gesturi pentru touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navighează folosind tastatura și touchpadul"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Învață gesturi pentru touchpad, comenzi rapide de la tastatură și altele"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Poți reduce suplimentar luminozitatea ecranului dacă scazi nivelul de luminozitate din partea de sus a ecranului.\n\nAcest lucru funcționează cel mai bine într-un mediu întunecat."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Elimină comanda rapidă de luminozitate redusă suplimentar"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"S-a eliminat comanda rapidă de luminozitate redusă suplimentar. Ca să reduci luminozitatea, folosește bara obișnuită de luminozitate."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index de436766ba07..2174dde011c0 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Добавить в заметку"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Добавить ссылку"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Нельзя добавлять ссылки из других профилей."</string> <string name="screenrecord_title" msgid="4257171601439507792">"Запись видео с экрана"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Обработка записи с экрана…"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Текущее уведомление для записи видео с экрана"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режимы"</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> @@ -301,7 +301,7 @@ <string name="see_all_bluetooth_devices" msgid="1761596816620200433">"Все"</string> <string name="turn_on_bluetooth" msgid="5681370462180289071">"Использовать"</string> <string name="quick_settings_bluetooth_device_connected" msgid="7884777006729260996">"Подключено"</string> - <string name="quick_settings_bluetooth_device_audio_sharing" msgid="1496358082943301670">"Отправка аудио"</string> + <string name="quick_settings_bluetooth_device_audio_sharing" msgid="1496358082943301670">"Передача аудио"</string> <string name="quick_settings_bluetooth_device_audio_sharing_or_switch_active" msgid="3227408556754456024">"Нажмите, чтобы переключить аудио или поделиться им"</string> <string name="quick_settings_bluetooth_device_saved" msgid="7549938728928069477">"Сохранено"</string> <string name="accessibility_quick_settings_bluetooth_device_tap_to_disconnect" msgid="415980329093277342">"отключить"</string> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Открыть настройки"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Другое устройство"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Переключить режим обзора"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режимы"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Готово"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Настройки"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Включено"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навигация с помощью клавиатуры"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Узнайте о сочетаниях клавиш."</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навигация с помощью сенсорной панели"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Узнайте о жестах на сенсорной панели."</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Навигация с помощью клавиатуры и сенсорной панели"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Узнайте о жестах на сенсорной панели, сочетаниях клавиш и многом другом."</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Чтобы дополнительно понизить яркость экрана, откройте настройки в его верхней части.\n\nРекомендуем использовать эту функцию, когда вокруг темно."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Удалить быструю команду для дополнительного уменьшения яркости"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Быстрая команда для дополнительного уменьшения яркости удалена. Чтобы изменить уровень яркости, воспользуйтесь стандартным ползунком яркости."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 8d6cd091d31e..167e9cdeb64e 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"සටහනට එක් කරන්න"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"සබැඳිය ඇතුළත් කරන්න"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"තිර රෙකෝඩරය"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"තිර පටිගත කිරීම සකසමින්"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"තිර පටිගත කිරීමේ සැසියක් සඳහා කෙරෙන දැනුම් දීම"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"ප්රකාර"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"සැකසීම් විවෘත කරන්න"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"වෙනත් උපාංගය"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"දළ විශ්ලේෂණය ටොගල කරන්න"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"ප්රකාර"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"නිමයි"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"සැකසීම්"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ක්රියාත්මකයි"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ඔබේ යතුරු පුවරුව භාවිතයෙන් සංචාලනය කරන්න"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"යතුරුපුවරු කෙටිමං ඉගෙන ගන්න"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ඔබේ ස්පර්ශ පෑඩ් භාවිතයෙන් සංචාලනය කරන්න"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ස්පර්ශක පුවරු අභිනයන් ඉගෙන ගන්න"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ඔබේ යතුරු පුවරුව සහ ස්පර්ශ පෑඩ් භාවිතයෙන් සංචාලනය කරන්න"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ස්පර්ශ පෑඩ් අභිනයන්, යතුරුපුවරු කෙටිමං සහ තවත් දේ ඉගෙන ගන්න"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ඔබේ තිරයේ ඉහළ සිට දීප්තියේ මට්ටම තවත් අඩු කිරීමෙන් ඔබට දැන් තිරය තවත් අඳුරු කළ හැක.\n\nඔබ අඳුරු පරිසරයක සිටින විට මෙය වඩාත් හොඳින් ක්රියා කරයි."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"තවත් අඳුරු කෙටිමඟ ඉවත් කරන්න"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"තවත් අඳුරු කෙටිමඟ ඉවත් කරන ලදි. ඔබේ දීප්තිය අඩු කිරීමට, සාමාන්ය දීප්ත තීරුව භාවිත කරන්න."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 715928540706..dd872c25eeb5 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Pridať do poznámky"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Zahrnúť odkaz"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Odkazy z iných profilov sa nedajú pridať"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Rekordér obrazovky"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Spracúva sa záznam obrazovky"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Zobrazuje sa upozornenie týkajúce sa relácie záznamu obrazovky"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Režimy"</string> <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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Otvoriť Nastavenia"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Iné zariadenie"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Prepnúť prehľad"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Režimy"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Hotovo"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Nastavenia"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Zapnuté"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Prechádzajte pomocou klávesnice"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Naučte sa klávesové skratky"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Prechádzajte pomocou touchpadu"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Naučte sa gestá touchpadu"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Prechádzajte pomocou klávesnice a touchpadu"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Naučte sa gestá touchpadu, klávesové skratky a ďalšie funkcie"</string> <string name="touchpad_tutorial_back_gesture_button" msgid="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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Teraz môžete obrazovku mimoriadne stmaviť ešte ďalším znížením úrovne jasu v hornej časti obrazovky.\n\nNajlepšie to funguje v tmavom prostredí."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Odstrániť skratku mimoriadneho stmavenia"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Skratka mimoriadneho stmavenia bola odstránená. Ak chcete znížiť jas, použite bežný posúvač jasu."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index f2c466eb5097..01ca4e57162d 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Dodaj v zapisek"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Vključi povezavo"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Povezav ni mogoče dodati iz drugih profilov"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Snemalnik zaslona"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Obdelava videoposnetka zaslona"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Nenehno obveščanje o seji snemanja zaslona"</string> @@ -292,8 +293,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> - <!-- no translation found for quick_settings_modes_label (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Odpri nastavitve"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Druga naprava"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Vklop/izklop pregleda"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Načini"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Končano"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Nastavitve"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Vklopljeno"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krmarjenje s tipkovnico"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Učenje bližnjičnih tipk"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krmarjenje s sledilno ploščico"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Učenje potez na sledilni ploščici"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Krmarjenje s tipkovnico in sledilno ploščico"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Učenje potez na sledilni ploščici, bližnjičnih tipk in drugega"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Zdaj lahko zelo zatemnite zaslon tako, da na vrhu zaslona dodatno zmanjšate raven svetlosti.\n\nTa funkcija najbolje deluje v temnem okolju."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Odstrani bližnjico do funkcije Zelo zatemnjeno"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Bližnjica do funkcije Zelo zatemnjeno je odstranjena. Če želite zmanjšati svetlost, uporabite običajno vrstico za uravnavanje svetlosti."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 70ea421b85ba..c4f880877ea2 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Shto te shënimi"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Përfshi lidhjen"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Regjistruesi i ekranit"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Regjistrimi i ekranit po përpunohet"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Njoftim i vazhdueshëm për një seancë regjistrimi të ekranit"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modalitetet"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Hap \"Cilësimet\""</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Pajisje tjetër"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Kalo te përmbledhja"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modalitetet"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"U krye"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Cilësimet"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Aktiv"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigo duke përdorur tastierën tënde"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Mëso shkurtoret e tastierës"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigo duke përdorur bllokun me prekje"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Mëso gjestet e bllokut me prekje"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigo duke përdorur tastierën dhe bllokun me prekje"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Mëso gjestet e bllokut me prekje, shkurtoret e tastierës etj."</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Tani mund ta bësh ekranin shumë më të zbehtë duke e ulur nivelin e ndriçimit edhe më tej nga kreu i ekranit.\n\nKjo funksionon më mirë kur je në një mjedis të errët."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Hiq shkurtoren e modalitetit \"Shumë më i zbehtë\""</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Shkurtorja e modalitetit \"Shumë më i zbehtë\" u hoq. Për të ulur ndriçimin, përdor shiritin e zakonshëm të ndriçimit."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 6db372d192da..66a4915ae3be 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Додај у белешку"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Уврсти линк"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Не можете да додате линкове са других профила"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Снимач екрана"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Обрађујемо видео снимка екрана"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Обавештење о сесији снимања екрана је активно"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режими"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Отвори Подешавања"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Други уређај"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Укључи/искључи преглед"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режими"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Готово"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Подешавања"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Укључено"</string> @@ -488,7 +487,7 @@ <string name="cta_tile_button_to_dismiss" msgid="3377597875997861754">"Одбаци"</string> <string name="cta_label_to_edit_widget" msgid="6496885074209203756">"Додајте, уклоните и преуредите виџете овде"</string> <string name="cta_label_to_open_widget_picker" msgid="3874946756976360699">"Додајте још виџета"</string> - <string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Дуги притисак за прилагођавање виџета"</string> + <string name="popup_on_dismiss_cta_tile_text" msgid="8292501780996070019">"Дуго притисните за прилагођавање виџета"</string> <string name="button_to_configure_widgets_text" msgid="4191862850185256901">"Прилагоди виџете"</string> <string name="unlock_reason_to_customize_widgets" msgid="5011909432460546033">"Откључајте да бисте прилагодили виџете"</string> <string name="icon_description_for_disabled_widget" msgid="4693151565003206943">"Икона апликације за онемогућен виџет"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Крећите се помоћу тастатуре"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Сазнајте више о тастерским пречицама"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Крећите се помоћу тачпеда"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Научите покрете за тачпед"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Крећите се помоћу тастатуре и тачпeда"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Научите покрете за тачпед, тастерске пречице и друго"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Сада можете додатно да затамните екран смањивањем нивоа осветљености при врху екрана. \n\nОво најбоље функционише када сте у тамном окружењу."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Уклони пречицу за додатно затамњивање"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Уклоњена је пречица за додатно затамњивање. Да бисте смањили осветљеност, користите уобичајену траку за осветљеност."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 225e3b3c5007..5ec9e963a15f 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Lägg till i anteckning"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Inkludera länk"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Skärminspelare"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Behandlar skärminspelning"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Avisering om att skärminspelning pågår"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Lägen"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Öppna Inställningar"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Annan enhet"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Aktivera och inaktivera översikten"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Lägen"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Klar"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Inställningar"</string> <string name="zen_mode_on" msgid="9085304934016242591">"På"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigera med tangentbordet"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Lär dig kortkommandon"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigera med styrplattan"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Lär dig rörelser för styrplattan"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Navigera med tangentbordet och styrplattan"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Lär dig rörelser för styrplattan, kortkommandon med mera"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Nu kan du göra skärmen extradimmad genom att sänka ljusstyrkan ännu mer från överst på skärmen.\n\nDetta fungerar bäst när omgivningen är mörk."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Ta bort kortkommandot för extradimmat"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Kortkommandot för extradimmat har tagits bort. Använd det vanliga fältet för ljusstyrka om du vill sänka ljusstyrkan."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 9fa8e558aa42..ababf7010302 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Ongeza kwenye dokezo"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Jumuisha kiungo"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g> <xliff:g id="APPNAME">%1$s</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Kinasa Skrini"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Inachakata rekodi ya skrini"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Arifa inayoendelea ya kipindi cha kurekodi skrini"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Hali"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Fungua Mipangilio"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Kifaa kingine"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Washa Muhtasari"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Hali"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Nimemaliza"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Mipangilio"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Imewashwa"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Kusogeza kwa kutumia kibodi yako"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Jifunze kuhusu mikato ya kibodi"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Kusogeza kwa kutumia padi yako ya kugusa"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Jifunze kuhusu miguso ya padi ya kugusa"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Kusogeza kwa kutumia kibodi na padi yako ya kugusa"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Jifunze kuhusu miguso ya padi ya kugusa, mikato ya kibodi na mengineyo"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Sasa unaweza kupunguza mwangaza zaidi kwa kupunguza kabisa kiwango cha mwangaza katika sehemu ya juu ya skrini yako.\n\nMipangilio hii hufanya kazi vyema zaidi ukiwa katika mazingira yenye giza."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Ondoa njia ya mkato ya kipunguza mwangaza zaidi"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Njia ya mkato ya kipunguza mwangaza zaidi imeondolewa. Tumia upau wa kawaida wa mwangaza ili upunguze mwangaza wako."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 7acd1e85129b..54ab3c337f94 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"குறிப்பில் சேர்"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"இணைப்பைச் சேர்"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"பிற சுயவிவர்ங்களில் இருந்து இணைப்புகளைச் சேர்க்க முடியாது"</string> <string name="screenrecord_title" msgid="4257171601439507792">"ஸ்கிரீன் ரெக்கார்டர்"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ஸ்க்ரீன் ரெக்கார்டிங் செயலாக்கப்படுகிறது"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"திரை ரெக்கார்டிங் அமர்விற்கான தொடர் அறிவிப்பு"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"பயன்முறைகள்"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"அமைப்புகளைத் திற"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"பிற சாதனம்"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"மேலோட்டப் பார்வையை நிலைமாற்று"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"பயன்முறைகள்"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"முடிந்தது"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"அமைப்புகள்"</string> <string name="zen_mode_on" msgid="9085304934016242591">"இயக்கப்பட்டுள்ளது"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"கீபோர்டைப் பயன்படுத்திச் செல்லுதல்"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"கீபோர்டு ஷார்ட்கட்கள் குறித்துத் தெரிந்துகொள்ளுங்கள்"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"டச்பேடைப் பயன்படுத்திச் செல்லுதல்"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"டச்பேட் சைகைள் குறித்துத் தெரிந்துகொள்ளுங்கள்"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"உங்கள் டச்பேட் மற்றும் கீபோர்டைப் பயன்படுத்திச் செல்லுதல்"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"டச்பேட் சைகைகள், கீபோர்டு ஷார்ட்கட்கள் மற்றும் பலவற்றைத் தெரிந்துகொள்ளுங்கள்"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"இப்போது உங்கள் திரையின் மேற்பகுதியில் ஒளிர்வு அளவைக் குறைப்பதன் மூலம் திரையை மிகக் குறைவான வெளிச்சத்திற்குக் கொண்டு வரலாம்.\n\nஇருட்டான சூழலில் இருக்கும்போது இது சிறப்பாகச் செயல்படும்."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"மிகக் குறைவான வெளிச்சத்திற்கான ஷார்ட்கட்டை அகற்று"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"மிகக் குறைவான வெளிச்சத்திற்கான ஷார்ட்கட் அகற்றப்பட்டது. உங்கள் ஒளிர்வைக் குறைக்க, வழக்கமான ஒளிர்வுப் பட்டியைப் பயன்படுத்துங்கள்."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 5cba2efbfc94..2c4109a8fd9e 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"గమనికకు జోడించండి"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"లింక్ను చేర్చండి"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"ఇతర ప్రొఫైల్స్ నుండి లింక్లు జోడించబడవు"</string> <string name="screenrecord_title" msgid="4257171601439507792">"స్క్రీన్ రికార్డర్"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"స్క్రీన్ రికార్డింగ్ అవుతోంది"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"స్క్రీన్ రికార్డ్ సెషన్ కోసం ఆన్గోయింగ్ నోటిఫికేషన్"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"మోడ్లు"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"సెట్టింగ్లను తెరవండి"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"ఇతర పరికరం"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"స్థూలదృష్టిని టోగుల్ చేయి"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"మోడ్లు"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"పూర్తయింది"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"సెట్టింగ్లు"</string> <string name="zen_mode_on" msgid="9085304934016242591">"ఆన్లో ఉంది"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"మీ కీబోర్డ్ ఉపయోగించి నావిగేట్ చేయండి"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"కీబోర్డ్ షార్ట్కట్ల గురించి తెలుసుకోండి"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"మీ టచ్ప్యాడ్ని ఉపయోగించి నావిగేట్ చేయండి"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"టచ్ప్యాడ్ సంజ్ఞ గురించి తెలుసుకోండి"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"మీ కీబోర్డ్, టచ్ప్యాడ్ను ఉపయోగించి నావిగేట్ చేయండి"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"టచ్ప్యాడ్ సంజ్ఞలు, కీబోర్డ్ షార్ట్కట్లు, అలాగే మరిన్నింటిని గురించి తెలుసుకోండి"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"మీరు ఇప్పుడు మీ స్క్రీన్ పైభాగం నుండి బ్రైట్నెస్ స్థాయిని తగ్గించడం ద్వారా కూడా స్క్రీన్ కాంతిని మరింత డిమ్ చేయవచ్చు.\n\nమీరు డార్క్ ఎన్విరాన్మెంట్లో ఉన్నప్పుడు కూడా ఇది బాగా పని చేస్తుంది."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"కాంతిని మరింత డిమ్ చేసే షార్ట్కట్ను తీసివేయండి"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"కాంతిని మరింత డిమ్ చేసే షార్ట్కట్ తీసివేయబడింది. మీ బ్రైట్నెస్ను తగ్గించడానికి, సాధారణ బ్రైట్నెస్ బార్ను ఉపయోగించండి."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 905ab9834eef..20e730c2df57 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"เพิ่มลงในโน้ต"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"รวมลิงก์"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"เพิ่มลิงก์จากโปรไฟล์อื่นไม่ได้"</string> <string name="screenrecord_title" msgid="4257171601439507792">"โปรแกรมบันทึกหน้าจอ"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"กำลังประมวลผลการอัดหน้าจอ"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"การแจ้งเตือนต่อเนื่องสำหรับเซสชันการบันทึกหน้าจอ"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"โหมด"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"เปิดการตั้งค่า"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"อุปกรณ์อื่น"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"สลับภาพรวม"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"โหมด"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"เสร็จสิ้น"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"การตั้งค่า"</string> <string name="zen_mode_on" msgid="9085304934016242591">"เปิด"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ไปยังส่วนต่างๆ โดยใช้แป้นพิมพ์"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ดูข้อมูลเกี่ยวกับแป้นพิมพ์ลัด"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ไปยังส่วนต่างๆ โดยใช้ทัชแพด"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ดูข้อมูลเกี่ยวกับท่าทางสัมผัสของทัชแพด"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"ไปยังส่วนต่างๆ โดยใช้แป้นพิมพ์และทัชแพด"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ดูข้อมูลเกี่ยวกับท่าทางสัมผัสของทัชแพด แป้นพิมพ์ลัด และอื่นๆ"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"ตอนนี้คุณสามารถหรี่แสงหน้าจอเพิ่มเติมได้โดยลดระดับความสว่างจากด้านบนของหน้าจอมากขึ้น\n\nฟีเจอร์นี้จะทำงานได้ดีเมื่อคุณอยู่ในที่มืด"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"นำทางลัดหรี่แสงเพิ่มเติมออก"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"นำทางลัดหรี่แสงเพิ่มเติมออกแล้ว หากต้องการลดความสว่าง ให้ใช้แถบความสว่างปกติ"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 5e9d7207badf..0bef7436269c 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Idagdag sa tala"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Isama ang link"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"Hindi maidaragdag ang mga link mula sa ibang profile"</string> <string name="screenrecord_title" msgid="4257171601439507792">"Recorder ng Screen"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Pinoproseso screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Kasalukuyang notification para sa session ng pag-record ng screen"</string> @@ -1391,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Mag-navigate gamit ang iyong keyboard"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Matuto ng mga keyboard shortcut"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Mag-navigate gamit ang iyong touchpad"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Matuto ng mga galaw sa touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Mag-navigate gamit ang iyong keyboard at touchpad"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Matuto ng mga galaw sa touchpad, keyboard shortcut, at higit pa"</string> <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> @@ -1442,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Puwede mo nang gawing extra dim ang screen sa pamamagitan ng pagpapababa ng level ng liwanag nang higit pa mula sa itaas ng iyong screen.\n\nPinakamahusay itong gumagana kapag nasa madilim na kapaligiran ka."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Alisin ang shortcut ng extra dim"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Inalis ang shortcut ng extra dim. Para bawasan ang liwanag, gamitin ang karaniwang bar ng liwanag."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index db4940233b45..060ecd1010eb 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Nota ekle"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Bağlantıyı dahil et"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Ekran Kaydedicisi"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Ekran kaydı işleniyor"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekran kaydı oturumu için devam eden bildirim"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Modlar"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Ayarlar\'ı aç"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Diğer cihaz"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Genel bakışı aç/kapat"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Modlar"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Bitti"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Ayarlar"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Açık"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Klavyenizi kullanarak gezinin"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Klavye kısayollarını öğrenin"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Dokunmatik alanınızı kullanarak gezinin"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Dokunmatik alan hareketlerini öğrenin"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Klavyenizi ve dokunmatik alanınızı kullanarak gezinin"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Dokunmatik alan hareketlerini, klavye kısayollarını ve daha fazlasını öğrenin"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Artık ekranınızın üst kısmından parlaklık seviyesini daha da düşürerek ekranı ekstra loş hale getirebilirsiniz.\n\nBu özellik, karanlık ortamdayken en iyi sonucu verir."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Ekstra loş kısayolunu kaldır"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Ekstra loş kısayolu kaldırıldı. Parlaklık seviyesini düşürmek için normal parlaklık çubuğunu kullanın."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 6d881df5d6c6..ae07ae26d0f0 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Додати до примітки"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Додати посилання"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Запис відео з екрана"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Обробка записування екрана"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Сповіщення про сеанс запису екрана"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Режими"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Відкрити налаштування"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Інший пристрій"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Увімкнути або вимкнути огляд"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Режими"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Готово"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Налаштування"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Увімкнено"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навігація за допомогою клавіатури"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Комбінації клавіш: докладніше"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навігація за допомогою сенсорної панелі"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Жести для сенсорної панелі: докладніше"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Навігація за допомогою клавіатури й сенсорної панелі"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Жести для сенсорної панелі, комбінації клавіш тощо: докладніше"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Тепер ви можете зробити екран ще темнішим, додатково зменшуючи рівень яскравості вгорі екрана.\n\nНайкраще ця функція працює, коли ви перебуваєте в темному місці."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Видалити комбінацію клавіш для додаткового зменшення яскравості"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Комбінацію клавіш для додаткового зменшення яскравості видалено. Щоб зменшити яскравість, використовуйте стандартну панель регулювання."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 628d66094431..5d1f66e364ef 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -105,6 +105,7 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"نوٹ میں شامل کریں"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"لنک شامل کریں"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <string name="backlinks_cross_profile_error" msgid="1355798585727802282">"دوسری پروفائلز سے لنکس شامل نہیں کیے جا سکتے"</string> <string name="screenrecord_title" msgid="4257171601439507792">"اسکرین ریکارڈر"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"سکرین ریکارڈنگ پروسیس ہورہی ہے"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"اسکرین ریکارڈ سیشن کیلئے جاری اطلاع"</string> @@ -292,8 +293,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"موڈز"</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> @@ -434,8 +434,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"ترتیبات کھولیں"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"دوسرا آلہ"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"مجموعی جائزہ ٹوگل کریں"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"موڈز"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"ہو گیا"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"ترتیبات"</string> <string name="zen_mode_on" msgid="9085304934016242591">"آن ہے"</string> @@ -1393,18 +1392,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"اپنے کی بورڈ کا استعمال کر کے نیویگیٹ کریں"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"کی بورڈ شارٹ کٹس جانیں"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"اپنے ٹچ پیڈ کا استعمال کر کے نیویگیٹ کریں"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"ٹچ پیڈ کے اشارے کو جانیں"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"اپنے کی بورڈ اور ٹچ پیڈ کا استعمال کر کے نیویگیٹ کریں"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"ٹچ پیڈ کے اشارے، کی بورڈ شارٹ کٹس اور مزید جانیں"</string> <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> @@ -1444,4 +1437,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"آپ اپنی اسکرین کے اوپری حصے سے چمکیلے پن لیول کو مزید کم کر کے اپنی اسکرین کو اضافی دھندلی بنا سکتے ہیں۔\n\nجب آپ تاریک ماحول میں ہوتے ہیں تو یہ بہتر کام کرتا ہے۔"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"اضافی دھندلا شارٹ کٹ کو ہٹائیں"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"اضافی دھندلا شارٹ کٹ کو ہٹا دیا گیا۔ اپنا چمکیلا پن کم کرنے کیلئے، ریگولر چمک بار کا استعمال کریں"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index f0988edc2efd..af35adf0f390 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Qaydga qoʻshish"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Havolani kiritish"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g>, <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Ekranni yozib olish"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Ekran yozib olinmoqda"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekrandan yozib olish seansi uchun joriy bildirishnoma"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Rejimlar"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Sozlamalarni ochish"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Boshqa qurilma"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Umumiy nazar rejimini almashtirish"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Rejimlar"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Tayyor"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Sozlamalar"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Yoniq"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Klaviatura yordamida kezing"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Tezkor tugmalar haqida"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Sensorli panel yordamida kezing"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Sensorli panel ishoralari haqida"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Klaviatura va sensorli panel yordamida kezing"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Sensorli panel ishoralari, tezkor tugmalar va boshqalar haqida"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Endi yorqinlik darajasini ekranning yuqori qismidan yanada pasaytirish orqali ekranni yanada xiralashtirishingiz mumkin.\n\nBu qorongʻi muhitda eng yaxshi ishlaydi."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Juda xira yorligʻini olib tashlash"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Juda xira yorligʻi olib tashlandi. Yorqinlikni pasaytirish uchun oddiy yorqinlik panelidan foydalaning."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 6ad5db47eafa..b7cd6b0d899f 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Thêm vào ghi chú"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Thêm đường liên kết"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Trình ghi màn hình"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Đang xử lý video ghi màn hình"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Thông báo đang diễn ra về phiên ghi màn hình"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Chế độ"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Mở phần Cài đặt"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Thiết bị khác"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Bật/tắt chế độ xem Tổng quan"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Chế độ"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Xong"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Cài đặt"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Đang bật"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Di chuyển bằng bàn phím"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Tìm hiểu về phím tắt"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Di chuyển bằng bàn di chuột"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Tìm hiểu về cử chỉ trên bàn di chuột"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Di chuyển bằng bàn phím và bàn di chuột"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Tìm hiểu về cử chỉ trên bàn di chuột, phím tắt và nhiều mục khác"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Giờ đây, bạn có thể đặt màn hình ở chế độ siêu tối bằng cách giảm thêm độ sáng từ đầu màn hình.\n\nChế độ này hoạt động hiệu quả nhất khi bạn ở trong một môi trường tối."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Xoá lối tắt của chế độ siêu tối"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Đã xoá lối tắt của chế độ siêu tối. Để giảm độ sáng, hãy dùng thanh độ sáng như thông thường."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 35f8851d9049..a329965d5714 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"添加到备注中"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"包括链接"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"屏幕录制器"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"正在处理屏幕录制视频"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"持续显示屏幕录制会话通知"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"模式"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"打开“设置”"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"其他设备"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"切换概览"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"模式"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"完成"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"设置"</string> <string name="zen_mode_on" msgid="9085304934016242591">"已开启"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"使用键盘导航"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"了解键盘快捷键"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"使用触控板导航"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"了解触控板手势"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"使用键盘和触控板进行导航"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"了解触控板手势、键盘快捷键等"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"现在,您可从屏幕顶部进一步调低亮度,将屏幕调成极暗。\n\n此功能在昏暗环境中效果最佳。"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"移除“极暗”快捷方式"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"已移除“极暗”快捷方式。如要调低亮度,请使用常规亮度条。"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 359b3ccb44b2..73bfbe6c2be2 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"新增至筆記"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"加入連結"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"螢幕錄影機"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"正在處理螢幕錄影內容"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"持續顯示錄影畫面工作階段通知"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"模式"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"開啟「設定」"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"其他裝置"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"切換概覽"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"模式"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"完成"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"設定"</string> <string name="zen_mode_on" msgid="9085304934016242591">"開啟"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"使用鍵盤導覽"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"瞭解鍵盤快速鍵"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"使用觸控板導覽"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"瞭解觸控板手勢"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"使用鍵盤和觸控板導覽"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"瞭解觸控板手勢、鍵盤快速鍵等等"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"而家喺螢幕頂部進一步校低亮度,就可以令螢幕變得超暗\n\n呢個功能喺陰暗環境之下嘅效果最好"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"移除超暗功能快速鍵"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"超暗功能快速鍵已移除。如要降低亮度,請使用一般的亮度列。"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 63b19d6be73d..46847fcf6599 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"新增至記事本"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"包含連結"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"螢幕錄影器"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"處理螢幕錄影內容"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"持續顯示螢幕畫面錄製工作階段通知"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"模式"</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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"開啟「設定」"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"其他裝置"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"切換總覽"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"模式"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"完成"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"設定"</string> <string name="zen_mode_on" msgid="9085304934016242591">"開啟"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"使用鍵盤操作"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"學習鍵盤快速鍵"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"使用觸控板操作"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"學習觸控板手勢"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"使用鍵盤和觸控板操作"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"學習觸控板手勢、鍵盤快速鍵等"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"現在只要在螢幕頂端將亮度設定調得更低,就能讓螢幕變得更暗。\n\n這項設定最適合在昏暗環境下使用。"</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"移除「超暗」捷徑"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"「超暗」捷徑已移除。如要調低亮度,請使用一般的亮度列。"</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 048cb0190221..dbfb926b867c 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -105,6 +105,8 @@ <string name="app_clips_save_add_to_note" msgid="3460200751278069445">"Engeza kunothi"</string> <string name="backlinks_include_link" msgid="4562093591148248158">"Faka ilinki"</string> <string name="backlinks_duplicate_label_format" msgid="558445128952827926">"<xliff:g id="APPNAME">%1$s</xliff:g> <xliff:g id="FREQUENCYCOUNT">(%2$d)</xliff:g>"</string> + <!-- no translation found for backlinks_cross_profile_error (1355798585727802282) --> + <skip /> <string name="screenrecord_title" msgid="4257171601439507792">"Okokuqopha iskrini"</string> <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Icubungula okokuqopha iskrini"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Isaziso esiqhubekayo seseshini yokurekhoda isikrini"</string> @@ -292,8 +294,7 @@ <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 (879156359479504244) --> - <skip /> + <string name="quick_settings_modes_label" msgid="879156359479504244">"Amamodi"</string> <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> @@ -434,8 +435,7 @@ <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"Vula Amasethingi"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"Enye idivayisi"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Guqula ukubuka konke"</string> - <!-- no translation found for zen_modes_dialog_title (8854640808100096934) --> - <skip /> + <string name="zen_modes_dialog_title" msgid="8854640808100096934">"Amamodi"</string> <string name="zen_modes_dialog_done" msgid="6654130880256438950">"Kwenziwe"</string> <string name="zen_modes_dialog_settings" msgid="2310248023728936697">"Amasethingi"</string> <string name="zen_mode_on" msgid="9085304934016242591">"Vuliwe"</string> @@ -1393,18 +1393,12 @@ <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 launch_keyboard_tutorial_notification_title (8849933155160522519) --> - <skip /> - <!-- no translation found for launch_keyboard_tutorial_notification_content (2880339951512757918) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_title (2243780062772196901) --> - <skip /> - <!-- no translation found for launch_touchpad_tutorial_notification_content (7931085031240753226) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_title (1940023776496198762) --> - <skip /> - <!-- no translation found for launch_keyboard_touchpad_tutorial_notification_content (1780725168171929365) --> - <skip /> + <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Funa usebenzisa ikhibhodi yakho"</string> + <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Funda izinqamuleli zamakhibhodi"</string> + <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Funa usebenzisa iphedi yokuthinta"</string> + <string name="launch_touchpad_tutorial_notification_content" msgid="7931085031240753226">"Funda ukunyakaza kwephedi lokuthinta"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_title" msgid="1940023776496198762">"Funa usebenzisa ikhibhodi yakho nephedi yokuthinta"</string> + <string name="launch_keyboard_touchpad_tutorial_notification_content" msgid="1780725168171929365">"Funda ukunyakaza kwephedi yokuthinta, izinqamuleli zamakhibhodi, nokuningi"</string> <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> @@ -1444,4 +1438,18 @@ <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="7513137763024327538">"Manje ungenza isikrini sifiphale ngokwengeziwe ngokwehlisa izinga lokukhanya nakakhulu kusukela phezulu kwesikrini sakho.\n\nLokhu kusebenza kahle kakhulu uma usendaweni emnyama."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="1782147201534669800">"Susa isinqamuleli esifiphele esengeziwe"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="4070696910424515757">"Isinqamuleli esifiphele ngokwengeziwe sikhishiwe. Ukuze wehlise ukukhanya kwakho, sebenzisa ibha yokukhanya evamile."</string> + <!-- no translation found for qs_edit_mode_category_connectivity (4559726936546032672) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_accessibility (7969091385071475922) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_utilities (8123080090108420095) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_privacy (6577774443194551775) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_providedByApps (8346112074897919019) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_display (4749511439121053942) --> + <skip /> + <!-- no translation found for qs_edit_mode_category_unknown (509314252124053550) --> + <skip /> </resources> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/RecentsTransition.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/RecentsTransition.java index b8319e51ec3b..c8de9f6660f9 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/RecentsTransition.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/RecentsTransition.java @@ -36,36 +36,6 @@ import java.util.function.Consumer; public class RecentsTransition { /** - * Creates a new transition aspect scaled transition activity options. - */ - public static ActivityOptions createAspectScaleAnimation(Context context, Handler handler, - boolean scaleUp, AppTransitionAnimationSpecsFuture animationSpecsFuture, - final Runnable animationStartCallback) { - final OnAnimationStartedListener animStartedListener = new OnAnimationStartedListener() { - private boolean mHandled; - - @Override - public void onAnimationStarted(long elapsedRealTime) { - // OnAnimationStartedListener can be called numerous times, so debounce here to - // prevent multiple callbacks - if (mHandled) { - return; - } - mHandled = true; - - if (animationStartCallback != null) { - animationStartCallback.run(); - } - } - }; - final ActivityOptions opts = ActivityOptions.makeMultiThumbFutureAspectScaleAnimation( - context, handler, - animationSpecsFuture != null ? animationSpecsFuture.getFuture() : null, - animStartedListener, scaleUp); - return opts; - } - - /** * Wraps a animation-start callback in a binder that can be called from window manager. */ public static IRemoteCallback wrapStartedListener(final Handler handler, diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java index bbf46984208f..76af813fe2f8 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java @@ -18,13 +18,13 @@ package com.android.systemui.shared.system; import android.os.RemoteException; import android.util.Log; -import android.view.IRecentsAnimationController; import android.view.SurfaceControl; import android.window.PictureInPictureSurfaceTransaction; import android.window.TaskSnapshot; import com.android.internal.os.IResultReceiver; import com.android.systemui.shared.recents.model.ThumbnailData; +import com.android.wm.shell.recents.IRecentsAnimationController; public class RecentsAnimationControllerCompat { @@ -58,14 +58,6 @@ public class RecentsAnimationControllerCompat { } } - public void setAnimationTargetsBehindSystemBars(boolean behindSystemBars) { - try { - mAnimationController.setAnimationTargetsBehindSystemBars(behindSystemBars); - } catch (RemoteException e) { - Log.e(TAG, "Failed to set whether animation targets are behind system bars", e); - } - } - /** * Sets the final surface transaction on a Task. This is used by Launcher to notify the system * that animating Activity to PiP has completed and the associated task surface should be @@ -103,22 +95,6 @@ public class RecentsAnimationControllerCompat { } } - public void setDeferCancelUntilNextTransition(boolean defer, boolean screenshot) { - try { - mAnimationController.setDeferCancelUntilNextTransition(defer, screenshot); - } catch (RemoteException e) { - Log.e(TAG, "Failed to set deferred cancel with screenshot", e); - } - } - - public void cleanupScreenshot() { - try { - mAnimationController.cleanupScreenshot(); - } catch (RemoteException e) { - Log.e(TAG, "Failed to clean up screenshot of recents animation", e); - } - } - /** * @see {{@link IRecentsAnimationController#setWillFinishToHome(boolean)}}. */ @@ -131,18 +107,6 @@ public class RecentsAnimationControllerCompat { } /** - * @see IRecentsAnimationController#removeTask - */ - public boolean removeTask(int taskId) { - try { - return mAnimationController.removeTask(taskId); - } catch (RemoteException e) { - Log.e(TAG, "Failed to remove remote animation target", e); - return false; - } - } - - /** * @see IRecentsAnimationController#detachNavigationBarFromApp */ public void detachNavigationBarFromApp(boolean moveHomeToTop) { @@ -152,15 +116,4 @@ public class RecentsAnimationControllerCompat { Log.e(TAG, "Failed to detach the navigation bar from app", e); } } - - /** - * @see IRecentsAnimationController#animateNavigationBarToApp(long) - */ - public void animateNavigationBarToApp(long duration) { - try { - mAnimationController.animateNavigationBarToApp(duration); - } catch (RemoteException e) { - Log.e(TAG, "Failed to animate the navigation bar to app", e); - } - } } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationListener.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationListener.java index 24073501c946..51892aac606a 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationListener.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationListener.java @@ -42,14 +42,4 @@ public interface RecentsAnimationListener { * was running becomes ready for control. */ void onTasksAppeared(RemoteAnimationTarget[] app); - - /** - * Called to request that the current task tile be switched out for a screenshot (if not - * already). Once complete, onFinished should be called. - * @return true if this impl will call onFinished. No other onSwitchToScreenshot impls will - * be called afterwards (to avoid multiple calls to onFinished). - */ - default boolean onSwitchToScreenshot(Runnable onFinished) { - return false; - } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt b/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt index e1297d32504b..60d80efe6426 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt +++ b/packages/SystemUI/src/com/android/systemui/accessibility/extradim/ExtraDimDialogManager.kt @@ -15,7 +15,9 @@ */ package com.android.systemui.accessibility.extradim -import androidx.annotation.VisibleForTesting +import com.android.systemui.animation.DialogCuj +import com.android.systemui.animation.DialogTransitionAnimator +import com.android.systemui.animation.Expandable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.phone.SystemUIDialog @@ -28,25 +30,35 @@ class ExtraDimDialogManager @Inject constructor( private val extraDimDialogDelegateProvider: Provider<ExtraDimDialogDelegate>, - private val mActivityStarter: ActivityStarter + private val mActivityStarter: ActivityStarter, + private val dialogTransitionAnimator: DialogTransitionAnimator, ) { private var dialog: SystemUIDialog? = null - @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) - fun dismissKeyguardIfNeededAndShowDialog() { + @JvmOverloads + fun dismissKeyguardIfNeededAndShowDialog(expandable: Expandable? = null) { mActivityStarter.executeRunnableDismissingKeyguard( - { showRemoveExtraDimShortcutsDialog() }, + { showRemoveExtraDimShortcutsDialog(expandable) }, /* cancelAction= */ null, /* dismissShade= */ false, /* afterKeyguardGone= */ true, - /* deferred= */ false + /* deferred= */ false, ) } /** Show the dialog for removing all Extra Dim shortcuts. */ - private fun showRemoveExtraDimShortcutsDialog() { + private fun showRemoveExtraDimShortcutsDialog(expandable: Expandable?) { dialog?.dismiss() - dialog = extraDimDialogDelegateProvider.get().createDialog() - dialog!!.show() + val dialog2 = extraDimDialogDelegateProvider.get().createDialog() + dialog = dialog2 + + val controller = + expandable?.dialogTransitionController( + DialogCuj(com.android.internal.jank.Cuj.CUJ_SHADE_DIALOG_OPEN) + ) + + controller?.let { + dialogTransitionAnimator.show(dialog2, it, animateBackgroundBoundsChange = true) + } ?: dialog2.show() } } diff --git a/packages/SystemUI/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduStatsInteractor.kt b/packages/SystemUI/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduStatsInteractor.kt index eb4eee204834..0e2d9b6a3ae0 100644 --- a/packages/SystemUI/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduStatsInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduStatsInteractor.kt @@ -16,15 +16,23 @@ package com.android.systemui.education.domain.interactor +import android.os.SystemProperties import com.android.systemui.contextualeducation.GestureType import com.android.systemui.contextualeducation.GestureType.ALL_APPS import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background +import com.android.systemui.education.dagger.ContextualEducationModule.EduClock import com.android.systemui.inputdevice.data.repository.UserInputDeviceRepository import com.android.systemui.inputdevice.tutorial.data.repository.DeviceType import com.android.systemui.inputdevice.tutorial.data.repository.DeviceType.KEYBOARD import com.android.systemui.inputdevice.tutorial.data.repository.DeviceType.TOUCHPAD +import com.android.systemui.inputdevice.tutorial.data.repository.TutorialSchedulerRepository +import java.time.Clock import javax.inject.Inject +import kotlin.time.Duration +import kotlin.time.Duration.Companion.hours +import kotlin.time.DurationUnit +import kotlin.time.toDuration import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch @@ -47,12 +55,24 @@ constructor( @Background private val backgroundScope: CoroutineScope, private val contextualEducationInteractor: ContextualEducationInteractor, private val inputDeviceRepository: UserInputDeviceRepository, + private val tutorialRepository: TutorialSchedulerRepository, + @EduClock private val clock: Clock, ) : KeyboardTouchpadEduStatsInteractor { + companion object { + val initialDelayDuration: Duration + get() = + SystemProperties.getLong( + "persist.contextual_edu.initial_delay_sec", + /* defaultValue= */ 72.hours.inWholeSeconds + ) + .toDuration(DurationUnit.SECONDS) + } + override fun incrementSignalCount(gestureType: GestureType) { backgroundScope.launch { val targetDevice = getTargetDevice(gestureType) - if (isTargetDeviceConnected(targetDevice)) { + if (isTargetDeviceConnected(targetDevice) && hasInitialDelayElapsed(targetDevice)) { contextualEducationInteractor.incrementSignalCount(gestureType) } } @@ -65,12 +85,10 @@ constructor( } private suspend fun isTargetDeviceConnected(deviceType: DeviceType): Boolean { - if (deviceType == KEYBOARD) { - return inputDeviceRepository.isAnyKeyboardConnectedForUser.first().isConnected - } else if (deviceType == TOUCHPAD) { - return inputDeviceRepository.isAnyTouchpadConnectedForUser.first().isConnected + return when (deviceType) { + KEYBOARD -> inputDeviceRepository.isAnyKeyboardConnectedForUser.first().isConnected + TOUCHPAD -> inputDeviceRepository.isAnyTouchpadConnectedForUser.first().isConnected } - return false } /** @@ -83,4 +101,11 @@ constructor( ALL_APPS -> KEYBOARD else -> TOUCHPAD } + + private suspend fun hasInitialDelayElapsed(deviceType: DeviceType): Boolean { + val oobeLaunchTime = tutorialRepository.launchTime(deviceType) ?: return false + return clock + .instant() + .isAfter(oobeLaunchTime.plusSeconds(initialDelayDuration.inWholeSeconds)) + } } diff --git a/packages/SystemUI/src/com/android/systemui/haptics/msdl/dagger/MSDLModule.kt b/packages/SystemUI/src/com/android/systemui/haptics/msdl/dagger/MSDLModule.kt index 5ea96b8388bb..d2dc8c1e8328 100644 --- a/packages/SystemUI/src/com/android/systemui/haptics/msdl/dagger/MSDLModule.kt +++ b/packages/SystemUI/src/com/android/systemui/haptics/msdl/dagger/MSDLModule.kt @@ -16,7 +16,9 @@ package com.android.systemui.haptics.msdl.dagger +import android.annotation.SuppressLint import android.content.Context +import android.os.VibratorManager import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.google.android.msdl.domain.MSDLPlayer @@ -25,8 +27,12 @@ import dagger.Provides @Module object MSDLModule { + @SuppressLint("NonInjectedService") @Provides @SysUISingleton - fun provideMSDLPlayer(@Application context: Context): MSDLPlayer = - MSDLPlayer.createPlayer(context) + fun provideMSDLPlayer(@Application context: Context): MSDLPlayer { + val vibratorManager = + context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager + return MSDLPlayer.createPlayer(vibratorManager.defaultVibrator) + } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt index dd47678e5b36..ecae0797dbc6 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenUserActionsViewModel.kt @@ -21,17 +21,19 @@ package com.android.systemui.keyguard.ui.viewmodel import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection +import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult import com.android.systemui.communal.domain.interactor.CommunalInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor +import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.SceneFamilies import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade +import com.android.systemui.scene.ui.viewmodel.SceneContainerEdge import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.shade.shared.model.ShadeMode -import com.android.systemui.util.kotlin.filterValuesNotNull import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -52,71 +54,67 @@ constructor( shadeInteractor.isShadeTouchable .flatMapLatest { isShadeTouchable -> if (!isShadeTouchable) { - flowOf(emptyMap()) - } else { - combine( - deviceEntryInteractor.isUnlocked, - communalInteractor.isCommunalAvailable, - shadeInteractor.shadeMode, - ) { isDeviceUnlocked, isCommunalAvailable, shadeMode -> - val notifShadeSceneKey = - UserActionResult( - toScene = SceneFamilies.NotifShade, - transitionKey = - ToSplitShade.takeIf { shadeMode is ShadeMode.Split }, - ) - - mapOf( - Swipe.Left to - UserActionResult(Scenes.Communal).takeIf { - isCommunalAvailable - }, - Swipe.Up to if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer, + return@flatMapLatest flowOf(emptyMap()) + } - // Swiping down from the top edge goes to QS (or shade if in split - // shade mode). - swipeDownFromTop(pointerCount = 1) to - if (shadeMode is ShadeMode.Single) { - UserActionResult(Scenes.QuickSettings) - } else { - notifShadeSceneKey - }, + combine( + deviceEntryInteractor.isUnlocked, + communalInteractor.isCommunalAvailable, + shadeInteractor.shadeMode, + ) { isDeviceUnlocked, isCommunalAvailable, shadeMode -> + buildList { + if (isCommunalAvailable) { + add(Swipe.Left to Scenes.Communal) + } - // TODO(b/338577208): Remove once we add Dual Shade invocation zones - swipeDownFromTop(pointerCount = 2) to - UserActionResult( - toScene = SceneFamilies.QuickSettings, - transitionKey = - ToSplitShade.takeIf { shadeMode is ShadeMode.Split } - ), + add(Swipe.Up to if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer) - // Swiping down, not from the edge, always navigates to the notif - // shade scene. - swipeDown(pointerCount = 1) to notifShadeSceneKey, - swipeDown(pointerCount = 2) to notifShadeSceneKey, + addAll( + when (shadeMode) { + ShadeMode.Single -> fullscreenShadeActions() + ShadeMode.Split -> + fullscreenShadeActions(transitionKey = ToSplitShade) + ShadeMode.Dual -> dualShadeActions() + } ) - .filterValuesNotNull() - } + } + .associate { it } } } .collect { setActions(it) } } - private fun swipeDownFromTop(pointerCount: Int): Swipe { - return Swipe( - SwipeDirection.Down, - fromSource = Edge.Top, - pointerCount = pointerCount, + private fun fullscreenShadeActions( + transitionKey: TransitionKey? = null + ): Array<Pair<UserAction, UserActionResult>> { + val notifShadeSceneKey = UserActionResult(SceneFamilies.NotifShade, transitionKey) + val qsShadeSceneKey = UserActionResult(SceneFamilies.QuickSettings, transitionKey) + return arrayOf( + // Swiping down, not from the edge, always goes to shade. + Swipe.Down to notifShadeSceneKey, + swipeDown(pointerCount = 2) to notifShadeSceneKey, + // Swiping down from the top edge goes to QS. + swipeDownFromTop(pointerCount = 1) to qsShadeSceneKey, + swipeDownFromTop(pointerCount = 2) to qsShadeSceneKey, ) } - private fun swipeDown(pointerCount: Int): Swipe { - return Swipe( - SwipeDirection.Down, - pointerCount = pointerCount, + private fun dualShadeActions(): Array<Pair<UserAction, UserActionResult>> { + return arrayOf( + Swipe.Down to Overlays.NotificationsShade, + Swipe(direction = SwipeDirection.Down, fromSource = SceneContainerEdge.TopRight) to + Overlays.QuickSettingsShade, ) } + private fun swipeDownFromTop(pointerCount: Int): Swipe { + return Swipe(SwipeDirection.Down, fromSource = Edge.Top, pointerCount = pointerCount) + } + + private fun swipeDown(pointerCount: Int): Swipe { + return Swipe(SwipeDirection.Down, pointerCount = pointerCount) + } + @AssistedFactory interface Factory { fun create(): LockscreenUserActionsViewModel diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt index 1502df725a9c..078d534833d1 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverLogger.kt @@ -19,6 +19,7 @@ package com.android.systemui.media.taptotransfer.receiver import android.app.StatusBarManager import com.android.systemui.dagger.SysUISingleton import com.android.systemui.log.LogBuffer +import com.android.systemui.log.core.LogLevel import com.android.systemui.media.taptotransfer.common.MediaTttLoggerUtils import com.android.systemui.temporarydisplay.TemporaryViewLogger import javax.inject.Inject @@ -50,6 +51,15 @@ constructor( MediaTttLoggerUtils.logPackageNotFound(buffer, TAG, packageName) } + fun logRippleAnimationEnd(id: Int) { + buffer.log( + tag, + LogLevel.DEBUG, + { int1 = id }, + { "ripple animation for view with id: $int1 is ended" } + ) + } + companion object { private const val TAG = "MediaTttReceiver" } diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt index fbd7fd3fe821..a232971c4e3f 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttReceiverRippleController.kt @@ -32,6 +32,7 @@ class MediaTttReceiverRippleController constructor( private val context: Context, private val windowManager: WindowManager, + private val mediaTttReceiverLogger: MediaTttReceiverLogger, ) { private var maxRippleWidth: Float = 0f @@ -90,12 +91,12 @@ constructor( /** Expands the ripple to cover the screen. */ fun expandToSuccessState(rippleView: ReceiverChipRippleView, onAnimationEnd: Runnable?) { layoutRipple(rippleView, isFullScreen = true) - rippleView.expandToFull(maxRippleHeight, onAnimationEnd) + rippleView.expandToFull(maxRippleHeight, mediaTttReceiverLogger, onAnimationEnd) } /** Collapses the ripple. */ fun collapseRipple(rippleView: ReceiverChipRippleView, onAnimationEnd: Runnable? = null) { - rippleView.collapseRipple(onAnimationEnd) + rippleView.collapseRipple(mediaTttReceiverLogger, onAnimationEnd) } private fun layoutRipple(rippleView: ReceiverChipRippleView, isFullScreen: Boolean = false) { diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt index 35018f190394..81059e31f3c1 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/ReceiverChipRippleView.kt @@ -24,9 +24,7 @@ import com.android.systemui.surfaceeffects.ripple.RippleShader import com.android.systemui.surfaceeffects.ripple.RippleView import kotlin.math.pow -/** - * An expanding ripple effect for the media tap-to-transfer receiver chip. - */ +/** An expanding ripple effect for the media tap-to-transfer receiver chip. */ class ReceiverChipRippleView(context: Context?, attrs: AttributeSet?) : RippleView(context, attrs) { // Indicates whether the ripple started expanding. @@ -46,24 +44,34 @@ class ReceiverChipRippleView(context: Context?, attrs: AttributeSet?) : RippleVi } /** Used to animate out the ripple. No-op if the ripple was never started via [startRipple]. */ - fun collapseRipple(onAnimationEnd: Runnable? = null) { + fun collapseRipple(logger: MediaTttReceiverLogger, onAnimationEnd: Runnable? = null) { if (!isStarted) { return // Ignore if ripple is not started yet. } duration = DEFAULT_DURATION // Reset all listeners to animator. animator.removeAllListeners() - animator.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - onAnimationEnd?.run() - isStarted = false + animator.addListener( + object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + animation?.let { + visibility = GONE + logger.logRippleAnimationEnd(id) + } + onAnimationEnd?.run() + isStarted = false + } } - }) + ) animator.reverse() } // Expands the ripple to cover full screen. - fun expandToFull(newHeight: Float, onAnimationEnd: Runnable? = null) { + fun expandToFull( + newHeight: Float, + logger: MediaTttReceiverLogger, + onAnimationEnd: Runnable? = null + ) { if (!isStarted) { return } @@ -85,13 +93,18 @@ class ReceiverChipRippleView(context: Context?, attrs: AttributeSet?) : RippleVi rippleShader.time = now.toFloat() invalidate() } - animator.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - animation?.let { visibility = GONE } - onAnimationEnd?.run() - isStarted = false + animator.addListener( + object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + animation?.let { + visibility = GONE + logger.logRippleAnimationEnd(id) + } + onAnimationEnd?.run() + isStarted = false + } } - }) + ) animator.start() } diff --git a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java index cf1dca3cbb23..893ef7e00579 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsController.java @@ -29,12 +29,6 @@ public interface ReduceBrightColorsController extends /** Sets the activation state of Reduce Bright Colors */ void setReduceBrightColorsActivated(boolean activated); - /** Sets whether Reduce Bright Colors is enabled */ - void setReduceBrightColorsFeatureAvailable(boolean enabled); - - /** Gets whether Reduce Bright Colors is enabled */ - boolean isReduceBrightColorsFeatureAvailable(); - /** Gets whether Reduce Bright Colors is being transitioned to Even Dimmer */ boolean isInUpgradeMode(Resources resources); /** @@ -48,12 +42,5 @@ public interface ReduceBrightColorsController extends */ default void onActivated(boolean activated) { } - /** - * Listener invoked when the feature enabled state changes. - * - * @param enabled {@code true} if Reduce Bright Colors feature is enabled. - */ - default void onFeatureEnabledChanged(boolean enabled) { - } } }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java index 4d6cf78610d9..ca6e40d8cbd5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/ReduceBrightColorsControllerImpl.java @@ -48,7 +48,6 @@ public class ReduceBrightColorsControllerImpl implements private final ContentObserver mContentObserver; private final SecureSettings mSecureSettings; private final ArrayList<ReduceBrightColorsController.Listener> mListeners = new ArrayList<>(); - private boolean mAvailable = true; @Inject public ReduceBrightColorsControllerImpl(UserTracker userTracker, @@ -77,7 +76,6 @@ public class ReduceBrightColorsControllerImpl implements mCurrentUserTrackerCallback = new UserTracker.Callback() { @Override public void onUserChanged(int newUser, Context userContext) { - mAvailable = true; synchronized (mListeners) { if (mListeners.size() > 0) { if (com.android.systemui.Flags.registerContentObserversAsync()) { @@ -141,17 +139,6 @@ public class ReduceBrightColorsControllerImpl implements mManager.setReduceBrightColorsActivated(activated); } - @Override - public void setReduceBrightColorsFeatureAvailable(boolean enabled) { - mAvailable = enabled; - dispatchOnEnabledChanged(enabled); - mAvailable = true; - } - - @Override - public boolean isReduceBrightColorsFeatureAvailable() { - return mAvailable; - } @Override public boolean isInUpgradeMode(Resources resources) { @@ -166,11 +153,4 @@ public class ReduceBrightColorsControllerImpl implements l.onActivated(activated); } } - - private void dispatchOnEnabledChanged(boolean enabled) { - ArrayList<Listener> copy = new ArrayList<>(mListeners); - for (Listener l : copy) { - l.onFeatureEnabledChanged(enabled); - } - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt index 4d823ab216f0..bde682074780 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/autoaddable/ReduceBrightColorsAutoAddable.kt @@ -42,7 +42,7 @@ constructor( ) : CallbackControllerAutoAddable< ReduceBrightColorsController.Listener, - ReduceBrightColorsController + ReduceBrightColorsController, >(controller) { override val spec: TileSpec @@ -55,12 +55,6 @@ constructor( sendAdd() } } - - override fun onFeatureEnabledChanged(enabled: Boolean) { - if (!enabled) { - available = false - } - } } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java index af5b31180159..d624d989f42a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ReduceBrightColorsTile.java @@ -29,6 +29,7 @@ import androidx.annotation.Nullable; import com.android.internal.R; import com.android.internal.logging.MetricsLogger; +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager; import com.android.systemui.animation.Expandable; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; @@ -55,6 +56,7 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> private final ReduceBrightColorsController mReduceBrightColorsController; private boolean mIsListening; private final boolean mInUpgradeMode; + private final ExtraDimDialogManager mExtraDimDialogManager; @Inject public ReduceBrightColorsTile( @@ -68,12 +70,14 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> MetricsLogger metricsLogger, StatusBarStateController statusBarStateController, ActivityStarter activityStarter, - QSLogger qsLogger + QSLogger qsLogger, + ExtraDimDialogManager extraDimDialogManager ) { super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); mReduceBrightColorsController = reduceBrightColorsController; mReduceBrightColorsController.observe(getLifecycle(), this); + mExtraDimDialogManager = extraDimDialogManager; mInUpgradeMode = reduceBrightColorsController.isInUpgradeMode(mContext.getResources()); mIsAvailable = isAvailable || mInUpgradeMode; @@ -102,19 +106,24 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> private boolean goToEvenDimmer() { if (mInUpgradeMode) { - mHost.removeTile(getTileSpec()); - mIsAvailable = false; return true; } return false; } @Override - protected void handleClick(@Nullable Expandable expandable) { + protected void handleLongClick(@Nullable Expandable expandable) { + if (goToEvenDimmer()) { + mExtraDimDialogManager.dismissKeyguardIfNeededAndShowDialog(expandable); + } else { + super.handleLongClick(expandable); + } + } + @Override + protected void handleClick(@Nullable Expandable expandable) { if (goToEvenDimmer()) { - mActivityStarter.postStartActivityDismissingKeyguard( - new Intent(Settings.ACTION_DISPLAY_SETTINGS), 0); + mExtraDimDialogManager.dismissKeyguardIfNeededAndShowDialog(expandable); } else { mReduceBrightColorsController.setReduceBrightColorsActivated(!mState.value); } @@ -146,9 +155,4 @@ public class ReduceBrightColorsTile extends QSTileImpl<QSTile.BooleanState> public void onActivated(boolean activated) { refreshState(); } - - @Override - public void onFeatureEnabledChanged(boolean enabled) { - refreshState(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt index 00b1e41461f5..536c5f1d17cf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileDataInteractor.kt @@ -23,13 +23,13 @@ import com.android.systemui.qs.dagger.QSFlagsModule.RBC_AVAILABLE import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger import com.android.systemui.qs.tiles.base.interactor.QSTileDataInteractor import com.android.systemui.qs.tiles.impl.reducebrightness.domain.model.ReduceBrightColorsTileModel -import com.android.systemui.util.kotlin.isAvailable import com.android.systemui.util.kotlin.isEnabled import javax.inject.Inject import javax.inject.Named import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map @@ -44,7 +44,7 @@ constructor( override fun tileData( user: UserHandle, - triggers: Flow<DataUpdateTrigger> + triggers: Flow<DataUpdateTrigger>, ): Flow<ReduceBrightColorsTileModel> { return reduceBrightColorsController .isEnabled() @@ -53,6 +53,5 @@ constructor( .flowOn(bgCoroutineContext) } - override fun availability(user: UserHandle): Flow<Boolean> = - reduceBrightColorsController.isAvailable() + override fun availability(user: UserHandle): Flow<Boolean> = flowOf(isAvailable) } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt index de49e70587ca..15c9901d10c2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/reducebrightness/domain/interactor/ReduceBrightColorsTileUserActionInteractor.kt @@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles.impl.reducebrightness.domain.interactor import android.content.Intent import android.content.res.Resources import android.provider.Settings +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.qs.ReduceBrightColorsController import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler @@ -35,6 +36,7 @@ constructor( @Main private val resources: Resources, private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler, private val reduceBrightColorsController: ReduceBrightColorsController, + private val extraDimDialogManager: ExtraDimDialogManager, ) : QSTileUserActionInteractor<ReduceBrightColorsTileModel> { val isInUpgradeMode: Boolean = reduceBrightColorsController.isInUpgradeMode(resources) @@ -44,12 +46,9 @@ constructor( when (action) { is QSTileUserAction.Click -> { if (isInUpgradeMode) { - reduceBrightColorsController.setReduceBrightColorsFeatureAvailable(false) - qsTileIntentUserActionHandler.handle( - action.expandable, - Intent(Settings.ACTION_DISPLAY_SETTINGS) + extraDimDialogManager.dismissKeyguardIfNeededAndShowDialog( + action.expandable ) - // TODO(b/349458355): show dialog return@with } reduceBrightColorsController.setReduceBrightColorsActivated( @@ -58,17 +57,14 @@ constructor( } is QSTileUserAction.LongClick -> { if (isInUpgradeMode) { - reduceBrightColorsController.setReduceBrightColorsFeatureAvailable(false) - qsTileIntentUserActionHandler.handle( - action.expandable, - Intent(Settings.ACTION_DISPLAY_SETTINGS) + extraDimDialogManager.dismissKeyguardIfNeededAndShowDialog( + action.expandable ) - // TODO(b/349458355): show dialog return@with } qsTileIntentUserActionHandler.handle( action.expandable, - Intent(Settings.ACTION_REDUCE_BRIGHT_COLORS_SETTINGS) + Intent(Settings.ACTION_REDUCE_BRIGHT_COLORS_SETTINGS), ) } is QSTileUserAction.ToggleClick -> {} diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt index ea4122a563ab..7bf2b63c7140 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneUserActionsViewModel.kt @@ -19,52 +19,49 @@ package com.android.systemui.scene.ui.viewmodel import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.Swipe import com.android.compose.animation.scene.SwipeDirection +import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult -import com.android.systemui.scene.shared.model.SceneFamilies +import com.android.systemui.scene.shared.model.Overlays +import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.shade.shared.model.ShadeMode import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import kotlinx.coroutines.flow.map class GoneUserActionsViewModel @AssistedInject -constructor( - private val shadeInteractor: ShadeInteractor, -) : UserActionsViewModel() { +constructor(private val shadeInteractor: ShadeInteractor) : UserActionsViewModel() { override suspend fun hydrateActions(setActions: (Map<UserAction, UserActionResult>) -> Unit) { - shadeInteractor.shadeMode - .map { shadeMode -> - buildMap<UserAction, UserActionResult> { - if ( - shadeMode is ShadeMode.Single || - // TODO(b/338577208): Remove this once we add Dual Shade invocation - // zones. - shadeMode is ShadeMode.Dual - ) { - put( - Swipe( - pointerCount = 2, - fromSource = Edge.Top, - direction = SwipeDirection.Down, - ), - UserActionResult(SceneFamilies.QuickSettings) - ) - } - - put( - Swipe.Down, - UserActionResult( - SceneFamilies.NotifShade, - ToSplitShade.takeIf { shadeMode is ShadeMode.Split } - ) - ) + shadeInteractor.shadeMode.collect { shadeMode -> + setActions( + when (shadeMode) { + ShadeMode.Single -> fullscreenShadeActions() + ShadeMode.Split -> fullscreenShadeActions(transitionKey = ToSplitShade) + ShadeMode.Dual -> dualShadeActions() } - } - .collect { setActions(it) } + ) + } + } + + private fun fullscreenShadeActions( + transitionKey: TransitionKey? = null + ): Map<UserAction, UserActionResult> { + return mapOf( + Swipe.Down to UserActionResult(Scenes.Shade, transitionKey), + Swipe(direction = SwipeDirection.Down, pointerCount = 2, fromSource = Edge.Top) to + UserActionResult(Scenes.Shade, transitionKey), + ) + } + + private fun dualShadeActions(): Map<UserAction, UserActionResult> { + return mapOf( + Swipe.Down to Overlays.NotificationsShade, + Swipe(direction = SwipeDirection.Down, fromSource = SceneContainerEdge.TopRight) to + Overlays.QuickSettingsShade, + ) } @AssistedFactory diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsViewModel.java b/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsViewModel.java index 9a38358a2768..4b1504f1cc2f 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsViewModel.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/appclips/AppClipsViewModel.java @@ -28,9 +28,9 @@ import android.app.TaskInfo; import android.app.WindowConfiguration; import android.app.assist.AssistContent; import android.content.ClipData; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.Bitmap; @@ -249,7 +249,6 @@ final class AppClipsViewModel extends ViewModel { .map(taskInfo -> new InternalTaskInfo(taskInfo.topActivityInfo, taskInfo.taskId, taskInfo.userId, getPackageManagerForUser(taskInfo.userId))) - .filter(this::canAppStartThroughLauncher) .map(this::getBacklinksDataForTaskInfo) .toList(), mBgExecutor); @@ -257,6 +256,17 @@ final class AppClipsViewModel extends ViewModel { return Futures.transformAsync(backlinksNestedListFuture, Futures::allAsList, mBgExecutor); } + private PackageManager getPackageManagerForUser(int userId) { + // If app clips was launched as the same user, then reuse the available PM from mContext. + if (mContext.getUserId() == userId) { + return mContext.getPackageManager(); + } + + // PackageManager required for a different user, create its context and return its PM. + UserHandle userHandle = UserHandle.of(userId); + return mContext.createContextAsUser(userHandle, /* flags= */ 0).getPackageManager(); + } + /** * Returns all tasks on a given display after querying {@link IActivityTaskManager} from the * {@link #mBgExecutor}. @@ -311,17 +321,6 @@ final class AppClipsViewModel extends ViewModel { } /** - * Returns whether the app represented by the {@link InternalTaskInfo} can be launched through - * the all apps tray by a user. - */ - private boolean canAppStartThroughLauncher(InternalTaskInfo internalTaskInfo) { - // Use Intent.resolveActivity API to check if the intent resolves as that is what Android - // uses internally when apps use Context.startActivity. - return getMainLauncherIntentForTask(internalTaskInfo) - .resolveActivity(internalTaskInfo.getPackageManager()) != null; - } - - /** * Returns an {@link InternalBacklinksData} that represents the Backlink data internally, which * is captured by querying the system using {@link TaskInfo#taskId}. */ @@ -390,11 +389,14 @@ final class AppClipsViewModel extends ViewModel { internalTaskInfo.getTaskId(), internalTaskInfo.getTopActivityNameForDebugLogging())); - String appName = internalTaskInfo.getTopActivityAppName(); - Drawable appIcon = internalTaskInfo.getTopActivityAppIcon(); - ClipData mainLauncherIntent = ClipData.newIntent(appName, - getMainLauncherIntentForTask(internalTaskInfo)); - InternalBacklinksData fallback = new BacklinksData(mainLauncherIntent, appIcon); + String screenshottedAppName = internalTaskInfo.getTopActivityAppName(); + Drawable screenshottedAppIcon = internalTaskInfo.getTopActivityAppIcon(); + Intent screenshottedAppMainLauncherIntent = getMainLauncherIntentForTask( + internalTaskInfo.getTopActivityPackageName(), internalTaskInfo.getPackageManager()); + ClipData screenshottedAppMainLauncherClipData = + ClipData.newIntent(screenshottedAppName, screenshottedAppMainLauncherIntent); + InternalBacklinksData fallback = + new BacklinksData(screenshottedAppMainLauncherClipData, screenshottedAppIcon); if (content == null) { return fallback; } @@ -406,10 +408,14 @@ final class AppClipsViewModel extends ViewModel { Uri uri = content.getWebUri(); Intent backlinksIntent = new Intent(ACTION_VIEW).setData(uri); - if (doesIntentResolveToSameTask(backlinksIntent, internalTaskInfo)) { + BacklinkDisplayInfo backlinkDisplayInfo = getInfoThatResolvesIntent(backlinksIntent, + internalTaskInfo); + if (backlinkDisplayInfo != null) { DebugLogger.INSTANCE.logcatMessage(this, () -> "getBacklinksDataFromAssistContent: using app provided uri"); - return new BacklinksData(ClipData.newRawUri(appName, uri), appIcon); + return new BacklinksData( + ClipData.newRawUri(backlinkDisplayInfo.getDisplayLabel(), uri), + backlinkDisplayInfo.getAppIcon()); } } @@ -419,10 +425,14 @@ final class AppClipsViewModel extends ViewModel { () -> "getBacklinksDataFromAssistContent: app has provided an intent"); Intent backlinksIntent = content.getIntent(); - if (doesIntentResolveToSameTask(backlinksIntent, internalTaskInfo)) { + BacklinkDisplayInfo backlinkDisplayInfo = getInfoThatResolvesIntent(backlinksIntent, + internalTaskInfo); + if (backlinkDisplayInfo != null) { DebugLogger.INSTANCE.logcatMessage(this, () -> "getBacklinksDataFromAssistContent: using app provided intent"); - return new BacklinksData(ClipData.newIntent(appName, backlinksIntent), appIcon); + return new BacklinksData( + ClipData.newIntent(backlinkDisplayInfo.getDisplayLabel(), backlinksIntent), + backlinkDisplayInfo.getAppIcon()); } } @@ -431,27 +441,76 @@ final class AppClipsViewModel extends ViewModel { return fallback; } - private boolean doesIntentResolveToSameTask(Intent intentToResolve, - InternalTaskInfo requiredTaskInfo) { - PackageManager packageManager = requiredTaskInfo.getPackageManager(); - ComponentName resolvedComponent = intentToResolve.resolveActivity(packageManager); - if (resolvedComponent == null) { - return false; + /** + * Returns {@link BacklinkDisplayInfo} for the app that would resolve the provided backlink + * {@link Intent}. + * + * <p>The method uses the {@link PackageManager} available in the provided + * {@link InternalTaskInfo}. + * + * <p>This method returns {@code null} if Android is not able to resolve the backlink intent or + * if the resolved app does not have an icon in the launcher. + */ + @Nullable + private BacklinkDisplayInfo getInfoThatResolvesIntent(Intent backlinkIntent, + InternalTaskInfo internalTaskInfo) { + PackageManager packageManager = internalTaskInfo.getPackageManager(); + + // Query for all available activities as there is a chance that multiple apps could resolve + // the intent. In such cases the normal `intent.resolveActivity` API returns the activity + // resolver info which isn't helpful for further checks. Also, using MATCH_DEFAULT_ONLY flag + // is required as that flag will be used when the notes app builds the intent and calls + // startActivity with the intent. + List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(backlinkIntent, + PackageManager.MATCH_DEFAULT_ONLY); + if (resolveInfos.isEmpty()) { + DebugLogger.INSTANCE.logcatMessage(this, + () -> "getInfoThatResolvesIntent: could not resolve backlink intent"); + return null; + } + + // Only use the first result as the list is ordered from best match to worst and Android + // will also use the best match with `intent.startActivity` API which notes app will use. + ActivityInfo activityInfo = resolveInfos.get(0).activityInfo; + if (activityInfo == null) { + DebugLogger.INSTANCE.logcatMessage(this, + () -> "getInfoThatResolvesIntent: could not find activity info for backlink " + + "intent"); + return null; + } + + // Ignore resolved backlink app if users cannot start it through all apps tray. + if (!canAppStartThroughLauncher(activityInfo.packageName, packageManager)) { + DebugLogger.INSTANCE.logcatMessage(this, + () -> "getInfoThatResolvesIntent: ignoring resolved backlink app as it cannot" + + " start through launcher"); + return null; } - String requiredPackageName = requiredTaskInfo.getTopActivityPackageName(); - return resolvedComponent.getPackageName().equals(requiredPackageName); + Drawable appIcon = InternalBacklinksDataKt.getAppIcon(activityInfo, packageManager); + String appName = InternalBacklinksDataKt.getAppName(activityInfo, packageManager); + return new BacklinkDisplayInfo(appIcon, appName); + } + + /** + * Returns whether the app represented by the provided {@code pkgName} can be launched through + * the all apps tray by the user. + */ + private static boolean canAppStartThroughLauncher(String pkgName, PackageManager pkgManager) { + // Use Intent.resolveActivity API to check if the intent resolves as that is what Android + // uses internally when apps use Context.startActivity. + return getMainLauncherIntentForTask(pkgName, pkgManager) + .resolveActivity(pkgManager) != null; } - private Intent getMainLauncherIntentForTask(InternalTaskInfo internalTaskInfo) { - String pkgName = internalTaskInfo.getTopActivityPackageName(); + private static Intent getMainLauncherIntentForTask(String pkgName, + PackageManager packageManager) { Intent intent = new Intent(ACTION_MAIN).addCategory(CATEGORY_LAUNCHER).setPackage(pkgName); // Not all apps use DEFAULT_CATEGORY for their main launcher activity so the exact component // needs to be queried and set on the Intent in order for note-taking apps to be able to // start this intent. When starting an activity with an implicit intent, Android adds the // DEFAULT_CATEGORY flag otherwise it fails to resolve the intent. - PackageManager packageManager = internalTaskInfo.getPackageManager(); ResolveInfo resolvedActivity = packageManager.resolveActivity(intent, /* flags= */ 0); if (resolvedActivity != null) { intent.setComponent(resolvedActivity.getComponentInfo().getComponentName()); @@ -460,17 +519,6 @@ final class AppClipsViewModel extends ViewModel { return intent; } - private PackageManager getPackageManagerForUser(int userId) { - // If app clips was launched as the same user, then reuse the available PM from mContext. - if (mContext.getUserId() == userId) { - return mContext.getPackageManager(); - } - - // PackageManager required for a different user, create its context and return its PM. - UserHandle userHandle = UserHandle.of(userId); - return mContext.createContextAsUser(userHandle, /* flags= */ 0).getPackageManager(); - } - /** Helper factory to help with injecting {@link AppClipsViewModel}. */ static final class Factory implements ViewModelProvider.Factory { diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/appclips/InternalBacklinksData.kt b/packages/SystemUI/src/com/android/systemui/screenshot/appclips/InternalBacklinksData.kt index 234692ea2fc6..f4faa36ef718 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/appclips/InternalBacklinksData.kt +++ b/packages/SystemUI/src/com/android/systemui/screenshot/appclips/InternalBacklinksData.kt @@ -27,16 +27,27 @@ import android.graphics.drawable.Drawable * represent error when necessary. */ internal sealed class InternalBacklinksData( - open val appIcon: Drawable, - open var displayLabel: String + // Fields from this object are made accessible through accessors to keep call sites simpler. + private val backlinkDisplayInfo: BacklinkDisplayInfo, ) { - data class BacklinksData(val clipData: ClipData, override val appIcon: Drawable) : - InternalBacklinksData(appIcon, clipData.description.label.toString()) + // Use separate field to access display label so that callers don't have to access through + // internal object. + var displayLabel: String + get() = backlinkDisplayInfo.displayLabel + set(value) { + backlinkDisplayInfo.displayLabel = value + } - data class CrossProfileError( - override val appIcon: Drawable, - override var displayLabel: String - ) : InternalBacklinksData(appIcon, displayLabel) + // Use separate field to access app icon so that callers don't have to access through internal + // object. + val appIcon: Drawable + get() = backlinkDisplayInfo.appIcon + + data class BacklinksData(val clipData: ClipData, private val icon: Drawable) : + InternalBacklinksData(BacklinkDisplayInfo(icon, clipData.description.label.toString())) + + data class CrossProfileError(private val icon: Drawable, private var label: String) : + InternalBacklinksData(BacklinkDisplayInfo(icon, label)) } /** @@ -54,11 +65,16 @@ internal data class InternalTaskInfo( val userId: Int, val packageManager: PackageManager ) { - fun getTopActivityNameForDebugLogging(): String = topActivityInfo.name + val topActivityNameForDebugLogging: String = topActivityInfo.name + val topActivityPackageName: String = topActivityInfo.packageName + val topActivityAppName: String by lazy { topActivityInfo.getAppName(packageManager) } + val topActivityAppIcon: Drawable by lazy { topActivityInfo.loadIcon(packageManager) } +} - fun getTopActivityPackageName(): String = topActivityInfo.packageName +internal fun ActivityInfo.getAppName(packageManager: PackageManager) = + loadLabel(packageManager).toString() - fun getTopActivityAppName(): String = topActivityInfo.loadLabel(packageManager).toString() +internal fun ActivityInfo.getAppIcon(packageManager: PackageManager) = loadIcon(packageManager) - fun getTopActivityAppIcon(): Drawable = topActivityInfo.loadIcon(packageManager) -} +/** A class to hold data that is used for displaying backlink to user in SysUI activity. */ +internal data class BacklinkDisplayInfo(val appIcon: Drawable, var displayLabel: String) diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java index 083cee73f591..75165cb5610e 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java +++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderController.java @@ -16,8 +16,6 @@ package com.android.systemui.settings.brightness; -import static com.android.systemui.Flags.hapticBrightnessSlider; - import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; @@ -317,9 +315,7 @@ public class BrightnessSliderController extends ViewController<BrightnessSliderV SeekbarHapticPlugin plugin = new SeekbarHapticPlugin( mVibratorHelper, mSystemClock); - if (hapticBrightnessSlider()) { - HapticSliderViewBinder.bind(viewRoot, plugin); - } + HapticSliderViewBinder.bind(viewRoot, plugin); return new BrightnessSliderController( root, mFalsingManager, mUiEventLogger, plugin, mActivityStarter); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/shared/StatusBarRonChips.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/shared/StatusBarRonChips.kt new file mode 100644 index 000000000000..4c0c4617658a --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/shared/StatusBarRonChips.kt @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.chips.shared + +import com.android.systemui.Flags +import com.android.systemui.flags.FlagToken +import com.android.systemui.flags.RefactorFlagUtils + +/** Helper for reading or using the status bar ron chips flag state. */ +@Suppress("NOTHING_TO_INLINE") +object StatusBarRonChips { + /** The aconfig flag name */ + const val FLAG_NAME = Flags.FLAG_STATUS_BAR_RON_CHIPS + + /** A token used for dependency declaration */ + val token: FlagToken + get() = FlagToken(FLAG_NAME, isEnabled) + + /** Is the refactor enabled */ + @JvmStatic + inline val isEnabled + get() = Flags.statusBarRonChips() + + /** + * Called to ensure code is only run when the flag is enabled. This protects users from the + * unintended behaviors caused by accidentally running new logic, while also crashing on an eng + * build to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun isUnexpectedlyInLegacyMode() = + RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, FLAG_NAME) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is not enabled to ensure that the refactor author catches issues in testing. + * Caution!! Using this check incorrectly will cause crashes in nextfood builds! + */ + @JvmStatic + inline fun assertInNewMode() = RefactorFlagUtils.assertInNewMode(isEnabled, FLAG_NAME) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is enabled to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, FLAG_NAME) +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt new file mode 100644 index 000000000000..d2555b0fe4a9 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/model/MultipleOngoingActivityChipsModel.kt @@ -0,0 +1,37 @@ +/* + * 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.model + +/** Models multiple active ongoing activity chips at once. */ +data class MultipleOngoingActivityChipsModel( + /** The primary chip to show. This will *always* be shown. */ + val primary: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), + /** + * The secondary chip to show. If there's not enough room in the status bar, this chip will + * *not* be shown. + */ + val secondary: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), +) { + init { + if ( + primary is OngoingActivityChipModel.Hidden && + secondary is OngoingActivityChipModel.Shown + ) { + throw IllegalArgumentException("`secondary` cannot be Shown if `primary` is Hidden") + } + } +} 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 199eb0613a0c..24c1b879f429 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsViewModel.kt @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.chips.ui.viewmodel +import com.android.systemui.Flags import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.log.LogBuffer @@ -27,6 +28,7 @@ import com.android.systemui.statusbar.chips.ron.demo.ui.viewmodel.DemoRonChipVie import com.android.systemui.statusbar.chips.ron.shared.StatusBarRonChips 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.MultipleOngoingActivityChipsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.util.kotlin.pairwise import javax.inject.Inject @@ -87,68 +89,58 @@ constructor( ) : InternalChipModel } - private val internalChip: Flow<InternalChipModel> = + private data class ChipBundle( + val screenRecord: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), + val shareToApp: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), + val castToOtherDevice: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), + val call: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), + val demoRon: OngoingActivityChipModel = OngoingActivityChipModel.Hidden(), + ) + + /** Bundles all the incoming chips into one object to easily pass to various flows. */ + private val incomingChipBundle = combine( - screenRecordChipViewModel.chip, - shareToAppChipViewModel.chip, - castToOtherDeviceChipViewModel.chip, - callChipViewModel.chip, - demoRonChipViewModel.chip, - ) { screenRecord, shareToApp, castToOtherDevice, call, demoRon -> - 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 - str2 = demoRon.logName - }, - { "... > Call=$str1 > DemoRon=$str2" } - ) - // 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) - demoRon is OngoingActivityChipModel.Shown -> { - StatusBarRonChips.assertInNewMode() - InternalChipModel.Shown(ChipType.DemoRon, demoRon) - } - 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) - check(demoRon is OngoingActivityChipModel.Hidden) - InternalChipModel.Hidden( - screenRecord = screenRecord, - shareToApp = shareToApp, - castToOtherDevice = castToOtherDevice, - call = call, - demoRon = demoRon, - ) - } + screenRecordChipViewModel.chip, + shareToAppChipViewModel.chip, + castToOtherDeviceChipViewModel.chip, + callChipViewModel.chip, + demoRonChipViewModel.chip, + ) { screenRecord, shareToApp, castToOtherDevice, call, demoRon -> + 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 + str2 = demoRon.logName + }, + { "... > Call=$str1 > DemoRon=$str2" } + ) + ChipBundle( + screenRecord = screenRecord, + shareToApp = shareToApp, + castToOtherDevice = castToOtherDevice, + call = call, + demoRon = demoRon, + ) } - } + // 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 maintain it forever by using + // [SharingStarted.Lazily]. See b/347726238. + .stateIn(scope, SharingStarted.Lazily, ChipBundle()) + + private val internalChip: Flow<InternalChipModel> = + incomingChipBundle.map { bundle -> pickMostImportantChip(bundle).mostImportantChip } /** * A flow modeling the primary chip that should be shown in the status bar after accounting for @@ -160,37 +152,188 @@ constructor( val primaryChip: StateFlow<OngoingActivityChipModel> = 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 - ChipType.DemoRon -> new.demoRon - } - } 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() + .map { (old, new) -> createOutputModel(old, new) } + .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden()) + + /** + * Equivalent to [MultipleOngoingActivityChipsModel] but using the internal models to do some + * state tracking before we get the final output. + */ + private data class InternalMultipleOngoingActivityChipsModel( + val primary: InternalChipModel, + val secondary: InternalChipModel, + ) + + private val internalChips: Flow<InternalMultipleOngoingActivityChipsModel> = + incomingChipBundle.map { bundle -> + // First: Find the most important chip. + val primaryChipResult = pickMostImportantChip(bundle) + val primaryChip = primaryChipResult.mostImportantChip + if (primaryChip is InternalChipModel.Hidden) { + // If the primary chip is hidden, the secondary chip will also be hidden, so just + // pass the same Hidden model for both. + InternalMultipleOngoingActivityChipsModel(primaryChip, primaryChip) + } else { + // Then: Find the next most important chip. + val secondaryChip = + pickMostImportantChip(primaryChipResult.remainingChips).mostImportantChip + InternalMultipleOngoingActivityChipsModel(primaryChip, secondaryChip) + } + } + + /** + * A flow modeling the primary chip that should be shown in the status bar after accounting for + * possibly multiple ongoing activities and animation requirements. + * + * [com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment] is responsible for + * actually displaying the chip. + */ + val chips: StateFlow<MultipleOngoingActivityChipsModel> = + if (!Flags.statusBarRonChips()) { + // Multiple chips are only allowed with RONs. If the flag isn't on, use just the + // primary chip. + primaryChip + .map { + MultipleOngoingActivityChipsModel( + primary = it, + secondary = OngoingActivityChipModel.Hidden(), + ) } + .stateIn( + scope, + SharingStarted.Lazily, + MultipleOngoingActivityChipsModel(), + ) + } else { + internalChips + .pairwise(initialValue = DEFAULT_MULTIPLE_INTERNAL_HIDDEN_MODEL) + .map { (old, new) -> + val correctPrimary = createOutputModel(old.primary, new.primary) + val correctSecondary = createOutputModel(old.secondary, new.secondary) + MultipleOngoingActivityChipsModel(correctPrimary, correctSecondary) + } + .stateIn( + scope, + SharingStarted.Lazily, + MultipleOngoingActivityChipsModel(), + ) + } + + /** A data class representing the return result of [pickMostImportantChip]. */ + private data class MostImportantChipResult( + val mostImportantChip: InternalChipModel, + val remainingChips: ChipBundle, + ) + + /** + * Finds the most important chip from the given [bundle]. + * + * This function returns that most important chip, and it also returns any remaining chips that + * still want to be shown after filtering out the most important chip. + */ + private fun pickMostImportantChip(bundle: ChipBundle): MostImportantChipResult { + // This `when` statement shows the priority order of the chips. + return when { + bundle.screenRecord is OngoingActivityChipModel.Shown -> + MostImportantChipResult( + mostImportantChip = + InternalChipModel.Shown(ChipType.ScreenRecord, bundle.screenRecord), + remainingChips = + bundle.copy( + screenRecord = OngoingActivityChipModel.Hidden(), + // Screen recording also activates the media projection APIs, which + // means that whenever the screen recording chip is active, the + // share-to-app chip would also be active. (Screen recording is a + // special case of share-to-app, where the app receiving the share is + // specifically System UI.) + // We want only the screen-recording-specific chip to be shown in this + // case. If we did have screen recording as the primary chip, we need to + // suppress the share-to-app chip to make sure they don't both show. + // See b/296461748. + shareToApp = OngoingActivityChipModel.Hidden(), + ) + ) + bundle.shareToApp is OngoingActivityChipModel.Shown -> + MostImportantChipResult( + mostImportantChip = + InternalChipModel.Shown(ChipType.ShareToApp, bundle.shareToApp), + remainingChips = bundle.copy(shareToApp = OngoingActivityChipModel.Hidden()), + ) + bundle.castToOtherDevice is OngoingActivityChipModel.Shown -> + MostImportantChipResult( + mostImportantChip = + InternalChipModel.Shown( + ChipType.CastToOtherDevice, + bundle.castToOtherDevice, + ), + remainingChips = + bundle.copy(castToOtherDevice = OngoingActivityChipModel.Hidden()), + ) + bundle.call is OngoingActivityChipModel.Shown -> + MostImportantChipResult( + mostImportantChip = InternalChipModel.Shown(ChipType.Call, bundle.call), + remainingChips = bundle.copy(call = OngoingActivityChipModel.Hidden()), + ) + bundle.demoRon is OngoingActivityChipModel.Shown -> { + StatusBarRonChips.assertInNewMode() + MostImportantChipResult( + mostImportantChip = InternalChipModel.Shown(ChipType.DemoRon, bundle.demoRon), + remainingChips = bundle.copy(demoRon = 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 maintain it forever by using - // [SharingStarted.Lazily]. See b/347726238. - .stateIn(scope, SharingStarted.Lazily, OngoingActivityChipModel.Hidden()) + else -> { + // We should only get here if all chip types are hidden + check(bundle.screenRecord is OngoingActivityChipModel.Hidden) + check(bundle.shareToApp is OngoingActivityChipModel.Hidden) + check(bundle.castToOtherDevice is OngoingActivityChipModel.Hidden) + check(bundle.call is OngoingActivityChipModel.Hidden) + check(bundle.demoRon is OngoingActivityChipModel.Hidden) + MostImportantChipResult( + mostImportantChip = + InternalChipModel.Hidden( + screenRecord = bundle.screenRecord, + shareToApp = bundle.shareToApp, + castToOtherDevice = bundle.castToOtherDevice, + call = bundle.call, + demoRon = bundle.demoRon, + ), + // All the chips are already hidden, so no need to filter anything out of the + // bundle. + remainingChips = bundle, + ) + } + } + } + + private fun createOutputModel( + old: InternalChipModel, + new: InternalChipModel, + ): OngoingActivityChipModel { + return 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. + return when (old.type) { + ChipType.ScreenRecord -> new.screenRecord + ChipType.ShareToApp -> new.shareToApp + ChipType.CastToOtherDevice -> new.castToOtherDevice + ChipType.Call -> new.call + ChipType.DemoRon -> new.demoRon + } + } 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() + } + } companion object { private const val TAG = "ChipsViewModel" @@ -203,5 +346,11 @@ constructor( call = OngoingActivityChipModel.Hidden(), demoRon = OngoingActivityChipModel.Hidden(), ) + + private val DEFAULT_MULTIPLE_INTERNAL_HIDDEN_MODEL = + InternalMultipleOngoingActivityChipsModel( + primary = DEFAULT_INTERNAL_HIDDEN_MODEL, + secondary = DEFAULT_INTERNAL_HIDDEN_MODEL, + ) } } 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 aa1911e4cd2a..5ae5a3213954 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 @@ -62,7 +62,6 @@ constructor( viewModel: SharedNotificationContainerViewModel, ): DisposableHandle { val disposables = DisposableHandles() - disposables += view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.CREATED) { @@ -87,10 +86,7 @@ constructor( } val burnInParams = MutableStateFlow(BurnInParameters()) - val viewState = - ViewStateAccessor( - alpha = { controller.getAlpha() }, - ) + val viewState = ViewStateAccessor(alpha = { controller.getAlpha() }) /* * For animation sensitive coroutines, immediately run just like applicationScope does @@ -108,7 +104,7 @@ constructor( addUpdateListener { animation -> controller.setMaxAlphaForKeyguard( animation.animatedFraction, - "SharedNotificationContainerVB (collapseFadeIn)" + "SharedNotificationContainerVB (collapseFadeIn)", ) } start() @@ -153,7 +149,7 @@ constructor( launch { viewModel.translationX.collect { x -> controller.translationX = x } } launch { - viewModel.keyguardAlpha(viewState).collect { + viewModel.keyguardAlpha(viewState, this).collect { controller.setMaxAlphaForKeyguard(it, "SharedNotificationContainerVB") } } 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 aed00d8cd5be..e34eb61c5cbd 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 @@ -20,7 +20,6 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel import androidx.annotation.VisibleForTesting -import com.android.compose.animation.scene.SceneKey import com.android.systemui.common.shared.model.NotificationContainerBounds import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor import com.android.systemui.dagger.SysUISingleton @@ -29,7 +28,6 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.Edge -import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING @@ -41,7 +39,6 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER import com.android.systemui.keyguard.shared.model.StatusBarState.SHADE import com.android.systemui.keyguard.shared.model.StatusBarState.SHADE_LOCKED -import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel import com.android.systemui.keyguard.ui.viewmodel.AodToGoneTransitionViewModel @@ -73,7 +70,6 @@ import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor -import com.android.systemui.util.kotlin.BooleanFlowOperators.allOf import com.android.systemui.util.kotlin.BooleanFlowOperators.anyOf import com.android.systemui.util.kotlin.FlowDumperImpl import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine @@ -166,10 +162,9 @@ constructor( * before the other. */ private val isShadeLocked: Flow<Boolean> = - combine( - keyguardInteractor.statusBarState.map { it == SHADE_LOCKED }, - isAnyExpanded, - ) { isShadeLocked, isAnyExpanded -> + combine(keyguardInteractor.statusBarState.map { it == SHADE_LOCKED }, isAnyExpanded) { + isShadeLocked, + isAnyExpanded -> isShadeLocked && isAnyExpanded } .stateIn( @@ -220,23 +215,20 @@ constructor( keyguardTransitionInteractor.isFinishedIn(ALTERNATE_BOUNCER), keyguardTransitionInteractor.isFinishedIn( scene = Scenes.Bouncer, - stateWithoutSceneContainer = PRIMARY_BOUNCER + stateWithoutSceneContainer = PRIMARY_BOUNCER, ), keyguardTransitionInteractor.transitionValue(LOCKSCREEN).map { it > 0f }, ) .stateIn( scope = applicationScope, started = SharingStarted.Eagerly, - initialValue = false + initialValue = false, ) .dumpValue("isOnLockscreen") /** Are we purely on the keyguard without the shade/qs? */ val isOnLockscreenWithoutShade: Flow<Boolean> = - combine( - isOnLockscreen, - isAnyExpanded, - ) { isKeyguard, isAnyExpanded -> + combine(isOnLockscreen, isAnyExpanded) { isKeyguard, isAnyExpanded -> isKeyguard && !isAnyExpanded } .stateIn( @@ -251,16 +243,16 @@ constructor( combine( keyguardTransitionInteractor.isFinishedIn( scene = Scenes.Communal, - stateWithoutSceneContainer = GLANCEABLE_HUB + stateWithoutSceneContainer = GLANCEABLE_HUB, ), anyOf( keyguardTransitionInteractor.isInTransition( edge = Edge.create(to = Scenes.Communal), - edgeWithoutSceneContainer = Edge.create(to = GLANCEABLE_HUB) + edgeWithoutSceneContainer = Edge.create(to = GLANCEABLE_HUB), ), keyguardTransitionInteractor.isInTransition( edge = Edge.create(from = Scenes.Communal), - edgeWithoutSceneContainer = Edge.create(from = GLANCEABLE_HUB) + edgeWithoutSceneContainer = Edge.create(from = GLANCEABLE_HUB), ), ), ) { isOnGlanceableHub, transitioningToOrFromHub -> @@ -271,10 +263,7 @@ constructor( /** Are we purely on the glanceable hub without the shade/qs? */ val isOnGlanceableHubWithoutShade: Flow<Boolean> = - combine( - isOnGlanceableHub, - isAnyExpanded, - ) { isGlanceableHub, isAnyExpanded -> + combine(isOnGlanceableHub, isAnyExpanded) { isGlanceableHub, isAnyExpanded -> isGlanceableHub && !isAnyExpanded } .stateIn( @@ -286,10 +275,9 @@ constructor( /** Are we on the dream without the shade/qs? */ private val isDreamingWithoutShade: Flow<Boolean> = - combine( - keyguardTransitionInteractor.isFinishedIn(DREAMING), - isAnyExpanded, - ) { isDreaming, isAnyExpanded -> + combine(keyguardTransitionInteractor.isFinishedIn(DREAMING), isAnyExpanded) { + isDreaming, + isAnyExpanded -> isDreaming && !isAnyExpanded } .stateIn( @@ -310,7 +298,7 @@ constructor( keyguardTransitionInteractor.isInTransition( edge = Edge.create(from = LOCKSCREEN, to = AOD) ), - ::Pair + ::Pair, ) .transformWhile { (isOnLockscreenWithoutShade, aodTransitionIsRunning) -> // Wait until the AOD transition is complete before terminating @@ -375,7 +363,7 @@ constructor( keyguardTransitionInteractor.isInTransition, shadeInteractor.qsExpansion, ) - .onStart { emit(Triple(0f, false, 0f)) } + .onStart { emit(Triple(0f, false, 0f)) }, ) { onLockscreen, bounds, paddingTop, (top, isInTransitionToAnyState, qsExpansion) -> if (onLockscreen) { bounds.copy(top = bounds.top - paddingTop) @@ -383,10 +371,7 @@ constructor( // When QS expansion > 0, it should directly set the top padding so do not // animate it val animate = qsExpansion == 0f && !isInTransitionToAnyState - bounds.copy( - top = top, - isAnimated = animate, - ) + bounds.copy(top = top, isAnimated = animate) } } .stateIn( @@ -404,10 +389,9 @@ constructor( private val alphaForShadeAndQsExpansion: Flow<Float> = interactor.configurationBasedDimensions .flatMapLatest { configurationBasedDimensions -> - combineTransform( - shadeInteractor.shadeExpansion, - shadeInteractor.qsExpansion, - ) { shadeExpansion, qsExpansion -> + combineTransform(shadeInteractor.shadeExpansion, shadeInteractor.qsExpansion) { + shadeExpansion, + qsExpansion -> if (shadeExpansion > 0f || qsExpansion > 0f) { if (configurationBasedDimensions.useSplitShade) { emit(1f) @@ -424,47 +408,6 @@ constructor( .onStart { emit(1f) } .dumpWhileCollecting("alphaForShadeAndQsExpansion") - private val isTransitioningToHiddenKeyguard: Flow<Boolean> = - flow { - while (currentCoroutineContext().isActive) { - emit(false) - // Ensure states are inactive to start - allOf(isNotOnState(OCCLUDED), isNotOnState(GONE, Scenes.Gone)).first { it } - // Wait for a qualifying transition to begin - anyOf( - transitionToIsRunning(Edge.create(to = OCCLUDED)), - transitionToIsRunning( - edge = Edge.create(to = Scenes.Gone), - edgeWithoutSceneContainer = Edge.create(to = GONE) - ) - ) - .first { it } - emit(true) - // Now await the signal that SHADE state has been reached or the transition was - // reversed. Until SHADE state has been replaced it is the only source of when - // it is considered safe to reset alpha to 1f for HUNs. - combine( - keyguardInteractor.statusBarState, - allOf(isNotOnState(OCCLUDED), isNotOnState(GONE, Scenes.Gone)) - ) { statusBarState, stateIsReversed -> - statusBarState == SHADE || stateIsReversed - } - .first { it } - } - } - .dumpWhileCollecting("isTransitioningToHiddenKeyguard") - - private fun isNotOnState(stateWithoutSceneContainer: KeyguardState, scene: SceneKey? = null) = - keyguardTransitionInteractor - .transitionValue(scene = scene, stateWithoutSceneContainer = stateWithoutSceneContainer) - .map { it == 0f } - - private fun transitionToIsRunning(edge: Edge, edgeWithoutSceneContainer: Edge? = null) = - keyguardTransitionInteractor - .transition(edge = edge, edgeWithoutSceneContainer = edgeWithoutSceneContainer) - .map { it.value > 0f && it.transitionState == RUNNING } - .onStart { emit(false) } - val panelAlpha = keyguardInteractor.panelAlpha private fun bouncerToGoneNotificationAlpha(viewState: ViewStateAccessor): Flow<Float> = @@ -478,49 +421,72 @@ constructor( } .dumpWhileCollecting("bouncerToGoneNotificationAlpha") - fun keyguardAlpha(viewState: ViewStateAccessor): Flow<Float> { - // All transition view models are mututally exclusive, and safe to merge - val alphaTransitions = - merge( - keyguardInteractor.dismissAlpha.dumpWhileCollecting( - "keyguardInteractor.dismissAlpha" + private fun alphaForTransitions(viewState: ViewStateAccessor): Flow<Float> { + return merge( + keyguardInteractor.dismissAlpha.dumpWhileCollecting("keyguardInteractor.dismissAlpha"), + // All transition view models are mututally exclusive, and safe to merge + bouncerToGoneNotificationAlpha(viewState), + aodToGoneTransitionViewModel.notificationAlpha(viewState), + aodToLockscreenTransitionViewModel.notificationAlpha, + aodToOccludedTransitionViewModel.lockscreenAlpha(viewState), + dozingToLockscreenTransitionViewModel.lockscreenAlpha, + dozingToOccludedTransitionViewModel.lockscreenAlpha(viewState), + dreamingToLockscreenTransitionViewModel.lockscreenAlpha, + goneToAodTransitionViewModel.notificationAlpha, + goneToDreamingTransitionViewModel.lockscreenAlpha, + goneToDozingTransitionViewModel.notificationAlpha, + goneToLockscreenTransitionViewModel.lockscreenAlpha, + lockscreenToDreamingTransitionViewModel.lockscreenAlpha, + lockscreenToGoneTransitionViewModel.notificationAlpha(viewState), + lockscreenToOccludedTransitionViewModel.lockscreenAlpha, + lockscreenToPrimaryBouncerTransitionViewModel.lockscreenAlpha, + occludedToAodTransitionViewModel.lockscreenAlpha, + occludedToGoneTransitionViewModel.notificationAlpha(viewState), + occludedToLockscreenTransitionViewModel.lockscreenAlpha, + primaryBouncerToLockscreenTransitionViewModel.lockscreenAlpha(viewState), + glanceableHubToLockscreenTransitionViewModel.keyguardAlpha, + lockscreenToGlanceableHubTransitionViewModel.keyguardAlpha, + ) + } + + fun keyguardAlpha(viewState: ViewStateAccessor, scope: CoroutineScope): Flow<Float> { + // Transitions are not (yet) authoritative for NSSL; they still rely on StatusBarState to + // help determine when the device has fully moved to GONE or OCCLUDED state. Once SHADE + // state has been set, let shade alpha take over + val isKeyguardNotVisible = + combine( + anyOf( + keyguardTransitionInteractor.transitionValue(OCCLUDED).map { it == 1f }, + keyguardTransitionInteractor + .transitionValue(scene = Scenes.Gone, stateWithoutSceneContainer = GONE) + .map { it == 1f }, ), - bouncerToGoneNotificationAlpha(viewState), - aodToGoneTransitionViewModel.notificationAlpha(viewState), - aodToLockscreenTransitionViewModel.notificationAlpha, - aodToOccludedTransitionViewModel.lockscreenAlpha(viewState), - dozingToLockscreenTransitionViewModel.lockscreenAlpha, - dozingToOccludedTransitionViewModel.lockscreenAlpha(viewState), - dreamingToLockscreenTransitionViewModel.lockscreenAlpha, - goneToAodTransitionViewModel.notificationAlpha, - goneToDreamingTransitionViewModel.lockscreenAlpha, - goneToDozingTransitionViewModel.notificationAlpha, - goneToLockscreenTransitionViewModel.lockscreenAlpha, - lockscreenToDreamingTransitionViewModel.lockscreenAlpha, - lockscreenToGoneTransitionViewModel.notificationAlpha(viewState), - lockscreenToOccludedTransitionViewModel.lockscreenAlpha, - lockscreenToPrimaryBouncerTransitionViewModel.lockscreenAlpha, - occludedToAodTransitionViewModel.lockscreenAlpha, - occludedToGoneTransitionViewModel.notificationAlpha(viewState), - occludedToLockscreenTransitionViewModel.lockscreenAlpha, - primaryBouncerToLockscreenTransitionViewModel.lockscreenAlpha(viewState), - glanceableHubToLockscreenTransitionViewModel.keyguardAlpha, - lockscreenToGlanceableHubTransitionViewModel.keyguardAlpha, - ) + keyguardInteractor.statusBarState, + ) { isKeyguardNotVisibleInState, statusBarState -> + isKeyguardNotVisibleInState && statusBarState == SHADE + } - return merge( - alphaTransitions, - // These remaining cases handle alpha changes within an existing state, such as - // shade expansion or swipe to dismiss - combineTransform( - isTransitioningToHiddenKeyguard, - alphaForShadeAndQsExpansion, - ) { isTransitioningToHiddenKeyguard, alphaForShadeAndQsExpansion -> - if (!isTransitioningToHiddenKeyguard) { - emit(alphaForShadeAndQsExpansion) - } - }, - ) + // This needs to continue collecting the current value so that when it is selected in the + // flatMapLatest below, the last value gets emitted, to avoid the randomness of `merge`. + val alphaForTransitionsAndShade = + merge(alphaForTransitions(viewState), alphaForShadeAndQsExpansion) + .stateIn( + // Use view-level scope instead of ApplicationScope, to prevent collection that + // never stops + scope = scope, + started = SharingStarted.Eagerly, + initialValue = 1f, + ) + .dumpValue("alphaForTransitionsAndShade") + + return isKeyguardNotVisible + .flatMapLatest { isKeyguardNotVisible -> + if (isKeyguardNotVisible) { + alphaForShadeAndQsExpansion + } else { + alphaForTransitionsAndShade + } + } .distinctUntilChanged() .dumpWhileCollecting("keyguardAlpha") } @@ -543,9 +509,8 @@ constructor( ) // Manually emit on start because [notificationAlpha] only starts emitting // when transitions start. - .onStart { emit(1f) } - ) { isOnGlanceableHubWithoutShade, isOnLockscreen, isDreamingWithoutShade, alpha, - -> + .onStart { emit(1f) }, + ) { isOnGlanceableHubWithoutShade, isOnLockscreen, isDreamingWithoutShade, alpha -> if ((isOnGlanceableHubWithoutShade || isDreamingWithoutShade) && !isOnLockscreen) { // Notifications should not be visible on the glanceable hub. // TODO(b/321075734): implement a way to actually set the notifications to @@ -580,7 +545,7 @@ constructor( merge( keyguardInteractor.keyguardTranslationY, occludedToLockscreenTransitionViewModel.lockscreenTranslationY, - ) + ), ) { burnInY, isOnLockscreenWithoutShade, translationY -> if (isOnLockscreenWithoutShade) { burnInY + translationY @@ -604,7 +569,7 @@ constructor( unfoldTransitionInteractor.unfoldTranslationX(isOnStartSide = false) } else { emptyFlow() - } + }, ) .dumpWhileCollecting("translationX") @@ -634,7 +599,7 @@ constructor( primaryBouncerToGoneTransitionViewModel.showAllNotifications, alternateBouncerToGoneTransitionViewModel.showAllNotifications, ) - .onStart { emit(false) } + .onStart { emit(false) }, ) { isOnLockscreen, statusBarState, showAllNotifications -> statusBarState == SHADE_LOCKED || !isOnLockscreen || showAllNotifications } 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 4a0fdeebe82b..659cee3023a1 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 @@ -55,6 +55,7 @@ import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.OperatorNameView; import com.android.systemui.statusbar.OperatorNameViewController; import com.android.systemui.statusbar.StatusBarState; +import com.android.systemui.statusbar.chips.shared.StatusBarRonChips; import com.android.systemui.statusbar.disableflags.DisableFlagsLogger.DisableState; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; @@ -122,6 +123,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private LinearLayout mEndSideContent; private View mClockView; private View mPrimaryOngoingActivityChip; + private View mSecondaryOngoingActivityChip; private View mNotificationIconAreaInner; // Visibilities come in from external system callers via disable flags, but we also sometimes // modify the visibilities internally. We need to store both so that we don't accidentally @@ -212,9 +214,16 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private boolean mHomeStatusBarAllowedByScene = true; /** - * True if there's an active ongoing activity that should be showing a chip and false otherwise. + * True if there's a primary active ongoing activity that should be showing a chip and false + * otherwise. */ - private boolean mHasOngoingActivity; + private boolean mHasPrimaryOngoingActivity; + + /** + * True if there's a secondary active ongoing activity that should be showing a chip and false + * otherwise. + */ + private boolean mHasSecondaryOngoingActivity; /** * Listener that updates {@link #mWaitingForWindowStateChangeAfterCameraLaunch} when it receives @@ -355,6 +364,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue mEndSideAlphaController = new MultiSourceMinAlphaController(mEndSideContent); mClockView = mStatusBar.findViewById(R.id.clock); mPrimaryOngoingActivityChip = mStatusBar.findViewById(R.id.ongoing_activity_chip_primary); + mSecondaryOngoingActivityChip = + mStatusBar.findViewById(R.id.ongoing_activity_chip_secondary); showEndSideContent(false); showClock(false); initOperatorName(); @@ -508,8 +519,11 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue @Override public void onOngoingActivityStatusChanged( - boolean hasOngoingActivity, boolean shouldAnimate) { - mHasOngoingActivity = hasOngoingActivity; + boolean hasPrimaryOngoingActivity, + boolean hasSecondaryOngoingActivity, + boolean shouldAnimate) { + mHasPrimaryOngoingActivity = hasPrimaryOngoingActivity; + mHasSecondaryOngoingActivity = hasSecondaryOngoingActivity; updateStatusBarVisibilities(shouldAnimate); } @@ -554,7 +568,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue boolean notifsChanged = newModel.getShowNotificationIcons() != previousModel.getShowNotificationIcons(); boolean ongoingActivityChanged = - newModel.getShowOngoingActivityChip() != previousModel.getShowOngoingActivityChip(); + newModel.isOngoingActivityStatusDifferentFrom(previousModel); if (notifsChanged || ongoingActivityChanged) { updateNotificationIconAreaAndOngoingActivityChip(animate); } @@ -597,21 +611,26 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue boolean showClock = externalModel.getShowClock() && !headsUpVisible; - boolean showOngoingActivityChip; + boolean showPrimaryOngoingActivityChip; if (Flags.statusBarScreenSharingChips()) { // If this flag is on, the ongoing activity status comes from - // CollapsedStatusBarViewBinder, which updates the mHasOngoingActivity variable. - showOngoingActivityChip = mHasOngoingActivity; + // CollapsedStatusBarViewBinder, which updates the mHasPrimaryOngoingActivity variable. + showPrimaryOngoingActivityChip = mHasPrimaryOngoingActivity; } else { // If this flag is off, the only ongoing activity is the ongoing call, and we pull it // from the controller directly. - showOngoingActivityChip = mOngoingCallController.hasOngoingCall(); + showPrimaryOngoingActivityChip = mOngoingCallController.hasOngoingCall(); } + boolean showSecondaryOngoingActivityChip = + Flags.statusBarScreenSharingChips() + && StatusBarRonChips.isEnabled() + && mHasSecondaryOngoingActivity; return new StatusBarVisibilityModel( showClock, externalModel.getShowNotificationIcons(), - showOngoingActivityChip && !headsUpVisible, + showPrimaryOngoingActivityChip && !headsUpVisible, + showSecondaryOngoingActivityChip && !headsUpVisible, externalModel.getShowSystemInfo()); } @@ -622,7 +641,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private void updateNotificationIconAreaAndOngoingActivityChip(boolean animate) { StatusBarVisibilityModel visibilityModel = mLastModifiedVisibility; boolean disableNotifications = !visibilityModel.getShowNotificationIcons(); - boolean hasOngoingActivity = visibilityModel.getShowOngoingActivityChip(); + boolean hasOngoingActivity = visibilityModel.getShowPrimaryOngoingActivityChip(); // Hide notifications if the disable flag is set or we have an ongoing activity. if (disableNotifications || hasOngoingActivity) { @@ -634,12 +653,24 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue // Show the ongoing activity chip only if there is an ongoing activity *and* notification // icons are allowed. (The ongoing activity chip occupies the same area as the notification, // icons so if the icons are disabled then the activity chip should be, too.) - boolean showOngoingActivityChip = hasOngoingActivity && !disableNotifications; - if (showOngoingActivityChip) { + boolean showPrimaryOngoingActivityChip = + visibilityModel.getShowPrimaryOngoingActivityChip() && !disableNotifications; + if (showPrimaryOngoingActivityChip) { showPrimaryOngoingActivityChip(animate); } else { hidePrimaryOngoingActivityChip(animate); } + + boolean showSecondaryOngoingActivityChip = + // Secondary chips are only supported when RONs are enabled. + StatusBarRonChips.isEnabled() + && visibilityModel.getShowSecondaryOngoingActivityChip() + && !disableNotifications; + if (showSecondaryOngoingActivityChip) { + showSecondaryOngoingActivityChip(animate); + } else { + hideSecondaryOngoingActivityChip(animate); + } } private boolean shouldHideStatusBar() { @@ -745,6 +776,15 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue animateShow(mPrimaryOngoingActivityChip, animate); } + private void hideSecondaryOngoingActivityChip(boolean animate) { + animateHiddenState(mSecondaryOngoingActivityChip, View.GONE, animate); + } + + private void showSecondaryOngoingActivityChip(boolean animate) { + StatusBarRonChips.assertInNewMode(); + animateShow(mSecondaryOngoingActivityChip, animate); + } + /** * If panel is expanded/expanding it usually means QS shade is opening, so * don't set the clock GONE otherwise it'll mess up the animation. @@ -850,6 +890,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private void initOngoingCallChip() { mOngoingCallController.addCallback(mOngoingCallListener); + // TODO(b/364653005): Do we also need to set the secondary activity chip? mOngoingCallController.setChipView(mPrimaryOngoingActivityChip); } @@ -908,7 +949,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue @Override public void dump(PrintWriter printWriter, String[] args) { IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, /* singleIndent= */" "); - pw.println("mHasOngoingActivity=" + mHasOngoingActivity); + pw.println("mHasPrimaryOngoingActivity=" + mHasPrimaryOngoingActivity); + pw.println("mHasSecondaryOngoingActivity=" + mHasSecondaryOngoingActivity); pw.println("mAnimationsEnabled=" + mAnimationsEnabled); StatusBarFragmentComponent component = mStatusBarFragmentComponent; if (component == null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLogger.kt index 0a19023d9e8c..deef88635f27 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLogger.kt @@ -16,16 +16,18 @@ package com.android.systemui.statusbar.phone.fragment -import com.android.systemui.log.dagger.CollapsedSbFragmentLog import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.LogLevel +import com.android.systemui.log.dagger.CollapsedSbFragmentLog import com.android.systemui.statusbar.disableflags.DisableFlagsLogger import javax.inject.Inject /** Used by [CollapsedStatusBarFragment] to log messages to a [LogBuffer]. */ -class CollapsedStatusBarFragmentLogger @Inject constructor( - @CollapsedSbFragmentLog private val buffer: LogBuffer, - private val disableFlagsLogger: DisableFlagsLogger, +class CollapsedStatusBarFragmentLogger +@Inject +constructor( + @CollapsedSbFragmentLog private val buffer: LogBuffer, + private val disableFlagsLogger: DisableFlagsLogger, ) { /** @@ -38,17 +40,17 @@ class CollapsedStatusBarFragmentLogger @Inject constructor( new: DisableFlagsLogger.DisableState, ) { buffer.log( - TAG, - LogLevel.INFO, - { - int1 = new.disable1 - int2 = new.disable2 - }, - { - disableFlagsLogger.getDisableFlagsString( - DisableFlagsLogger.DisableState(int1, int2), - ) - } + TAG, + LogLevel.INFO, + { + int1 = new.disable1 + int2 = new.disable2 + }, + { + disableFlagsLogger.getDisableFlagsString( + DisableFlagsLogger.DisableState(int1, int2), + ) + } ) } @@ -59,13 +61,16 @@ class CollapsedStatusBarFragmentLogger @Inject constructor( { bool1 = model.showClock bool2 = model.showNotificationIcons - bool3 = model.showOngoingActivityChip + bool3 = model.showPrimaryOngoingActivityChip + int1 = if (model.showSecondaryOngoingActivityChip) 1 else 0 bool4 = model.showSystemInfo }, - { "New visibilities calculated internally. " + + { + "New visibilities calculated internally. " + "showClock=$bool1 " + "showNotificationIcons=$bool2 " + - "showOngoingActivityChip=$bool3 " + + "showPrimaryOngoingActivityChip=$bool3 " + + "showSecondaryOngoingActivityChip=${if (int1 == 1) "true" else "false"}" + "showSystemInfo=$bool4" } ) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModel.kt index 9255e6323d31..e9e9a4ef6625 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModel.kt @@ -26,9 +26,15 @@ import android.app.StatusBarManager.DISABLE_SYSTEM_INFO data class StatusBarVisibilityModel( val showClock: Boolean, val showNotificationIcons: Boolean, - val showOngoingActivityChip: Boolean, + val showPrimaryOngoingActivityChip: Boolean, + val showSecondaryOngoingActivityChip: Boolean, val showSystemInfo: Boolean, ) { + fun isOngoingActivityStatusDifferentFrom(other: StatusBarVisibilityModel): Boolean { + return this.showPrimaryOngoingActivityChip != other.showPrimaryOngoingActivityChip || + this.showSecondaryOngoingActivityChip != other.showSecondaryOngoingActivityChip + } + companion object { /** Creates the default model. */ @JvmStatic @@ -42,7 +48,8 @@ data class StatusBarVisibilityModel( return StatusBarVisibilityModel( showClock = false, showNotificationIcons = false, - showOngoingActivityChip = false, + showPrimaryOngoingActivityChip = false, + showSecondaryOngoingActivityChip = false, showSystemInfo = false, ) } @@ -59,7 +66,8 @@ data class StatusBarVisibilityModel( showNotificationIcons = (disabled1 and DISABLE_NOTIFICATION_ICONS) == 0, // TODO(b/279899176): [CollapsedStatusBarFragment] always overwrites this with the // value of [OngoingCallController]. Do we need to process the flag here? - showOngoingActivityChip = (disabled1 and DISABLE_ONGOING_CALL_CHIP) == 0, + showPrimaryOngoingActivityChip = (disabled1 and DISABLE_ONGOING_CALL_CHIP) == 0, + showSecondaryOngoingActivityChip = (disabled1 and DISABLE_ONGOING_CALL_CHIP) == 0, showSystemInfo = (disabled1 and DISABLE_SYSTEM_INFO) == 0 && (disabled2 and DISABLE2_SYSTEM_ICONS) == 0 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 87d0e6420128..49eabba5c2b0 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 @@ -80,7 +80,7 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa } } - if (Flags.statusBarScreenSharingChips()) { + if (Flags.statusBarScreenSharingChips() && !Flags.statusBarRonChips()) { val primaryChipView: View = view.requireViewById(R.id.ongoing_activity_chip_primary) launch { @@ -89,12 +89,14 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa when (primaryChipModel) { is OngoingActivityChipModel.Shown -> listener.onOngoingActivityStatusChanged( - hasOngoingActivity = true, + hasPrimaryOngoingActivity = true, + hasSecondaryOngoingActivity = false, shouldAnimate = true, ) is OngoingActivityChipModel.Hidden -> listener.onOngoingActivityStatusChanged( - hasOngoingActivity = false, + hasPrimaryOngoingActivity = false, + hasSecondaryOngoingActivity = false, shouldAnimate = primaryChipModel.shouldAnimate, ) } @@ -102,6 +104,29 @@ class CollapsedStatusBarViewBinderImpl @Inject constructor() : CollapsedStatusBa } } + if (Flags.statusBarScreenSharingChips() && Flags.statusBarRonChips()) { + val primaryChipView: View = + view.requireViewById(R.id.ongoing_activity_chip_primary) + val secondaryChipView: View = + view.requireViewById(R.id.ongoing_activity_chip_secondary) + launch { + viewModel.ongoingActivityChips.collect { chips -> + OngoingActivityChipBinder.bind(chips.primary, primaryChipView) + // TODO(b/364653005): Don't show the secondary chip if there isn't + // enough space for it. + OngoingActivityChipBinder.bind(chips.secondary, secondaryChipView) + listener.onOngoingActivityStatusChanged( + hasPrimaryOngoingActivity = + chips.primary is OngoingActivityChipModel.Shown, + hasSecondaryOngoingActivity = + chips.secondary is OngoingActivityChipModel.Shown, + // TODO(b/364653005): Figure out the animation story here. + shouldAnimate = true, + ) + } + } + } + if (SceneContainerFlag.isEnabled) { launch { viewModel.isHomeStatusBarAllowedByScene.collect { @@ -161,7 +186,11 @@ interface StatusBarVisibilityChangeListener { * @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) + fun onOngoingActivityStatusChanged( + hasPrimaryOngoingActivity: Boolean, + hasSecondaryOngoingActivity: 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/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModel.kt index 547423156eb8..9cce2b8fb72b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/CollapsedStatusBarViewModel.kt @@ -27,6 +27,7 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.model.Scenes +import com.android.systemui.statusbar.chips.ui.model.MultipleOngoingActivityChipsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModel import com.android.systemui.statusbar.notification.domain.interactor.ActiveNotificationsInteractor @@ -71,6 +72,12 @@ interface CollapsedStatusBarViewModel { val primaryOngoingActivityChip: StateFlow<OngoingActivityChipModel> /** + * The multiple ongoing activity chips that should be shown on the left-hand side of the status + * bar. + */ + val ongoingActivityChips: StateFlow<MultipleOngoingActivityChipsModel> + + /** * True if the current scene can show the home status bar (aka this status bar), and false if * the current scene should never show the home status bar. */ @@ -113,6 +120,8 @@ constructor( override val primaryOngoingActivityChip = ongoingActivityChipsViewModel.primaryChip + override val ongoingActivityChips = ongoingActivityChipsViewModel.chips + override val isHomeStatusBarAllowedByScene: StateFlow<Boolean> = combine( sceneInteractor.currentScene, diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitor.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitor.kt index e3666ce66d5c..084da2c59776 100644 --- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitor.kt +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/BackGestureMonitor.kt @@ -23,7 +23,7 @@ class BackGestureMonitor( override val gestureDistanceThresholdPx: Int, override val gestureStateChangedCallback: (GestureState) -> Unit ) : - TouchpadGestureMonitor by ThreeFingerGestureMonitor( + TouchpadGestureMonitor by ThreeFingerDistanceBasedGestureMonitor( gestureDistanceThresholdPx = gestureDistanceThresholdPx, gestureStateChangedCallback = gestureStateChangedCallback, donePredicate = diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureMonitor.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureMonitor.kt index a410f991182e..a9aa5c897573 100644 --- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureMonitor.kt +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/HomeGestureMonitor.kt @@ -21,7 +21,7 @@ class HomeGestureMonitor( override val gestureDistanceThresholdPx: Int, override val gestureStateChangedCallback: (GestureState) -> Unit ) : - TouchpadGestureMonitor by ThreeFingerGestureMonitor( + TouchpadGestureMonitor by ThreeFingerDistanceBasedGestureMonitor( gestureDistanceThresholdPx = gestureDistanceThresholdPx, gestureStateChangedCallback = gestureStateChangedCallback, donePredicate = diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureMonitor.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureMonitor.kt new file mode 100644 index 000000000000..58282393d4a6 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureMonitor.kt @@ -0,0 +1,71 @@ +/* + * 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.touchpad.tutorial.ui.gesture + +import android.view.MotionEvent +import androidx.compose.ui.input.pointer.util.VelocityTracker1D +import kotlin.math.abs + +/** + * Monitors recent apps gesture completion. That is - using three fingers on touchpad - swipe up + * over some distance threshold and then slow down gesture before fingers are lifted. Implementation + * is based on [com.android.quickstep.util.TriggerSwipeUpTouchTracker] + */ +class RecentAppsGestureMonitor( + override val gestureDistanceThresholdPx: Int, + override val gestureStateChangedCallback: (GestureState) -> Unit, + private val velocityThresholdPxPerMs: Float, + private val velocityTracker: VelocityTracker1D = VelocityTracker1D(isDataDifferential = false), +) : TouchpadGestureMonitor { + + private var xStart = 0f + private var yStart = 0f + + override fun processTouchpadEvent(event: MotionEvent) { + val action = event.actionMasked + velocityTracker.addDataPoint(event.eventTime, event.y) + when (action) { + MotionEvent.ACTION_DOWN -> { + if (isThreeFingerTouchpadSwipe(event)) { + xStart = event.x + yStart = event.y + gestureStateChangedCallback(GestureState.IN_PROGRESS) + } + } + MotionEvent.ACTION_UP -> { + if (isThreeFingerTouchpadSwipe(event) && isRecentAppsGesture(event)) { + gestureStateChangedCallback(GestureState.FINISHED) + } else { + gestureStateChangedCallback(GestureState.NOT_STARTED) + } + velocityTracker.resetTracking() + } + MotionEvent.ACTION_CANCEL -> { + velocityTracker.resetTracking() + } + } + } + + private fun isRecentAppsGesture(event: MotionEvent): Boolean { + // below is trying to mirror behavior of TriggerSwipeUpTouchTracker#onGestureEnd. + // We're diving velocity by 1000, to have the same unit of measure: pixels/ms. + val swipeDistance = yStart - event.y + val velocity = velocityTracker.calculateVelocity() / 1000 + return swipeDistance >= gestureDistanceThresholdPx && + abs(velocity) <= velocityThresholdPxPerMs + } +} diff --git a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureMonitor.kt b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerDistanceBasedGestureMonitor.kt index 377977ce0d74..9bf0fe96624f 100644 --- a/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerGestureMonitor.kt +++ b/packages/SystemUI/src/com/android/systemui/touchpad/tutorial/ui/gesture/ThreeFingerDistanceBasedGestureMonitor.kt @@ -25,8 +25,12 @@ interface GestureDonePredicate { fun wasGestureDone(startX: Float, startY: Float, endX: Float, endY: Float): Boolean } -/** Common implementation for all three-finger gesture monitors */ -class ThreeFingerGestureMonitor( +/** + * Common implementation for three-finger gesture monitors that are only distance-based. E.g. recent + * apps gesture is not only distance-based because it requires going over threshold distance and + * slowing down the movement. + */ +class ThreeFingerDistanceBasedGestureMonitor( override val gestureDistanceThresholdPx: Int, override val gestureStateChangedCallback: (GestureState) -> Unit, private val donePredicate: GestureDonePredicate diff --git a/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt b/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt index e6e2a0767012..ee00e8b04ef1 100644 --- a/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt +++ b/packages/SystemUI/src/com/android/systemui/util/kotlin/ReduceBrightColorsControllerExt.kt @@ -35,17 +35,3 @@ fun ReduceBrightColorsController.isEnabled(): Flow<Boolean> { } .onStart { emit(isReduceBrightColorsActivated) } } - -fun ReduceBrightColorsController.isAvailable(): Flow<Boolean> { - return conflatedCallbackFlow { - val callback = - object : ReduceBrightColorsController.Listener { - override fun onFeatureEnabledChanged(enabled: Boolean) { - trySend(enabled) - } - } - addCallback(callback) - awaitClose { removeCallback(callback) } - } - .onStart { emit(isReduceBrightColorsFeatureAvailable) } -} diff --git a/packages/SystemUI/src/com/android/systemui/util/ui/AnimatedValue.kt b/packages/SystemUI/src/com/android/systemui/util/ui/AnimatedValue.kt index 1112d6f4f25c..a5c8af588667 100644 --- a/packages/SystemUI/src/com/android/systemui/util/ui/AnimatedValue.kt +++ b/packages/SystemUI/src/com/android/systemui/util/ui/AnimatedValue.kt @@ -26,7 +26,7 @@ import kotlinx.coroutines.flow.transformLatest /** * A state comprised of a [value] of type [T] paired with a boolean indicating whether or not the - * [value] [isAnimating] in the UI. + * value [isAnimating][isAnimating] in the UI. */ sealed interface AnimatedValue<out T> { diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java index d9e72bf592a0..030a20ab8c56 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java @@ -391,11 +391,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } public void notifyVisible(boolean visible) { - if (Flags.useVolumeController()) { - mVolumeControllerAdapter.notifyVolumeControllerVisible(visible); - } else { - mWorker.obtainMessage(W.NOTIFY_VISIBLE, visible ? 1 : 0, 0).sendToTarget(); - } + mWorker.obtainMessage(W.NOTIFY_VISIBLE, visible ? 1 : 0, 0).sendToTarget(); } public void userActivity() { @@ -457,7 +453,11 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } private void onNotifyVisibleW(boolean visible) { - mAudio.notifyVolumeControllerVisible(mVolumeController, visible); + if (Flags.useVolumeController()) { + mVolumeControllerAdapter.notifyVolumeControllerVisible(visible); + } else { + mAudio.notifyVolumeControllerVisible(mVolumeController, visible); + } if (!visible) { if (updateActiveStreamW(-1)) { mCallbacks.onStateChanged(mState); diff --git a/packages/SystemUI/tests/Android.bp b/packages/SystemUI/tests/Android.bp index f601387d0910..3e7596ccabf0 100644 --- a/packages/SystemUI/tests/Android.bp +++ b/packages/SystemUI/tests/Android.bp @@ -35,9 +35,9 @@ android_test { "libstaticjvmtiagent", ], libs: [ - "android.test.runner", + "android.test.runner.stubs.system", "telephony-common", - "android.test.base", + "android.test.base.stubs.system", ], aaptflags: [ "--extra-packages com.android.systemui", diff --git a/packages/SystemUI/tests/utils/src/com/android/keyguard/TestScopeProvider.kt b/packages/SystemUI/tests/src/com/android/keyguard/TestScopeProvider.kt index 6c35734c6eb4..6c35734c6eb4 100644 --- a/packages/SystemUI/tests/utils/src/com/android/keyguard/TestScopeProvider.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/TestScopeProvider.kt diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java index d6bde27dfb62..1aff45bf581d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/ReduceBrightColorsTileTest.java @@ -18,6 +18,8 @@ package com.android.systemui.qs.tiles; import static junit.framework.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -25,6 +27,7 @@ import static org.mockito.Mockito.when; import android.os.Handler; import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; import android.service.quicksettings.Tile; import android.testing.TestableLooper; @@ -35,6 +38,7 @@ import com.android.internal.R; import com.android.internal.logging.MetricsLogger; import com.android.server.display.feature.flags.Flags; import com.android.systemui.SysuiTestCase; +import com.android.systemui.accessibility.extradim.ExtraDimDialogManager; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.QSTile; @@ -74,6 +78,8 @@ public class ReduceBrightColorsTileTest extends SysuiTestCase { private ReduceBrightColorsController mReduceBrightColorsController; @Mock private QsEventLogger mUiEventLogger; + @Mock + private ExtraDimDialogManager mExtraDimDialogManager; private TestableLooper mTestableLooper; private ReduceBrightColorsTile mTile; @@ -97,7 +103,8 @@ public class ReduceBrightColorsTileTest extends SysuiTestCase { mMetricsLogger, mStatusBarStateController, mActivityStarter, - mQSLogger + mQSLogger, + mExtraDimDialogManager ); mTile.initialize(); @@ -148,6 +155,78 @@ public class ReduceBrightColorsTileTest extends SysuiTestCase { } @Test + @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER) + public void testDialogueShownOnClick() { + when(mReduceBrightColorsController.isReduceBrightColorsActivated()).thenReturn(true); + when(mReduceBrightColorsController.isInUpgradeMode(mContext.getResources())) + .thenReturn(true); + mTile = new ReduceBrightColorsTile( + true, + mReduceBrightColorsController, + mHost, + mUiEventLogger, + mTestableLooper.getLooper(), + new Handler(mTestableLooper.getLooper()), + new FalsingManagerFake(), + mMetricsLogger, + mStatusBarStateController, + mActivityStarter, + mQSLogger, + mExtraDimDialogManager + ); + + mTile.initialize(); + mTestableLooper.processAllMessages(); + + // Validity check + assertEquals(Tile.STATE_ACTIVE, mTile.getState().state); + mTile.handleClick(null /* view */); + + verify(mExtraDimDialogManager, times(1)) + .dismissKeyguardIfNeededAndShowDialog(any()); + verify(mReduceBrightColorsController, times(0)) + .setReduceBrightColorsActivated(anyBoolean()); + mTile.destroy(); + mTestableLooper.processAllMessages(); + } + + @Test + @RequiresFlagsEnabled(Flags.FLAG_EVEN_DIMMER) + public void testDialogueShownOnLongClick() { + when(mReduceBrightColorsController.isReduceBrightColorsActivated()).thenReturn(true); + when(mReduceBrightColorsController.isInUpgradeMode(mContext.getResources())) + .thenReturn(true); + mTile = new ReduceBrightColorsTile( + true, + mReduceBrightColorsController, + mHost, + mUiEventLogger, + mTestableLooper.getLooper(), + new Handler(mTestableLooper.getLooper()), + new FalsingManagerFake(), + mMetricsLogger, + mStatusBarStateController, + mActivityStarter, + mQSLogger, + mExtraDimDialogManager + ); + + mTile.initialize(); + mTestableLooper.processAllMessages(); + + // Validity check + assertEquals(Tile.STATE_ACTIVE, mTile.getState().state); + mTile.handleLongClick(null /* view */); + + verify(mExtraDimDialogManager, times(1)) + .dismissKeyguardIfNeededAndShowDialog(any()); + verify(mReduceBrightColorsController, times(0)) + .setReduceBrightColorsActivated(anyBoolean()); + mTile.destroy(); + mTestableLooper.processAllMessages(); + } + + @Test public void testIcon_whenTileEnabled_isOnState() { when(mReduceBrightColorsController.isReduceBrightColorsActivated()).thenReturn(true); mTile.refreshState(); diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/RecordingServiceTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingServiceTest.java index 3f550ca27868..3f550ca27868 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/RecordingServiceTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingServiceTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt index 7dae5ccd05c4..7dae5ccd05c4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt index aceea909e595..aceea909e595 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/data/repository/ScreenRecordRepositoryTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ActionIntentExecutorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ActionIntentExecutorTest.kt index 612d646bb7d4..612d646bb7d4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ActionIntentExecutorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ActionIntentExecutorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/AnnouncementResolverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/AnnouncementResolverTest.kt index 2e8498a6da28..2e8498a6da28 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/AnnouncementResolverTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/AnnouncementResolverTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/DraggableConstraintLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/DraggableConstraintLayoutTest.java index ba330f7b6ec0..ba330f7b6ec0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/DraggableConstraintLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/DraggableConstraintLayoutTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/FakeImageCapture.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/FakeImageCapture.kt index 447e28cd9527..447e28cd9527 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/FakeImageCapture.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/FakeImageCapture.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/FakeScreenshotPolicy.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/FakeScreenshotPolicy.kt index 28d53c72640f..28d53c72640f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/FakeScreenshotPolicy.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/FakeScreenshotPolicy.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt index 15da77dfe33d..15da77dfe33d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/MessageContainerControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/RecyclerViewActivity.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/RecyclerViewActivity.java index fde56ba76736..fde56ba76736 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/RecyclerViewActivity.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/RecyclerViewActivity.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotActionsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotActionsControllerTest.kt index 29e7a8a4ca85..29e7a8a4ca85 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotActionsControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotActionsControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotDataTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotDataTest.kt index 3ed09770b189..3ed09770b189 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotDataTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotDataTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotDetectionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotDetectionControllerTest.kt index 1538c72f8df8..1538c72f8df8 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotDetectionControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotDetectionControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java index 89c13b0468f1..89c13b0468f1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt index 5987e74e02ec..5987e74e02ec 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java index 9dc5cfed2bd6..9dc5cfed2bd6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/TakeScreenshotExecutorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotExecutorTest.kt index a2959811cd0a..a2959811cd0a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/TakeScreenshotExecutorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotExecutorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java index 7d2d7c452426..7d2d7c452426 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsScreenshotHelperServiceTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsScreenshotHelperServiceTest.java index ba3d39248762..ba3d39248762 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsScreenshotHelperServiceTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsScreenshotHelperServiceTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java index d8897e9048c3..d8897e9048c3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsServiceTest.java diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsViewModelTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsViewModelTest.java index 5d71c054244a..886b32b09225 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsViewModelTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/appclips/AppClipsViewModelTest.java @@ -24,6 +24,7 @@ import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.ACTION_VIEW; import static android.content.Intent.CAPTURE_CONTENT_FOR_NOTE_FAILED; import static android.content.Intent.CATEGORY_LAUNCHER; +import static android.content.pm.PackageManager.MATCH_DEFAULT_ONLY; import static android.view.Display.DEFAULT_DISPLAY; import static com.google.common.truth.Truth.assertThat; @@ -32,6 +33,7 @@ import static com.google.common.util.concurrent.MoreExecutors.directExecutor; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.reset; @@ -73,6 +75,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -108,19 +111,24 @@ public final class AppClipsViewModelTest extends SysuiTestCase { Context mMockedContext; @Mock private PackageManager mPackageManager; - private ArgumentCaptor<Intent> mPackageManagerIntentCaptor; + private ArgumentCaptor<Intent> mPackageManagerLauncherIntentCaptor; + private ArgumentCaptor<Intent> mPackageManagerBacklinkIntentCaptor; private AppClipsViewModel mViewModel; @Before public void setUp() throws RemoteException { MockitoAnnotations.initMocks(this); - mPackageManagerIntentCaptor = ArgumentCaptor.forClass(Intent.class); + mPackageManagerLauncherIntentCaptor = ArgumentCaptor.forClass(Intent.class); + mPackageManagerBacklinkIntentCaptor = ArgumentCaptor.forClass(Intent.class); // Set up mocking for backlinks. when(mAtmService.getTasks(Integer.MAX_VALUE, false, false, DEFAULT_DISPLAY)) .thenReturn(List.of(createTaskInfoForBacklinksTask())); - when(mPackageManager.resolveActivity(mPackageManagerIntentCaptor.capture(), anyInt())) - .thenReturn(createBacklinksTaskResolveInfo()); + ResolveInfo expectedResolveInfo = createBacklinksTaskResolveInfo(); + when(mPackageManager.resolveActivity(mPackageManagerLauncherIntentCaptor.capture(), + anyInt())).thenReturn(expectedResolveInfo); + when(mPackageManager.queryIntentActivities(mPackageManagerBacklinkIntentCaptor.capture(), + eq(MATCH_DEFAULT_ONLY))).thenReturn(List.of(expectedResolveInfo)); when(mPackageManager.loadItemIcon(any(), any())).thenReturn(FAKE_DRAWABLE); when(mMockedContext.getPackageManager()).thenReturn(mPackageManager); @@ -209,7 +217,7 @@ public final class AppClipsViewModelTest extends SysuiTestCase { mViewModel.triggerBacklinks(Collections.emptySet(), DEFAULT_DISPLAY); waitForIdleSync(); - Intent queriedIntent = mPackageManagerIntentCaptor.getValue(); + Intent queriedIntent = mPackageManagerBacklinkIntentCaptor.getValue(); assertThat(queriedIntent.getData()).isEqualTo(expectedUri); assertThat(queriedIntent.getAction()).isEqualTo(ACTION_VIEW); @@ -226,6 +234,63 @@ public final class AppClipsViewModelTest extends SysuiTestCase { } @Test + public void triggerBacklinks_shouldUpdateBacklinks_withUriForDifferentApp() { + Uri expectedUri = Uri.parse("https://android.com"); + AssistContent contentWithUri = new AssistContent(); + contentWithUri.setWebUri(expectedUri); + mockForAssistContent(contentWithUri, BACKLINKS_TASK_ID); + + // Reset PackageManager mocking done in setup. + reset(mPackageManager); + String package2 = BACKLINKS_TASK_PACKAGE_NAME + 2; + String appName2 = BACKLINKS_TASK_APP_NAME + 2; + ResolveInfo resolveInfo2 = createBacklinksTaskResolveInfo(); + ActivityInfo activityInfo2 = resolveInfo2.activityInfo; + activityInfo2.name = appName2; + activityInfo2.packageName = package2; + activityInfo2.applicationInfo.packageName = package2; + + Intent app2LauncherIntent = new Intent(ACTION_MAIN).addCategory( + CATEGORY_LAUNCHER).setPackage(package2); + when(mPackageManager.resolveActivity(intentEquals(app2LauncherIntent), eq(/* flags= */ 0))) + .thenReturn(resolveInfo2); + Intent uriIntent = new Intent(ACTION_VIEW).setData(expectedUri); + when(mPackageManager.queryIntentActivities(intentEquals(uriIntent), eq(MATCH_DEFAULT_ONLY))) + .thenReturn(List.of(resolveInfo2)); + when(mPackageManager.loadItemIcon(any(), any())).thenReturn(FAKE_DRAWABLE); + + mViewModel.triggerBacklinks(Collections.emptySet(), DEFAULT_DISPLAY); + waitForIdleSync(); + + BacklinksData result = (BacklinksData) mViewModel.mSelectedBacklinksLiveData.getValue(); + ClipData clipData = result.getClipData(); + ClipDescription resultDescription = clipData.getDescription(); + assertThat(resultDescription.getLabel().toString()).isEqualTo(appName2); + assertThat(resultDescription.getMimeType(0)).isEqualTo(MIMETYPE_TEXT_URILIST); + assertThat(clipData.getItemCount()).isEqualTo(1); + assertThat(clipData.getItemAt(0).getUri()).isEqualTo(expectedUri); + + assertThat(mViewModel.getBacklinksLiveData().getValue().size()).isEqualTo(1); + } + + private static class IntentMatcher implements ArgumentMatcher<Intent> { + private final Intent mExpectedIntent; + + IntentMatcher(Intent expectedIntent) { + mExpectedIntent = expectedIntent; + } + + @Override + public boolean matches(Intent actualIntent) { + return actualIntent != null && mExpectedIntent.filterEquals(actualIntent); + } + } + + private static Intent intentEquals(Intent intent) { + return argThat(new IntentMatcher(intent)); + } + + @Test public void triggerBacklinks_withNonResolvableUri_usesMainLauncherIntent() { Uri expectedUri = Uri.parse("https://developers.android.com"); AssistContent contentWithUri = new AssistContent(); @@ -249,7 +314,7 @@ public final class AppClipsViewModelTest extends SysuiTestCase { mViewModel.triggerBacklinks(Collections.emptySet(), DEFAULT_DISPLAY); waitForIdleSync(); - Intent queriedIntent = mPackageManagerIntentCaptor.getValue(); + Intent queriedIntent = mPackageManagerBacklinkIntentCaptor.getValue(); assertThat(queriedIntent.getPackage()).isEqualTo(expectedIntent.getPackage()); BacklinksData result = (BacklinksData) mViewModel.mSelectedBacklinksLiveData.getValue(); @@ -283,7 +348,7 @@ public final class AppClipsViewModelTest extends SysuiTestCase { mViewModel.triggerBacklinks(Collections.emptySet(), DEFAULT_DISPLAY); waitForIdleSync(); - Intent queriedIntent = mPackageManagerIntentCaptor.getValue(); + Intent queriedIntent = mPackageManagerLauncherIntentCaptor.getValue(); assertThat(queriedIntent.getPackage()).isEqualTo(BACKLINKS_TASK_PACKAGE_NAME); assertThat(queriedIntent.getAction()).isEqualTo(ACTION_MAIN); assertThat(queriedIntent.getCategories()).containsExactly(CATEGORY_LAUNCHER); @@ -356,7 +421,9 @@ public final class AppClipsViewModelTest extends SysuiTestCase { // For each task, the logic queries PM 3 times, twice for verifying if an app can be // launched via launcher and once with the data provided in backlink intent. when(mPackageManager.resolveActivity(any(), anyInt())).thenReturn(resolveInfo1, - resolveInfo1, resolveInfo1, resolveInfo2, resolveInfo2, resolveInfo2); + resolveInfo1, resolveInfo2, resolveInfo2); + when(mPackageManager.queryIntentActivities(any(Intent.class), eq(MATCH_DEFAULT_ONLY))) + .thenReturn(List.of(resolveInfo1)).thenReturn(List.of(resolveInfo2)); when(mPackageManager.loadItemIcon(any(), any())).thenReturn(FAKE_DRAWABLE); when(mAtmService.getTasks(Integer.MAX_VALUE, false, false, DEFAULT_DISPLAY)) .thenReturn(List.of(runningTaskInfo1, runningTaskInfo2)); diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/data/model/DisplayContentScenarios.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/data/model/DisplayContentScenarios.kt index 254f1e1efe13..254f1e1efe13 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/data/model/DisplayContentScenarios.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/data/model/DisplayContentScenarios.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/data/repository/ProfileTypeRepositoryKosmos.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/data/repository/ProfileTypeRepositoryKosmos.kt index 9d2b56aa81d5..9d2b56aa81d5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/data/repository/ProfileTypeRepositoryKosmos.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/data/repository/ProfileTypeRepositoryKosmos.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/message/ProfileMessageControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/message/ProfileMessageControllerTest.kt index 6b9865fbbacc..6b9865fbbacc 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/message/ProfileMessageControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/message/ProfileMessageControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/NewRootTaskInfo.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/NewRootTaskInfo.kt index 6c35b233ffec..6c35b233ffec 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/NewRootTaskInfo.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/NewRootTaskInfo.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt index bab9bbbfde4f..bab9bbbfde4f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PolicyRequestProcessorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/PrivateProfilePolicyTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PrivateProfilePolicyTest.kt index 6e57761aafa6..6e57761aafa6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/PrivateProfilePolicyTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/PrivateProfilePolicyTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/TestUserIds.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/TestUserIds.kt index 7a6d2809471d..7a6d2809471d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/TestUserIds.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/TestUserIds.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/WorkProfilePolicyTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/WorkProfilePolicyTest.kt index be9fcc2be3a3..be9fcc2be3a3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/policy/WorkProfilePolicyTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/policy/WorkProfilePolicyTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/scroll/FakeSessionTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/scroll/FakeSessionTest.java index 88cb00cda638..88cb00cda638 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/scroll/FakeSessionTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/scroll/FakeSessionTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/scroll/ScrollCaptureFrameworkSmokeTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/scroll/ScrollCaptureFrameworkSmokeTest.java index 5699cfc96c8a..5699cfc96c8a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/scroll/ScrollCaptureFrameworkSmokeTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/scroll/ScrollCaptureFrameworkSmokeTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/scroll/ScrollViewActivity.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/scroll/ScrollViewActivity.java index 04aba1133a78..04aba1133a78 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/scroll/ScrollViewActivity.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/scroll/ScrollViewActivity.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ui/viewmodel/ScreenshotViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ui/viewmodel/ScreenshotViewModelTest.kt index e39e0fbad6e7..e39e0fbad6e7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/screenshot/ui/viewmodel/ScreenshotViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ui/viewmodel/ScreenshotViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scrim/ScrimViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/scrim/ScrimViewTest.java index ca8da635e0f1..ca8da635e0f1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scrim/ScrimViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/scrim/ScrimViewTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/settings/brightness/BrightnessControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessControllerTest.kt index 98260d88f389..98260d88f389 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/settings/brightness/BrightnessControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/CombinedShadeHeaderConstraintsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/CombinedShadeHeaderConstraintsTest.kt index c7bea5911a15..c7bea5911a15 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/CombinedShadeHeaderConstraintsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/CombinedShadeHeaderConstraintsTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ConstraintChangeTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/ConstraintChangeTest.kt index 8c8083543823..8c8083543823 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ConstraintChangeTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/ConstraintChangeTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ConstraintChangesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/ConstraintChangesTest.kt index 05c17060b461..05c17060b461 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ConstraintChangesTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/ConstraintChangesTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/LockscreenHostedDreamGestureListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/LockscreenHostedDreamGestureListenerTest.kt index 2ac0ed0efff4..2ac0ed0efff4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/LockscreenHostedDreamGestureListenerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/LockscreenHostedDreamGestureListenerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelUnfoldAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelUnfoldAnimationControllerTest.kt index abc96ee3c5f0..abc96ee3c5f0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelUnfoldAnimationControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelUnfoldAnimationControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java index e0c4ab737511..e0c4ab737511 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java index a7fd1609d1ca..a7fd1609d1ca 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt index 90655c3cf4b3..90655c3cf4b3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerWithCoroutinesTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt index ca29dd98a637..ca29dd98a637 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationsQuickSettingsContainerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQuickSettingsContainerTest.kt index 97ce37c82c83..97ce37c82c83 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationsQuickSettingsContainerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQuickSettingsContainerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/PulsingGestureListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/PulsingGestureListenerTest.kt index effd28edc68b..effd28edc68b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/PulsingGestureListenerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/PulsingGestureListenerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt index f38bf13d0bda..f38bf13d0bda 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java index a52f1737117a..a52f1737117a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt index 46961d4db0f6..46961d4db0f6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplWithCoroutinesTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeControllerImplTest.kt index 02172383485d..02172383485d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/ShadeControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/carrier/CellSignalStateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/CellSignalStateTest.kt index c6699590e499..c6699590e499 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/carrier/CellSignalStateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/CellSignalStateTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/carrier/ShadeCarrierTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/ShadeCarrierTest.java index 1a2531ac8c75..1a2531ac8c75 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/carrier/ShadeCarrierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/carrier/ShadeCarrierTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt index 7d4918a30d9c..7d4918a30d9c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeRepositoryImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/transition/LinearLargeScreenShadeInterpolator.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/transition/LinearLargeScreenShadeInterpolator.kt index d24bcdc834a7..d24bcdc834a7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/transition/LinearLargeScreenShadeInterpolator.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/transition/LinearLargeScreenShadeInterpolator.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/transition/ScrimShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/transition/ScrimShadeTransitionControllerTest.kt index 10c017bdc525..10c017bdc525 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/transition/ScrimShadeTransitionControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/transition/ScrimShadeTransitionControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/animation/DisableSubpixelTextTransitionListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/animation/DisableSubpixelTextTransitionListenerTest.kt index 5d8f868158e7..5d8f868158e7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/animation/DisableSubpixelTextTransitionListenerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/animation/DisableSubpixelTextTransitionListenerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/animation/UnfoldConstantTranslateAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldConstantTranslateAnimatorTest.kt index 3a53a5aaedfa..3a53a5aaedfa 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/animation/UnfoldConstantTranslateAnimatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldConstantTranslateAnimatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/animation/UnfoldMoveFromCenterAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldMoveFromCenterAnimatorTest.kt index fbaddfaf7216..fbaddfaf7216 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/animation/UnfoldMoveFromCenterAnimatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldMoveFromCenterAnimatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt index 022825a48de3..022825a48de3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt index bbe03f001b03..bbe03f001b03 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt index 83fb14aaf792..83fb14aaf792 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/ConditionExtensionsTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionMonitorTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/ConditionMonitorTest.java index 267f22bb2569..267f22bb2569 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/ConditionMonitorTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/ConditionTest.java index a224843e592a..a224843e592a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/ConditionTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/ConditionTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/FakeCondition.java b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/FakeCondition.java index 5416536305fc..5416536305fc 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/condition/FakeCondition.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/condition/FakeCondition.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/plugins/PluginManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginManagerTest.java index c721ceb10f86..c721ceb10f86 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/plugins/PluginManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/PluginManagerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/plugins/VersionInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/VersionInfoTest.java index 15fdc7c84060..15fdc7c84060 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/plugins/VersionInfoTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/plugins/VersionInfoTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/regionsampling/RegionSamplerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/regionsampling/RegionSamplerTest.kt index 7fc845c17613..7fc845c17613 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/regionsampling/RegionSamplerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/regionsampling/RegionSamplerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/rotation/RotationButtonControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/rotation/RotationButtonControllerTest.kt index 5a4ef055265c..5a4ef055265c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shared/rotation/RotationButtonControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/rotation/RotationButtonControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/BlurUtilsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/BlurUtilsTest.kt index d0ba629c4998..d0ba629c4998 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/BlurUtilsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/BlurUtilsTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/DragDownHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/DragDownHelperTest.kt index 05d9495db091..05d9495db091 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/DragDownHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/DragDownHelperTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java index 59678a2f8c90..59678a2f8c90 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/LSShadeTransitionLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LSShadeTransitionLoggerTest.kt index 948a73208d10..948a73208d10 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/LSShadeTransitionLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LSShadeTransitionLoggerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerTest.kt index e48242a3e003..e48242a3e003 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeQsTransitionControllerTest.kt diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationEntryHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationEntryHelper.java index 2420e573421a..2420e573421a 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/NotificationEntryHelper.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationEntryHelper.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationListenerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationListenerTest.java index 27a1bb5ea556..27a1bb5ea556 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationListenerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationListenerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java index c9d910c530ea..c9d910c530ea 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt index 9f94cff4ead4..9f94cff4ead4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationUiAdjustmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationUiAdjustmentTest.java index 5f9c9df7ab23..5f9c9df7ab23 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationUiAdjustmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationUiAdjustmentTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt index 9907740672ed..9907740672ed 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/PulseExpansionHandlerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilderTest.java index 58943ea3b4ee..58943ea3b4ee 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/RemoteInputNotificationRebuilderTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerTest.kt index 6b9a19a92fc4..6b9a19a92fc4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SingleShadeLockScreenOverScrollerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java index 3346e19b4ce9..3346e19b4ce9 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateEventTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateEventTest.kt index 26692c908c5a..26692c908c5a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/StatusBarStateEventTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateEventTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/VibratorHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/VibratorHelperTest.kt index 78c1887f7c0d..78c1887f7c0d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/VibratorHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/VibratorHelperTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/view/ChipBackgroundContainerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/view/ChipBackgroundContainerTest.kt index 5fbdfbf17df4..5fbdfbf17df4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/view/ChipBackgroundContainerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/view/ChipBackgroundContainerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/view/ChipChronometerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/view/ChipChronometerTest.kt index 6f7711759603..6f7711759603 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/chips/ui/view/ChipChronometerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/view/ChipChronometerTest.kt 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 f528ebbd9e63..26ce7b956fde 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 @@ -19,8 +19,9 @@ package com.android.systemui.statusbar.chips.ui.viewmodel import android.content.DialogInterface import android.content.packageManager import android.content.pm.PackageManager +import android.graphics.Bitmap import android.graphics.drawable.BitmapDrawable -import android.platform.test.annotations.EnableFlags +import android.platform.test.annotations.DisableFlags import android.view.View import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -39,11 +40,9 @@ 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.NORMAL_PACKAGE import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection -import com.android.systemui.statusbar.chips.ron.demo.ui.viewmodel.DemoRonChipViewModelTest.Companion.addDemoRonChip import com.android.systemui.statusbar.chips.ron.demo.ui.viewmodel.demoRonChipViewModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer -import com.android.systemui.statusbar.commandline.commandRegistry import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.statusbar.phone.mockSystemUIDialogFactory import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository @@ -51,8 +50,6 @@ import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCall import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel import com.android.systemui.util.time.fakeSystemClock import com.google.common.truth.Truth.assertThat -import java.io.PrintWriter -import java.io.StringWriter import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -69,21 +66,22 @@ import org.mockito.kotlin.mock import org.mockito.kotlin.verify import org.mockito.kotlin.whenever +/** + * Tests for [OngoingActivityChipsViewModel] when the [FLAG_STATUS_BAR_RON_CHIPS] flag is disabled. + */ @SmallTest @RunWith(AndroidJUnit4::class) @OptIn(ExperimentalCoroutinesApi::class) +@DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) class OngoingActivityChipsViewModelTest : SysuiTestCase() { private val kosmos = Kosmos().also { it.testCase = this } private val testScope = kosmos.testScope private val systemClock = kosmos.fakeSystemClock - private val commandRegistry = kosmos.commandRegistry private val screenRecordState = kosmos.screenRecordRepository.screenRecordState private val mediaProjectionState = kosmos.fakeMediaProjectionRepository.mediaProjectionState private val callRepo = kosmos.ongoingCallRepository - private val pw = PrintWriter(StringWriter()) - private val mockSystemUIDialog = mock<SystemUIDialog>() private val chipBackgroundView = mock<ChipBackgroundContainer>() private val chipView = @@ -102,8 +100,12 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() { fun setUp() { setUpPackageManagerForMediaProjection(kosmos) kosmos.demoRonChipViewModel.start() - whenever(kosmos.packageManager.getApplicationIcon(any<String>())) - .thenReturn(BitmapDrawable()) + val icon = + BitmapDrawable( + context.resources, + Bitmap.createBitmap(/* width= */ 100, /* height= */ 100, Bitmap.Config.ARGB_8888) + ) + whenever(kosmos.packageManager.getApplicationIcon(any<String>())).thenReturn(icon) } @Test @@ -183,24 +185,16 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() { } @Test - @EnableFlags(FLAG_STATUS_BAR_RON_CHIPS) fun primaryChip_higherPriorityChipAdded_lowerPriorityChipReplaced() = testScope.runTest { // Start with just the lowest priority chip shown - addDemoRonChip(commandRegistry, pw) + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) // And everything else hidden - callRepo.setOngoingCallState(OngoingCallModel.NoCall) mediaProjectionState.value = MediaProjectionState.NotProjecting screenRecordState.value = ScreenRecordModel.DoingNothing val latest by collectLastValue(underTest.primaryChip) - assertIsDemoRonChip(latest) - - // WHEN the higher priority call chip is added - callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) - - // THEN the higher priority call chip is used assertIsCallChip(latest) // WHEN the higher priority media projection chip is added @@ -222,7 +216,6 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() { } @Test - @EnableFlags(FLAG_STATUS_BAR_RON_CHIPS) fun primaryChip_highestPriorityChipRemoved_showsNextPriorityChip() = testScope.runTest { // WHEN all chips are active @@ -230,7 +223,6 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() { mediaProjectionState.value = MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) - addDemoRonChip(commandRegistry, pw) val latest by collectLastValue(underTest.primaryChip) @@ -248,12 +240,6 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() { // THEN the lower priority call is used assertIsCallChip(latest) - - // WHEN the higher priority call is removed - callRepo.setOngoingCallState(OngoingCallModel.NoCall) - - // THEN the lower priority demo RON is used - assertIsDemoRonChip(latest) } /** Regression test for b/347726238. */ @@ -390,11 +376,5 @@ class OngoingActivityChipsViewModelTest : SysuiTestCase() { .impl as Icon.Resource assertThat(icon.res).isEqualTo(com.android.internal.R.drawable.ic_phone) } - - fun assertIsDemoRonChip(latest: OngoingActivityChipModel?) { - assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java) - assertThat((latest as OngoingActivityChipModel.Shown).icon) - .isInstanceOf(OngoingActivityChipModel.ChipIcon.FullColorAppIcon::class.java) - } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithRonsViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithRonsViewModelTest.kt new file mode 100644 index 000000000000..631120b39805 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/chips/ui/viewmodel/OngoingActivityChipsWithRonsViewModelTest.kt @@ -0,0 +1,534 @@ +/* + * 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.content.DialogInterface +import android.content.packageManager +import android.graphics.Bitmap +import android.graphics.drawable.BitmapDrawable +import android.platform.test.annotations.EnableFlags +import android.view.View +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest +import com.android.systemui.Flags.FLAG_STATUS_BAR_RON_CHIPS +import com.android.systemui.SysuiTestCase +import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.kosmos.testScope +import com.android.systemui.mediaprojection.data.model.MediaProjectionState +import com.android.systemui.mediaprojection.data.repository.fakeMediaProjectionRepository +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask +import com.android.systemui.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.NORMAL_PACKAGE +import com.android.systemui.statusbar.chips.mediaprojection.domain.interactor.MediaProjectionChipInteractorTest.Companion.setUpPackageManagerForMediaProjection +import com.android.systemui.statusbar.chips.ron.demo.ui.viewmodel.DemoRonChipViewModelTest.Companion.addDemoRonChip +import com.android.systemui.statusbar.chips.ron.demo.ui.viewmodel.demoRonChipViewModel +import com.android.systemui.statusbar.chips.ui.model.MultipleOngoingActivityChipsModel +import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel +import com.android.systemui.statusbar.chips.ui.view.ChipBackgroundContainer +import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsCallChip +import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsScreenRecordChip +import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.assertIsShareToAppChip +import com.android.systemui.statusbar.chips.ui.viewmodel.OngoingActivityChipsViewModelTest.Companion.getStopActionFromDialog +import com.android.systemui.statusbar.commandline.commandRegistry +import com.android.systemui.statusbar.phone.SystemUIDialog +import com.android.systemui.statusbar.phone.ongoingcall.data.repository.ongoingCallRepository +import com.android.systemui.statusbar.phone.ongoingcall.shared.model.OngoingCallModel +import com.android.systemui.statusbar.phone.ongoingcall.shared.model.inCallModel +import com.android.systemui.testKosmos +import com.android.systemui.util.time.fakeSystemClock +import com.google.common.truth.Truth.assertThat +import java.io.PrintWriter +import java.io.StringWriter +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.kotlin.any +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever + +/** + * Tests for [OngoingActivityChipsViewModel] when the [FLAG_STATUS_BAR_RON_CHIPS] flag is enabled. + */ +@SmallTest +@RunWith(AndroidJUnit4::class) +@OptIn(ExperimentalCoroutinesApi::class) +@EnableFlags(FLAG_STATUS_BAR_RON_CHIPS) +class OngoingActivityChipsWithRonsViewModelTest : SysuiTestCase() { + private val kosmos = testKosmos() + private val testScope = kosmos.testScope + private val systemClock = kosmos.fakeSystemClock + private val commandRegistry = kosmos.commandRegistry + + private val screenRecordState = kosmos.screenRecordRepository.screenRecordState + private val mediaProjectionState = kosmos.fakeMediaProjectionRepository.mediaProjectionState + private val callRepo = kosmos.ongoingCallRepository + + private val pw = PrintWriter(StringWriter()) + + 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 + fun setUp() { + setUpPackageManagerForMediaProjection(kosmos) + kosmos.demoRonChipViewModel.start() + val icon = + BitmapDrawable( + context.resources, + Bitmap.createBitmap(/* width= */ 100, /* height= */ 100, Bitmap.Config.ARGB_8888) + ) + whenever(kosmos.packageManager.getApplicationIcon(any<String>())).thenReturn(icon) + } + + // Even though the `primaryChip` flow isn't used when the RONs flag is on, still test that the + // flow has the right behavior to verify that we don't break any existing functionality. + + @Test + fun primaryChip_allHidden_hidden() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.DoingNothing + mediaProjectionState.value = MediaProjectionState.NotProjecting + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.primaryChip) + + assertThat(latest).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + } + + @Test + fun chips_allHidden_bothPrimaryAndSecondaryHidden() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.DoingNothing + mediaProjectionState.value = MediaProjectionState.NotProjecting + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.chips) + + assertThat(latest!!.primary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + } + + @Test + fun primaryChip_screenRecordShow_restHidden_screenRecordShown() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + mediaProjectionState.value = MediaProjectionState.NotProjecting + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.primaryChip) + + assertIsScreenRecordChip(latest) + } + + @Test + fun chips_screenRecordShow_restHidden_primaryIsScreenRecordSecondaryIsHidden() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + mediaProjectionState.value = MediaProjectionState.NotProjecting + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.chips) + + assertIsScreenRecordChip(latest!!.primary) + assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + } + + @Test + fun primaryChip_screenRecordShowAndCallShow_screenRecordShown() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + val latest by collectLastValue(underTest.primaryChip) + + assertIsScreenRecordChip(latest) + } + + @Test + fun chips_screenRecordShowAndCallShow_primaryIsScreenRecordSecondaryIsCall() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + val latest by collectLastValue(underTest.chips) + + assertIsScreenRecordChip(latest!!.primary) + assertIsCallChip(latest!!.secondary) + } + + @Test + fun primaryChip_screenRecordShowAndShareToAppShow_screenRecordShown() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + mediaProjectionState.value = + MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.primaryChip) + + assertIsScreenRecordChip(latest) + } + + @Test + fun chips_screenRecordShowAndShareToAppShow_primaryIsScreenRecordSecondaryIsHidden() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + mediaProjectionState.value = + MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.chips) + + assertIsScreenRecordChip(latest!!.primary) + // Even though share-to-app is active, we suppress it because this share-to-app is + // represented by screen record being active. See b/296461748. + assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + } + + @Test + fun primaryChip_shareToAppShowAndCallShow_shareToAppShown() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.DoingNothing + mediaProjectionState.value = + MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + val latest by collectLastValue(underTest.primaryChip) + + assertIsShareToAppChip(latest) + } + + @Test + fun chips_shareToAppShowAndCallShow_primaryIsShareToAppSecondaryIsCall() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.DoingNothing + mediaProjectionState.value = + MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + val latest by collectLastValue(underTest.chips) + + assertIsShareToAppChip(latest!!.primary) + assertIsCallChip(latest!!.secondary) + } + + @Test + fun chips_threeActiveChips_topTwoShown() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + addDemoRonChip(commandRegistry, pw) + + val latest by collectLastValue(underTest.chips) + + assertIsScreenRecordChip(latest!!.primary) + assertIsCallChip(latest!!.secondary) + // Demo RON chip is dropped + } + + @Test + fun primaryChip_onlyCallShown_callShown() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.DoingNothing + // MediaProjection covers both share-to-app and cast-to-other-device + mediaProjectionState.value = MediaProjectionState.NotProjecting + + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + val latest by collectLastValue(underTest.primaryChip) + + assertIsCallChip(latest) + } + + @Test + fun chips_onlyCallShown_primaryIsCallSecondaryIsHidden() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.DoingNothing + // MediaProjection covers both share-to-app and cast-to-other-device + mediaProjectionState.value = MediaProjectionState.NotProjecting + + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + val latest by collectLastValue(underTest.chips) + + assertIsCallChip(latest!!.primary) + assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + } + + @Test + fun primaryChip_higherPriorityChipAdded_lowerPriorityChipReplaced() = + testScope.runTest { + // Start with just the lowest priority chip shown + addDemoRonChip(commandRegistry, pw) + // And everything else hidden + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + mediaProjectionState.value = MediaProjectionState.NotProjecting + screenRecordState.value = ScreenRecordModel.DoingNothing + + val latest by collectLastValue(underTest.primaryChip) + + assertIsDemoRonChip(latest) + + // WHEN the higher priority call chip is added + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + // THEN the higher priority call chip is used + assertIsCallChip(latest) + + // WHEN the higher priority media projection chip is added + mediaProjectionState.value = + MediaProjectionState.Projecting.SingleTask( + NORMAL_PACKAGE, + hostDeviceName = null, + createTask(taskId = 1), + ) + + // THEN the higher priority media projection chip is used + assertIsShareToAppChip(latest) + + // WHEN the higher priority screen record chip is added + screenRecordState.value = ScreenRecordModel.Recording + + // THEN the higher priority screen record chip is used + assertIsScreenRecordChip(latest) + } + + @Test + fun primaryChip_highestPriorityChipRemoved_showsNextPriorityChip() = + testScope.runTest { + // WHEN all chips are active + screenRecordState.value = ScreenRecordModel.Recording + mediaProjectionState.value = + MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + addDemoRonChip(commandRegistry, pw) + + val latest by collectLastValue(underTest.primaryChip) + + // THEN the highest priority screen record is used + assertIsScreenRecordChip(latest) + + // WHEN the higher priority screen record is removed + screenRecordState.value = ScreenRecordModel.DoingNothing + + // THEN the lower priority media projection is used + assertIsShareToAppChip(latest) + + // WHEN the higher priority media projection is removed + mediaProjectionState.value = MediaProjectionState.NotProjecting + + // THEN the lower priority call is used + assertIsCallChip(latest) + + // WHEN the higher priority call is removed + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + // THEN the lower priority demo RON is used + assertIsDemoRonChip(latest) + } + + @Test + fun chips_movesChipsAroundAccordingToPriority() = + testScope.runTest { + // Start with just the lowest priority chip shown + addDemoRonChip(commandRegistry, pw) + // And everything else hidden + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + mediaProjectionState.value = MediaProjectionState.NotProjecting + screenRecordState.value = ScreenRecordModel.DoingNothing + + val latest by collectLastValue(underTest.chips) + + assertIsDemoRonChip(latest!!.primary) + assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + + // WHEN the higher priority call chip is added + callRepo.setOngoingCallState(inCallModel(startTimeMs = 34)) + + // THEN the higher priority call chip is used as primary and demo ron is demoted to + // secondary + assertIsCallChip(latest!!.primary) + assertIsDemoRonChip(latest!!.secondary) + + // WHEN the higher priority media projection chip is added + mediaProjectionState.value = + MediaProjectionState.Projecting.SingleTask( + NORMAL_PACKAGE, + hostDeviceName = null, + createTask(taskId = 1), + ) + + // THEN the higher priority media projection chip is used as primary and call is demoted + // to secondary (and demo RON is dropped altogether) + assertIsShareToAppChip(latest!!.primary) + assertIsCallChip(latest!!.secondary) + + // WHEN the higher priority screen record chip is added + screenRecordState.value = ScreenRecordModel.Recording + + // THEN the higher priority screen record chip is used + assertIsScreenRecordChip(latest!!.primary) + + // WHEN screen record and call is dropped + screenRecordState.value = ScreenRecordModel.DoingNothing + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + // THEN media projection and demo RON remain + assertIsShareToAppChip(latest!!.primary) + assertIsDemoRonChip(latest!!.secondary) + + // WHEN media projection is dropped + mediaProjectionState.value = MediaProjectionState.NotProjecting + + // THEN demo RON is promoted to primary + assertIsDemoRonChip(latest!!.primary) + assertThat(latest!!.secondary).isInstanceOf(OngoingActivityChipModel.Hidden::class.java) + } + + /** Regression test for b/347726238. */ + @Test + fun primaryChip_timerDoesNotResetAfterSubscribersRestart() = + testScope.runTest { + var latest: OngoingActivityChipModel? = null + + val job1 = underTest.primaryChip.onEach { latest = it }.launchIn(this) + + // Start a chip with a timer + systemClock.setElapsedRealtime(1234) + screenRecordState.value = ScreenRecordModel.Recording + + runCurrent() + + assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234) + + // Stop subscribing to the chip flow + job1.cancel() + + // Let time pass + systemClock.setElapsedRealtime(5678) + + // WHEN we re-subscribe to the chip flow + val job2 = underTest.primaryChip.onEach { latest = it }.launchIn(this) + + runCurrent() + + // THEN the old start time is still used + assertThat((latest as OngoingActivityChipModel.Shown.Timer).startTimeMs).isEqualTo(1234) + + job2.cancel() + } + + /** Regression test for b/347726238. */ + @Test + fun chips_timerDoesNotResetAfterSubscribersRestart() = + testScope.runTest { + var latest: MultipleOngoingActivityChipsModel? = null + + val job1 = underTest.chips.onEach { latest = it }.launchIn(this) + + // Start a chip with a timer + systemClock.setElapsedRealtime(1234) + screenRecordState.value = ScreenRecordModel.Recording + + runCurrent() + + val primaryChip = latest!!.primary as OngoingActivityChipModel.Shown.Timer + assertThat(primaryChip.startTimeMs).isEqualTo(1234) + + // Stop subscribing to the chip flow + job1.cancel() + + // Let time pass + systemClock.setElapsedRealtime(5678) + + // WHEN we re-subscribe to the chip flow + val job2 = underTest.chips.onEach { latest = it }.launchIn(this) + + runCurrent() + + // THEN the old start time is still used + val newPrimaryChip = latest!!.primary as OngoingActivityChipModel.Shown.Timer + assertThat(newPrimaryChip.startTimeMs).isEqualTo(1234) + + job2.cancel() + } + + @Test + fun primaryChip_screenRecordStoppedViaDialog_chipHiddenWithoutAnimation() = + testScope.runTest { + screenRecordState.value = ScreenRecordModel.Recording + mediaProjectionState.value = MediaProjectionState.NotProjecting + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.primaryChip) + + 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 primaryChip_projectionStoppedViaDialog_chipHiddenWithoutAnimation() = + testScope.runTest { + mediaProjectionState.value = + MediaProjectionState.Projecting.EntireScreen(NORMAL_PACKAGE) + screenRecordState.value = ScreenRecordModel.DoingNothing + callRepo.setOngoingCallState(OngoingCallModel.NoCall) + + val latest by collectLastValue(underTest.primaryChip) + + 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)) + } + + private fun assertIsDemoRonChip(latest: OngoingActivityChipModel?) { + assertThat(latest).isInstanceOf(OngoingActivityChipModel.Shown::class.java) + assertThat((latest as OngoingActivityChipModel.Shown).icon) + .isInstanceOf(OngoingActivityChipModel.ChipIcon.FullColorAppIcon::class.java) + } +} diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/commandline/ParametersTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/commandline/ParametersTest.kt index 83811cd61581..83811cd61581 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/commandline/ParametersTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/commandline/ParametersTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/commandline/ParseableCommandTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/commandline/ParseableCommandTest.kt index 1a7c8a336c81..1a7c8a336c81 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/commandline/ParseableCommandTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/commandline/ParseableCommandTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/commandline/ValueParserTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/commandline/ValueParserTest.kt index 1efb3f74b04f..1efb3f74b04f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/commandline/ValueParserTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/commandline/ValueParserTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt index 643acdbb9277..643acdbb9277 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/MobileIconCarrierIdOverridesFake.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/MobileIconCarrierIdOverridesFake.kt index 62b4e7b79f5e..62b4e7b79f5e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/MobileIconCarrierIdOverridesFake.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/MobileIconCarrierIdOverridesFake.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/NetworkTypeResIdCacheTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkTypeResIdCacheTest.kt index 3eeed73a539c..3eeed73a539c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/NetworkTypeResIdCacheTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkTypeResIdCacheTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderTest.kt index ca90f742db40..ca90f742db40 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/ui/MobileContextProviderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/KeyguardStatusBarRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/data/repository/KeyguardStatusBarRepositoryImplTest.kt index 7c98037a5c41..7c98037a5c41 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/KeyguardStatusBarRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/data/repository/KeyguardStatusBarRepositoryImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/StatusBarModeRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/data/repository/StatusBarModeRepositoryImplTest.kt index 48ae7a2aa260..48ae7a2aa260 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/StatusBarModeRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/data/repository/StatusBarModeRepositoryImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/DisableFlagsLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/disableflags/DisableFlagsLoggerTest.kt index fffcbb6ccd32..fffcbb6ccd32 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/DisableFlagsLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/disableflags/DisableFlagsLoggerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/DisableStateTrackerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/disableflags/DisableStateTrackerTest.kt index cf78c71fe047..cf78c71fe047 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/DisableStateTrackerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/disableflags/DisableStateTrackerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt index d2dfc9257e7e..d2dfc9257e7e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/disableflags/data/repository/DisableFlagsRepositoryTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/FakeStatusEvent.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/FakeStatusEvent.kt index df8afde1b9a3..df8afde1b9a3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/FakeStatusEvent.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/FakeStatusEvent.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventChipAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventChipAnimationControllerTest.kt index 984bda1c0d21..984bda1c0d21 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventChipAnimationControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventChipAnimationControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt index 742494b769de..742494b769de 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/events/SystemEventCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt index 7a8533ee6d69..7a8533ee6d69 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/DynamicChildBindControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicChildBindControllerTest.java index 77fd06757595..77fd06757595 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/DynamicChildBindControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicChildBindControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java index d879fcecffab..d879fcecffab 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorLoggerTest.kt index a5206f52b6f2..a5206f52b6f2 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorLoggerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt index 9f752a89b16d..9f752a89b16d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/HighPriorityProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/HighPriorityProviderTest.java index 8e95ac599ce1..8e95ac599ce1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/HighPriorityProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/HighPriorityProviderTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NoManSimulator.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NoManSimulator.java index ee7d55864931..ee7d55864931 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NoManSimulator.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NoManSimulator.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataImplTest.kt index 2a587511eaec..2a587511eaec 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreImplTest.kt index d87f827de776..d87f827de776 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreMocks.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreMocks.kt index 6e81c69045ce..6e81c69045ce 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreMocks.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifLiveDataStoreMocks.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifPipelineChoreographerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifPipelineChoreographerTest.kt index f1da22f08e75..f1da22f08e75 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifPipelineChoreographerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifPipelineChoreographerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/SectionStyleProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/SectionStyleProviderTest.kt index 1fd6b042ad67..1fd6b042ad67 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/SectionStyleProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/SectionStyleProviderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescerTest.java index f029a2ca6099..f029a2ca6099 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinatorTest.java index 1f2925528077..1f2925528077 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinatorTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinatorTest.java index 3676a3d15cc8..3676a3d15cc8 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinatorTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinatorTest.kt index 543f0c72a8ec..543f0c72a8ec 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DismissibilityCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/DreamCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DreamCoordinatorTest.kt index 4d5ea92aa0e6..4d5ea92aa0e6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/DreamCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/DreamCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinatorTest.kt index 7b688d4f91fd..7b688d4f91fd 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinatorTest.kt index 3f140265e5f1..3f140265e5f1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinatorTest.kt index 7fe97d27f273..7fe97d27f273 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinatorTest.kt index b4f4138fd409..b4f4138fd409 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java index 5dcad4bb9e62..5dcad4bb9e62 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java diff --git a/packages/SystemUI/multivalentTests/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 4218be26c58e..4218be26c58e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/MediaCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/MediaCoordinatorTest.java index 07c29a024a6c..07c29a024a6c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/MediaCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/MediaCoordinatorTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/NotificationStatsLoggerCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/NotificationStatsLoggerCoordinatorTest.kt index 501bca248c76..501bca248c76 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/NotificationStatsLoggerCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/NotificationStatsLoggerCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java index dc9c22f566bf..dc9c22f566bf 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinatorTest.java index c05b13163d32..c05b13163d32 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinatorTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt index deb3fc1224ce..deb3fc1224ce 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinatorTest.kt index 1b7ec5381713..1b7ec5381713 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt index 689fc7cb647b..689fc7cb647b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SmartspaceDedupingCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SmartspaceDedupingCoordinatorTest.kt index ef2a2aa67a08..ef2a2aa67a08 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/SmartspaceDedupingCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SmartspaceDedupingCoordinatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProviderTest.kt index 2f77b33c96cb..2f77b33c96cb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProviderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/listbuilder/SemiStableSortTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/listbuilder/SemiStableSortTest.kt index d2057703d560..d2057703d560 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/listbuilder/SemiStableSortTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/listbuilder/SemiStableSortTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelperTest.kt index 49f836fe9f81..49f836fe9f81 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/listbuilder/ShadeListBuilderHelperTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTrackerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTrackerTest.kt index 341a51e32a46..341a51e32a46 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTrackerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTrackerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtenderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtenderTest.kt index 99e55a85344a..99e55a85344a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtenderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtenderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/provider/VisualStabilityProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/provider/VisualStabilityProviderTest.kt index 586b947d5299..586b947d5299 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/provider/VisualStabilityProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/provider/VisualStabilityProviderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/FakeNodeController.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/FakeNodeController.kt index 2de21ae8f0a1..2de21ae8f0a1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/FakeNodeController.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/FakeNodeController.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt index 99bd4fc549a8..99bd4fc549a8 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/NodeSpecBuilderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt index ca75ca679c31..ca75ca679c31 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManagerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDifferTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDifferTest.kt index 9d3e2e8dfcb4..9d3e2e8dfcb4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDifferTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/render/ShadeViewDifferTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationAlertsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationAlertsInteractorTest.kt index 79ff4be253e1..79ff4be253e1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationAlertsInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationAlertsInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationLaunchAnimationInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationLaunchAnimationInteractorTest.kt index 982b7b113a02..982b7b113a02 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationLaunchAnimationInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationLaunchAnimationInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsKeyguardInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsKeyguardInteractorTest.kt index 133a114fed9d..133a114fed9d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsKeyguardInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/NotificationsKeyguardInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt index 572a0c1b1869..572a0c1b1869 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/domain/interactor/RenderNotificationsListInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt index f07303ed32e3..f07303ed32e3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/domain/interactor/NotificationIconsInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt index 1f4e80e48bb7..1f4e80e48bb7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/icon/ui/viewmodel/NotificationIconContainerAlwaysOnDisplayViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinderTest.java index af2789b8401a..af2789b8401a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinderTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java index 19214fb831eb..19214fb831eb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestBase.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestBase.kt index 284efc71a96d..284efc71a96d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestBase.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestBase.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestUtil.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestUtil.kt index 7fd9c9fbdd6b..7fd9c9fbdd6b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestUtil.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/VisualInterruptionDecisionProviderTestUtil.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/logging/ExpansionStateLoggerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/logging/ExpansionStateLoggerTest.java index 59741718476f..59741718476f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/logging/ExpansionStateLoggerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/logging/ExpansionStateLoggerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/logging/NotificationPanelLoggerFake.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/logging/NotificationPanelLoggerFake.java index d61fc05c699f..d61fc05c699f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/logging/NotificationPanelLoggerFake.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/logging/NotificationPanelLoggerFake.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewTest.kt index 9f98fd4c8508..9f98fd4c8508 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt index c0057431f536..c0057431f536 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/FeedbackInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/FeedbackInfoTest.java index d04d6fc5f593..d04d6fc5f593 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/FeedbackInfoTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/FeedbackInfoTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/HeadsUpStyleProviderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/HeadsUpStyleProviderImplTest.kt index c325791b1f05..c325791b1f05 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/HeadsUpStyleProviderImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/HeadsUpStyleProviderImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java index 18fd42da78ea..18fd42da78ea 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManagerTest.kt index 29252b27f6d0..29252b27f6d0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManagerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java index 8b1c95babe38..8b1c95babe38 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsTest.kt index 350f90dcbe91..350f90dcbe91 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationGutsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java index 245a6a0b130c..245a6a0b130c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInlineImageResolverTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInlineImageResolverTest.java index 180c8c88c59f..180c8c88c59f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationInlineImageResolverTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInlineImageResolverTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java index 027e899e20df..027e899e20df 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationMenuRowTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationSnoozeTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationSnoozeTest.java index 22f1e4604bbd..22f1e4604bbd 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationSnoozeTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationSnoozeTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java index 57b0f3f8d8c5..57b0f3f8d8c5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/PartialConversationInfoTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java index 841cb4a3669b..841cb4a3669b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt index 0dc871a523ee..0dc871a523ee 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/ActivatableNotificationViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt index f88bd7ec60bb..f88bd7ec60bb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ui/viewmodel/NotificationViewFlipperViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shared/TestActiveNotificationModel.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/shared/TestActiveNotificationModel.kt index 16c5c8a98253..16c5c8a98253 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shared/TestActiveNotificationModel.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/shared/TestActiveNotificationModel.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt index 4c6e25a530a5..4c6e25a530a5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/shelf/domain/interactor/NotificationShelfInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelTest.kt index e2fb3ba11a02..e2fb3ba11a02 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/shelf/ui/viewmodel/NotificationShelfViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt index 2349c252369c..2349c252369c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt index 578950fa88b5..578950fa88b5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/DisplaySwitchNotificationsHiderTrackerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt index 3a77d822eb7e..3a77d822eb7e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/MediaContainerViewTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt index 1a1af2eecc00..1a1af2eecc00 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt index dae5542123ed..dae5542123ed 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java index 95db95cd288b..95db95cd288b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationSwipeHelperTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt index 3e8bf4792f02..3e8bf4792f02 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt index 798465e7b165..798465e7b165 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt index e493420b64a1..e493420b64a1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ViewStateTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt index 476252737454..476252737454 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt index 1c6bda985a0e..1c6bda985a0e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/NotificationStackInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLoggerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLoggerViewModelTest.kt index e9d88ccb0cbc..e9d88ccb0cbc 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLoggerViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationLoggerViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java index 9eafcdbadfa5..9eafcdbadfa5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java index d9e94953e757..d9e94953e757 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ConfigurationControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ConfigurationControllerImplTest.kt index 942ea65ec49e..942ea65ec49e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ConfigurationControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ConfigurationControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java index 5052a008af68..5052a008af68 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java index 3b3ec263145a..3b3ec263145a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt index cb40f72ff1af..cb40f72ff1af 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBypassControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardDismissUtilTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardDismissUtilTest.java index d880becaa4bd..d880becaa4bd 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardDismissUtilTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardDismissUtilTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextViewTest.java index 109cd948b5b3..109cd948b5b3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextViewTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java index 68e17c1b2d73..68e17c1b2d73 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewTest.java index 0932a0c9307c..0932a0c9307c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java index 782ca91bc8fb..782ca91bc8fb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculatorTest.kt index 518b327036cb..518b327036cb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculatorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LetterboxBackgroundProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LetterboxBackgroundProviderTest.kt index 788c2cb2a485..788c2cb2a485 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LetterboxBackgroundProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LetterboxBackgroundProviderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java index 88ec18dd65f3..88ec18dd65f3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LightBarTransitionsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarTransitionsControllerTest.java index 7dfdb9228936..7dfdb9228936 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/LightBarTransitionsControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LightBarTransitionsControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImplTest.kt index c7919df7e0d0..c7919df7e0d0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java index c5abd026b369..c5abd026b369 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/NotificationIconContainerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconContainerTest.kt index 15958ef4af8a..15958ef4af8a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/NotificationIconContainerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconContainerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/NotificationTapHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationTapHelperTest.java index 9522e1f65a4c..9522e1f65a4c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/NotificationTapHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationTapHelperTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt index 2ed34735db1f..2ed34735db1f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicyTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java index 95472cad4b90..95472cad4b90 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java index c5238194d0a4..c5238194d0a4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManagerTest.kt index 48c2cc7f11c4..48c2cc7f11c4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManagerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListenerTest.kt index 11dd587a04ad..11dd587a04ad 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListenerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusOverlayHoverListenerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt index b560c591af1e..b560c591af1e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/SystemUIBottomSheetDialogTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationControllerTest.kt index 624c070e95e0..624c070e95e0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt index 2d9880a48f80..2d9880a48f80 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/domain/interactor/LightsOutInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLoggerTest.kt index 219b16f1e0ef..d7fb12944965 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentLoggerTest.kt @@ -34,12 +34,13 @@ import org.mockito.Mockito.mock @RunWith(AndroidJUnit4::class) class CollapsedStatusBarFragmentLoggerTest : SysuiTestCase() { - private val buffer = LogBufferFactory(DumpManager(), mock(LogcatEchoTracker::class.java)) - .create("buffer", 10) - private val disableFlagsLogger = DisableFlagsLogger( + private val buffer = + LogBufferFactory(DumpManager(), mock(LogcatEchoTracker::class.java)).create("buffer", 10) + private val disableFlagsLogger = + DisableFlagsLogger( listOf(DisableFlagsLogger.DisableFlag(0b001, 'A', 'a')), listOf(DisableFlagsLogger.DisableFlag(0b001, 'B', 'b')) - ) + ) private val logger = CollapsedStatusBarFragmentLogger(buffer, disableFlagsLogger) @Test @@ -66,7 +67,8 @@ class CollapsedStatusBarFragmentLoggerTest : SysuiTestCase() { StatusBarVisibilityModel( showClock = false, showNotificationIcons = true, - showOngoingActivityChip = false, + showPrimaryOngoingActivityChip = false, + showSecondaryOngoingActivityChip = false, showSystemInfo = true, ) ) @@ -77,7 +79,8 @@ class CollapsedStatusBarFragmentLoggerTest : SysuiTestCase() { assertThat(actualString).contains("showClock=false") assertThat(actualString).contains("showNotificationIcons=true") - assertThat(actualString).contains("showOngoingActivityChip=false") + assertThat(actualString).contains("showPrimaryOngoingActivityChip=false") + assertThat(actualString).contains("showSecondaryOngoingActivityChip=false") assertThat(actualString).contains("showSystemInfo=true") } } 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 6e337efd68af..135fab877d57 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 @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone.fragment; import static android.view.Display.DEFAULT_DISPLAY; +import static com.android.systemui.Flags.FLAG_STATUS_BAR_RON_CHIPS; import static com.android.systemui.Flags.FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS; import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_CLOSED; import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_OPEN; @@ -526,7 +527,9 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // WHEN there's *no* ongoing activity via new callback mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ false, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ false, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); // THEN the old callback value is used, so the view is shown assertEquals(View.VISIBLE, getPrimaryOngoingActivityChipView().getVisibility()); @@ -535,12 +538,15 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { when(mOngoingCallController.hasOngoingCall()).thenReturn(false); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); - // WHEN there *is* an ongoing activity via new callback + // WHEN there *are* ongoing activities via new callback mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); - // THEN the old callback value is used, so the view is hidden + // THEN the old callback value is used, so the views are hidden assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); + assertEquals(View.GONE, getSecondaryOngoingActivityChipView().getVisibility()); } @Test @@ -553,18 +559,22 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // 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, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ false, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); } @Test @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) - public void hasOngoingActivity_chipDisplayedAndNotificationIconsHidden() { + public void hasPrimaryOngoingActivity_primaryChipDisplayedAndNotificationIconsHidden() { resumeAndGetFragment(); mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); assertEquals(View.VISIBLE, getPrimaryOngoingActivityChipView().getVisibility()); assertEquals(View.INVISIBLE, getNotificationAreaView().getVisibility()); @@ -572,11 +582,42 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { @Test @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) - public void hasOngoingActivityButNotificationIconsDisabled_chipHidden() { + @DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) + public void hasSecondaryOngoingActivity_butRonsFlagOff_secondaryChipHidden() { + resumeAndGetFragment(); + + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); + + assertEquals(View.GONE, getSecondaryOngoingActivityChipView().getVisibility()); + } + + @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void hasSecondaryOngoingActivity_flagOn_secondaryChipShownAndNotificationIconsHidden() { + resumeAndGetFragment(); + + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); + + assertEquals(View.VISIBLE, getSecondaryOngoingActivityChipView().getVisibility()); + assertEquals(View.INVISIBLE, getNotificationAreaView().getVisibility()); + } + + @Test + @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) + @DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) + public void hasOngoingActivityButNotificationIconsDisabled_chipHidden_ronsFlagOff() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); @@ -585,12 +626,32 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { } @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void hasOngoingActivitiesButNotificationIconsDisabled_chipsHidden_ronsFlagOn() { + CollapsedStatusBarFragment fragment = resumeAndGetFragment(); + + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); + + fragment.disable(DEFAULT_DISPLAY, + StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); + + assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); + assertEquals(View.GONE, getSecondaryOngoingActivityChipView().getVisibility()); + } + + @Test @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) - public void hasOngoingActivityButAlsoHun_chipHidden() { + @DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) + public void hasOngoingActivityButAlsoHun_chipHidden_ronsFlagOff() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); when(mHeadsUpAppearanceController.shouldBeVisible()).thenReturn(true); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); @@ -599,33 +660,120 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { } @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void hasOngoingActivitiesButAlsoHun_chipsHidden_ronsFlagOn() { + CollapsedStatusBarFragment fragment = resumeAndGetFragment(); + + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); + when(mHeadsUpAppearanceController.shouldBeVisible()).thenReturn(true); + + fragment.disable(DEFAULT_DISPLAY, 0, 0, false); + + assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); + assertEquals(View.GONE, getSecondaryOngoingActivityChipView().getVisibility()); + } + + @Test @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) - public void ongoingActivityEnded_chipHidden() { + @DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) + public void primaryOngoingActivityEnded_chipHidden_ronsFlagOff() { + resumeAndGetFragment(); + + // Ongoing activity started + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); + + assertEquals(View.VISIBLE, getPrimaryOngoingActivityChipView().getVisibility()); + + // Ongoing activity ended + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ false, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); + + assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); + } + + @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void primaryOngoingActivityEnded_chipHidden_ronsFlagOn() { resumeAndGetFragment(); // Ongoing activity started mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); assertEquals(View.VISIBLE, getPrimaryOngoingActivityChipView().getVisibility()); // Ongoing activity ended mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ false, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ false, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); } @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void secondaryOngoingActivityEnded_chipHidden() { + resumeAndGetFragment(); + + // Secondary ongoing activity started + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); + + assertEquals(View.VISIBLE, getSecondaryOngoingActivityChipView().getVisibility()); + + // Ongoing activity ended + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); + + assertEquals(View.GONE, getSecondaryOngoingActivityChipView().getVisibility()); + } + + @Test @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) - public void hasOngoingActivity_hidesNotifsWithoutAnimation() { + @DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) + public void hasOngoingActivity_hidesNotifsWithoutAnimation_ronsFlagOff() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); // Enable animations for testing so that we can verify we still aren't animating fragment.enableAnimationsForTesting(); - // Ongoing call started + // Ongoing activity started mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); + + // Notification area is hidden without delay + assertEquals(0f, getNotificationAreaView().getAlpha(), 0.01); + assertEquals(View.INVISIBLE, getNotificationAreaView().getVisibility()); + } + + @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void hasOngoingActivity_hidesNotifsWithoutAnimation_ronsFlagOn() { + CollapsedStatusBarFragment fragment = resumeAndGetFragment(); + // Enable animations for testing so that we can verify we still aren't animating + fragment.enableAnimationsForTesting(); + + // Ongoing activity started + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); // Notification area is hidden without delay assertEquals(0f, getNotificationAreaView().getAlpha(), 0.01); @@ -634,7 +782,8 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { @Test @EnableFlags(FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS) - public void screenSharingChipsEnabled_ignoresOngoingCallController() { + @DisableFlags(FLAG_STATUS_BAR_RON_CHIPS) + public void screenSharingChipsEnabled_ignoresOngoingCallController_ronsFlagOff() { CollapsedStatusBarFragment fragment = resumeAndGetFragment(); // WHEN there *is* an ongoing call via old callback @@ -643,7 +792,9 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { // WHEN there's *no* ongoing activity via new callback mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ false, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ false, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); // THEN the new callback value is used, so the view is hidden assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); @@ -652,15 +803,50 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { when(mOngoingCallController.hasOngoingCall()).thenReturn(false); fragment.disable(DEFAULT_DISPLAY, 0, 0, false); - // WHEN there *is* an ongoing activity via new callback + // WHEN there *are* ongoing activities via new callback mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( - /* hasOngoingActivity= */ true, /* shouldAnimate= */ false); + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); - // THEN the new callback value is used, so the view is shown + // THEN the new callback value is used, so the views are shown assertEquals(View.VISIBLE, getPrimaryOngoingActivityChipView().getVisibility()); } @Test + @EnableFlags({FLAG_STATUS_BAR_SCREEN_SHARING_CHIPS, FLAG_STATUS_BAR_RON_CHIPS}) + public void screenSharingChipsEnabled_ignoresOngoingCallController_ronsFlagOn() { + CollapsedStatusBarFragment fragment = resumeAndGetFragment(); + + // WHEN there *is* an ongoing call via old callback + when(mOngoingCallController.hasOngoingCall()).thenReturn(true); + fragment.disable(DEFAULT_DISPLAY, 0, 0, true); + + // WHEN there's *no* ongoing activity via new callback + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ false, + /* hasSecondaryOngoingActivity= */ false, + /* shouldAnimate= */ false); + + // THEN the new callback value is used, so the view is hidden + assertEquals(View.GONE, getPrimaryOngoingActivityChipView().getVisibility()); + + // WHEN there's *no* ongoing call via old callback + when(mOngoingCallController.hasOngoingCall()).thenReturn(false); + fragment.disable(DEFAULT_DISPLAY, 0, 0, false); + + // WHEN there *are* ongoing activities via new callback + mCollapsedStatusBarViewBinder.getListener().onOngoingActivityStatusChanged( + /* hasPrimaryOngoingActivity= */ true, + /* hasSecondaryOngoingActivity= */ true, + /* shouldAnimate= */ false); + + // THEN the new callback value is used, so the views are shown + assertEquals(View.VISIBLE, getPrimaryOngoingActivityChipView().getVisibility()); + assertEquals(View.VISIBLE, getSecondaryOngoingActivityChipView().getVisibility()); + } + + @Test @EnableSceneContainer public void isHomeStatusBarAllowedByScene_false_everythingHidden() { resumeAndGetFragment(); @@ -1010,4 +1196,8 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { private View getPrimaryOngoingActivityChipView() { return mFragment.getView().findViewById(R.id.ongoing_activity_chip_primary); } + + private View getSecondaryOngoingActivityChipView() { + return mFragment.getView().findViewById(R.id.ongoing_activity_chip_secondary); + } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModelTest.kt index 9f6f51a28764..d47a90364a43 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/StatusBarVisibilityModelTest.kt @@ -39,7 +39,8 @@ class StatusBarVisibilityModelTest : SysuiTestCase() { StatusBarVisibilityModel( showClock = true, showNotificationIcons = true, - showOngoingActivityChip = true, + showPrimaryOngoingActivityChip = true, + showSecondaryOngoingActivityChip = true, showSystemInfo = true, ) @@ -75,17 +76,19 @@ class StatusBarVisibilityModelTest : SysuiTestCase() { } @Test - fun createModelFromFlags_ongoingCallChipNotDisabled_showOngoingActivityChipTrue() { + fun createModelFromFlags_ongoingCallChipNotDisabled_showOngoingActivityChipsTrue() { val result = createModelFromFlags(disabled1 = 0, disabled2 = 0) - assertThat(result.showOngoingActivityChip).isTrue() + assertThat(result.showPrimaryOngoingActivityChip).isTrue() + assertThat(result.showSecondaryOngoingActivityChip).isTrue() } @Test - fun createModelFromFlags_ongoingCallChipDisabled_showOngoingActivityChipFalse() { + fun createModelFromFlags_ongoingCallChipDisabled_showOngoingActivityChipsFalse() { val result = createModelFromFlags(disabled1 = DISABLE_ONGOING_CALL_CHIP, disabled2 = 0) - assertThat(result.showOngoingActivityChip).isFalse() + assertThat(result.showPrimaryOngoingActivityChip).isFalse() + assertThat(result.showSecondaryOngoingActivityChip).isFalse() } @Test diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaListenerTest.kt index 597e2e45ea14..597e2e45ea14 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaListenerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaListenerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaRepoTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaRepoTest.kt index dfe01bf45f38..dfe01bf45f38 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaRepoTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerViaRepoTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/data/repository/OngoingCallRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/data/repository/OngoingCallRepositoryTest.kt index 4c6eaa589e6a..4c6eaa589e6a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ongoingcall/data/repository/OngoingCallRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/data/repository/OngoingCallRepositoryTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/IconManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/IconManagerTest.kt index 90732d0183d2..90732d0183d2 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/IconManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/IconManagerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt index 50a13b93ea15..50a13b93ea15 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerTest.java index 891ff38764fe..891ff38764fe 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconListTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconListTest.java index 02a6301a14e5..02a6301a14e5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconListTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ui/StatusBarIconListTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt index 0641e173576d..0641e173576d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/data/repository/AirplaneModeRepositoryImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/ethernet/domain/EthernetInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/ethernet/domain/EthernetInteractorTest.kt index f9ae5ff9bbc3..f9ae5ff9bbc3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/ethernet/domain/EthernetInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/ethernet/domain/EthernetInteractorTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileTelephonyHelpers.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileTelephonyHelpers.kt index ec04da7030b7..ec04da7030b7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileTelephonyHelpers.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileTelephonyHelpers.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerTest.kt index 4511be954692..4511be954692 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/MobileViewLoggerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/model/SignalIconModelParameterizedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/model/SignalIconModelParameterizedTest.kt index ebec00380cf4..ebec00380cf4 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/model/SignalIconModelParameterizedTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/model/SignalIconModelParameterizedTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt index fc1ea227f1bd..fc1ea227f1bd 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/DeviceBasedSatelliteRepositorySwitcherTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/demo/DemoDeviceBasedSatelliteRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/demo/DemoDeviceBasedSatelliteRepositoryTest.kt index 87693891a281..87693891a281 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/demo/DemoDeviceBasedSatelliteRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/demo/DemoDeviceBasedSatelliteRepositoryTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/FakeDeviceBasedSatelliteRepository.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/FakeDeviceBasedSatelliteRepository.kt index 55460bd5b801..55460bd5b801 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/FakeDeviceBasedSatelliteRepository.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/data/prod/FakeDeviceBasedSatelliteRepository.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/FakeDeviceBasedSatelliteViewModel.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/FakeDeviceBasedSatelliteViewModel.kt index f125ef12aa97..f125ef12aa97 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/FakeDeviceBasedSatelliteViewModel.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/satellite/ui/viewmodel/FakeDeviceBasedSatelliteViewModel.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/data/model/DefaultConnectionModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/model/DefaultConnectionModelTest.kt index 4c2bb7f8069d..4c2bb7f8069d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/data/model/DefaultConnectionModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/data/model/DefaultConnectionModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt index c3ad0f9d5148..c3ad0f9d5148 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/SingleBindableStatusBarIconViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/SingleBindableStatusBarIconViewTest.kt index a6cdfe23aa5a..a6cdfe23aa5a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/SingleBindableStatusBarIconViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/SingleBindableStatusBarIconViewTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewBinder.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewBinder.kt index 2ee928fa6d17..2ee928fa6d17 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewBinder.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/viewmodel/FakeCollapsedStatusBarViewBinder.kt 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 e71f5217095c..4834d367d4be 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 @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.pipeline.shared.ui.viewmodel +import com.android.systemui.statusbar.chips.ui.model.MultipleOngoingActivityChipsModel import com.android.systemui.statusbar.chips.ui.model.OngoingActivityChipModel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -31,6 +32,8 @@ class FakeCollapsedStatusBarViewModel : CollapsedStatusBarViewModel { override val primaryOngoingActivityChip: MutableStateFlow<OngoingActivityChipModel> = MutableStateFlow(OngoingActivityChipModel.Hidden()) + override val ongoingActivityChips = MutableStateFlow(MultipleOngoingActivityChipsModel()) + override val isHomeStatusBarAllowedByScene = MutableStateFlow(false) override fun areNotificationsLightsOut(displayId: Int): Flow<Boolean> = areNotificationLightsOut diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt index 0a5e63085b9b..0a5e63085b9b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BaseUserSwitcherAdapterTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java index 7c4629871658..7c4629871658 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BluetoothControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BluetoothControllerImplTest.java index 93071bd9305a..93071bd9305a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/BluetoothControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BluetoothControllerImplTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java index 627463b45982..627463b45982 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ClockTest.kt index 7549a7fa0499..7549a7fa0499 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ClockTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/DevicePostureControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DevicePostureControllerImplTest.kt index f871d2748fc9..f871d2748fc9 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/DevicePostureControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DevicePostureControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImplTest.kt index 649a4ab2b968..649a4ab2b968 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ExtensionControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ExtensionControllerImplTest.java index f5efd6d5fdff..f5efd6d5fdff 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ExtensionControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ExtensionControllerImplTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java index 3721b0ed987a..3721b0ed987a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt index b7a35158fdf6..b7a35158fdf6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java index aed9af6df454..aed9af6df454 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt index 9f74915b4d1b..9f74915b4d1b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherAdapterTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisablerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisablerTest.kt index 750f0c68bf3f..750f0c68bf3f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisablerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisablerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SafetyControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SafetyControllerTest.kt index 4b14e642063a..4b14e642063a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SafetyControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SafetyControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java index 36e305244d18..36e305244d18 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java index 637a0f16cd5d..637a0f16cd5d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt index 94f0d196fa21..94f0d196fa21 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/bluetooth/BluetoothRepositoryImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt index d8c0f777d4cc..d8c0f777d4cc 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/bluetooth/FakeBluetoothRepository.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt index 21ed3841c70b..21ed3841c70b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/data/repository/DeviceProvisioningRepositoryImplTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt index e396b567ac89..e396b567ac89 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/StatusBarWindowStateControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/window/StatusBarWindowStateControllerTest.kt index 03a25e3d9ce3..03a25e3d9ce3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/window/StatusBarWindowStateControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/window/StatusBarWindowStateControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/stylus/FixedCapacityBatteryState.kt b/packages/SystemUI/tests/src/com/android/systemui/stylus/FixedCapacityBatteryState.kt index 7e010886c394..7e010886c394 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/stylus/FixedCapacityBatteryState.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/stylus/FixedCapacityBatteryState.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/glowboxeffect/GlowBoxEffectTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/glowboxeffect/GlowBoxEffectTest.kt index 32ef501cd9e3..32ef501cd9e3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/glowboxeffect/GlowBoxEffectTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/glowboxeffect/GlowBoxEffectTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectTest.kt index 67a42196d2e2..67a42196d2e2 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt index a5afe1e33169..a5afe1e33169 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/RippleAnimationTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/RippleAnimationTest.kt index 8dafa824cb8c..8dafa824cb8c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/RippleAnimationTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/RippleAnimationTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/RippleShaderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/RippleShaderTest.kt index 2fee2a4553b0..2fee2a4553b0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/RippleShaderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/RippleShaderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/RippleViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/RippleViewTest.kt index 18644ab67351..18644ab67351 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/ripple/RippleViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/RippleViewTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/shaders/SolidColorShaderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/shaders/SolidColorShaderTest.kt index fbd3eae59046..fbd3eae59046 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/shaders/SolidColorShaderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/shaders/SolidColorShaderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/shaders/SparkleShaderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/shaders/SparkleShaderTest.kt index d32bffbdff1d..d32bffbdff1d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/shaders/SparkleShaderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/shaders/SparkleShaderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseControllerTest.kt index 4ba64384a186..4ba64384a186 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseControllerTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseShaderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseShaderTest.kt index 286f01736497..286f01736497 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseShaderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseShaderTest.kt diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseViewTest.kt index e09d4ea9bcc6..e09d4ea9bcc6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/turbulencenoise/TurbulenceNoiseViewTest.kt diff --git a/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureMonitorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureMonitorTest.kt new file mode 100644 index 000000000000..cafebb9fd79e --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/touchpad/tutorial/ui/gesture/RecentAppsGestureMonitorTest.kt @@ -0,0 +1,112 @@ +/* + * 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.touchpad.tutorial.ui.gesture + +import android.view.MotionEvent +import androidx.compose.ui.input.pointer.util.VelocityTracker1D +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.FINISHED +import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.IN_PROGRESS +import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.NOT_STARTED +import com.android.systemui.touchpad.tutorial.ui.gesture.MultiFingerGesture.Companion.SWIPE_DISTANCE +import com.google.common.truth.Truth.assertThat +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever + +@SmallTest +@RunWith(AndroidJUnit4::class) +class RecentAppsGestureMonitorTest : SysuiTestCase() { + + companion object { + const val THRESHOLD_VELOCITY_PX_PER_MS = 0.1f + // multiply by 1000 to get px per ms instead of px per s which is unit used by velocity + // tracker + const val SLOW = THRESHOLD_VELOCITY_PX_PER_MS * 1000 - 1 + const val FAST = THRESHOLD_VELOCITY_PX_PER_MS * 1000 + 1 + } + + private var gestureState = NOT_STARTED + private val velocityTracker = + mock<VelocityTracker1D> { + // by default return correct speed for the gesture - as if pointer is slowing down + on { calculateVelocity() } doReturn SLOW + } + private val gestureMonitor = + RecentAppsGestureMonitor( + gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt(), + gestureStateChangedCallback = { gestureState = it }, + velocityThresholdPxPerMs = THRESHOLD_VELOCITY_PX_PER_MS, + velocityTracker = velocityTracker + ) + + @Test + fun triggersGestureFinishedForThreeFingerGestureUp() { + assertStateAfterEvents(events = ThreeFingerGesture.swipeUp(), expectedState = FINISHED) + } + + @Test + fun doesntTriggerGestureFinished_onGestureSpeedTooHigh() { + whenever(velocityTracker.calculateVelocity()).thenReturn(FAST) + assertStateAfterEvents(events = ThreeFingerGesture.swipeUp(), expectedState = NOT_STARTED) + } + + @Test + fun triggersGestureProgressForThreeFingerGestureStarted() { + assertStateAfterEvents( + events = ThreeFingerGesture.startEvents(x = 0f, y = 0f), + expectedState = IN_PROGRESS + ) + } + + @Test + fun doesntTriggerGestureFinished_onGestureDistanceTooShort() { + assertStateAfterEvents( + events = ThreeFingerGesture.swipeUp(distancePx = SWIPE_DISTANCE / 2), + expectedState = NOT_STARTED + ) + } + + @Test + fun doesntTriggerGestureFinished_onThreeFingersSwipeInOtherDirections() { + assertStateAfterEvents(events = ThreeFingerGesture.swipeDown(), expectedState = NOT_STARTED) + assertStateAfterEvents(events = ThreeFingerGesture.swipeLeft(), expectedState = NOT_STARTED) + assertStateAfterEvents( + events = ThreeFingerGesture.swipeRight(), + expectedState = NOT_STARTED + ) + } + + @Test + fun doesntTriggerGestureFinished_onTwoFingersSwipe() { + assertStateAfterEvents(events = TwoFingerGesture.swipeUp(), expectedState = NOT_STARTED) + } + + @Test + fun doesntTriggerGestureFinished_onFourFingersSwipe() { + assertStateAfterEvents(events = FourFingerGesture.swipeUp(), expectedState = NOT_STARTED) + } + + private fun assertStateAfterEvents(events: List<MotionEvent>, expectedState: GestureState) { + events.forEach { gestureMonitor.processTouchpadEvent(it) } + assertThat(gestureState).isEqualTo(expectedState) + } +} diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt index e02042d26d45..ab745efe97c6 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/FakeReduceBrightColorsController.kt @@ -47,14 +47,6 @@ class FakeReduceBrightColorsController : ReduceBrightColorsController { } } - override fun setReduceBrightColorsFeatureAvailable(enabled: Boolean) { - // do nothing - } - - override fun isReduceBrightColorsFeatureAvailable(): Boolean { - return true - } - override fun isInUpgradeMode(resources: Resources?): Boolean { if (resources != null) { return Flags.evenDimmer() && diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorKosmos.kt index 251a6b10a0da..80f6fc24ef2c 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/education/domain/interactor/KeyboardTouchpadEduInteractorKosmos.kt @@ -19,6 +19,7 @@ package com.android.systemui.education.domain.interactor import android.hardware.input.InputManager import com.android.systemui.education.data.repository.fakeEduClock import com.android.systemui.inputdevice.data.repository.UserInputDeviceRepository +import com.android.systemui.inputdevice.tutorial.tutorialSchedulerRepository import com.android.systemui.keyboard.data.repository.keyboardRepository import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher @@ -57,6 +58,8 @@ var Kosmos.keyboardTouchpadEduStatsInteractor by keyboardRepository, touchpadRepository, userRepository - ) + ), + tutorialSchedulerRepository, + fakeEduClock ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/inputdevice/tutorial/InputDeviceTutorialKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/inputdevice/tutorial/InputDeviceTutorialKosmos.kt index 827f0d277d11..a83baffd78b2 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/inputdevice/tutorial/InputDeviceTutorialKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/inputdevice/tutorial/InputDeviceTutorialKosmos.kt @@ -16,8 +16,20 @@ package com.android.systemui.inputdevice.tutorial +import android.content.applicationContext +import com.android.systemui.inputdevice.tutorial.data.repository.TutorialSchedulerRepository import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.testScope import org.mockito.kotlin.mock var Kosmos.inputDeviceTutorialLogger: InputDeviceTutorialLogger by Kosmos.Fixture { mock<InputDeviceTutorialLogger>() } + +var Kosmos.tutorialSchedulerRepository by + Kosmos.Fixture { + TutorialSchedulerRepository( + applicationContext = applicationContext, + testScope.backgroundScope, + "KosmosTutorialSchedulerRepository" + ) + } diff --git a/packages/VpnDialogs/tests/Android.bp b/packages/VpnDialogs/tests/Android.bp index 68639bd1c4fe..409282efb714 100644 --- a/packages/VpnDialogs/tests/Android.bp +++ b/packages/VpnDialogs/tests/Android.bp @@ -22,8 +22,8 @@ android_test { // (e.g. VpnManager#prepareVpn()). certificate: "platform", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "androidx.test.core", diff --git a/packages/WAPPushManager/tests/Android.bp b/packages/WAPPushManager/tests/Android.bp index 0a179383fab6..973100248a2b 100644 --- a/packages/WAPPushManager/tests/Android.bp +++ b/packages/WAPPushManager/tests/Android.bp @@ -26,9 +26,9 @@ package { android_test { name: "WAPPushManagerTests", libs: [ - "android.test.runner", + "android.test.runner.stubs.system", "telephony-common", - "android.test.base", + "android.test.base.stubs.system", ], static_libs: ["junit"], // Include all test java files. diff --git a/packages/WallpaperBackup/Android.bp b/packages/WallpaperBackup/Android.bp index 18f783146c72..b8e0d427f3d8 100644 --- a/packages/WallpaperBackup/Android.bp +++ b/packages/WallpaperBackup/Android.bp @@ -42,8 +42,8 @@ android_test { "test/src/**/*.java", ], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], static_libs: [ "androidx.test.core", diff --git a/packages/overlays/tests/Android.bp b/packages/overlays/tests/Android.bp index 0244c0fe0533..8bbe60059d45 100644 --- a/packages/overlays/tests/Android.bp +++ b/packages/overlays/tests/Android.bp @@ -26,8 +26,8 @@ android_test { certificate: "platform", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], platform_apis: true, static_libs: [ diff --git a/ravenwood/Android.bp b/ravenwood/Android.bp index eebe5e9fc054..3c65f378f33d 100644 --- a/ravenwood/Android.bp +++ b/ravenwood/Android.bp @@ -129,9 +129,9 @@ java_library { ], libs: [ "framework-minus-apex.ravenwood", - "ravenwood-junit", "ravenwood-helper-libcore-runtime", ], + sdk_version: "core_current", visibility: ["//visibility:private"], } @@ -159,14 +159,15 @@ java_library { "ravenwood-runtime-common", ], libs: [ - "android.test.mock", + "android.test.mock.impl", "framework-minus-apex.ravenwood", "ravenwood-framework", "services.core.ravenwood", "junit", "framework-annotations-lib", + "ravenwood-helper-framework-runtime", + "ravenwood-helper-libcore-runtime", ], - sdk_version: "core_current", visibility: ["//frameworks/base"], jarjar_rules: ":ravenwood-services-jarjar-rules", } diff --git a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodAwareTestRunnerHook.java b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodAwareTestRunnerHook.java index 92a1cb7fc3bf..68472c12a568 100644 --- a/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodAwareTestRunnerHook.java +++ b/ravenwood/junit-impl-src/android/platform/test/ravenwood/RavenwoodAwareTestRunnerHook.java @@ -28,6 +28,7 @@ import android.util.Log; import androidx.test.platform.app.InstrumentationRegistry; import com.android.internal.os.RuntimeInit; +import com.android.platform.test.ravenwood.runtimehelper.ClassLoadHook; import com.android.ravenwood.common.RavenwoodCommonUtils; import org.junit.runner.Description; @@ -75,6 +76,9 @@ public class RavenwoodAwareTestRunnerHook { // We haven't initialized liblog yet, so directly write to System.out here. RavenwoodCommonUtils.log(TAG, "initOnce()"); + // Make sure libandroid_runtime is loaded. + ClassLoadHook.onClassLoaded(Log.class); + // Redirect stdout/stdin to liblog. RuntimeInit.redirectLogStreams(); @@ -82,6 +86,10 @@ public class RavenwoodAwareTestRunnerHook { System.setProperty("android.junit.runner", "androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner"); System.setProperty(RAVENWOOD_VERSION_JAVA_SYSPROP, "1"); + + // Do the basic set up for the android sysprops. + RavenwoodRuntimeEnvironmentController.setSystemProperties( + RavenwoodSystemProperties.DEFAULT_VALUES); } /** diff --git a/ravenwood/mockito/Android.bp b/ravenwood/mockito/Android.bp index 95c7394b19f3..d91537bbc334 100644 --- a/ravenwood/mockito/Android.bp +++ b/ravenwood/mockito/Android.bp @@ -21,9 +21,9 @@ android_ravenwood_test { "truth", ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], auto_gen_config: true, } @@ -48,9 +48,9 @@ android_test { "mockito-target-extended-minus-junit4", ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], jni_libs: [ // Required by mockito diff --git a/ravenwood/runtime-helper-src/framework/com/android/internal/ravenwood/RavenwoodEnvironment_host.java b/ravenwood/runtime-helper-src/framework/com/android/internal/ravenwood/RavenwoodEnvironment_host.java index 3bf116da19b8..e12ff240c4d9 100644 --- a/ravenwood/runtime-helper-src/framework/com/android/internal/ravenwood/RavenwoodEnvironment_host.java +++ b/ravenwood/runtime-helper-src/framework/com/android/internal/ravenwood/RavenwoodEnvironment_host.java @@ -15,21 +15,10 @@ */ package com.android.internal.ravenwood; -import android.os.SystemProperties_host; -import android.platform.test.ravenwood.RavenwoodSystemProperties; -import android.util.Log; - import com.android.ravenwood.common.JvmWorkaround; import com.android.ravenwood.common.RavenwoodCommonUtils; public class RavenwoodEnvironment_host { - private static final String TAG = RavenwoodEnvironment.TAG; - - private static final Object sInitializeLock = new Object(); - - // @GuardedBy("sInitializeLock") - private static boolean sInitialized; - private RavenwoodEnvironment_host() { } @@ -37,27 +26,8 @@ public class RavenwoodEnvironment_host { * Called from {@link RavenwoodEnvironment#ensureRavenwoodInitialized()}. */ public static void ensureRavenwoodInitialized() { - - // TODO Unify it with the initialization code in RavenwoodAwareTestRunnerHook. - - synchronized (sInitializeLock) { - if (sInitialized) { - return; - } - Log.i(TAG, "Initializing Ravenwood environment"); - - // Set the default values. - var sysProps = RavenwoodSystemProperties.DEFAULT_VALUES; - - // We have a method that does it in RavenwoodRuleImpl, but we can't use that class - // here, So just inline it. - SystemProperties_host.initializeIfNeeded( - sysProps.getValues(), - sysProps.getKeyReadablePredicate(), - sysProps.getKeyWritablePredicate()); - - sInitialized = true; - } + // Initialization is now done by RavenwoodAwareTestRunner. + // Should we remove it? } /** diff --git a/sax/tests/saxtests/Android.bp b/sax/tests/saxtests/Android.bp index 446ee9394179..29c742f47868 100644 --- a/sax/tests/saxtests/Android.bp +++ b/sax/tests/saxtests/Android.bp @@ -12,8 +12,8 @@ android_test { // Include all test java files. srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "junit", diff --git a/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java b/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java index 39aa27ae794e..b1c25c4f3c61 100644 --- a/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java +++ b/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSession.java @@ -18,11 +18,8 @@ package com.android.server.appfunctions; import android.annotation.NonNull; import android.app.appsearch.AppSearchBatchResult; -import android.app.appsearch.AppSearchManager; -import android.app.appsearch.AppSearchManager.SearchContext; import android.app.appsearch.AppSearchResult; import android.app.appsearch.AppSearchSession; -import android.app.appsearch.BatchResultCallback; import android.app.appsearch.GenericDocument; import android.app.appsearch.GetByDocumentIdRequest; import android.app.appsearch.GetSchemaResponse; @@ -33,7 +30,6 @@ import android.app.appsearch.SearchResults; import android.app.appsearch.SearchSpec; import android.app.appsearch.SetSchemaRequest; import android.app.appsearch.SetSchemaResponse; -import android.util.Slog; import com.android.internal.infra.AndroidFuture; @@ -44,28 +40,11 @@ import java.util.Objects; import java.util.concurrent.Executor; /** A future API wrapper of {@link AppSearchSession} APIs. */ -public class FutureAppSearchSession implements Closeable { - private static final String TAG = FutureAppSearchSession.class.getSimpleName(); - private final Executor mExecutor; - private final AndroidFuture<AppSearchResult<AppSearchSession>> mSettableSessionFuture; - - public FutureAppSearchSession( - @NonNull AppSearchManager appSearchManager, - @NonNull Executor executor, - @NonNull SearchContext appSearchContext) { - Objects.requireNonNull(appSearchManager); - Objects.requireNonNull(executor); - Objects.requireNonNull(appSearchContext); - - mExecutor = executor; - mSettableSessionFuture = new AndroidFuture<>(); - appSearchManager.createSearchSession( - appSearchContext, mExecutor, mSettableSessionFuture::complete); - } +public interface FutureAppSearchSession extends Closeable { /** Converts a failed app search result codes into an exception. */ @NonNull - public static Exception failedResultToException(@NonNull AppSearchResult<?> appSearchResult) { + static Exception failedResultToException(@NonNull AppSearchResult<?> appSearchResult) { return switch (appSearchResult.getResultCode()) { case AppSearchResult.RESULT_INVALID_ARGUMENT -> new IllegalArgumentException(appSearchResult.getErrorMessage()); @@ -77,114 +56,39 @@ public class FutureAppSearchSession implements Closeable { }; } - private AndroidFuture<AppSearchSession> getSessionAsync() { - return mSettableSessionFuture.thenApply( - result -> { - if (result.isSuccess()) { - return result.getResultValue(); - } else { - throw new RuntimeException(failedResultToException(result)); - } - }); - } - - /** Gets the schema for a given app search session. */ - public AndroidFuture<GetSchemaResponse> getSchema() { - return getSessionAsync() - .thenCompose( - session -> { - AndroidFuture<AppSearchResult<GetSchemaResponse>> - settableSchemaResponse = new AndroidFuture<>(); - session.getSchema(mExecutor, settableSchemaResponse::complete); - return settableSchemaResponse.thenApply( - result -> { - if (result.isSuccess()) { - return result.getResultValue(); - } else { - throw new RuntimeException( - failedResultToException(result)); - } - }); - }); - } - - /** Sets the schema for a given app search session. */ - public AndroidFuture<SetSchemaResponse> setSchema(@NonNull SetSchemaRequest setSchemaRequest) { - return getSessionAsync() - .thenCompose( - session -> { - AndroidFuture<AppSearchResult<SetSchemaResponse>> - settableSchemaResponse = new AndroidFuture<>(); - session.setSchema( - setSchemaRequest, - mExecutor, - mExecutor, - settableSchemaResponse::complete); - return settableSchemaResponse.thenApply( - result -> { - if (result.isSuccess()) { - return result.getResultValue(); - } else { - throw new RuntimeException( - failedResultToException(result)); - } - }); - }); - } + /** + * Sets the schema that represents the organizational structure of data within the AppSearch + * database. + */ + AndroidFuture<SetSchemaResponse> setSchema(@NonNull SetSchemaRequest setSchemaRequest); - /** Indexes documents into the AppSearchSession database. */ - public AndroidFuture<AppSearchBatchResult<String, Void>> put( - @NonNull PutDocumentsRequest putDocumentsRequest) { - return getSessionAsync() - .thenCompose( - session -> { - AndroidFuture<AppSearchBatchResult<String, Void>> batchResultFuture = - new AndroidFuture<>(); + /** Retrieves the schema most recently successfully provided to {@code setSchema}. */ + AndroidFuture<GetSchemaResponse> getSchema(); - session.put( - putDocumentsRequest, mExecutor, batchResultFuture::complete); - return batchResultFuture; - }); - } + /** Indexes documents into the {@link AppSearchSession} database. */ + AndroidFuture<AppSearchBatchResult<String, Void>> put( + @NonNull PutDocumentsRequest putDocumentsRequest); - /** Removes documents from the AppSearchSession database. */ - public AndroidFuture<AppSearchBatchResult<String, Void>> remove( - @NonNull RemoveByDocumentIdRequest removeRequest) { - return getSessionAsync() - .thenCompose( - session -> { - AndroidFuture<AppSearchBatchResult<String, Void>> - settableBatchResultFuture = new AndroidFuture<>(); - session.remove( - removeRequest, - mExecutor, - new BatchResultCallbackAdapter<>(settableBatchResultFuture)); - return settableBatchResultFuture; - }); - } + /** Removes {@link GenericDocument} from the index by Query. */ + AndroidFuture<AppSearchBatchResult<String, Void>> remove( + @NonNull RemoveByDocumentIdRequest removeRequest); /** - * Retrieves documents from the open AppSearchSession that match a given query string and type - * of search provided. + * Gets {@link GenericDocument} objects by document IDs in a namespace from the {@link + * AppSearchSession} database. */ - public AndroidFuture<FutureSearchResults> search( - @NonNull String queryExpression, @NonNull SearchSpec searchSpec) { - return getSessionAsync() - .thenApply(session -> session.search(queryExpression, searchSpec)) - .thenApply(result -> new FutureSearchResults(result, mExecutor)); - } + AndroidFuture<AppSearchBatchResult<String, GenericDocument>> getByDocumentId( + GetByDocumentIdRequest getRequest); - @Override - public void close() throws IOException { - try { - getSessionAsync().get().close(); - } catch (Exception ex) { - Slog.e(TAG, "Failed to close app search session", ex); - } - } + /** + * Retrieves documents from the open {@link AppSearchSession} that match a given query string + * and type of search provided. + */ + AndroidFuture<FutureSearchResults> search( + @NonNull String queryExpression, @NonNull SearchSpec searchSpec); /** A future API wrapper of {@link android.app.appsearch.SearchResults}. */ - public static class FutureSearchResults { + class FutureSearchResults { private final SearchResults mSearchResults; private final Executor mExecutor; @@ -209,56 +113,4 @@ public class FutureAppSearchSession implements Closeable { }); } } - - /** A future API to retrieve a document by its id from the local AppSearch session. */ - public AndroidFuture<GenericDocument> getByDocumentId( - @NonNull String documentId, @NonNull String namespace) { - Objects.requireNonNull(documentId); - Objects.requireNonNull(namespace); - - GetByDocumentIdRequest request = - new GetByDocumentIdRequest.Builder(namespace).addIds(documentId).build(); - return getSessionAsync() - .thenCompose( - session -> { - AndroidFuture<AppSearchBatchResult<String, GenericDocument>> - batchResultFuture = new AndroidFuture<>(); - session.getByDocumentId( - request, - mExecutor, - new BatchResultCallbackAdapter<>(batchResultFuture)); - - return batchResultFuture.thenApply( - batchResult -> - getGenericDocumentFromBatchResult( - batchResult, documentId)); - }); - } - - private static GenericDocument getGenericDocumentFromBatchResult( - AppSearchBatchResult<String, GenericDocument> result, String documentId) { - if (result.isSuccess()) { - return result.getSuccesses().get(documentId); - } - throw new IllegalArgumentException("No document in the result for id: " + documentId); - } - - private static final class BatchResultCallbackAdapter<K, V> - implements BatchResultCallback<K, V> { - private final AndroidFuture<AppSearchBatchResult<K, V>> mFuture; - - BatchResultCallbackAdapter(AndroidFuture<AppSearchBatchResult<K, V>> future) { - mFuture = future; - } - - @Override - public void onResult(@NonNull AppSearchBatchResult<K, V> result) { - mFuture.complete(result); - } - - @Override - public void onSystemError(Throwable t) { - mFuture.completeExceptionally(t); - } - } } diff --git a/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSessionImpl.java b/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSessionImpl.java new file mode 100644 index 000000000000..e78f390a4825 --- /dev/null +++ b/services/appfunctions/java/com/android/server/appfunctions/FutureAppSearchSessionImpl.java @@ -0,0 +1,203 @@ +/* + * 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.appfunctions; + +import static com.android.server.appfunctions.FutureAppSearchSession.failedResultToException; + +import android.annotation.NonNull; +import android.app.appsearch.AppSearchBatchResult; +import android.app.appsearch.AppSearchManager; +import android.app.appsearch.AppSearchManager.SearchContext; +import android.app.appsearch.AppSearchResult; +import android.app.appsearch.AppSearchSession; +import android.app.appsearch.BatchResultCallback; +import android.app.appsearch.GenericDocument; +import android.app.appsearch.GetByDocumentIdRequest; +import android.app.appsearch.GetSchemaResponse; +import android.app.appsearch.PutDocumentsRequest; +import android.app.appsearch.RemoveByDocumentIdRequest; +import android.app.appsearch.SearchSpec; +import android.app.appsearch.SetSchemaRequest; +import android.app.appsearch.SetSchemaResponse; + +import com.android.internal.infra.AndroidFuture; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.Executor; + +/** Implementation of {@link FutureAppSearchSession} */ +public class FutureAppSearchSessionImpl implements FutureAppSearchSession { + + private static final String TAG = FutureAppSearchSession.class.getSimpleName(); + private final Executor mExecutor; + private final AndroidFuture<AppSearchResult<AppSearchSession>> mSettableSessionFuture; + + public FutureAppSearchSessionImpl( + @NonNull AppSearchManager appSearchManager, + @NonNull Executor executor, + @NonNull SearchContext appSearchContext) { + Objects.requireNonNull(appSearchManager); + Objects.requireNonNull(executor); + Objects.requireNonNull(appSearchContext); + + mExecutor = executor; + mSettableSessionFuture = new AndroidFuture<>(); + appSearchManager.createSearchSession( + appSearchContext, mExecutor, mSettableSessionFuture::complete); + } + + private AndroidFuture<AppSearchSession> getSessionAsync() { + return mSettableSessionFuture.thenApply( + result -> { + if (result.isSuccess()) { + return result.getResultValue(); + } else { + throw new RuntimeException(failedResultToException(result)); + } + }); + } + + @Override + public AndroidFuture<SetSchemaResponse> setSchema(@NonNull SetSchemaRequest setSchemaRequest) { + Objects.requireNonNull(setSchemaRequest); + + return getSessionAsync() + .thenCompose( + session -> { + AndroidFuture<AppSearchResult<SetSchemaResponse>> + settableSchemaResponse = new AndroidFuture<>(); + session.setSchema( + setSchemaRequest, + mExecutor, + mExecutor, + settableSchemaResponse::complete); + return settableSchemaResponse.thenApply( + result -> { + if (result.isSuccess()) { + return result.getResultValue(); + } else { + throw new RuntimeException( + failedResultToException(result)); + } + }); + }); + } + + @Override + public AndroidFuture<GetSchemaResponse> getSchema() { + return getSessionAsync() + .thenCompose( + session -> { + AndroidFuture<AppSearchResult<GetSchemaResponse>> + settableSchemaResponse = new AndroidFuture<>(); + session.getSchema(mExecutor, settableSchemaResponse::complete); + return settableSchemaResponse.thenApply( + result -> { + if (result.isSuccess()) { + return result.getResultValue(); + } else { + throw new RuntimeException( + failedResultToException(result)); + } + }); + }); + } + + @Override + public AndroidFuture<AppSearchBatchResult<String, Void>> put( + @NonNull PutDocumentsRequest putDocumentsRequest) { + Objects.requireNonNull(putDocumentsRequest); + + return getSessionAsync() + .thenCompose( + session -> { + AndroidFuture<AppSearchBatchResult<String, Void>> batchResultFuture = + new AndroidFuture<>(); + + session.put( + putDocumentsRequest, mExecutor, batchResultFuture::complete); + return batchResultFuture; + }); + } + + @Override + public AndroidFuture<AppSearchBatchResult<String, Void>> remove( + @NonNull RemoveByDocumentIdRequest removeRequest) { + Objects.requireNonNull(removeRequest); + + return getSessionAsync() + .thenCompose( + session -> { + AndroidFuture<AppSearchBatchResult<String, Void>> + settableBatchResultFuture = new AndroidFuture<>(); + session.remove( + removeRequest, + mExecutor, + new BatchResultCallbackAdapter<>(settableBatchResultFuture)); + return settableBatchResultFuture; + }); + } + + @Override + public AndroidFuture<AppSearchBatchResult<String, GenericDocument>> getByDocumentId( + @NonNull GetByDocumentIdRequest getRequest) { + Objects.requireNonNull(getRequest); + + return getSessionAsync() + .thenCompose( + session -> { + AndroidFuture<AppSearchBatchResult<String, GenericDocument>> + batchResultFuture = new AndroidFuture<>(); + session.getByDocumentId( + getRequest, + mExecutor, + new BatchResultCallbackAdapter<>(batchResultFuture)); + return batchResultFuture; + }); + } + + @Override + public AndroidFuture<FutureSearchResults> search( + @NonNull String queryExpression, @NonNull SearchSpec searchSpec) { + return getSessionAsync() + .thenApply(session -> session.search(queryExpression, searchSpec)) + .thenApply(result -> new FutureSearchResults(result, mExecutor)); + } + + @Override + public void close() throws IOException {} + + private static final class BatchResultCallbackAdapter<K, V> + implements BatchResultCallback<K, V> { + private final AndroidFuture<AppSearchBatchResult<K, V>> mFuture; + + BatchResultCallbackAdapter(AndroidFuture<AppSearchBatchResult<K, V>> future) { + mFuture = future; + } + + @Override + public void onResult(@NonNull AppSearchBatchResult<K, V> result) { + mFuture.complete(result); + } + + @Override + public void onSystemError(Throwable t) { + mFuture.completeExceptionally(t); + } + } +} diff --git a/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java b/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java index 5044e93b293d..2c261fe668fb 100644 --- a/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java +++ b/services/autofill/java/com/android/server/autofill/PresentationStatsEventLogger.java @@ -842,9 +842,13 @@ public final class PresentationStatsEventLogger { + "event"); return; } + PresentationStatsEventInternal event = mEventInternal.get(); + boolean ignoreLogging = !event.mIsDatasetAvailable; + if (sVerbose) { Slog.v(TAG, "(" + caller + ") " + + (ignoreLogging ? "IGNORING - following event won't be logged: " : "") + "Log AutofillPresentationEventReported:" + " requestId=" + event.mRequestId + " sessionId=" + mSessionId @@ -907,7 +911,8 @@ public final class PresentationStatsEventLogger { } // TODO(b/234185326): Distinguish empty responses from other no presentation reasons. - if (!event.mIsDatasetAvailable) { + if (ignoreLogging) { + Slog.w(TAG, "Empty dataset. Autofill ignoring log"); mEventInternal = Optional.empty(); return; } diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 93b228f37c26..4898f1095c58 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -2390,8 +2390,8 @@ public final class ProcessList { } String volumeUuid = packageState.getVolumeUuid(); long inode = packageState.getUserStateOrDefault(userId).getCeDataInode(); - if (inode == 0) { - Slog.w(TAG, packageName + " inode == 0 (b/152760674)"); + if (inode <= 0) { + Slog.w(TAG, packageName + " inode == 0 or app uninstalled with keep-data"); return null; } result.put(packageName, Pair.create(volumeUuid, inode)); diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java index dba6c3372ae7..5d850896d5de 100644 --- a/services/core/java/com/android/server/biometrics/AuthService.java +++ b/services/core/java/com/android/server/biometrics/AuthService.java @@ -850,10 +850,28 @@ public class AuthService extends SystemService { return; } + boolean tempResetLockoutRequiresChallenge = false; + + if (hidlConfigStrings != null && hidlConfigStrings.length > 0) { + for (String configString : hidlConfigStrings) { + try { + SensorConfig sensor = new SensorConfig(configString); + switch (sensor.modality) { + case BiometricAuthenticator.TYPE_FACE: + tempResetLockoutRequiresChallenge = true; + break; + } + } catch (Exception e) { + Slog.e(TAG, "Error parsing configString: " + configString, e); + } + } + } + + final boolean resetLockoutRequiresChallenge = tempResetLockoutRequiresChallenge; + handlerProvider.getFaceHandler().post(() -> { final FaceSensorConfigurations mFaceSensorConfigurations = - new FaceSensorConfigurations(hidlConfigStrings != null - && hidlConfigStrings.length > 0); + new FaceSensorConfigurations(resetLockoutRequiresChallenge); if (hidlConfigStrings != null && hidlConfigStrings.length > 0) { mFaceSensorConfigurations.addHidlConfigs(hidlConfigStrings, context); diff --git a/services/core/java/com/android/server/input/debug/TouchpadDebugView.java b/services/core/java/com/android/server/input/debug/TouchpadDebugView.java index 7d8ce5fdb918..486d4afdbf43 100644 --- a/services/core/java/com/android/server/input/debug/TouchpadDebugView.java +++ b/services/core/java/com/android/server/input/debug/TouchpadDebugView.java @@ -32,6 +32,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.android.server.input.TouchpadFingerState; +import com.android.server.input.TouchpadHardwareProperties; import com.android.server.input.TouchpadHardwareState; import java.util.Objects; @@ -60,13 +61,15 @@ public class TouchpadDebugView extends LinearLayout { private TouchpadHardwareState mLastTouchpadState = new TouchpadHardwareState(0, 0 /* buttonsDown */, 0, 0, new TouchpadFingerState[0]); + private TouchpadVisualizationView mTouchpadVisualizationView; - public TouchpadDebugView(Context context, int touchpadId) { + public TouchpadDebugView(Context context, int touchpadId, + TouchpadHardwareProperties touchpadHardwareProperties) { super(context); mTouchpadId = touchpadId; mWindowManager = Objects.requireNonNull(getContext().getSystemService(WindowManager.class)); - init(context, touchpadId); + init(context, touchpadHardwareProperties, touchpadId); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); // TODO(b/360137366): Use the hardware properties to initialise layout parameters. @@ -89,7 +92,8 @@ public class TouchpadDebugView extends LinearLayout { mWindowLayoutParams.gravity = Gravity.TOP | Gravity.LEFT; } - private void init(Context context, int touchpadId) { + private void init(Context context, TouchpadHardwareProperties touchpadHardwareProperties, + int touchpadId) { setOrientation(VERTICAL); setLayoutParams(new LayoutParams( LayoutParams.WRAP_CONTENT, @@ -106,10 +110,12 @@ public class TouchpadDebugView extends LinearLayout { nameView.setTextColor(Color.WHITE); nameView.setLayoutParams(new LayoutParams(1000, 200)); - TouchpadVisualisationView touchpadVisualisationView = - new TouchpadVisualisationView(context); - touchpadVisualisationView.setBackgroundColor(Color.WHITE); - touchpadVisualisationView.setLayoutParams(new LayoutParams(1000, 200)); + mTouchpadVisualizationView = new TouchpadVisualizationView(context, + touchpadHardwareProperties); + mTouchpadVisualizationView.setBackgroundColor(Color.WHITE); + //TODO(b/365568238): set the view size according to the touchpad size from the + // TouchpadHardwareProperties + mTouchpadVisualizationView.setLayoutParams(new LayoutParams(778, 500)); //TODO(b/365562952): Add a display for recognized gesture info here TextView gestureInfoView = new TextView(context); @@ -121,7 +127,7 @@ public class TouchpadDebugView extends LinearLayout { gestureInfoView.setLayoutParams(new LayoutParams(1000, 200)); addView(nameView); - addView(touchpadVisualisationView); + addView(mTouchpadVisualizationView); addView(gestureInfoView); updateScreenDimensions(); @@ -214,14 +220,18 @@ public class TouchpadDebugView extends LinearLayout { } /** - * Notify the view of a change in TouchpadHardwareState and changing the - * color of the view based on the status of the button click. + * Notify the view of a change in the hardware state of a touchpad. The view should + * update its content to reflect the new state. + * + * @param touchpadHardwareState the hardware state of a touchpad + * @param deviceId the deviceId of the touchpad that is sending the hardware state */ public void updateHardwareState(TouchpadHardwareState touchpadHardwareState, int deviceId) { if (deviceId != mTouchpadId) { return; } + mTouchpadVisualizationView.onTouchpadHardwareStateNotified(touchpadHardwareState); if (mLastTouchpadState.getButtonsDown() == 0) { if (touchpadHardwareState.getButtonsDown() > 0) { onTouchpadButtonPress(); diff --git a/services/core/java/com/android/server/input/debug/TouchpadDebugViewController.java b/services/core/java/com/android/server/input/debug/TouchpadDebugViewController.java index 4d527bdff0d3..b4b357a29363 100644 --- a/services/core/java/com/android/server/input/debug/TouchpadDebugViewController.java +++ b/services/core/java/com/android/server/input/debug/TouchpadDebugViewController.java @@ -112,18 +112,20 @@ public class TouchpadDebugViewController implements InputManager.InputDeviceList final WindowManager wm = Objects.requireNonNull( mContext.getSystemService(WindowManager.class)); - mTouchpadDebugView = new TouchpadDebugView(mContext, touchpadId); + TouchpadHardwareProperties touchpadHardwareProperties = + mInputManagerService.getTouchpadHardwareProperties( + touchpadId); + + mTouchpadDebugView = new TouchpadDebugView(mContext, touchpadId, + touchpadHardwareProperties); final WindowManager.LayoutParams mWindowLayoutParams = mTouchpadDebugView.getWindowLayoutParams(); wm.addView(mTouchpadDebugView, mWindowLayoutParams); Slog.d(TAG, "Touchpad debug view created."); - TouchpadHardwareProperties mTouchpadHardwareProperties = - mInputManagerService.getTouchpadHardwareProperties( - touchpadId); - if (mTouchpadHardwareProperties != null) { - Slog.d(TAG, mTouchpadHardwareProperties.toString()); + if (touchpadHardwareProperties != null) { + Slog.d(TAG, touchpadHardwareProperties.toString()); } else { Slog.w(TAG, "Failed to retrieve touchpad hardware properties for " + "device ID: " + touchpadId); @@ -142,10 +144,13 @@ public class TouchpadDebugViewController implements InputManager.InputDeviceList } /** - * Notify the TouchpadDebugView with the new TouchpadHardwareState. + * Notifies about an update in the touchpad's hardware state. + * + * @param touchpadHardwareState the hardware state of a touchpad + * @param deviceId the deviceId of the touchpad that is sending the hardware state */ public void updateTouchpadHardwareState(TouchpadHardwareState touchpadHardwareState, - int deviceId) { + int deviceId) { if (mTouchpadDebugView != null) { mTouchpadDebugView.updateHardwareState(touchpadHardwareState, deviceId); } diff --git a/services/core/java/com/android/server/input/debug/TouchpadVisualizationView.java b/services/core/java/com/android/server/input/debug/TouchpadVisualizationView.java new file mode 100644 index 000000000000..9ba7d0a655f5 --- /dev/null +++ b/services/core/java/com/android/server/input/debug/TouchpadVisualizationView.java @@ -0,0 +1,130 @@ +/* + * 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.input.debug; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +import android.util.Slog; +import android.view.View; + +import com.android.server.input.TouchpadFingerState; +import com.android.server.input.TouchpadHardwareProperties; +import com.android.server.input.TouchpadHardwareState; + +public class TouchpadVisualizationView extends View { + private static final String TAG = "TouchpadVizMain"; + private static final boolean DEBUG = true; + + private final TouchpadHardwareProperties mTouchpadHardwareProperties; + + TouchpadHardwareState mLatestHardwareState = new TouchpadHardwareState(0, 0, 0, 0, + new TouchpadFingerState[]{}); + + private final Paint mOvalPaint; + + public TouchpadVisualizationView(Context context, + TouchpadHardwareProperties touchpadHardwareProperties) { + super(context); + mTouchpadHardwareProperties = touchpadHardwareProperties; + mOvalPaint = new Paint(); + mOvalPaint.setAntiAlias(true); + mOvalPaint.setARGB(255, 0, 0, 0); + mOvalPaint.setStyle(Paint.Style.STROKE); + } + + private final RectF mOvalRect = new RectF(); + + private void drawOval(Canvas canvas, float x, float y, float major, float minor, float angle, + Paint paint) { + canvas.save(Canvas.MATRIX_SAVE_FLAG); + canvas.rotate(angle, x, y); + mOvalRect.left = x - minor / 2; + mOvalRect.right = x + minor / 2; + mOvalRect.top = y - major / 2; + mOvalRect.bottom = y + major / 2; + canvas.drawOval(mOvalRect, paint); + canvas.restore(); + } + + @Override + protected void onDraw(Canvas canvas) { + for (TouchpadFingerState touchpadFingerState : mLatestHardwareState.getFingerStates()) { + float newX = translateRange(mTouchpadHardwareProperties.getLeft(), + mTouchpadHardwareProperties.getRight(), 0, getWidth(), + touchpadFingerState.getPositionX()); + + float newY = translateRange(mTouchpadHardwareProperties.getTop(), + mTouchpadHardwareProperties.getBottom(), 0, getHeight(), + touchpadFingerState.getPositionY()); + + float newAngle = -translateRange(mTouchpadHardwareProperties.getOrientationMinimum(), + mTouchpadHardwareProperties.getOrientationMaximum(), 0, 360, + touchpadFingerState.getOrientation()); + + float newTouchMajor = + touchpadFingerState.getTouchMajor() / mTouchpadHardwareProperties.getResX(); + float newTouchMinor = + touchpadFingerState.getTouchMinor() / mTouchpadHardwareProperties.getResY(); + + drawOval(canvas, newX, newY, newTouchMajor, newTouchMinor, newAngle, mOvalPaint); + } + } + + /** + * Receiving the touchpad hardware state and based on it update the latest hardware state. + * + * @param schs The new hardware state received. + */ + public void onTouchpadHardwareStateNotified(TouchpadHardwareState schs) { + if (DEBUG) { + logHardwareState(schs); + } + + mLatestHardwareState = schs; + + invalidate(); + } + + private float translateRange(float rangeBeforeMin, float rangeBeforeMax, + float rangeAfterMin, float rangeAfterMax, float value) { + return rangeAfterMin + (value - rangeBeforeMin) / (rangeBeforeMax - rangeBeforeMin) * ( + rangeAfterMax - rangeAfterMin); + } + + private void logHardwareState(TouchpadHardwareState schs) { + Slog.d(TAG, "notifyTouchpadHardwareState: Time: " + + schs.getTimestamp() + ", No. Buttons: " + + schs.getButtonsDown() + ", No. Fingers: " + + schs.getFingerCount() + ", No. Touch: " + + schs.getTouchCount()); + + for (TouchpadFingerState finger : schs.getFingerStates()) { + Slog.d(TAG, "Finger #" + finger.getTrackingId() + + ": touchMajor= " + finger.getTouchMajor() + + ", touchMinor= " + finger.getTouchMinor() + + ", widthMajor= " + finger.getWidthMajor() + + ", widthMinor= " + finger.getWidthMinor() + + ", pressure= " + finger.getPressure() + + ", orientation= " + finger.getOrientation() + + ", positionX= " + finger.getPositionX() + + ", positionY= " + finger.getPositionY()); + } + } + +} diff --git a/services/core/java/com/android/server/location/gnss/GnssConfiguration.java b/services/core/java/com/android/server/location/gnss/GnssConfiguration.java index a439f16e6d97..1740010a8d5f 100644 --- a/services/core/java/com/android/server/location/gnss/GnssConfiguration.java +++ b/services/core/java/com/android/server/location/gnss/GnssConfiguration.java @@ -80,8 +80,8 @@ public class GnssConfiguration { "ENABLE_PSDS_PERIODIC_DOWNLOAD"; private static final String CONFIG_ENABLE_ACTIVE_SIM_EMERGENCY_SUPL = "ENABLE_ACTIVE_SIM_EMERGENCY_SUPL"; - private static final String CONFIG_ENABLE_NI_SUPL_MESSAGE_INJECTION = - "ENABLE_NI_SUPL_MESSAGE_INJECTION"; + private static final String CONFIG_ENABLE_NI_SUPL_MESSAGE_INJECTION_BOOL = + "ENABLE_NI_SUPL_MESSAGE_INJECTION_BOOL"; static final String CONFIG_LONGTERM_PSDS_SERVER_1 = "LONGTERM_PSDS_SERVER_1"; static final String CONFIG_LONGTERM_PSDS_SERVER_2 = "LONGTERM_PSDS_SERVER_2"; static final String CONFIG_LONGTERM_PSDS_SERVER_3 = "LONGTERM_PSDS_SERVER_3"; @@ -230,7 +230,8 @@ public class GnssConfiguration { * Default false if not set. */ boolean isNiSuplMessageInjectionEnabled() { - return getBooleanConfig(CONFIG_ENABLE_NI_SUPL_MESSAGE_INJECTION, false); + return getBooleanConfig(CONFIG_ENABLE_NI_SUPL_MESSAGE_INJECTION_BOOL, + false); } /** diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java index 19381509c7fe..4b2c12abe5bb 100644 --- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java @@ -68,6 +68,7 @@ import android.location.LocationManager; import android.location.LocationRequest; import android.location.LocationResult; import android.location.LocationResult.BadLocationException; +import android.location.flags.Flags; import android.location.provider.ProviderProperties; import android.location.provider.ProviderRequest; import android.location.util.identity.CallerIdentity; @@ -310,6 +311,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private String mC2KServerHost; private int mC2KServerPort; private boolean mSuplEsEnabled = false; + private boolean mNiSuplMessageListenerRegistered = false; private final LocationExtras mLocationExtras = new LocationExtras(); private final NetworkTimeHelper mNetworkTimeHelper; @@ -387,6 +389,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements // Reload gnss config for no SIM case mGnssConfiguration.reloadGpsProperties(); } + if (Flags.enableNiSuplMessageInjectionByCarrierConfig()) { + updateNiSuplMessageListenerRegistration( + mGnssConfiguration.isNiSuplMessageInjectionEnabled()); + } } private void reloadGpsProperties() { @@ -532,28 +538,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements intentFilter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); mContext.registerReceiver(mIntentReceiver, intentFilter, null, mHandler); - if (mNetworkConnectivityHandler.isNativeAgpsRilSupported() - && mGnssConfiguration.isNiSuplMessageInjectionEnabled()) { - // Listen to WAP PUSH NI SUPL message. - // See User Plane Location Protocol Candidate Version 3.0, - // OMA-TS-ULP-V3_0-20110920-C, Section 8.3 OMA Push. - intentFilter = new IntentFilter(); - intentFilter.addAction(Intents.WAP_PUSH_RECEIVED_ACTION); - try { - intentFilter.addDataType("application/vnd.omaloc-supl-init"); - } catch (IntentFilter.MalformedMimeTypeException e) { - Log.w(TAG, "Malformed SUPL init mime type"); - } - mContext.registerReceiver(mIntentReceiver, intentFilter, null, mHandler); - - // Listen to MT SMS NI SUPL message. - // See User Plane Location Protocol Candidate Version 3.0, - // OMA-TS-ULP-V3_0-20110920-C, Section 8.4 MT SMS. - intentFilter = new IntentFilter(); - intentFilter.addAction(Intents.DATA_SMS_RECEIVED_ACTION); - intentFilter.addDataScheme("sms"); - intentFilter.addDataAuthority("localhost", "7275"); - mContext.registerReceiver(mIntentReceiver, intentFilter, null, mHandler); + if (!Flags.enableNiSuplMessageInjectionByCarrierConfig()) { + updateNiSuplMessageListenerRegistration( + mGnssConfiguration.isNiSuplMessageInjectionEnabled()); } mNetworkConnectivityHandler.registerNetworkCallbacks(); @@ -592,6 +579,20 @@ public class GnssLocationProvider extends AbstractLocationProvider implements case TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED: subscriptionOrCarrierConfigChanged(); break; + } + } + }; + + private BroadcastReceiver mNiSuplIntentReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (DEBUG) Log.d(TAG, "receive broadcast intent, action: " + action); + if (action == null) { + return; + } + + switch (action) { case Intents.WAP_PUSH_RECEIVED_ACTION: case Intents.DATA_SMS_RECEIVED_ACTION: injectSuplInit(intent); @@ -1442,6 +1443,46 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mGnssMetrics.logSvStatus(gnssStatus); } + private void updateNiSuplMessageListenerRegistration(boolean shouldRegister) { + if (!mNetworkConnectivityHandler.isNativeAgpsRilSupported()) { + return; + } + if (mNiSuplMessageListenerRegistered == shouldRegister) { + return; + } + + // WAP PUSH NI SUPL message intent filter. + // See User Plane Location Protocol Candidate Version 3.0, + // OMA-TS-ULP-V3_0-20110920-C, Section 8.3 OMA Push. + IntentFilter wapPushNiIntentFilter = new IntentFilter(); + wapPushNiIntentFilter.addAction(Intents.WAP_PUSH_RECEIVED_ACTION); + try { + wapPushNiIntentFilter + .addDataType("application/vnd.omaloc-supl-init"); + } catch (IntentFilter.MalformedMimeTypeException e) { + Log.w(TAG, "Malformed SUPL init mime type"); + } + + // MT SMS NI SUPL message intent filter. + // See User Plane Location Protocol Candidate Version 3.0, + // OMA-TS-ULP-V3_0-20110920-C, Section 8.4 MT SMS. + IntentFilter mtSmsNiIntentFilter = new IntentFilter(); + mtSmsNiIntentFilter.addAction(Intents.DATA_SMS_RECEIVED_ACTION); + mtSmsNiIntentFilter.addDataScheme("sms"); + mtSmsNiIntentFilter.addDataAuthority("localhost", "7275"); + + if (shouldRegister) { + mContext.registerReceiver(mNiSuplIntentReceiver, + wapPushNiIntentFilter, null, mHandler); + mContext.registerReceiver(mNiSuplIntentReceiver, + mtSmsNiIntentFilter, null, mHandler); + mNiSuplMessageListenerRegistered = true; + } else { + mContext.unregisterReceiver(mNiSuplIntentReceiver); + mNiSuplMessageListenerRegistered = false; + } + } + private void restartLocationRequest() { if (DEBUG) Log.d(TAG, "restartLocationRequest"); setStarted(false); @@ -1631,6 +1672,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements if (dumpAll) { mNetworkTimeHelper.dump(pw); pw.println("mSupportsPsds=" + mSupportsPsds); + if (Flags.enableNiSuplMessageInjectionByCarrierConfig()) { + pw.println("mNiSuplMessageListenerRegistered=" + + mNiSuplMessageListenerRegistered); + } pw.println( "PsdsServerConfigured=" + mGnssConfiguration.isLongTermPsdsServerConfigured()); pw.println("native internal state: "); diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java index b8900d7acee5..3d6f9cfed697 100644 --- a/services/core/java/com/android/server/notification/BubbleExtractor.java +++ b/services/core/java/com/android/server/notification/BubbleExtractor.java @@ -27,10 +27,11 @@ import static com.android.internal.util.FrameworkStatsLog.BUBBLE_DEVELOPER_ERROR import android.app.ActivityManager; import android.app.Notification; import android.app.NotificationChannel; -import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.util.Slog; @@ -47,6 +48,7 @@ public class BubbleExtractor implements NotificationSignalExtractor { private ShortcutHelper mShortcutHelper; private RankingConfig mConfig; private ActivityManager mActivityManager; + private PackageManager mPackageManager; private Context mContext; boolean mSupportsBubble; @@ -76,6 +78,11 @@ public class BubbleExtractor implements NotificationSignalExtractor { return null; } + if (mPackageManager == null) { + if (DBG) Slog.d(TAG, "missing package manager"); + return null; + } + boolean notifCanPresentAsBubble = canPresentAsBubble(record) && !mActivityManager.isLowRamDevice() && record.isConversation() @@ -133,6 +140,10 @@ public class BubbleExtractor implements NotificationSignalExtractor { mShortcutHelper = helper; } + public void setPackageManager(PackageManager packageManager) { + mPackageManager = packageManager; + } + @VisibleForTesting public void setActivityManager(ActivityManager manager) { mActivityManager = manager; @@ -176,30 +187,25 @@ public class BubbleExtractor implements NotificationSignalExtractor { // TODO: check the shortcut intent / ensure it can show in activity view return true; } - return canLaunchInTaskView(mContext, metadata.getIntent(), pkg); + return canLaunchInTaskView(metadata.getIntent().getIntent(), pkg, + r.getUser().getIdentifier()); } /** - * Whether an intent is properly configured to display in an {@link - * TaskView} for bubbling. + * Whether an intent is properly configured to display in a TaskView for bubbling. * - * @param context the context to use. - * @param pendingIntent the pending intent of the bubble. - * @param packageName the notification package name for this bubble. + * @param intent the intent of the bubble. + * @param packageName the notification package name for this bubble. */ - // Keep checks in sync with BubbleController#canLaunchInTaskView. - @VisibleForTesting - protected boolean canLaunchInTaskView(Context context, PendingIntent pendingIntent, - String packageName) { - if (pendingIntent == null) { + // Keep checks in sync with BubbleController#isResizableActivity. + private boolean canLaunchInTaskView(Intent intent, String packageName, int userId) { + if (intent == null) { Slog.w(TAG, "Unable to create bubble -- no intent"); return false; } - Intent intent = pendingIntent.getIntent(); - ActivityInfo info = intent != null - ? intent.resolveActivityInfo(context.getPackageManager(), 0) - : null; + ResolveInfo resolveInfo = mPackageManager.resolveActivityAsUser(intent, 0, userId); + ActivityInfo info = resolveInfo != null ? resolveInfo.activityInfo : null; if (info == null) { FrameworkStatsLog.write(FrameworkStatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED, packageName, diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 54e918972d46..e2ec0063c711 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -3020,6 +3020,7 @@ public class NotificationManagerService extends SystemService { BubbleExtractor bubbsExtractor = mRankingHelper.findExtractor(BubbleExtractor.class); if (bubbsExtractor != null) { bubbsExtractor.setShortcutHelper(mShortcutHelper); + bubbsExtractor.setPackageManager(mPackageManagerClient); } registerNotificationPreferencesPullers(); if (mLockUtils == null) { diff --git a/services/core/java/com/android/server/power/stats/PowerStatsCollector.java b/services/core/java/com/android/server/power/stats/PowerStatsCollector.java index 291f0e38908e..e5b990eeda4b 100644 --- a/services/core/java/com/android/server/power/stats/PowerStatsCollector.java +++ b/services/core/java/com/android/server/power/stats/PowerStatsCollector.java @@ -432,9 +432,6 @@ public abstract class PowerStatsCollector { EnergyConsumerResult[] energy = mConsumedEnergyRetriever.getConsumedEnergy(mEnergyConsumerIds); - System.out.println("mEnergyConsumerIds = " + Arrays.toString(mEnergyConsumerIds) + " " - + "energy = " - + Arrays.toString(energy)); if (energy == null) { return false; } diff --git a/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java b/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java index d763199ee019..79560ce27919 100644 --- a/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java +++ b/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java @@ -16,6 +16,7 @@ package com.android.server.rollback; +import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH; import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING; import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING; @@ -39,7 +40,7 @@ import android.content.rollback.PackageRollbackInfo; import android.content.rollback.RollbackInfo; import android.os.SystemProperties; import android.text.TextUtils; -import android.util.ArraySet; +import android.util.Log; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; @@ -47,7 +48,6 @@ import com.android.server.PackageWatchdog; import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog; import java.util.List; -import java.util.Set; /** * This class handles the logic for logging Watchdog-triggered rollback events. @@ -101,22 +101,6 @@ public final class WatchdogRollbackLogger { return loggingParent; } - - /** - * Gets the set of parent packages for a given set of failed package names. In the case that - * multiple sessions have failed, we want to log failure for each of the parent packages. - * Even if multiple failed packages have the same parent, we only log the parent package once. - */ - private static Set<VersionedPackage> getLogPackages(Context context, - @NonNull List<String> failedPackageNames) { - Set<VersionedPackage> parentPackages = new ArraySet<>(); - for (String failedPackageName: failedPackageNames) { - parentPackages.add(getLogPackage(context, new VersionedPackage(failedPackageName, 0))); - } - return parentPackages; - } - - static void logRollbackStatusOnBoot(Context context, int rollbackId, String logPackageName, List<RollbackInfo> recentlyCommittedRollbacks) { PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller(); @@ -174,10 +158,11 @@ public final class WatchdogRollbackLogger { */ public static void logEvent(@Nullable VersionedPackage logPackage, int type, int rollbackReason, @NonNull String failingPackageName) { - Slog.i(TAG, "Watchdog event occurred with type: " + rollbackTypeToString(type) + String logMsg = "Watchdog event occurred with type: " + rollbackTypeToString(type) + " logPackage: " + logPackage + " rollbackReason: " + rollbackReasonToString(rollbackReason) - + " failedPackageName: " + failingPackageName); + + " failedPackageName: " + failingPackageName; + Slog.i(TAG, logMsg); if (logPackage != null) { CrashRecoveryStatsLog.write( CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED, @@ -200,33 +185,19 @@ public final class WatchdogRollbackLogger { new byte[]{}); } - logTestProperties(logPackage, type, rollbackReason, failingPackageName); + logTestProperties(logMsg); } /** * Writes properties which will be used by rollback tests to check if particular rollback * events have occurred. - * - * persist.sys.rollbacktest.enabled: true if rollback tests are running - * persist.sys.rollbacktest.EVENT_TYPE: true if a particular rollback event has occurred - * ex: persist.sys.rollbacktest.ROLLBACK_INITIATE is true if ROLLBACK_INITIATE has happened - * persist.sys.rollbacktest.EVENT_TYPE.logPackage: the package to associate the rollback with - * persist.sys.rollbacktest.EVENT_TYPE.rollbackReason: the reason Watchdog triggered a rollback - * persist.sys.rollbacktest.EVENT_TYPE.failedPackageName: the failing package or process which - * triggered the rollback */ - private static void logTestProperties(@Nullable VersionedPackage logPackage, int type, - int rollbackReason, @NonNull String failingPackageName) { + private static void logTestProperties(String logMsg) { // This property should be on only during the tests - final String prefix = "persist.sys.rollbacktest."; - if (!SystemProperties.getBoolean(prefix + "enabled", false)) { + if (!SystemProperties.getBoolean("persist.sys.rollbacktest.enabled", false)) { return; } - String key = prefix + rollbackTypeToString(type); - SystemProperties.set(key, String.valueOf(true)); - SystemProperties.set(key + ".logPackage", logPackage != null ? logPackage.toString() : ""); - SystemProperties.set(key + ".rollbackReason", rollbackReasonToString(rollbackReason)); - SystemProperties.set(key + ".failedPackageName", failingPackageName); + logCrashRecoveryEvent(Log.DEBUG, logMsg); } @VisibleForTesting diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index ff6f021f52a7..1dfa06300ace 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6079,9 +6079,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return false; } - // Check if the activity is on a sleeping display, canTurnScreenOn will also check - // keyguard visibility - if (mDisplayContent.isSleeping()) { + // Check if the activity is on a sleeping display and keyguard is not going away (to + // align with TaskFragment#shouldSleepActivities), canTurnScreenOn will also check keyguard + // visibility + if (mDisplayContent.isSleeping() && !mDisplayContent.isKeyguardGoingAway()) { return canTurnScreenOn(); } else { return mTaskSupervisor.getKeyguardController().checkKeyguardVisibility(this); diff --git a/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java b/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java index b23e75a0fbc2..51ef87dcab1b 100644 --- a/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java +++ b/services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java @@ -122,9 +122,12 @@ class AppCompatAspectRatioPolicy { if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) { return aspectRatioOverrides.getUserMinAspectRatio(); } + final DisplayContent displayContent = mActivityRecord.getDisplayContent(); + final boolean shouldOverrideMinAspectRatioForCamera = displayContent != null + && displayContent.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera( + mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() - && !mAppCompatOverrides.getAppCompatCameraOverrides() - .shouldOverrideMinAspectRatioForCamera()) { + && !shouldOverrideMinAspectRatioForCamera) { return info.getMinAspectRatio(); } diff --git a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java index d8abf69b65af..241390c12818 100644 --- a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java +++ b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java @@ -85,9 +85,10 @@ class AppCompatCameraOverrides { } /** - * Whether we should apply the min aspect ratio per-app override only when an app is connected - * to the camera. - * When this override is applied the min aspect ratio given in the app's manifest will be + * Whether applying the min aspect ratio per-app override only when an app is connected + * to the camera is allowed. + * + * <p>When this override is applied the min aspect ratio given in the app's manifest will be * overridden to the largest enabled aspect ratio treatment unless the app's manifest value * is higher. The treatment will also apply if no value is provided in the manifest. * @@ -97,9 +98,8 @@ class AppCompatCameraOverrides { * <li>Per-app override is enabled * </ul> */ - boolean shouldOverrideMinAspectRatioForCamera() { - return isCameraActive() && mAllowMinAspectRatioOverrideOptProp - .shouldEnableWithOptInOverrideAndOptOutProperty( + boolean isOverrideMinAspectRatioForCameraEnabled() { + return mAllowMinAspectRatioOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty( isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); } @@ -174,24 +174,6 @@ class AppCompatCameraOverrides { OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT); } - /** - * @return {@code true} if the Camera is active for the current activity - */ - boolean isCameraActive() { - return mActivityRecord.mDisplayContent != null - && mActivityRecord.mDisplayContent.mAppCompatCameraPolicy - .isCameraActive(mActivityRecord, /* mustBeFullscreen */ true); - } - - /** - * @return {@code true} if the configuration needs to be recomputed after a camera state update. - */ - boolean shouldRecomputeConfigurationForCameraCompat() { - return isOverrideOrientationOnlyForCameraEnabled() - || isCameraCompatSplitScreenAspectRatioAllowed() - || shouldOverrideMinAspectRatioForCamera(); - } - boolean isOverrideOrientationOnlyForCameraEnabled() { return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); } diff --git a/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java b/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java index a42b8794b43d..67bfd7605128 100644 --- a/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java +++ b/services/core/java/com/android/server/wm/AppCompatCameraPolicy.java @@ -166,6 +166,9 @@ class AppCompatCameraPolicy { : SCREEN_ORIENTATION_UNSPECIFIED; } + /** + * @return {@code true} if the Camera is active for the provided {@link ActivityRecord}. + */ boolean isCameraActive(@NonNull ActivityRecord activity, boolean mustBeFullscreen) { return mDisplayRotationCompatPolicy != null && mDisplayRotationCompatPolicy.isCameraActive(activity, mustBeFullscreen); @@ -179,4 +182,13 @@ class AppCompatCameraPolicy { return null; } + /** + * Whether we should apply the min aspect ratio per-app override only when an app is connected + * to the camera. + */ + boolean shouldOverrideMinAspectRatioForCamera(@NonNull ActivityRecord activityRecord) { + return isCameraActive(activityRecord, /* mustBeFullscreen= */ true) + && activityRecord.mAppCompatController.getAppCompatCameraOverrides() + .isOverrideMinAspectRatioForCameraEnabled(); + } } diff --git a/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java b/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java index c5506de419d0..7477c6272d89 100644 --- a/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java +++ b/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java @@ -58,13 +58,16 @@ class AppCompatOrientationPolicy { && displayContent.getIgnoreOrientationRequest(); final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride(); + final boolean isCameraActive = displayContent != null + && displayContent.mAppCompatCameraPolicy.isCameraActive(mActivityRecord, + /* mustBeFullscreen */ true); if (shouldApplyUserFullscreenOverride && isIgnoreOrientationRequestEnabled // Do not override orientation to fullscreen for camera activities. // Fixed-orientation activities are rarely tested in other orientations, and it // often results in sideways or stretched previews. As the camera compat treatment // targets fixed-orientation activities, overriding the orientation disables the // treatment. - && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) { + && !isCameraActive) { Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for " + mActivityRecord + " is overridden to " + screenOrientationToString(SCREEN_ORIENTATION_USER) @@ -110,7 +113,7 @@ class AppCompatOrientationPolicy { // often results in sideways or stretched previews. As the camera compat treatment // targets fixed-orientation activities, overriding the orientation disables the // treatment. - && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) { + && !isCameraActive) { Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for " + mActivityRecord + " is overridden to " + screenOrientationToString(SCREEN_ORIENTATION_USER)); diff --git a/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java b/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java index ff1742b70edc..192469183a54 100644 --- a/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java +++ b/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java @@ -198,9 +198,11 @@ public class DesktopAppCompatAspectRatioPolicy { return aspectRatioOverrides.getUserMinAspectRatio(); } + final DisplayContent dc = task.mDisplayContent; + final boolean shouldOverrideMinAspectRatioForCamera = dc != null + && dc.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() - && !mAppCompatOverrides.getAppCompatCameraOverrides() - .shouldOverrideMinAspectRatioForCamera()) { + && !shouldOverrideMinAspectRatioForCamera) { return info.getMinAspectRatio(); } diff --git a/services/core/java/com/android/server/wm/Dimmer.java b/services/core/java/com/android/server/wm/Dimmer.java index 2d1eb419a0bf..c5643ea54623 100644 --- a/services/core/java/com/android/server/wm/Dimmer.java +++ b/services/core/java/com/android/server/wm/Dimmer.java @@ -55,7 +55,7 @@ class Dimmer { SurfaceControl mDimSurface; final WindowContainer<?> mHostContainer; // The last container to request to dim - private WindowContainer<?> mLastRequestedDimContainer; + private WindowState mLastDimmingWindow; /** Animation */ private final DimmerAnimationHelper mAnimationHelper; boolean mSkipAnimation = false; @@ -129,8 +129,8 @@ class Dimmer { * Set the parameters to prepare the dim to be relative parented to the dimming container */ void prepareReparent(@NonNull WindowContainer<?> geometryParent, - @NonNull WindowContainer<?> relativeParent, int relativeLayer) { - mAnimationHelper.setRequestedRelativeParent(relativeParent, relativeLayer); + @NonNull WindowState relativeParent) { + mAnimationHelper.setRequestedRelativeParent(relativeParent); mAnimationHelper.setRequestedGeometryParent(geometryParent); } @@ -146,7 +146,7 @@ class Dimmer { * Whether anyone is currently requesting the dim */ boolean isDimming() { - return mLastRequestedDimContainer != null + return mLastDimmingWindow != null && (mHostContainer.isVisibleRequested() || !Flags.useTasksDimOnly()); } @@ -186,7 +186,7 @@ class Dimmer { */ void resetDimStates() { if (mDimState != null) { - mDimState.mLastRequestedDimContainer = null; + mDimState.mLastDimmingWindow = null; } } @@ -200,7 +200,7 @@ class Dimmer { * @param alpha Dim amount * @param blurRadius Blur amount */ - protected void adjustAppearance(@NonNull WindowContainer<?> dimmingContainer, + protected void adjustAppearance(@NonNull WindowState dimmingContainer, float alpha, int blurRadius) { final DimState d = obtainDimState(dimmingContainer); d.prepareLookChange(alpha, blurRadius); @@ -218,14 +218,13 @@ class Dimmer { * continue dimming. Indeed, this method won't be able to keep dimming or get a new DimState * without also adjusting the appearance. * @param geometryParent The container that defines the geometry of the dim - * @param dimmingContainer The container which to dim above. Should be a child of the host. - * @param relativeLayer The position of the dim wrt the container + * @param dimmingContainer The container that is dimming. The dim layer will be rel-z + * parented below it */ public void adjustPosition(@NonNull WindowContainer<?> geometryParent, - @NonNull WindowContainer<?> dimmingContainer, - int relativeLayer) { + @NonNull WindowState dimmingContainer) { if (mDimState != null) { - mDimState.prepareReparent(geometryParent, dimmingContainer, relativeLayer); + mDimState.prepareReparent(geometryParent, dimmingContainer); } } @@ -250,9 +249,9 @@ class Dimmer { if (!Flags.useTasksDimOnly()) { mDimState.adjustSurfaceLayout(t); } - final WindowState ws = mDimState.mLastRequestedDimContainer.asWindowState(); - if (!mDimState.mIsVisible && ws != null && ws.mActivityRecord != null - && ws.mActivityRecord.mStartingData != null) { + if (!mDimState.mIsVisible && mDimState.mLastDimmingWindow != null + && mDimState.mLastDimmingWindow.mActivityRecord != null + && mDimState.mLastDimmingWindow.mActivityRecord.mStartingData != null) { // Skip enter animation while starting window is on top of its activity mDimState.mSkipAnimation = true; } @@ -262,11 +261,11 @@ class Dimmer { } @NonNull - private DimState obtainDimState(@NonNull WindowContainer<?> container) { + private DimState obtainDimState(@NonNull WindowState window) { if (mDimState == null) { mDimState = new DimState(); } - mDimState.mLastRequestedDimContainer = container; + mDimState.mLastDimmingWindow = window; return mDimState; } diff --git a/services/core/java/com/android/server/wm/DimmerAnimationHelper.java b/services/core/java/com/android/server/wm/DimmerAnimationHelper.java index 4abf80618f6c..faf6dc667916 100644 --- a/services/core/java/com/android/server/wm/DimmerAnimationHelper.java +++ b/services/core/java/com/android/server/wm/DimmerAnimationHelper.java @@ -48,9 +48,8 @@ public class DimmerAnimationHelper { static class Change { private float mAlpha = -1f; private int mBlurRadius = -1; - private WindowContainer<?> mDimmingContainer = null; + private WindowState mDimmingContainer = null; private WindowContainer<?> mGeometryParent = null; - private int mRelativeLayer = -1; private static final float EPSILON = 0.0001f; Change() {} @@ -64,7 +63,6 @@ public class DimmerAnimationHelper { mBlurRadius = other.mBlurRadius; mDimmingContainer = other.mDimmingContainer; mGeometryParent = other.mGeometryParent; - mRelativeLayer = other.mRelativeLayer; } // Same alpha and blur @@ -84,7 +82,7 @@ public class DimmerAnimationHelper { @Override public String toString() { return "Dim state: alpha=" + mAlpha + ", blur=" + mBlurRadius + ", container=" - + mDimmingContainer + ", relativePosition=" + mRelativeLayer; + + mDimmingContainer + ", geometryParent " + mGeometryParent; } } @@ -100,14 +98,13 @@ public class DimmerAnimationHelper { } void setExitParameters() { - setRequestedRelativeParent(mRequestedProperties.mDimmingContainer, -1 /* relativeLayer */); + setRequestedRelativeParent(mRequestedProperties.mDimmingContainer); setRequestedAppearance(0f /* alpha */, 0 /* blur */); } // Sets a requested change without applying it immediately - void setRequestedRelativeParent(@NonNull WindowContainer<?> relativeParent, int relativeLayer) { + void setRequestedRelativeParent(@NonNull WindowState relativeParent) { mRequestedProperties.mDimmingContainer = relativeParent; - mRequestedProperties.mRelativeLayer = relativeLayer; } // Sets the requested layer to reparent the dim to without applying it immediately @@ -124,7 +121,7 @@ public class DimmerAnimationHelper { /** * Commit the last changes we received. Called after * {@link Change#setExitParameters()}, - * {@link Change#setRequestedRelativeParent(WindowContainer, int)}, or + * {@link Change#setRequestedRelativeParent(WindowContainer)}, or * {@link Change#setRequestedAppearance(float, int)} */ void applyChanges(@NonNull SurfaceControl.Transaction t, @NonNull Dimmer.DimState dim) { @@ -147,8 +144,8 @@ public class DimmerAnimationHelper { reparent(dim.mDimSurface, startProperties.mGeometryParent != mRequestedProperties.mGeometryParent ? mRequestedProperties.mGeometryParent.getSurfaceControl() : null, - mRequestedProperties.mDimmingContainer.getSurfaceControl(), - mRequestedProperties.mRelativeLayer, t); + mRequestedProperties.mDimmingContainer != startProperties.mDimmingContainer + ? mRequestedProperties.mDimmingContainer.getSurfaceControl() : null, t); if (!startProperties.hasSameVisualProperties(mRequestedProperties)) { stopCurrentAnimation(dim.mDimSurface); @@ -187,9 +184,11 @@ public class DimmerAnimationHelper { mLocalAnimationAdapter.startAnimation(dim.mDimSurface, t, ANIMATION_TYPE_DIMMER, /* finishCallback */ (type, animator) -> { synchronized (dim.mHostContainer.mWmService.mGlobalLock) { - setCurrentAlphaBlur(dim.mDimSurface, t); + SurfaceControl.Transaction finishTransaction = + dim.mHostContainer.getSyncTransaction(); + setCurrentAlphaBlur(dim.mDimSurface, finishTransaction); if (targetAlpha == 0f && !dim.isDimming()) { - dim.remove(t); + dim.remove(finishTransaction); } mLocalAnimationAdapter = null; mAlphaAnimationSpec = null; @@ -232,14 +231,15 @@ public class DimmerAnimationHelper { */ static void reparent(@NonNull SurfaceControl dimLayer, @Nullable SurfaceControl newGeometryParent, - @NonNull SurfaceControl relativeParent, - int relativePosition, + @Nullable SurfaceControl newRelativeParent, @NonNull SurfaceControl.Transaction t) { try { if (newGeometryParent != null) { t.reparent(dimLayer, newGeometryParent); } - t.setRelativeLayer(dimLayer, relativeParent, relativePosition); + if (newRelativeParent != null) { + t.setRelativeLayer(dimLayer, newRelativeParent, -1); + } } catch (NullPointerException e) { Log.w(TAG, "Tried to change parent of dim " + dimLayer + " after remove", e); } @@ -256,10 +256,13 @@ public class DimmerAnimationHelper { private static long getDimDuration(@NonNull WindowContainer<?> container) { // Use the same duration as the animation on the WindowContainer - AnimationAdapter animationAdapter = container.mSurfaceAnimator.getAnimation(); - final float durationScale = container.mWmService.getTransitionAnimationScaleLocked(); - return animationAdapter == null ? (long) (DEFAULT_DIM_ANIM_DURATION_MS * durationScale) - : animationAdapter.getDurationHint(); + if (container.mSurfaceAnimator != null) { + AnimationAdapter animationAdapter = container.mSurfaceAnimator.getAnimation(); + final float durationScale = container.mWmService.getTransitionAnimationScaleLocked(); + return animationAdapter == null ? (long) (DEFAULT_DIM_ANIM_DURATION_MS * durationScale) + : animationAdapter.getDurationHint(); + } + return 0; } /** diff --git a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java index 27d97677bb13..efc38439bfcf 100644 --- a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java @@ -408,9 +408,26 @@ final class DisplayRotationCompatPolicy implements CameraStateMonitor.CameraComp private void recomputeConfigurationForCameraCompatIfNeeded( @NonNull ActivityRecord activityRecord) { - if (activityRecord.mAppCompatController.getAppCompatCameraOverrides() - .shouldRecomputeConfigurationForCameraCompat()) { + if (shouldRecomputeConfigurationForCameraCompat(activityRecord)) { activityRecord.recomputeConfiguration(); } } + + /** + * @return {@code true} if the configuration needs to be recomputed after a camera state update. + */ + private boolean shouldRecomputeConfigurationForCameraCompat( + @NonNull ActivityRecord activityRecord) { + final AppCompatCameraOverrides overrides = activityRecord.mAppCompatController + .getAppCompatCameraOverrides(); + return overrides.isOverrideOrientationOnlyForCameraEnabled() + || overrides.isCameraCompatSplitScreenAspectRatioAllowed() + || shouldOverrideMinAspectRatio(activityRecord); + } + + private boolean shouldOverrideMinAspectRatio(@NonNull ActivityRecord activityRecord) { + return activityRecord.mAppCompatController.getAppCompatCameraOverrides() + .isOverrideMinAspectRatioForCameraEnabled() + && isCameraActive(activityRecord, /* mustBeFullscreen= */ true); + } } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 8c93b4fe447c..3bb273c55f55 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3192,13 +3192,6 @@ class Task extends TaskFragment { return "Task=" + mTaskId; } - WindowContainer<?> getDimmerParent() { - if (!inMultiWindowMode() && isTranslucentForTransition()) { - return getRootDisplayArea(); - } - return this; - } - @Deprecated @Override Dimmer getDimmer() { @@ -3222,6 +3215,13 @@ class Task extends TaskFragment { return mDimmer; } + boolean isSuitableForDimming() { + // If the window is in multi-window mode, we want to dim at the Task level to ensure the dim + // bounds match the area the app lives in. + // If translucent, we will move the dim to the display area + return inMultiWindowMode() || !isTranslucentAndVisible(); + } + @Override void prepareSurfaces() { mDimmer.resetDimStates(); diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 1e3de12b6d4e..366cf4d039b8 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -492,12 +492,8 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { boolean canApplyDim(@NonNull Task task) { if (mTransientLaunches == null) return true; if (Flags.useTasksDimOnly()) { - WindowContainer<?> dimmerParent = task.getDimmerParent(); - if (dimmerParent == null) { - return false; - } - // Always allow to dim if the host only affects its task. - if (dimmerParent.asTask() == task) { + if (task.isSuitableForDimming()) { + // Always allow to dim if the dimming occurs at task level (dim parented to task) return true; } } else { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d63cdcd4e32a..459a509a3b3c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1547,7 +1547,23 @@ public class WindowManagerService extends IWindowManager.Stub return WindowManagerGlobal.ADD_APP_EXITING; } - final DisplayContent displayContent = getDisplayContentOrCreate(displayId, attrs.token); + if (type >= FIRST_SUB_WINDOW && type <= LAST_SUB_WINDOW) { + parentWindow = windowForClientLocked(null, attrs.token, false); + if (parentWindow == null) { + ProtoLog.w(WM_ERROR, "Attempted to add window with token that is not a window: " + + "%s. Aborting.", attrs.token); + return WindowManagerGlobal.ADD_BAD_SUBWINDOW_TOKEN; + } + if (parentWindow.mAttrs.type >= FIRST_SUB_WINDOW + && parentWindow.mAttrs.type <= LAST_SUB_WINDOW) { + ProtoLog.w(WM_ERROR, "Attempted to add window with token that is a sub-window: " + + "%s. Aborting.", attrs.token); + return WindowManagerGlobal.ADD_BAD_SUBWINDOW_TOKEN; + } + } + final DisplayContent displayContent = parentWindow != null + ? parentWindow.mDisplayContent + : getDisplayContentOrCreate(displayId, attrs.token); if (displayContent == null) { ProtoLog.w(WM_ERROR, "Attempted to add window to a display that does " @@ -1567,21 +1583,6 @@ public class WindowManagerService extends IWindowManager.Stub return WindowManagerGlobal.ADD_DUPLICATE_ADD; } - if (type >= FIRST_SUB_WINDOW && type <= LAST_SUB_WINDOW) { - parentWindow = windowForClientLocked(null, attrs.token, false); - if (parentWindow == null) { - ProtoLog.w(WM_ERROR, "Attempted to add window with token that is not a window: " - + "%s. Aborting.", attrs.token); - return WindowManagerGlobal.ADD_BAD_SUBWINDOW_TOKEN; - } - if (parentWindow.mAttrs.type >= FIRST_SUB_WINDOW - && parentWindow.mAttrs.type <= LAST_SUB_WINDOW) { - ProtoLog.w(WM_ERROR, "Attempted to add window with token that is a sub-window: " - + "%s. Aborting.", attrs.token); - return WindowManagerGlobal.ADD_BAD_SUBWINDOW_TOKEN; - } - } - if (type == TYPE_PRESENTATION || type == TYPE_PRIVATE_PRESENTATION) { mDisplayManagerInternal.onPresentation(displayContent.getDisplay().getDisplayId(), /*isShown=*/ true); diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 256d0c661634..021be5727bf6 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -5196,14 +5196,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP Dimmer dimmer; WindowContainer<?> geometryParent = task; if (Flags.useTasksDimOnly()) { - if (task != null) { - geometryParent = task.getDimmerParent(); - dimmer = task.mDimmer; - } else { - RootDisplayArea displayArea = getRootDisplayArea(); - geometryParent = displayArea; - dimmer = displayArea != null ? displayArea.getDimmer() : null; - } + geometryParent = getDimParent(); + dimmer = getDimController(); if (dimmer == null) { ProtoLog.e(WM_DEBUG_DIMMER, "WindowState %s does not have task or" + " display area for dimming", this); @@ -5216,9 +5210,28 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (isVisibleNow()) { dimmer.adjustAppearance(this, dimAmount, blurRadius); } - dimmer.adjustPosition(geometryParent, - this /* relativeParent */, -1 /* relativeLayer */); + dimmer.adjustPosition(geometryParent, this /* relativeParent */); + } + } + + private Dimmer getDimController() { + Task task = getTask(); + if (task != null) { + return task.mDimmer; + } + RootDisplayArea displayArea = getRootDisplayArea(); + if (displayArea != null) { + return displayArea.getDimmer(); + } + return null; + } + + private WindowContainer<?> getDimParent() { + Task task = getTask(); + if (task != null && task.isSuitableForDimming()) { + return task; } + return getRootDisplayArea(); } private boolean shouldDrawBlurBehind() { diff --git a/services/core/jni/com_android_server_vibrator_VibratorController.cpp b/services/core/jni/com_android_server_vibrator_VibratorController.cpp index 5c5ac28b2169..39c0c3ef1847 100644 --- a/services/core/jni/com_android_server_vibrator_VibratorController.cpp +++ b/services/core/jni/com_android_server_vibrator_VibratorController.cpp @@ -54,6 +54,9 @@ static struct { jmethodID setCompositionSizeMax; jmethodID setQFactor; jmethodID setFrequencyProfile; + jmethodID setMaxEnvelopeEffectSize; + jmethodID setMinEnvelopeEffectControlPointDurationMillis; + jmethodID setMaxEnvelopeEffectControlPointDurationMillis; } sVibratorInfoBuilderClassInfo; static struct { jfieldID id; @@ -484,6 +487,25 @@ static jboolean vibratorGetInfo(JNIEnv* env, jclass /* clazz */, jlong ptr, env->CallObjectMethod(vibratorInfoBuilder, sVibratorInfoBuilderClassInfo.setQFactor, static_cast<jfloat>(info.qFactor.value())); } + if (info.maxEnvelopeEffectSize.isOk()) { + env->CallObjectMethod(vibratorInfoBuilder, + sVibratorInfoBuilderClassInfo.setMaxEnvelopeEffectSize, + static_cast<jint>(info.maxEnvelopeEffectSize.value())); + } + if (info.minEnvelopeEffectControlPointDuration.isOk()) { + env->CallObjectMethod(vibratorInfoBuilder, + sVibratorInfoBuilderClassInfo + .setMinEnvelopeEffectControlPointDurationMillis, + static_cast<jint>( + info.minEnvelopeEffectControlPointDuration.value().count())); + } + if (info.maxEnvelopeEffectControlPointDuration.isOk()) { + env->CallObjectMethod(vibratorInfoBuilder, + sVibratorInfoBuilderClassInfo + .setMaxEnvelopeEffectControlPointDurationMillis, + static_cast<jint>( + info.maxEnvelopeEffectControlPointDuration.value().count())); + } jfloat minFrequency = static_cast<jfloat>(info.minFrequency.valueOr(NAN)); jfloat resonantFrequency = static_cast<jfloat>(info.resonantFrequency.valueOr(NAN)); @@ -580,6 +602,17 @@ int register_android_server_vibrator_VibratorController(JavaVM* jvm, JNIEnv* env GetMethodIDOrDie(env, vibratorInfoBuilderClass, "setFrequencyProfile", "(Landroid/os/VibratorInfo$FrequencyProfile;)" "Landroid/os/VibratorInfo$Builder;"); + sVibratorInfoBuilderClassInfo.setMaxEnvelopeEffectSize = + GetMethodIDOrDie(env, vibratorInfoBuilderClass, "setMaxEnvelopeEffectSize", + "(I)Landroid/os/VibratorInfo$Builder;"); + sVibratorInfoBuilderClassInfo.setMinEnvelopeEffectControlPointDurationMillis = + GetMethodIDOrDie(env, vibratorInfoBuilderClass, + "setMinEnvelopeEffectControlPointDurationMillis", + "(I)Landroid/os/VibratorInfo$Builder;"); + sVibratorInfoBuilderClassInfo.setMaxEnvelopeEffectControlPointDurationMillis = + GetMethodIDOrDie(env, vibratorInfoBuilderClass, + "setMaxEnvelopeEffectControlPointDurationMillis", + "(I)Landroid/os/VibratorInfo$Builder;"); return jniRegisterNativeMethods(env, "com/android/server/vibrator/VibratorController$NativeWrapper", diff --git a/services/foldables/devicestateprovider/tests/Android.bp b/services/foldables/devicestateprovider/tests/Android.bp index 84a6df38e0a0..4352c15879e1 100644 --- a/services/foldables/devicestateprovider/tests/Android.bp +++ b/services/foldables/devicestateprovider/tests/Android.bp @@ -6,9 +6,9 @@ android_test { name: "foldable-device-state-provider-tests", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], jni_libs: [ "libdexmakerjvmtiagent", diff --git a/services/tests/InputMethodSystemServerTests/Android.bp b/services/tests/InputMethodSystemServerTests/Android.bp index 9044259cb39f..e6ff5068368f 100644 --- a/services/tests/InputMethodSystemServerTests/Android.bp +++ b/services/tests/InputMethodSystemServerTests/Android.bp @@ -50,9 +50,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], data: [ @@ -79,8 +79,8 @@ android_ravenwood_test { "services", ], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], srcs: [ "src/com/android/server/inputmethod/**/ClientControllerTest.java", @@ -121,9 +121,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], data: [ diff --git a/services/tests/PackageManagerServiceTests/host/test-apps/DeviceSide/Android.bp b/services/tests/PackageManagerServiceTests/host/test-apps/DeviceSide/Android.bp index 73cec6c13d6d..71ada2e973ce 100644 --- a/services/tests/PackageManagerServiceTests/host/test-apps/DeviceSide/Android.bp +++ b/services/tests/PackageManagerServiceTests/host/test-apps/DeviceSide/Android.bp @@ -29,7 +29,7 @@ android_test_helper_app { sdk_version: "test_current", srcs: ["src/**/*.kt"], libs: [ - "android.test.base", + "android.test.base.stubs.test", ], static_libs: [ "androidx.annotation_annotation", diff --git a/services/tests/PackageManagerServiceTests/server/Android.bp b/services/tests/PackageManagerServiceTests/server/Android.bp index e26213eadde3..24e931c3cbb3 100644 --- a/services/tests/PackageManagerServiceTests/server/Android.bp +++ b/services/tests/PackageManagerServiceTests/server/Android.bp @@ -65,9 +65,9 @@ android_test { "android.hardware.tv.cec-V1.0-java", "android.hardware.vibrator-V3-java", "android.hidl.manager-V1.0-java", - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], platform_apis: true, diff --git a/services/tests/VpnTests/Android.bp b/services/tests/VpnTests/Android.bp index a5011a8d8b00..ee20f1a105a4 100644 --- a/services/tests/VpnTests/Android.bp +++ b/services/tests/VpnTests/Android.bp @@ -38,8 +38,8 @@ android_test { "framework-connectivity-t.impl", "framework", "framework-res", - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs", + "android.test.base.stubs", + "android.test.mock.stubs", ], } diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt index 3bc44111ba08..edcbb9e81d87 100644 --- a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt +++ b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt @@ -21,6 +21,8 @@ import android.app.appfunctions.AppFunctionRuntimeMetadata.createAppFunctionRunt import android.app.appfunctions.AppFunctionRuntimeMetadata.createParentAppFunctionRuntimeSchema import android.app.appsearch.AppSearchBatchResult import android.app.appsearch.AppSearchManager +import android.app.appsearch.GenericDocument +import android.app.appsearch.GetByDocumentIdRequest import android.app.appsearch.PutDocumentsRequest import android.app.appsearch.RemoveByDocumentIdRequest import android.app.appsearch.SearchSpec @@ -44,16 +46,16 @@ class FutureAppSearchSessionTest { @After fun clearData() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { val setSchemaRequest = SetSchemaRequest.Builder().setForceOverride(true).build() - it.setSchema(setSchemaRequest) + it.setSchema(setSchemaRequest).get() } } @Test fun setSchema() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { session -> val setSchemaRequest = SetSchemaRequest.Builder() .addSchemas( @@ -71,7 +73,7 @@ class FutureAppSearchSessionTest { @Test fun put() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { session -> val setSchemaRequest = SetSchemaRequest.Builder() .addSchemas( @@ -97,7 +99,7 @@ class FutureAppSearchSessionTest { @Test fun remove() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { session -> val setSchemaRequest = SetSchemaRequest.Builder() .addSchemas( @@ -131,7 +133,7 @@ class FutureAppSearchSessionTest { @Test fun search() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { session -> val setSchemaRequest = SetSchemaRequest.Builder() .addSchemas( @@ -163,7 +165,7 @@ class FutureAppSearchSessionTest { @Test fun getByDocumentId() { val searchContext = AppSearchManager.SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { session -> val setSchemaRequest = SetSchemaRequest.Builder() .addSchemas( @@ -171,24 +173,24 @@ class FutureAppSearchSessionTest { createAppFunctionRuntimeSchema(TEST_PACKAGE_NAME), ) .build() - val schema = session.setSchema(setSchemaRequest) + session.setSchema(setSchemaRequest).get() val appFunctionRuntimeMetadata = AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID, "").build() val putDocumentsRequest: PutDocumentsRequest = PutDocumentsRequest.Builder() .addGenericDocuments(appFunctionRuntimeMetadata) .build() - val putResult = session.put(putDocumentsRequest) + session.put(putDocumentsRequest) + val getRequest = + GetByDocumentIdRequest.Builder(APP_FUNCTION_RUNTIME_NAMESPACE) + .addIds(appFunctionRuntimeMetadata.id) + .build() - val genricDocument = - session - .getByDocumentId( - /* documentId= */ "${TEST_PACKAGE_NAME}/${TEST_FUNCTION_ID}", - APP_FUNCTION_RUNTIME_NAMESPACE, - ) - .get() + val genericDocument: GenericDocument? = + session.getByDocumentId(getRequest).get().successes[appFunctionRuntimeMetadata.id] - val foundAppFunctionRuntimeMetadata = AppFunctionRuntimeMetadata(genricDocument) + assertThat(genericDocument).isNotNull() + val foundAppFunctionRuntimeMetadata = AppFunctionRuntimeMetadata(genericDocument!!) assertThat(foundAppFunctionRuntimeMetadata.functionId).isEqualTo(TEST_FUNCTION_ID) } } diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt index 1fa55c7090aa..38cba6537c95 100644 --- a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt +++ b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt @@ -46,9 +46,9 @@ class FutureGlobalSearchSessionTest { @After fun clearData() { val searchContext = SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { val setSchemaRequest = SetSchemaRequest.Builder().setForceOverride(true).build() - it.setSchema(setSchemaRequest) + it.setSchema(setSchemaRequest).get() } } @@ -83,7 +83,7 @@ class FutureGlobalSearchSessionTest { assertThat(registerPackageObserver).isNull() // Trigger document change val searchContext = SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { session -> + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { session -> val setSchemaRequest = SetSchemaRequest.Builder() .addSchemas( diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt index 5769e07ee58d..3ebf68937674 100644 --- a/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt +++ b/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt @@ -41,9 +41,9 @@ class MetadataSyncAdapterTest { @After fun clearData() { val searchContext = SearchContext.Builder(TEST_DB).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { val setSchemaRequest = SetSchemaRequest.Builder().setForceOverride(true).build() - it.setSchema(setSchemaRequest) + it.setSchema(setSchemaRequest).get() } } @@ -61,7 +61,7 @@ class MetadataSyncAdapterTest { .build() val putDocumentsRequest: PutDocumentsRequest = PutDocumentsRequest.Builder().addGenericDocuments(functionRuntimeMetadata).build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { val setSchemaResponse = it.setSchema(setSchemaRequest).get() assertThat(setSchemaResponse).isNotNull() val appSearchBatchResult = it.put(putDocumentsRequest).get() @@ -71,7 +71,7 @@ class MetadataSyncAdapterTest { val metadataSyncAdapter = MetadataSyncAdapter( testExecutor, - FutureAppSearchSession(appSearchManager, testExecutor, searchContext), + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext), ) val packageToFunctionIdMap = metadataSyncAdapter.getPackageToFunctionIdMap( @@ -111,7 +111,7 @@ class MetadataSyncAdapterTest { functionRuntimeMetadata3, ) .build() - FutureAppSearchSession(appSearchManager, testExecutor, searchContext).use { + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext).use { val setSchemaResponse = it.setSchema(setSchemaRequest).get() assertThat(setSchemaResponse).isNotNull() val appSearchBatchResult = it.put(putDocumentsRequest).get() @@ -121,7 +121,7 @@ class MetadataSyncAdapterTest { val metadataSyncAdapter = MetadataSyncAdapter( testExecutor, - FutureAppSearchSession(appSearchManager, testExecutor, searchContext), + FutureAppSearchSessionImpl(appSearchManager, testExecutor, searchContext), ) val packageToFunctionIdMap = metadataSyncAdapter.getPackageToFunctionIdMap( diff --git a/services/tests/displayservicetests/Android.bp b/services/tests/displayservicetests/Android.bp index 61350bf24868..fe73025e9736 100644 --- a/services/tests/displayservicetests/Android.bp +++ b/services/tests/displayservicetests/Android.bp @@ -16,7 +16,7 @@ android_test { ], libs: [ - "android.test.mock", + "android.test.mock.stubs.system", ], static_libs: [ diff --git a/services/tests/mockingservicestests/Android.bp b/services/tests/mockingservicestests/Android.bp index 01435ff7f253..6fc80b836521 100644 --- a/services/tests/mockingservicestests/Android.bp +++ b/services/tests/mockingservicestests/Android.bp @@ -80,9 +80,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", "servicestests-core-utils", ], @@ -118,14 +118,14 @@ java_library { "mockito-target-extended-minus-junit4", ], libs: [ - "android.test.runner", + "android.test.runner.stubs.system", ], } android_ravenwood_test { name: "FrameworksMockingServicesTestsRavenwood", libs: [ - "android.test.mock", + "android.test.mock.stubs.system", ], static_libs: [ "androidx.annotation_annotation", diff --git a/services/tests/mockingservicestests/src/com/android/server/rollback/Android.bp b/services/tests/mockingservicestests/src/com/android/server/rollback/Android.bp index 6a16d1e14795..677ecf47355d 100644 --- a/services/tests/mockingservicestests/src/com/android/server/rollback/Android.bp +++ b/services/tests/mockingservicestests/src/com/android/server/rollback/Android.bp @@ -37,9 +37,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], jni_libs: [ diff --git a/services/tests/powerservicetests/Android.bp b/services/tests/powerservicetests/Android.bp index f8cc6d0fedb6..f03043ea0ae0 100644 --- a/services/tests/powerservicetests/Android.bp +++ b/services/tests/powerservicetests/Android.bp @@ -23,7 +23,7 @@ android_test { ], libs: [ - "android.test.mock", + "android.test.mock.stubs.system", ], defaults: [ diff --git a/services/tests/powerstatstests/Android.bp b/services/tests/powerstatstests/Android.bp index 0e922ceee26e..d6ca10a23fb9 100644 --- a/services/tests/powerstatstests/Android.bp +++ b/services/tests/powerstatstests/Android.bp @@ -30,7 +30,7 @@ android_test { ], libs: [ - "android.test.base", + "android.test.base.stubs.system", ], resource_dirs: ["res/"], diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp index 914b29f44bb1..895cd1e44ca8 100644 --- a/services/tests/servicestests/Android.bp +++ b/services/tests/servicestests/Android.bp @@ -97,9 +97,9 @@ android_test { "android.hardware.tv.cec-V1.0-java", "android.hardware.vibrator-V3-java", "android.hidl.manager-V1.0-java", - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], platform_apis: true, @@ -153,7 +153,7 @@ android_test { android_ravenwood_test { name: "FrameworksServicesTestsRavenwood", libs: [ - "android.test.mock", + "android.test.mock.stubs.system", ], static_libs: [ "androidx.annotation_annotation", @@ -193,8 +193,8 @@ java_library { "src/com/android/server/devicepolicy/MockUtils.java", ], libs: [ - "android.test.mock", - "android.test.base", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", "mockito-target-minus-junit4", ], static_libs: [ @@ -219,7 +219,7 @@ java_library { "mockito-target-minus-junit4", ], libs: [ - "android.test.runner", + "android.test.runner.stubs.system", ], } @@ -245,7 +245,7 @@ java_library { "mockito-target-extended-minus-junit4", ], libs: [ - "android.test.runner", + "android.test.runner.stubs.system", ], } diff --git a/services/tests/timetests/Android.bp b/services/tests/timetests/Android.bp index 05a1433c128e..aae6acc7c53a 100644 --- a/services/tests/timetests/Android.bp +++ b/services/tests/timetests/Android.bp @@ -20,7 +20,7 @@ android_test { "services.core", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], platform_apis: true, certificate: "platform", test_suites: ["device-tests"], diff --git a/services/tests/uiservicestests/Android.bp b/services/tests/uiservicestests/Android.bp index e6cf0c38a10c..850d2f7f36a5 100644 --- a/services/tests/uiservicestests/Android.bp +++ b/services/tests/uiservicestests/Android.bp @@ -54,9 +54,9 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], dxflags: ["--multi-dex"], diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java index b5bc610f82ea..2effc692e877 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java @@ -30,9 +30,9 @@ import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -44,6 +44,8 @@ import android.app.PendingIntent; import android.app.Person; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.pm.ShortcutInfo; import android.os.SystemClock; import android.os.UserHandle; @@ -89,6 +91,8 @@ public class BubbleExtractorTest extends UiServiceTestCase { @Mock ShortcutHelper mShortcutHelper; @Mock + PackageManager mPackageManager; + @Mock ActivityManager mActivityManager; @Before @@ -98,6 +102,7 @@ public class BubbleExtractorTest extends UiServiceTestCase { mBubbleExtractor.initialize(mContext, mock(NotificationUsageStats.class)); mBubbleExtractor.setConfig(mConfig); mBubbleExtractor.setShortcutHelper(mShortcutHelper); + mBubbleExtractor.setPackageManager(mPackageManager); mBubbleExtractor.setActivityManager(mActivityManager); mChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, IMPORTANCE_DEFAULT); @@ -106,7 +111,7 @@ public class BubbleExtractorTest extends UiServiceTestCase { } /* NotificationRecord that fulfills conversation requirements (message style + shortcut) */ - private NotificationRecord getNotificationRecord(boolean addBubble) { + private NotificationRecord getNotificationRecord(boolean addBubble, UserHandle user) { final Builder builder = new Builder(getContext()) .setContentTitle("foo") .setSmallIcon(android.R.drawable.sym_def_app_icon) @@ -127,13 +132,13 @@ public class BubbleExtractorTest extends UiServiceTestCase { n.setBubbleMetadata(mBubbleMetadata); } StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, ID, TAG, UID, - PID, n, mUser, null, System.currentTimeMillis()); + PID, n, user, null, System.currentTimeMillis()); NotificationRecord r = new NotificationRecord(getContext(), sbn, mChannel); r.setShortcutInfo(mShortcutInfo); return r; } - void setUpIntentBubble(boolean isValid) { + void setUpIntentBubble(boolean isValid, UserHandle user) { when(mPendingIntent.getIntent()).thenReturn(mIntent); when(mBubbleMetadata.getIntent()).thenReturn(mPendingIntent); when(mBubbleMetadata.getShortcutId()).thenReturn(null); @@ -143,18 +148,21 @@ public class BubbleExtractorTest extends UiServiceTestCase { info.resizeMode = isValid ? RESIZE_MODE_RESIZEABLE : RESIZE_MODE_UNRESIZEABLE; - when(mIntent.resolveActivityInfo(any(), anyInt())).thenReturn(info); + ResolveInfo resolveInfo = new ResolveInfo(); + resolveInfo.activityInfo = info; + when(mPackageManager.resolveActivityAsUser(eq(mIntent), eq(0), eq(user.getIdentifier()))) + .thenReturn(resolveInfo); } - void setUpShortcutBubble(boolean isValid) { + void setUpShortcutBubble(boolean isValid, UserHandle user) { when(mBubbleMetadata.getShortcutId()).thenReturn(SHORTCUT_ID); when(mBubbleMetadata.getIntent()).thenReturn(null); ShortcutInfo answer = isValid ? mShortcutInfo : null; - when(mShortcutHelper.getValidShortcutInfo(SHORTCUT_ID, PKG, mUser)).thenReturn(answer); + when(mShortcutHelper.getValidShortcutInfo(SHORTCUT_ID, PKG, user)).thenReturn(answer); } - void setUpBubblesEnabled(boolean feature, int app, int channel) { - when(mConfig.bubblesEnabled(mUser)).thenReturn(feature); + void setUpBubblesEnabled(boolean feature, int app, int channel, UserHandle user) { + when(mConfig.bubblesEnabled(user)).thenReturn(feature); when(mConfig.getBubblePreference(anyString(), anyInt())).thenReturn(app); mChannel.setAllowBubbles(channel); } @@ -167,10 +175,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppYesChannelNo() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - ALLOW_BUBBLE_OFF /* channel */); + ALLOW_BUBBLE_OFF /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertFalse(r.canBubble()); @@ -181,10 +190,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppYesChannelDefault() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -195,10 +205,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppYesChannelYes() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - ALLOW_BUBBLE_ON /* channel */); + ALLOW_BUBBLE_ON /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -209,10 +220,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppYesChannelYesFeatureNo() { setUpBubblesEnabled(false /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - ALLOW_BUBBLE_ON /* channel */); + ALLOW_BUBBLE_ON /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -224,10 +236,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppNoChannelYes() throws Exception { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_NONE /* app */, - ALLOW_BUBBLE_ON /* channel */); + ALLOW_BUBBLE_ON /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -239,10 +252,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppNoChannelDefault() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_NONE /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -254,10 +268,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppSelectedChannelDefault() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_SELECTED /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -269,10 +284,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppSelectedChannelNo() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_SELECTED /* app */, - ALLOW_BUBBLE_OFF /* channel */); + ALLOW_BUBBLE_OFF /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); - NotificationRecord r = getNotificationRecord(true /* bubble */); + setUpShortcutBubble(true /* isValid */, mUser); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -284,11 +300,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppSeletedChannelYes() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_SELECTED /* app */, - ALLOW_BUBBLE_ON /* channel */); + ALLOW_BUBBLE_ON /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); + setUpShortcutBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -299,11 +316,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testAppSeletedChannelYesFeatureNo() { setUpBubblesEnabled(false /* feature */, BUBBLE_PREFERENCE_SELECTED /* app */, - ALLOW_BUBBLE_ON /* channel */); + ALLOW_BUBBLE_ON /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); + setUpShortcutBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); @@ -319,11 +337,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_previouslyRemoved() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); + setUpShortcutBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); r.setFlagBubbleRemoved(true); mBubbleExtractor.process(r); @@ -337,11 +356,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_true_shortcutBubble() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(true /* isValid */); + setUpShortcutBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertTrue(r.canBubble()); @@ -353,11 +373,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_true_intentBubble() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpIntentBubble(true /* isValid */); + setUpIntentBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertTrue(r.canBubble()); @@ -369,11 +390,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_noIntentInvalidShortcut() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpShortcutBubble(false /* isValid */); + setUpShortcutBubble(false /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); r.setShortcutInfo(null); mBubbleExtractor.process(r); @@ -386,11 +408,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_invalidIntentNoShortcut() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpIntentBubble(false /* isValid */); + setUpIntentBubble(false /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); r.setShortcutInfo(null); mBubbleExtractor.process(r); @@ -403,11 +426,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_noIntentNoShortcut() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); // Shortcut here is for the notification not the bubble - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertFalse(r.canBubble()); @@ -419,10 +443,11 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_noMetadata() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - NotificationRecord r = getNotificationRecord(false /* bubble */); + NotificationRecord r = getNotificationRecord(false /* bubble */, mUser); mBubbleExtractor.process(r); assertFalse(r.canBubble()); @@ -434,11 +459,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_noShortcut() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpIntentBubble(true /* isValid */); + setUpIntentBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); r.setShortcutInfo(null); r.getNotification().extras.putString(Notification.EXTRA_TEMPLATE, null); @@ -453,11 +479,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_notConversation() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(false); - setUpIntentBubble(true /* isValid */); + setUpIntentBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); r.userDemotedAppFromConvoSpace(true); r.getNotification().extras.putString(Notification.EXTRA_TEMPLATE, null); @@ -472,11 +499,12 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_lowRamDevice() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(true); - setUpIntentBubble(true /* isValid */); + setUpIntentBubble(true /* isValid */, mUser); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertFalse(r.canBubble()); @@ -488,12 +516,13 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_noIntent() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(true); - setUpIntentBubble(true /* isValid */); + setUpIntentBubble(true /* isValid */, mUser); when(mPendingIntent.getIntent()).thenReturn(null); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertFalse(r.canBubble()); @@ -505,13 +534,15 @@ public class BubbleExtractorTest extends UiServiceTestCase { public void testFlagBubble_false_noActivityInfo() { setUpBubblesEnabled(true /* feature */, BUBBLE_PREFERENCE_ALL /* app */, - DEFAULT_ALLOW_BUBBLE /* channel */); + DEFAULT_ALLOW_BUBBLE /* channel */, + mUser); when(mActivityManager.isLowRamDevice()).thenReturn(true); - setUpIntentBubble(true /* isValid */); + setUpIntentBubble(true /* isValid */, mUser); when(mPendingIntent.getIntent()).thenReturn(mIntent); - when(mIntent.resolveActivityInfo(any(), anyInt())).thenReturn(null); + when(mPackageManager.resolveActivityAsUser(eq(mIntent), eq(0), eq(mUser.getIdentifier()))) + .thenReturn(null); - NotificationRecord r = getNotificationRecord(true /* bubble */); + NotificationRecord r = getNotificationRecord(true /* bubble */, mUser); mBubbleExtractor.process(r); assertFalse(r.canBubble()); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index 6a1140cc84e9..196bc47572ba 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -1255,7 +1255,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { info.resizeMode = RESIZE_MODE_RESIZEABLE; ResolveInfo ri = new ResolveInfo(); ri.activityInfo = info; - when(mPackageManagerClient.resolveActivity(any(), anyInt())).thenReturn(ri); + when(mPackageManagerClient.resolveActivityAsUser(any(), anyInt(), anyInt())).thenReturn(ri); return new Notification.BubbleMetadata.Builder( mActivityIntent, diff --git a/services/tests/vibrator/Android.bp b/services/tests/vibrator/Android.bp index 2549ff5360ec..ed18c8b04c0f 100644 --- a/services/tests/vibrator/Android.bp +++ b/services/tests/vibrator/Android.bp @@ -17,9 +17,9 @@ android_test { libs: [ "android.hardware.vibrator-V3-java", - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], static_libs: [ diff --git a/services/tests/vibrator/utils/com/android/server/vibrator/FakeVibratorControllerProvider.java b/services/tests/vibrator/utils/com/android/server/vibrator/FakeVibratorControllerProvider.java index 031d1c29a215..946e1eaa5666 100644 --- a/services/tests/vibrator/utils/com/android/server/vibrator/FakeVibratorControllerProvider.java +++ b/services/tests/vibrator/utils/com/android/server/vibrator/FakeVibratorControllerProvider.java @@ -68,6 +68,9 @@ public final class FakeVibratorControllerProvider { private int[] mSupportedPrimitives; private int mCompositionSizeMax; private int mPwleSizeMax; + private int mMaxEnvelopeEffectSize; + private int mMinEnvelopeEffectControlPointDurationMillis; + private int mMaxEnvelopeEffectControlPointDurationMillis; private float mMinFrequency = Float.NaN; private float mResonantFrequency = Float.NaN; private float mFrequencyResolution = Float.NaN; @@ -217,6 +220,11 @@ public final class FakeVibratorControllerProvider { infoBuilder.setQFactor(mQFactor); infoBuilder.setFrequencyProfile(new VibratorInfo.FrequencyProfile( mResonantFrequency, mMinFrequency, mFrequencyResolution, mMaxAmplitudes)); + infoBuilder.setMaxEnvelopeEffectSize(mMaxEnvelopeEffectSize); + infoBuilder.setMinEnvelopeEffectControlPointDurationMillis( + mMinEnvelopeEffectControlPointDurationMillis); + infoBuilder.setMaxEnvelopeEffectControlPointDurationMillis( + mMaxEnvelopeEffectControlPointDurationMillis); return mIsInfoLoadSuccessful; } @@ -358,6 +366,26 @@ public final class FakeVibratorControllerProvider { } /** + * Set the maximum number of envelope effects control points supported in fake vibrator + * hardware. + */ + public void setMaxEnvelopeEffectSize(int envelopeEffectControlPointsMax) { + mMaxEnvelopeEffectSize = envelopeEffectControlPointsMax; + } + + /** Set the envelope effect minimum segment duration in fake vibrator hardware. */ + public void setMinEnvelopeEffectControlPointDurationMillis( + int minEnvelopeEffectControlPointDurationMillis) { + mMinEnvelopeEffectControlPointDurationMillis = minEnvelopeEffectControlPointDurationMillis; + } + + /** Set the envelope effect maximum segment duration in fake vibrator hardware. */ + public void setMaxEnvelopeEffectControlPointDurationMillis( + int maxEnvelopeEffectControlPointDurationMillis) { + mMaxEnvelopeEffectControlPointDurationMillis = maxEnvelopeEffectControlPointDurationMillis; + } + + /** * Return the amplitudes set by this controller, including zeroes for each time the vibrator was * turned off. */ diff --git a/services/tests/voiceinteractiontests/Android.bp b/services/tests/voiceinteractiontests/Android.bp index 8c70851f87df..5fbf02cfc984 100644 --- a/services/tests/voiceinteractiontests/Android.bp +++ b/services/tests/voiceinteractiontests/Android.bp @@ -49,9 +49,9 @@ android_test { ], libs: [ - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], certificate: "platform", diff --git a/services/tests/wmtests/Android.bp b/services/tests/wmtests/Android.bp index 289f8a90e0bd..4e59fe516608 100644 --- a/services/tests/wmtests/Android.bp +++ b/services/tests/wmtests/Android.bp @@ -76,9 +76,9 @@ android_test { libs: [ "android.hardware.power-V1-java", - "android.test.mock", - "android.test.base", - "android.test.runner", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], defaults: [ diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java index a7a08b25fba2..8227ed915c8e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java @@ -139,11 +139,6 @@ class AppCompatActivityRobot { /* isUnresizable */ true); } - void activateCameraInPolicy(boolean isCameraActive) { - doReturn(isCameraActive).when(mDisplayContent.mAppCompatCameraPolicy) - .isCameraActive(any(ActivityRecord.class), anyBoolean()); - } - void setDisplayNaturalOrientation(@Configuration.Orientation int naturalOrientation) { doReturn(naturalOrientation).when(mDisplayContent).getNaturalOrientation(); } 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 ba2a7335824c..d66c21a77fcd 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java @@ -267,7 +267,6 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { robot.conf().enableCameraCompatSplitScreenAspectRatio(true); robot.applyOnActivity((a) -> { a.createActivityWithComponentInNewTask(); - a.activateCameraInPolicy(true); a.setShouldCreateCompatDisplayInsets(false); }); @@ -276,27 +275,12 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { } @Test - public void testIsCameraActive() { - runTestScenario((robot) -> { - robot.applyOnActivity((a) -> { - a.createActivityWithComponent(); - a.activateCameraInPolicy(/* isCameraActive */ false); - robot.checkIsCameraActive(/* active */ false); - a.activateCameraInPolicy(/* isCameraActive */ true); - robot.checkIsCameraActive(/* active */ true); - }); - }); - } - - - @Test @EnableCompatChanges({OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA}) public void shouldOverrideMinAspectRatioForCamera_overrideEnabled_returnsTrue() { runTestScenario((robot) -> { robot.activity().createActivityWithComponent(); - robot.activity().activateCameraInPolicy(/* isCameraActive */ true); - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ true); + robot.checkIsOverrideMinAspectRatioForCameraEnabled(/* expected */ true); }); } @@ -306,21 +290,8 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { runTestScenario((robot) -> { robot.prop().enable(PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().activateCameraInPolicy(/* isCameraActive */ true); - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ true); - }); - } - - @Test - @EnableCompatChanges({OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA}) - public void shouldOverrideMinAspectRatioForCamera_propertyTrue_overrideEnabled_returnsFalse() { - runTestScenario((robot) -> { - robot.prop().enable(PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE); - robot.activity().createActivityWithComponent(); - robot.activity().activateCameraInPolicy(/* isCameraActive */ false); - - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ false); + robot.checkIsOverrideMinAspectRatioForCameraEnabled(/* expected */ true); }); } @@ -330,9 +301,8 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { runTestScenario((robot) -> { robot.prop().enable(PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().activateCameraInPolicy(/* isCameraActive */ true); - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ false); + robot.checkIsOverrideMinAspectRatioForCameraEnabled(/* expected */ false); }); } @@ -341,9 +311,8 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { public void shouldOverrideMinAspectRatioForCamera_overrideDisabled_returnsFalse() { runTestScenario((robot) -> { robot.activity().createActivityWithComponent(); - robot.activity().activateCameraInPolicy(/* isCameraActive */ true); - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ false); + robot.checkIsOverrideMinAspectRatioForCameraEnabled(/* expected */ false); }); } @@ -354,7 +323,7 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { robot.prop().disable(PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ false); + robot.checkIsOverrideMinAspectRatioForCameraEnabled(/* expected */ false); }); } @@ -364,9 +333,8 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { runTestScenario((robot) -> { robot.prop().disable(PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().activateCameraInPolicy(/* isCameraActive */ true); - robot.checkShouldOverrideMinAspectRatioForCamera(/* expected */ false); + robot.checkIsOverrideMinAspectRatioForCameraEnabled(/* expected */ false); }); } @@ -412,13 +380,9 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { .shouldApplyFreeformTreatmentForCameraCompat(), expected); } - void checkShouldOverrideMinAspectRatioForCamera(boolean expected) { + void checkIsOverrideMinAspectRatioForCameraEnabled(boolean expected) { Assert.assertEquals(getAppCompatCameraOverrides() - .shouldOverrideMinAspectRatioForCamera(), expected); - } - - void checkIsCameraActive(boolean active) { - Assert.assertEquals(getAppCompatCameraOverrides().isCameraActive(), active); + .isOverrideMinAspectRatioForCameraEnabled(), expected); } private AppCompatCameraOverrides getAppCompatCameraOverrides() { 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 2ae23f88812a..d91b38efd40b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java @@ -16,6 +16,8 @@ package com.android.server.wm; +import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA; + import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.window.flags.Flags.FLAG_CAMERA_COMPAT_FOR_FREEFORM; @@ -31,6 +33,9 @@ import android.platform.test.annotations.Presubmit; import androidx.annotation.NonNull; +import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges; +import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges; + import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; @@ -186,16 +191,6 @@ public class AppCompatCameraPolicyTest extends WindowTestsBase { }); } - /** - * Runs a test scenario providing a Robot. - */ - void runTestScenario(@NonNull Consumer<AppCompatCameraPolicyRobotTest> consumer) { - spyOn(mWm.mAppCompatConfiguration); - final AppCompatCameraPolicyRobotTest robot = - new AppCompatCameraPolicyRobotTest(mWm, mAtm, mSupervisor); - consumer.accept(robot); - } - @Test public void testIsCameraCompatTreatmentActive_whenTreatmentForTopActivityIsEnabled() { runTestScenario((robot) -> { @@ -220,6 +215,58 @@ public class AppCompatCameraPolicyTest extends WindowTestsBase { }); } + @Test + @EnableCompatChanges(OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA) + public void testShouldOverrideMinAspectRatioForCamera_whenCameraIsNotRunning() { + runTestScenario((robot) -> { + robot.applyOnActivity((a)-> { + robot.conf().enableCameraCompatTreatmentAtBuildTime(/* enabled= */ true); + a.createActivityWithComponentInNewTaskAndDisplay(); + a.setTopActivityCameraActive(/* active */ false); + }); + + robot.checkShouldOverrideMinAspectRatioForCamera(/* active */ false); + }); + } + + @Test + @DisableCompatChanges(OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA) + public void testShouldOverrideMinAspectRatioForCamera_whenCameraIsRunning_overrideDisabled() { + runTestScenario((robot) -> { + robot.applyOnActivity((a)-> { + robot.conf().enableCameraCompatTreatmentAtBuildTime(/* enabled= */ true); + a.createActivityWithComponentInNewTaskAndDisplay(); + a.setTopActivityCameraActive(/* active */ true); + }); + + robot.checkShouldOverrideMinAspectRatioForCamera(/* active */ false); + }); + } + + @Test + @EnableCompatChanges(OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA) + public void testShouldOverrideMinAspectRatioForCamera_whenCameraIsRunning_overrideEnabled() { + runTestScenario((robot) -> { + robot.applyOnActivity((a)-> { + robot.conf().enableCameraCompatTreatmentAtBuildTime(/* enabled= */ true); + a.createActivityWithComponentInNewTaskAndDisplay(); + a.setTopActivityCameraActive(/* active */ true); + }); + + robot.checkShouldOverrideMinAspectRatioForCamera(/* active */ true); + }); + } + + /** + * Runs a test scenario providing a Robot. + */ + void runTestScenario(@NonNull Consumer<AppCompatCameraPolicyRobotTest> consumer) { + final AppCompatCameraPolicyRobotTest robot = + new AppCompatCameraPolicyRobotTest(mWm, mAtm, mSupervisor); + consumer.accept(robot); + } + + private static class AppCompatCameraPolicyRobotTest extends AppCompatRobotBase { AppCompatCameraPolicyRobotTest(@NonNull WindowManagerService wm, @NonNull ActivityTaskManagerService atm, @@ -230,7 +277,14 @@ public class AppCompatCameraPolicyTest extends WindowTestsBase { @Override void onPostDisplayContentCreation(@NonNull DisplayContent displayContent) { super.onPostDisplayContentCreation(displayContent); + spyOn(displayContent.mAppCompatCameraPolicy); + if (displayContent.mAppCompatCameraPolicy.mDisplayRotationCompatPolicy != null) { + spyOn(displayContent.mAppCompatCameraPolicy.mDisplayRotationCompatPolicy); + } + if (displayContent.mAppCompatCameraPolicy.mCameraCompatFreeformPolicy != null) { + spyOn(displayContent.mAppCompatCameraPolicy.mCameraCompatFreeformPolicy); + } } void checkTopActivityHasDisplayRotationCompatPolicy(boolean exists) { @@ -268,6 +322,11 @@ public class AppCompatCameraPolicyTest extends WindowTestsBase { .isTreatmentEnabledForActivity(activity().top()), active); } + void checkShouldOverrideMinAspectRatioForCamera(boolean expected) { + assertEquals(getTopAppCompatCameraPolicy() + .shouldOverrideMinAspectRatioForCamera(activity().top()), expected); + } + // TODO(b/350460645): Create Desktop Windowing Robot to reuse common functionalities. void allowEnterDesktopMode(boolean isAllowed) { doReturn(isAllowed).when(() -> diff --git a/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java b/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java index e57e36d36621..1f3aa350b5b2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java @@ -52,39 +52,14 @@ import org.junit.runner.RunWith; @RunWith(WindowTestRunner.class) public class DimmerTests extends WindowTestsBase { - private static class TestWindowContainer extends WindowContainer<TestWindowContainer> { - final SurfaceControl mControl = mock(SurfaceControl.class); - final SurfaceControl.Transaction mPendingTransaction = spy(StubTransaction.class); - final SurfaceControl.Transaction mSyncTransaction = spy(StubTransaction.class); - - TestWindowContainer(WindowManagerService wm) { - super(wm); - setVisibleRequested(true); - } - - @Override - public SurfaceControl getSurfaceControl() { - return mControl; - } - - @Override - public SurfaceControl.Transaction getSyncTransaction() { - return mSyncTransaction; - } - - @Override - public SurfaceControl.Transaction getPendingTransaction() { - return mPendingTransaction; - } - } - - private static class MockSurfaceBuildingContainer extends WindowContainer<TestWindowContainer> { + private static class MockSurfaceBuildingContainer extends WindowContainer<WindowState> { final SurfaceSession mSession = new SurfaceSession(); final SurfaceControl mHostControl = mock(SurfaceControl.class); final SurfaceControl.Transaction mHostTransaction = spy(StubTransaction.class); MockSurfaceBuildingContainer(WindowManagerService wm) { super(wm); + mVisibleRequested = true; } class MockSurfaceBuilder extends SurfaceControl.Builder { @@ -129,28 +104,41 @@ public class DimmerTests extends WindowTestsBase { } } - private MockSurfaceBuildingContainer mHost; private Dimmer mDimmer; private SurfaceControl.Transaction mTransaction; - private TestWindowContainer mChild; + private WindowState mChild1; + private WindowState mChild2; private static AnimationAdapter sTestAnimation; @Before public void setUp() throws Exception { - mHost = new MockSurfaceBuildingContainer(mWm); - mTransaction = spy(StubTransaction.class); - mChild = new TestWindowContainer(mWm); + MockSurfaceBuildingContainer host = new MockSurfaceBuildingContainer(mWm); + mTransaction = host.getSyncTransaction(); + + final SurfaceControl mControl1 = mock(SurfaceControl.class); + final SurfaceControl mControl2 = mock(SurfaceControl.class); + + SurfaceAnimator animator = mock(SurfaceAnimator.class); + when(animator.getAnimation()).thenReturn(null); + + mChild1 = mock(WindowState.class); + when(mChild1.getSurfaceControl()).thenReturn(mControl1); + + mChild2 = mock(WindowState.class); + when(mChild2.getSurfaceControl()).thenReturn(mControl2); + + host.addChild(mChild1, 0); + host.addChild(mChild2, 1); + sTestAnimation = spy(new MockAnimationAdapter()); - mDimmer = new Dimmer(mHost, new MockAnimationAdapterFactory()); + mDimmer = new Dimmer(host, new MockAnimationAdapterFactory()); } @Test @RequiresFlagsDisabled(Flags.FLAG_USE_TASKS_DIM_ONLY) public void testUpdateDimsAppliesCrop() { - mHost.addChild(mChild, 0); - - mDimmer.adjustAppearance(mChild, 1, 1); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 1, 1); + mDimmer.adjustPosition(mChild1, mChild1); int width = 100; int height = 300; @@ -165,9 +153,8 @@ public class DimmerTests extends WindowTestsBase { public void testDimBelowWithChildSurfaceCreatesSurfaceBelowChild() { final float alpha = 0.7f; final int blur = 50; - mHost.addChild(mChild, 0); - mDimmer.adjustAppearance(mChild, alpha, blur); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, alpha, blur); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); assertNotNull("Dimmer should have created a surface", dimLayer); @@ -175,25 +162,23 @@ public class DimmerTests extends WindowTestsBase { mDimmer.updateDims(mTransaction); verify(sTestAnimation).startAnimation(eq(dimLayer), eq(mTransaction), anyInt(), any(SurfaceAnimator.OnAnimationFinishedCallback.class)); - verify(mTransaction).setRelativeLayer(dimLayer, mChild.mControl, -1); + verify(mTransaction).setRelativeLayer(dimLayer, mChild1.getSurfaceControl(), -1); verify(mTransaction, lastCall()).setAlpha(dimLayer, alpha); verify(mTransaction).setBackgroundBlurRadius(dimLayer, blur); } @Test public void testDimBelowWithChildSurfaceDestroyedWhenReset() { - mHost.addChild(mChild, 0); - final float alpha = 0.8f; final int blur = 50; // Dim once - mDimmer.adjustAppearance(mChild, alpha, blur); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, alpha, blur); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); mDimmer.updateDims(mTransaction); // Reset, and don't dim mDimmer.resetDimStates(); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustPosition(mChild1, mChild1); mDimmer.updateDims(mTransaction); verify(mTransaction).show(dimLayer); verify(mTransaction).remove(dimLayer); @@ -201,19 +186,17 @@ public class DimmerTests extends WindowTestsBase { @Test public void testDimBelowWithChildSurfaceNotDestroyedWhenPersisted() { - mHost.addChild(mChild, 0); - final float alpha = 0.8f; final int blur = 20; // Dim once - mDimmer.adjustAppearance(mChild, alpha, blur); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, alpha, blur); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); mDimmer.updateDims(mTransaction); // Reset and dim again mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, alpha, blur); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, alpha, blur); + mDimmer.adjustPosition(mChild1, mChild1); mDimmer.updateDims(mTransaction); verify(mTransaction).show(dimLayer); verify(mTransaction, never()).remove(dimLayer); @@ -222,10 +205,9 @@ public class DimmerTests extends WindowTestsBase { @Test @RequiresFlagsDisabled(Flags.FLAG_USE_TASKS_DIM_ONLY) public void testDimUpdateWhileDimming() { - mHost.addChild(mChild, 0); final float alpha = 0.8f; - mDimmer.adjustAppearance(mChild, alpha, 20); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, alpha, 20); + mDimmer.adjustPosition(mChild1, mChild1); final Rect bounds = mDimmer.getDimBounds(); SurfaceControl dimLayer = mDimmer.getDimLayer(); @@ -243,9 +225,8 @@ public class DimmerTests extends WindowTestsBase { @Test public void testRemoveDimImmediately() { - mHost.addChild(mChild, 0); - mDimmer.adjustAppearance(mChild, 1, 2); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 1, 2); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); mDimmer.updateDims(mTransaction); verify(mTransaction, times(1)).show(dimLayer); @@ -266,22 +247,20 @@ public class DimmerTests extends WindowTestsBase { */ @Test public void testContainerDimsOpeningAnimationByItself() { - mHost.addChild(mChild, 0); - mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, 0.1f, 0); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 0.1f, 0); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); mDimmer.updateDims(mTransaction); mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, 0.2f, 0); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 0.2f, 0); + mDimmer.adjustPosition(mChild1, mChild1); mDimmer.updateDims(mTransaction); mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, 0.3f, 0); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 0.3f, 0); + mDimmer.adjustPosition(mChild1, mChild1); mDimmer.updateDims(mTransaction); verify(mTransaction).setAlpha(dimLayer, 0.2f); @@ -297,22 +276,20 @@ public class DimmerTests extends WindowTestsBase { */ @Test public void testContainerDimsClosingAnimationByItself() { - mHost.addChild(mChild, 0); - mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, 0.2f, 0); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 0.2f, 0); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); mDimmer.updateDims(mTransaction); mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, 0.1f, 0); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 0.1f, 0); + mDimmer.adjustPosition(mChild1, mChild1); mDimmer.updateDims(mTransaction); mDimmer.resetDimStates(); - mDimmer.adjustAppearance(mChild, 0f, 0); - mDimmer.adjustPosition(mChild, mChild, -1); + mDimmer.adjustAppearance(mChild1, 0f, 0); + mDimmer.adjustPosition(mChild1, mChild1); mDimmer.updateDims(mTransaction); mDimmer.resetDimStates(); @@ -325,19 +302,14 @@ public class DimmerTests extends WindowTestsBase { */ @Test public void testMultipleContainersDimmingConsecutively() { - TestWindowContainer first = mChild; - TestWindowContainer second = new TestWindowContainer(mWm); - mHost.addChild(first, 0); - mHost.addChild(second, 1); - - mDimmer.adjustAppearance(first, 0.5f, 0); - mDimmer.adjustPosition(mChild, first, -1); + mDimmer.adjustAppearance(mChild1, 0.5f, 0); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); mDimmer.updateDims(mTransaction); mDimmer.resetDimStates(); - mDimmer.adjustAppearance(second, 0.9f, 0); - mDimmer.adjustPosition(mChild, second, -1); + mDimmer.adjustAppearance(mChild2, 0.9f, 0); + mDimmer.adjustPosition(mChild1, mChild2); mDimmer.updateDims(mTransaction); verify(sTestAnimation, times(2)).startAnimation( @@ -353,16 +325,11 @@ public class DimmerTests extends WindowTestsBase { */ @Test public void testMultipleContainersDimmingAtTheSameTime() { - TestWindowContainer first = mChild; - TestWindowContainer second = new TestWindowContainer(mWm); - mHost.addChild(first, 0); - mHost.addChild(second, 1); - - mDimmer.adjustAppearance(first, 0.5f, 0); - mDimmer.adjustPosition(mChild, first, -1); + mDimmer.adjustAppearance(mChild1, 0.5f, 0); + mDimmer.adjustPosition(mChild1, mChild1); SurfaceControl dimLayer = mDimmer.getDimLayer(); - mDimmer.adjustAppearance(second, 0.9f, 0); - mDimmer.adjustPosition(mChild, second, -1); + mDimmer.adjustAppearance(mChild2, 0.9f, 0); + mDimmer.adjustPosition(mChild1, mChild2); mDimmer.updateDims(mTransaction); verify(sTestAnimation, times(1)).startAnimation( 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 f8e42d19f78f..adf878c389dd 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TransitionTests.java @@ -1590,10 +1590,10 @@ public class TransitionTests extends WindowTestsBase { }); assertTrue(activity1.isVisible()); doReturn(false).when(task1).isTranslucent(null); - doReturn(false).when(task1).isTranslucentForTransition(); + doReturn(false).when(task1).isTranslucentAndVisible(); assertTrue(controller.canApplyDim(task1)); doReturn(true).when(task1).isTranslucent(null); - doReturn(true).when(task1).isTranslucentForTransition(); + doReturn(true).when(task1).isTranslucentAndVisible(); assertFalse(controller.canApplyDim(task1)); controller.finishTransition(ActionChain.testFinish(closeTransition)); 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 916c2373ac97..6111a658a048 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java @@ -554,6 +554,14 @@ public class WindowManagerServiceTests extends WindowTestsBase { verify(mWm.mWindowContextListenerController, never()).registerWindowContainerListener(any(), any(), any(), anyInt(), any(), anyBoolean()); + // Even if the given display id is INVALID_DISPLAY, the specified params.token should be + // able to map the corresponding display. + final int result = mWm.addWindow( + session, new TestIWindow(), params, View.VISIBLE, INVALID_DISPLAY, + UserHandle.USER_SYSTEM, WindowInsets.Type.defaultVisible(), null, new InsetsState(), + new InsetsSourceControl.Array(), new Rect(), new float[1]); + assertThat(result).isAtLeast(WindowManagerGlobal.ADD_OKAY); + assertTrue(parentWin.hasChild()); assertTrue(parentWin.isAttached()); session.binderDied(); diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index aca0941cbcc5..41223db750c0 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -5030,6 +5030,18 @@ public class CarrierConfigManager { public static final String KEY_ES_SUPL_DATA_PLANE_ONLY_ROAMING_PLMN_STRING_ARRAY = KEY_PREFIX + "es_supl_data_plane_only_roaming_plmn_string_array"; + /** + * Determine whether to enable Net Initiated SUPL (NI SUPL) message injection. + * If enabled, the GnssLocationProvider will monitor for WAP PUSH or MT SMS NI SUPL intents + * and subsequently inject the NI SUPL packet into the GNSS HAL. + * {@code false} - Disable NI SUPL message injection. This is default. + * {@code true} - Enable NI SUPL message injection. + */ + @FlaggedApi(android.location.flags.Flags + .FLAG_ENABLE_NI_SUPL_MESSAGE_INJECTION_BY_CARRIER_CONFIG) + public static final String KEY_ENABLE_NI_SUPL_MESSAGE_INJECTION_BOOL = + KEY_PREFIX + "enable_ni_supl_message_injection_bool"; + private static PersistableBundle getDefaults() { PersistableBundle defaults = new PersistableBundle(); defaults.putBoolean(KEY_PERSIST_LPP_MODE_BOOL, true); @@ -5047,6 +5059,9 @@ public class CarrierConfigManager { defaults.putInt(KEY_ES_SUPL_CONTROL_PLANE_SUPPORT_INT, SUPL_EMERGENCY_MODE_TYPE_CP_ONLY); defaults.putStringArray(KEY_ES_SUPL_DATA_PLANE_ONLY_ROAMING_PLMN_STRING_ARRAY, null); + if (android.location.flags.Flags.enableNiSuplMessageInjectionByCarrierConfig()) { + defaults.putBoolean(KEY_ENABLE_NI_SUPL_MESSAGE_INJECTION_BOOL, false); + } return defaults; } } diff --git a/test-runner/Android.bp b/test-runner/Android.bp index 6b5be3cba204..bb2c4d97c87a 100644 --- a/test-runner/Android.bp +++ b/test-runner/Android.bp @@ -32,14 +32,28 @@ java_sdk_library { javacflags: ["-Xep:DepAnn:ERROR"], }, - libs: [ - "android.test.base", - "android.test.mock", - ], - stub_only_libs: [ - "android.test.base", - "android.test.mock", + impl_only_libs: [ + "android.test.base.impl", + "android.test.mock.impl", ], + public: { + libs: [ + "android.test.base.stubs", + "android.test.mock.stubs", + ], + }, + system: { + libs: [ + "android.test.base.stubs.system", + "android.test.mock.stubs.system", + ], + }, + test: { + libs: [ + "android.test.base.stubs.test", + "android.test.mock.stubs.test", + ], + }, api_packages: [ "android.test", "android.test.suitebuilder", @@ -64,7 +78,7 @@ java_library { sdk_version: "current", libs: [ "android.test.base_static", - "android.test.mock", + "android.test.mock.stubs", "junit", ], } diff --git a/test-runner/tests/Android.bp b/test-runner/tests/Android.bp index 0c0c0805f2d3..39f41ed7f667 100644 --- a/test-runner/tests/Android.bp +++ b/test-runner/tests/Android.bp @@ -30,8 +30,8 @@ android_test { libs: [ "android.test.runner.impl", - "android.test.base", - "android.test.mock", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], static_libs: [ "junit", diff --git a/tests/AppLaunch/Android.bp b/tests/AppLaunch/Android.bp index f838c5a80c28..90a00fe6083e 100644 --- a/tests/AppLaunch/Android.bp +++ b/tests/AppLaunch/Android.bp @@ -14,11 +14,12 @@ android_test { platform_apis: true, certificate: "platform", libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], static_libs: [ "androidx.test.rules", - "ub-uiautomator"], + "ub-uiautomator", + ], test_suites: ["device-tests"], } diff --git a/tests/AttestationVerificationTest/Android.bp b/tests/AttestationVerificationTest/Android.bp index b98f8cb0c21d..5f0908959ed5 100644 --- a/tests/AttestationVerificationTest/Android.bp +++ b/tests/AttestationVerificationTest/Android.bp @@ -32,8 +32,8 @@ android_test { }, test_suites: ["device-tests"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "compatibility-device-util-axt", diff --git a/tests/BrowserPowerTest/Android.bp b/tests/BrowserPowerTest/Android.bp index a8a9897c0e86..100e975b4d5e 100644 --- a/tests/BrowserPowerTest/Android.bp +++ b/tests/BrowserPowerTest/Android.bp @@ -24,8 +24,8 @@ package { android_test { name: "BrowserPowerTests", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: ["junit"], // Include all test java files. diff --git a/tests/Camera2Tests/SmartCamera/SimpleCamera/tests/Android.bp b/tests/Camera2Tests/SmartCamera/SimpleCamera/tests/Android.bp index 5edb1de9586e..4aeca5b04602 100644 --- a/tests/Camera2Tests/SmartCamera/SimpleCamera/tests/Android.bp +++ b/tests/Camera2Tests/SmartCamera/SimpleCamera/tests/Android.bp @@ -24,7 +24,7 @@ android_test { name: "SmartCamera-tests", platform_apis: true, srcs: ["src/**/*.java"], - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], static_libs: [ "guava", "junit", diff --git a/tests/ChoreographerTests/Android.bp b/tests/ChoreographerTests/Android.bp index 3f48d70d659f..69a9d180bfd3 100644 --- a/tests/ChoreographerTests/Android.bp +++ b/tests/ChoreographerTests/Android.bp @@ -26,8 +26,8 @@ android_test { name: "ChoreographerTests", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "androidx.test.core", diff --git a/tests/CompanionDeviceMultiDeviceTests/client/Android.bp b/tests/CompanionDeviceMultiDeviceTests/client/Android.bp index 9994826d061a..ce63fe89fe2e 100644 --- a/tests/CompanionDeviceMultiDeviceTests/client/Android.bp +++ b/tests/CompanionDeviceMultiDeviceTests/client/Android.bp @@ -40,8 +40,8 @@ android_test { "mobly-snippet-lib", ], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], optimize: { diff --git a/tests/CoreTests/android/Android.bp b/tests/CoreTests/android/Android.bp index 97a6e5fd4d1b..85e951e099ce 100644 --- a/tests/CoreTests/android/Android.bp +++ b/tests/CoreTests/android/Android.bp @@ -12,7 +12,7 @@ android_test { srcs: ["**/*.java"], libs: [ "android.test.runner.stubs", - "org.apache.http.legacy", + "org.apache.http.legacy.stubs", "android.test.base.stubs", ], sdk_version: "current", diff --git a/tests/CtsSurfaceControlTestsStaging/Android.bp b/tests/CtsSurfaceControlTestsStaging/Android.bp index 1038c9e93931..8d93b28b9acb 100644 --- a/tests/CtsSurfaceControlTestsStaging/Android.bp +++ b/tests/CtsSurfaceControlTestsStaging/Android.bp @@ -28,8 +28,8 @@ android_test { name: "CtsSurfaceControlTestsStaging", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: [ "androidx.test.core", diff --git a/tests/DataIdleTest/Android.bp b/tests/DataIdleTest/Android.bp index f9509cc9a4bf..8839df664abf 100644 --- a/tests/DataIdleTest/Android.bp +++ b/tests/DataIdleTest/Android.bp @@ -27,8 +27,8 @@ android_test { name: "DataIdleTest", platform_apis: true, libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: ["junit"], srcs: ["src/**/*.java"], diff --git a/tests/EnforcePermission/perf-app/Android.bp b/tests/EnforcePermission/perf-app/Android.bp index 6d04fdc821bb..dbafd739c7bc 100644 --- a/tests/EnforcePermission/perf-app/Android.bp +++ b/tests/EnforcePermission/perf-app/Android.bp @@ -32,8 +32,8 @@ android_test { "androidx.test.rules", ], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], data: [ ":EnforcePermissionTestHelper", diff --git a/tests/EnforcePermission/test-app/Android.bp b/tests/EnforcePermission/test-app/Android.bp index 065ab33448e3..64f850b1e147 100644 --- a/tests/EnforcePermission/test-app/Android.bp +++ b/tests/EnforcePermission/test-app/Android.bp @@ -27,8 +27,8 @@ android_test { "androidx.test.rules", ], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], data: [ ":EnforcePermissionTestHelper", diff --git a/tests/FlickerTests/Android.bp b/tests/FlickerTests/Android.bp index d658d5991a57..27e9ffa4cea5 100644 --- a/tests/FlickerTests/Android.bp +++ b/tests/FlickerTests/Android.bp @@ -31,7 +31,7 @@ java_defaults { enabled: false, }, test_suites: ["device-tests"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], static_libs: [ "androidx.test.ext.junit", "flickertestapplib", diff --git a/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/GameActivity.java b/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/GameActivity.java index ef75d4ddcdcd..93254f7247b6 100644 --- a/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/GameActivity.java +++ b/tests/FlickerTests/test-apps/flickerapp/src/com/android/server/wm/flicker/testapp/GameActivity.java @@ -71,7 +71,7 @@ public class GameActivity extends Activity implements SurfaceHolder.Callback { windowInsetsController.setSystemBarsBehavior( WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE ); - // Hide both the status bar and the navigation bar. - windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()); + // Hide status bar only to avoid flakiness on gesture quick switch cases. + windowInsetsController.hide(WindowInsetsCompat.Type.statusBars()); } } diff --git a/tests/FrameworkPerf/Android.bp b/tests/FrameworkPerf/Android.bp index 9be3ab795b86..4e39fe1c5e4a 100644 --- a/tests/FrameworkPerf/Android.bp +++ b/tests/FrameworkPerf/Android.bp @@ -12,8 +12,8 @@ android_test { srcs: ["**/*.java"], platform_apis: true, libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: ["junit"], aaptflags: [ diff --git a/tests/GamePerformance/Android.bp b/tests/GamePerformance/Android.bp index f250a1bbdaca..964f0b914c65 100644 --- a/tests/GamePerformance/Android.bp +++ b/tests/GamePerformance/Android.bp @@ -33,8 +33,8 @@ android_test_helper_app { srcs: ["src/**/*.java"], static_libs: ["androidx.test.rules"], libs: [ - "android.test.base", - "android.test.runner", + "android.test.base.stubs.system", + "android.test.runner.stubs.system", ], platform_apis: true, certificate: "platform", diff --git a/tests/Input/Android.bp b/tests/Input/Android.bp index 65398a22d968..f3e040a1a86a 100644 --- a/tests/Input/Android.bp +++ b/tests/Input/Android.bp @@ -51,8 +51,8 @@ android_test { "ui-trace-collector", ], libs: [ - "android.test.mock", - "android.test.base", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", ], test_suites: ["device-tests"], } diff --git a/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewControllerTests.java b/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewControllerTests.java index c7ebd3a27a2e..5875520cd259 100644 --- a/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewControllerTests.java +++ b/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewControllerTests.java @@ -38,6 +38,7 @@ import android.view.WindowMetrics; import androidx.test.platform.app.InstrumentationRegistry; import com.android.server.input.InputManagerService; +import com.android.server.input.TouchpadHardwareProperties; import org.junit.Before; import org.junit.Rule; @@ -87,6 +88,9 @@ public class TouchpadDebugViewControllerTests { mTestableLooper = TestableLooper.get(this); mTestableContext.addMockSystemService(InputManager.class, mInputManagerMock); + when(mInputManagerServiceMock.getTouchpadHardwareProperties(DEVICE_ID)).thenReturn( + new TouchpadHardwareProperties.Builder(-100f, 100f, -100f, 100f, 45f, 45f, -5f, 5f, + (short) 10, true, false).build()); mTouchpadDebugViewController = new TouchpadDebugViewController(mTestableContext, mTestableLooper.getLooper(), mInputManagerServiceMock); diff --git a/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewTest.java b/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewTest.java index 2a49eb12c3ff..99e04cce64f4 100644 --- a/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewTest.java +++ b/tests/Input/src/com/android/server/input/debug/TouchpadDebugViewTest.java @@ -43,6 +43,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.cts.input.MotionEventBuilder; import com.android.cts.input.PointerBuilder; import com.android.server.input.TouchpadFingerState; +import com.android.server.input.TouchpadHardwareProperties; import com.android.server.input.TouchpadHardwareState; import org.junit.Before; @@ -83,7 +84,10 @@ public class TouchpadDebugViewTest { when(mWindowManager.getCurrentWindowMetrics()).thenReturn(mWindowMetrics); - mTouchpadDebugView = new TouchpadDebugView(mTestableContext, TOUCHPAD_DEVICE_ID); + mTouchpadDebugView = new TouchpadDebugView(mTestableContext, TOUCHPAD_DEVICE_ID, + new TouchpadHardwareProperties.Builder(500f, 500f, 500f, + 500f, 0f, 0f, -5f, 5f, (short) 10, true, + true).build()); mTouchpadDebugView.measure( View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), diff --git a/tests/InputMethodStressTest/Android.bp b/tests/InputMethodStressTest/Android.bp index 5ed8d8d528c4..2697d32dd622 100644 --- a/tests/InputMethodStressTest/Android.bp +++ b/tests/InputMethodStressTest/Android.bp @@ -20,7 +20,7 @@ package { android_test { name: "InputMethodStressTest", srcs: ["src/**/*.java"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs"], static_libs: [ "androidx.test.ext.junit", "androidx.test.uiautomator_uiautomator", diff --git a/tests/InputScreenshotTest/Android.bp b/tests/InputScreenshotTest/Android.bp index 927b101012c5..12ab550c2da2 100644 --- a/tests/InputScreenshotTest/Android.bp +++ b/tests/InputScreenshotTest/Android.bp @@ -67,8 +67,8 @@ android_test { "truth", ], libs: [ - "android.test.mock", - "android.test.base", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", ], test_suites: ["device-tests"], compile_multilib: "both", diff --git a/tests/InputScreenshotTest/robotests/Android.bp b/tests/InputScreenshotTest/robotests/Android.bp index d63fd69ae4d9..b2414a85c095 100644 --- a/tests/InputScreenshotTest/robotests/Android.bp +++ b/tests/InputScreenshotTest/robotests/Android.bp @@ -61,9 +61,9 @@ android_robolectric_test { "uiautomator-helpers", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "truth", ], upstream: true, diff --git a/tests/Internal/Android.bp b/tests/Internal/Android.bp index ad98e47fa8f0..3e58517579b8 100644 --- a/tests/Internal/Android.bp +++ b/tests/Internal/Android.bp @@ -14,7 +14,7 @@ android_test { }, // Include some source files directly to be able to access package members srcs: ["src/**/*.java"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], static_libs: [ "junit", "androidx.test.rules", diff --git a/tests/LocalizationTest/Android.bp b/tests/LocalizationTest/Android.bp index 909ca5972552..5d9901bb4d0d 100644 --- a/tests/LocalizationTest/Android.bp +++ b/tests/LocalizationTest/Android.bp @@ -25,9 +25,9 @@ android_test { name: "LocalizationTest", srcs: ["java/**/*.kt"], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], static_libs: [ "androidx.test.core", diff --git a/tests/MemoryUsage/Android.bp b/tests/MemoryUsage/Android.bp index e30a0a7cd8b5..deb46636e5b2 100644 --- a/tests/MemoryUsage/Android.bp +++ b/tests/MemoryUsage/Android.bp @@ -14,8 +14,8 @@ android_test { platform_apis: true, certificate: "platform", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: ["junit"], } diff --git a/tests/MultiUser/Android.bp b/tests/MultiUser/Android.bp index bde309fe3015..e4d9f02b3d02 100644 --- a/tests/MultiUser/Android.bp +++ b/tests/MultiUser/Android.bp @@ -18,9 +18,9 @@ android_test { "services.core", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], certificate: "platform", test_suites: ["device-tests"], diff --git a/tests/NetworkSecurityConfigTest/Android.bp b/tests/NetworkSecurityConfigTest/Android.bp index 473eadbcad73..4c48eaa4622e 100644 --- a/tests/NetworkSecurityConfigTest/Android.bp +++ b/tests/NetworkSecurityConfigTest/Android.bp @@ -11,8 +11,8 @@ android_test { name: "NetworkSecurityConfigTests", certificate: "platform", libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], static_libs: ["junit"], // Include all test java files. diff --git a/tests/OneMedia/Android.bp b/tests/OneMedia/Android.bp index a43cd39f0dcb..a1817ccb662a 100644 --- a/tests/OneMedia/Android.bp +++ b/tests/OneMedia/Android.bp @@ -15,7 +15,7 @@ android_app { ], platform_apis: true, certificate: "platform", - libs: ["org.apache.http.legacy"], + libs: ["org.apache.http.legacy.stubs.system"], optional_uses_libs: ["org.apache.http.legacy"], optimize: { enabled: false, diff --git a/tests/PackageWatchdog/Android.bp b/tests/PackageWatchdog/Android.bp index 2c5fdd3228ed..096555eb3056 100644 --- a/tests/PackageWatchdog/Android.bp +++ b/tests/PackageWatchdog/Android.bp @@ -36,7 +36,7 @@ android_test { "services.net", "truth", ], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], jni_libs: [ // mockito-target-extended dependencies "libdexmakerjvmtiagent", diff --git a/tests/ProtoInputStreamTests/Android.bp b/tests/ProtoInputStreamTests/Android.bp index 0029080b5a89..40ab257fef37 100644 --- a/tests/ProtoInputStreamTests/Android.bp +++ b/tests/ProtoInputStreamTests/Android.bp @@ -33,7 +33,7 @@ android_test { platform_apis: true, certificate: "platform", test_suites: ["device-tests"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.system"], static_libs: [ "androidx.test.rules", "frameworks-base-testutils", diff --git a/tests/RemoteDisplayProvider/Android.bp b/tests/RemoteDisplayProvider/Android.bp index 55732d14af46..468bdda75713 100644 --- a/tests/RemoteDisplayProvider/Android.bp +++ b/tests/RemoteDisplayProvider/Android.bp @@ -27,6 +27,6 @@ android_test { sdk_version: "system_current", srcs: ["src/**/*.java"], resource_dirs: ["res"], - libs: ["com.android.media.remotedisplay"], + libs: ["com.android.media.remotedisplay.stubs.system"], certificate: "platform", } diff --git a/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java b/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java index 8c16079dca85..01f8bc148fce 100644 --- a/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java +++ b/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java @@ -16,33 +16,26 @@ package com.android.tests.rollback.host; +import static com.google.common.truth.Truth.assertThat; + import com.android.tradefed.device.ITestDevice; +import com.android.tradefed.log.LogUtil.CLog; + import com.google.common.truth.FailureMetadata; import com.google.common.truth.Truth; -import static com.google.common.truth.Truth.assertThat; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class WatchdogEventLogger { - private static final String[] ROLLBACK_EVENT_TYPES = { - "ROLLBACK_INITIATE", "ROLLBACK_BOOT_TRIGGERED", "ROLLBACK_SUCCESS"}; - private static final String[] ROLLBACK_EVENT_ATTRS = { - "logPackage", "rollbackReason", "failedPackageName"}; - private static final String PROP_PREFIX = "persist.sys.rollbacktest."; private ITestDevice mDevice; - private void resetProperties(boolean enabled) throws Exception { + private void updateTestSysProp(boolean enabled) throws Exception { try { mDevice.enableAdbRoot(); assertThat(mDevice.setProperty( - PROP_PREFIX + "enabled", String.valueOf(enabled))).isTrue(); - for (String type : ROLLBACK_EVENT_TYPES) { - String key = PROP_PREFIX + type; - assertThat(mDevice.setProperty(key, "")).isTrue(); - for (String attr : ROLLBACK_EVENT_ATTRS) { - assertThat(mDevice.setProperty(key + "." + attr, "")).isTrue(); - } - } + "persist.sys.rollbacktest.enabled", String.valueOf(enabled))).isTrue(); } finally { mDevice.disableAdbRoot(); } @@ -50,19 +43,17 @@ public class WatchdogEventLogger { public void start(ITestDevice device) throws Exception { mDevice = device; - resetProperties(true); + updateTestSysProp(true); } public void stop() throws Exception { if (mDevice != null) { - resetProperties(false); + updateTestSysProp(false); } } - private boolean matchProperty(String type, String attr, String expectedVal) throws Exception { - String key = PROP_PREFIX + type + "." + attr; - String val = mDevice.getProperty(key); - return expectedVal == null || expectedVal.equals(val); + private boolean verifyEventContainsVal(String watchdogEvent, String expectedVal) { + return expectedVal == null || watchdogEvent.contains(expectedVal); } /** @@ -72,11 +63,33 @@ public class WatchdogEventLogger { * occurred, and return {@code true} if an event exists which matches all criteria. */ public boolean watchdogEventOccurred(String type, String logPackage, - String rollbackReason, String failedPackageName) throws Exception { - return mDevice.getBooleanProperty(PROP_PREFIX + type, false) - && matchProperty(type, "logPackage", logPackage) - && matchProperty(type, "rollbackReason", rollbackReason) - && matchProperty(type, "failedPackageName", failedPackageName); + String rollbackReason, String failedPackageName) { + String watchdogEvent = getEventForRollbackType(type); + return (watchdogEvent != null) + && verifyEventContainsVal(watchdogEvent, logPackage) + && verifyEventContainsVal(watchdogEvent, rollbackReason) + && verifyEventContainsVal(watchdogEvent, failedPackageName); + } + + /** Returns last matched event for rollbackType **/ + private String getEventForRollbackType(String rollbackType) { + String lastMatchedEvent = null; + try { + String rollbackDump = mDevice.executeShellCommand("dumpsys rollback"); + String eventRegex = ".*%s%s(.*)\\n"; + String eventPrefix = "Watchdog event occurred with type: "; + + final Pattern pattern = Pattern.compile( + String.format(eventRegex, eventPrefix, rollbackType)); + final Matcher matcher = pattern.matcher(rollbackDump); + while (matcher.find()) { + lastMatchedEvent = matcher.group(1); + } + CLog.d("Found watchdogEvent: " + lastMatchedEvent + " for type: " + rollbackType); + } catch (Exception e) { + CLog.e("Unable to find event for type: " + rollbackType, e); + } + return lastMatchedEvent; } static class Subject extends com.google.common.truth.Subject { @@ -97,7 +110,7 @@ public class WatchdogEventLogger { } void eventOccurred(String type, String logPackage, String rollbackReason, - String failedPackageName) throws Exception { + String failedPackageName) { check("watchdogEventOccurred(type=%s, logPackage=%s, rollbackReason=%s, " + "failedPackageName=%s)", type, logPackage, rollbackReason, failedPackageName) .that(mActual.watchdogEventOccurred(type, logPackage, rollbackReason, diff --git a/tests/ServiceCrashTest/Android.bp b/tests/ServiceCrashTest/Android.bp index fb98b7631b7e..82f397ffe259 100644 --- a/tests/ServiceCrashTest/Android.bp +++ b/tests/ServiceCrashTest/Android.bp @@ -13,7 +13,7 @@ android_test { srcs: ["src/**/*.java"], platform_apis: true, certificate: "platform", - libs: ["android.test.base"], + libs: ["android.test.base.stubs.system"], static_libs: [ "compatibility-device-util-axt", "androidx.test.rules", diff --git a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp index 0d204979cb92..c0ac50c962f2 100644 --- a/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp +++ b/tests/SharedLibraryLoadingTest/test-apps/SharedLibraryClientTests/Android.bp @@ -23,7 +23,7 @@ android_test_helper_app { libs: [ "SharedLibraryLoadingTests_StandardSharedLibrary", "SharedLibraryLoadingTests_SharedLibraryLoadedAfter", - "android.test.base", + "android.test.base.stubs.system", ], static_libs: [ "androidx.test.ext.junit", diff --git a/tests/TelephonyCommonTests/Android.bp b/tests/TelephonyCommonTests/Android.bp index b968e5d81148..b1af6aed27a0 100644 --- a/tests/TelephonyCommonTests/Android.bp +++ b/tests/TelephonyCommonTests/Android.bp @@ -50,9 +50,9 @@ android_test { platform_apis: true, libs: [ - "android.test.runner", - "android.test.mock", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.mock.stubs.system", + "android.test.base.stubs.system", "unsupportedappusage", ], } diff --git a/tests/TrustTests/Android.bp b/tests/TrustTests/Android.bp index 8888b32d2c69..f22feb3f88fa 100644 --- a/tests/TrustTests/Android.bp +++ b/tests/TrustTests/Android.bp @@ -31,8 +31,8 @@ android_test { "truth", ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], test_suites: [ "device-tests", diff --git a/tests/TtsTests/Android.bp b/tests/TtsTests/Android.bp index b7aa5d4a38aa..e28f69b78141 100644 --- a/tests/TtsTests/Android.bp +++ b/tests/TtsTests/Android.bp @@ -28,8 +28,8 @@ android_test { srcs: ["**/*.java"], static_libs: ["mockito-target"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", ], platform_apis: true, } diff --git a/tests/UpdatableSystemFontTest/Android.bp b/tests/UpdatableSystemFontTest/Android.bp index 12d43383a6e2..34eff4f4579b 100644 --- a/tests/UpdatableSystemFontTest/Android.bp +++ b/tests/UpdatableSystemFontTest/Android.bp @@ -25,7 +25,7 @@ package { android_test { name: "UpdatableSystemFontTest", srcs: ["src/**/*.java"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs.test"], static_libs: [ "androidx.test.ext.junit", "androidx.test.uiautomator_uiautomator", diff --git a/tests/UsbManagerTests/lib/Android.bp b/tests/UsbManagerTests/lib/Android.bp index 4e5a70fef0ca..506de5c26e3b 100644 --- a/tests/UsbManagerTests/lib/Android.bp +++ b/tests/UsbManagerTests/lib/Android.bp @@ -38,6 +38,6 @@ android_library { "androidx.core_core", ], libs: [ - "android.test.mock", + "android.test.mock.stubs.system", ], } diff --git a/tests/inputmethod/ConcurrentMultiSessionImeTest/Android.bp b/tests/inputmethod/ConcurrentMultiSessionImeTest/Android.bp index a4085e5315a4..44aa4028c916 100644 --- a/tests/inputmethod/ConcurrentMultiSessionImeTest/Android.bp +++ b/tests/inputmethod/ConcurrentMultiSessionImeTest/Android.bp @@ -21,7 +21,7 @@ android_test { name: "ConcurrentMultiSessionImeTest", srcs: ["src/**/*.java"], resource_dirs: ["res"], - libs: ["android.test.runner"], + libs: ["android.test.runner.stubs"], static_libs: [ "androidx.core_core", "androidx.test.ext.junit", diff --git a/tests/permission/Android.bp b/tests/permission/Android.bp index b02f410c733e..d80eaeb32c1e 100644 --- a/tests/permission/Android.bp +++ b/tests/permission/Android.bp @@ -12,8 +12,8 @@ android_test { // Include all test java files. srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", "telephony-common", ], static_libs: [ diff --git a/tests/testables/Android.bp b/tests/testables/Android.bp index c0e3d630d1ab..7596ee722d01 100644 --- a/tests/testables/Android.bp +++ b/tests/testables/Android.bp @@ -27,8 +27,8 @@ java_library { name: "testables", srcs: ["src/**/*.java"], libs: [ - "android.test.runner", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.mock.stubs.system", "androidx.test.rules", "mockito-target-inline-minus-junit4", ], diff --git a/tests/testables/tests/Android.bp b/tests/testables/tests/Android.bp index d6a4754c37aa..1eb36fa5f908 100644 --- a/tests/testables/tests/Android.bp +++ b/tests/testables/tests/Android.bp @@ -45,9 +45,9 @@ android_test { "libmultiplejvmtiagentsinterferenceagent", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], certificate: "platform", test_suites: [ diff --git a/tests/utils/testutils/Android.bp b/tests/utils/testutils/Android.bp index deff42a27f47..35fd5b1e6ed0 100644 --- a/tests/utils/testutils/Android.bp +++ b/tests/utils/testutils/Android.bp @@ -35,9 +35,9 @@ java_library { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", "mockito-target-extended-minus-junit4", ], } diff --git a/tests/utils/testutils/tests/Android.bp b/tests/utils/testutils/tests/Android.bp index 8104280cdd5e..3bb02e42ca3b 100644 --- a/tests/utils/testutils/tests/Android.bp +++ b/tests/utils/testutils/tests/Android.bp @@ -35,9 +35,9 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs.system", + "android.test.base.stubs.system", + "android.test.mock.stubs.system", ], certificate: "platform", diff --git a/tests/vcn/Android.bp b/tests/vcn/Android.bp index ee2e7cfcd480..b16ba15a6867 100644 --- a/tests/vcn/Android.bp +++ b/tests/vcn/Android.bp @@ -34,8 +34,8 @@ android_test { "flag-junit", ], libs: [ - "android.test.runner", - "android.test.base", - "android.test.mock", + "android.test.runner.stubs", + "android.test.base.stubs", + "android.test.mock.stubs", ], } diff --git a/wifi/tests/Android.bp b/wifi/tests/Android.bp index 1d3e4bd531b4..74a6be9baa56 100644 --- a/wifi/tests/Android.bp +++ b/wifi/tests/Android.bp @@ -44,8 +44,8 @@ android_test { ], libs: [ - "android.test.runner", - "android.test.base", + "android.test.runner.stubs", + "android.test.base.stubs", ], // Required by Extended Mockito |