diff options
322 files changed, 1902 insertions, 1808 deletions
diff --git a/Android.bp b/Android.bp index 29b6bc75ac7e..e825610fefb2 100644 --- a/Android.bp +++ b/Android.bp @@ -743,22 +743,24 @@ gensrcs { name: "framework-javastream-protos", depfile: true, + tool_files: [ "tools/genprotos.sh", ], tools: [ "aprotoc", "protoc-gen-javastream", "soong_zip", ], - cmd: "mkdir -p $(genDir)/$(in) " + - "&& $(location aprotoc) " + - " --plugin=$(location protoc-gen-javastream) " + - " --dependency_out=$(depfile) " + - " --javastream_out=$(genDir)/$(in) " + - " -Iexternal/protobuf/src " + - " -I . " + - " $(in) " + - "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)", - + // TODO This should not be needed. If you set a custom OUT_DIR or OUT_DIR_COMMON_BASE you can + // end up with a command that is extremely long, potentially going passed MAX_ARG_STRLEN due to + // the way sbox rewrites the command. See b/70221552. + cmd: "$(location tools/genprotos.sh) " + + " $(location aprotoc) " + + " $(location protoc-gen-javastream) " + + " $(location soong_zip) " + + " $(genDir) " + + " $(depfile) " + + " $(in) " + + " $(out)", srcs: [ "core/proto/**/*.proto", "libs/incident/**/*.proto", diff --git a/api/current.txt b/api/current.txt index b18b9173f869..897a8d9ab609 100644 --- a/api/current.txt +++ b/api/current.txt @@ -27716,6 +27716,7 @@ package android.net.http { method public java.util.Date getValidNotAfterDate(); method public deprecated java.lang.String getValidNotBefore(); method public java.util.Date getValidNotBeforeDate(); + method public java.security.cert.X509Certificate getX509Certificate(); method public static android.net.http.SslCertificate restoreState(android.os.Bundle); method public static android.os.Bundle saveState(android.net.http.SslCertificate); } @@ -39151,6 +39152,7 @@ package android.service.autofill { method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.service.autofill.SaveInfo> CREATOR; + field public static final int FLAG_DELAY_SAVE = 4; // 0x4 field public static final int FLAG_DONT_SAVE_ON_FINISH = 2; // 0x2 field public static final int FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE = 1; // 0x1 field public static final int NEGATIVE_BUTTON_STYLE_CANCEL = 0; // 0x0 @@ -57736,14 +57738,14 @@ package java.lang { method public void setContextClassLoader(java.lang.ClassLoader); method public final void setDaemon(boolean); method public static void setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler); - method public final void setName(java.lang.String); + method public final synchronized void setName(java.lang.String); method public final void setPriority(int); method public void setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler); method public static void sleep(long) throws java.lang.InterruptedException; method public static void sleep(long, int) throws java.lang.InterruptedException; method public synchronized void start(); method public final deprecated void stop(); - method public final deprecated void stop(java.lang.Throwable); + method public final deprecated synchronized void stop(java.lang.Throwable); method public final deprecated void suspend(); method public static void yield(); field public static final int MAX_PRIORITY = 10; // 0xa diff --git a/api/test-current.txt b/api/test-current.txt index 9dc61ee4c0dd..63ece406845d 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -228,6 +228,14 @@ package android.app.usage { } +package android.bluetooth { + + public final class BluetoothClass implements android.os.Parcelable { + method public int getClassOfDevice(); + } + +} + package android.content { public abstract class ContentResolver { diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 2baae92bc6a8..87366db56976 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -18,21 +18,13 @@ package android.app; import android.annotation.NonNull; import android.annotation.Nullable; -import android.content.ComponentName; import android.content.IIntentSender; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.UserInfo; -import android.content.res.Configuration; -import android.os.Bundle; import android.os.IBinder; -import android.os.SystemClock; -import android.service.voice.IVoiceInteractionSession; -import android.util.SparseIntArray; import android.view.RemoteAnimationAdapter; -import com.android.internal.app.IVoiceInteractor; - import java.util.ArrayList; import java.util.List; @@ -231,4 +223,7 @@ public abstract class ActivityManagerInternal { /** Schedule the execution of all pending app GCs. */ public abstract void scheduleAppGcs(); + + /** Gets the task id for a given activity. */ + public abstract int getTaskIdForActivity(@NonNull IBinder token, boolean onlyRoot); } diff --git a/core/java/android/bluetooth/BluetoothClass.java b/core/java/android/bluetooth/BluetoothClass.java index 8557f389d913..3a78cbdd4d0a 100755 --- a/core/java/android/bluetooth/BluetoothClass.java +++ b/core/java/android/bluetooth/BluetoothClass.java @@ -16,6 +16,7 @@ package android.bluetooth; +import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -293,6 +294,7 @@ public final class BluetoothClass implements Parcelable { * * @hide */ + @TestApi public int getClassOfDevice() { return mClass; } diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java index 0fb4ba1a8765..13c5ff690973 100644 --- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -411,7 +411,14 @@ public final class BluetoothLeAdvertiser { try { gatt = mBluetoothManager.getBluetoothGatt(); } catch (RemoteException e) { - Log.e(TAG, "Failed to get Bluetooth gatt - ", e); + Log.e(TAG, "Failed to get Bluetooth GATT - ", e); + postStartSetFailure(handler, callback, + AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR); + return; + } + + if (gatt == null) { + Log.e(TAG, "Bluetooth GATT is null"); postStartSetFailure(handler, callback, AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR); return; diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java index 359726015c12..47a5138c1a6c 100644 --- a/core/java/android/database/sqlite/SQLiteConnection.java +++ b/core/java/android/database/sqlite/SQLiteConnection.java @@ -609,7 +609,9 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen applyBlockGuardPolicy(statement); attachCancellationSignal(cancellationSignal); try { - return nativeExecuteForLong(mConnectionPtr, statement.mStatementPtr); + long ret = nativeExecuteForLong(mConnectionPtr, statement.mStatementPtr); + mRecentOperations.setResult(ret); + return ret; } finally { detachCancellationSignal(cancellationSignal); } @@ -652,7 +654,9 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen applyBlockGuardPolicy(statement); attachCancellationSignal(cancellationSignal); try { - return nativeExecuteForString(mConnectionPtr, statement.mStatementPtr); + String ret = nativeExecuteForString(mConnectionPtr, statement.mStatementPtr); + mRecentOperations.setResult(ret); + return ret; } finally { detachCancellationSignal(cancellationSignal); } @@ -1312,12 +1316,17 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen private int mIndex; private int mGeneration; private final SQLiteConnectionPool mPool; + private long mResultLong = Long.MIN_VALUE; + private String mResultString; OperationLog(SQLiteConnectionPool pool) { mPool = pool; } public int beginOperation(String kind, String sql, Object[] bindArgs) { + mResultLong = Long.MIN_VALUE; + mResultString = null; + synchronized (mOperations) { final int index = (mIndex + 1) % MAX_RECENT_OPERATIONS; Operation operation = mOperations[index]; @@ -1335,6 +1344,9 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen operation.mStartTime = SystemClock.uptimeMillis(); operation.mKind = kind; operation.mSql = sql; + operation.mPath = mPool.getPath(); + operation.mResultLong = Long.MIN_VALUE; + operation.mResultString = null; if (bindArgs != null) { if (operation.mBindArgs == null) { operation.mBindArgs = new ArrayList<Object>(); @@ -1390,6 +1402,14 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen } } + public void setResult(long longResult) { + mResultLong = longResult; + } + + public void setResult(String stringResult) { + mResultString = stringResult; + } + private boolean endOperationDeferLogLocked(int cookie) { final Operation operation = getOperationLocked(cookie); if (operation != null) { @@ -1409,6 +1429,8 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen private void logOperationLocked(int cookie, String detail) { final Operation operation = getOperationLocked(cookie); + operation.mResultLong = mResultLong; + operation.mResultString = mResultString; StringBuilder msg = new StringBuilder(); operation.describe(msg, true); if (detail != null) { @@ -1491,8 +1513,11 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen public boolean mFinished; public Exception mException; public int mCookie; + public String mPath; + public long mResultLong; // MIN_VALUE means "value not set". + public String mResultString; - public void describe(StringBuilder msg, boolean allowBindArgsLog) { + public void describe(StringBuilder msg, boolean allowDetailedLog) { msg.append(mKind); if (mFinished) { msg.append(" took ").append(mEndTime - mStartTime).append("ms"); @@ -1504,8 +1529,9 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen if (mSql != null) { msg.append(", sql=\"").append(trimSqlForDisplay(mSql)).append("\""); } - if (allowBindArgsLog && Consts.DEBUG_LOG_BIND_ARGS - && mBindArgs != null && mBindArgs.size() != 0) { + final boolean dumpDetails = allowDetailedLog && Consts.DEBUG_LOG_DETAILED + && mBindArgs != null && mBindArgs.size() != 0; + if (dumpDetails) { msg.append(", bindArgs=["); final int count = mBindArgs.size(); for (int i = 0; i < count; i++) { @@ -1525,9 +1551,16 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen } msg.append("]"); } + msg.append(", path=").append(mPath); if (mException != null) { msg.append(", exception=\"").append(mException.getMessage()).append("\""); } + if (mResultLong != Long.MIN_VALUE) { + msg.append(", result=").append(mResultLong); + } + if (mResultString != null) { + msg.append(", result=\"").append(mResultString).append("\""); + } } private String getStatus() { diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java index e51930237527..3ee348ba4865 100644 --- a/core/java/android/database/sqlite/SQLiteConnectionPool.java +++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java @@ -1183,6 +1183,10 @@ public final class SQLiteConnectionPool implements Closeable { return "SQLiteConnectionPool: " + mConfiguration.path; } + public String getPath() { + return mConfiguration.path; + } + private static final class ConnectionWaiter { public ConnectionWaiter mNext; public Thread mThread; diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java index 790af6a370ed..1c6620467b7c 100644 --- a/core/java/android/database/sqlite/SQLiteDebug.java +++ b/core/java/android/database/sqlite/SQLiteDebug.java @@ -77,10 +77,10 @@ public final class SQLiteDebug { SLOW_QUERY_THRESHOLD_PROP + "." + Process.myUid(); /** - * Whether to log bind args in slow query log or not. + * Whether to add detailed information to slow query log. */ - public static final boolean DEBUG_LOG_BIND_ARGS = Build.IS_DEBUGGABLE - && SystemProperties.getBoolean("db.log.bindargs", false); + public static final boolean DEBUG_LOG_DETAILED = Build.IS_DEBUGGABLE + && SystemProperties.getBoolean("db.log.detailed", false); } private SQLiteDebug() { diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index 6ae7a146a7b7..4d2841d8e328 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -1191,8 +1191,8 @@ public final class InputManager { * @hide */ @Override - public void vibrate(int uid, String opPkg, - VibrationEffect effect, AudioAttributes attributes) { + public void vibrate(int uid, String opPkg, VibrationEffect effect, + String reason, AudioAttributes attributes) { long[] pattern; int repeat; if (effect instanceof VibrationEffect.OneShot) { diff --git a/core/java/android/net/OWNERS b/core/java/android/net/OWNERS index cea480f4b4ed..fee91fbbec42 100644 --- a/core/java/android/net/OWNERS +++ b/core/java/android/net/OWNERS @@ -1,9 +1,11 @@ set noparent +codewiz@google.com ek@google.com jsharkey@android.com jchalard@google.com lorenzo@google.com +reminv@google.com satk@google.com silberst@google.com diff --git a/core/java/android/net/http/SslCertificate.java b/core/java/android/net/http/SslCertificate.java index 4c0f4181e83f..21ada363b3ea 100644 --- a/core/java/android/net/http/SslCertificate.java +++ b/core/java/android/net/http/SslCertificate.java @@ -16,8 +16,6 @@ package android.net.http; -import com.android.internal.util.HexDump; - import android.content.Context; import android.os.Bundle; import android.text.format.DateFormat; @@ -25,6 +23,9 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; +import com.android.internal.util.HexDump; +import com.android.org.bouncycastle.asn1.x509.X509Name; + import java.io.ByteArrayInputStream; import java.math.BigInteger; import java.security.MessageDigest; @@ -39,8 +40,6 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Vector; -import com.android.org.bouncycastle.asn1.x509.X509Name; - /** * SSL certificate info (certificate details) class */ @@ -248,6 +247,14 @@ public class SslCertificate { } /** + * @return The {@code X509Certificate} used to create this {@code SslCertificate} or + * {@code null} if no certificate was provided. + */ + public X509Certificate getX509Certificate() { + return mX509Certificate; + } + + /** * Convenience for UI presentation, not intended as public API. */ private static String getSerialNumber(X509Certificate x509Certificate) { diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index 25a5e91dba49..6bd2e76cdf35 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -631,7 +631,8 @@ public class Build { * October 2013: Android 4.4, KitKat, another tasty treat. * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see the + * <a href="/about/versions/kitkat/">Android KitKat overview</a>.</p> * <ul> * <li> The default result of * {@link android.preference.PreferenceActivity#isValidFragment(String) @@ -681,7 +682,8 @@ public class Build { * November 2014: Lollipop. A flat one with beautiful shadows. But still tasty. * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see the + * <a href="/about/versions/lollipop/">Android Lollipop overview</a>.</p> * <ul> * <li> {@link android.content.Context#bindService Context.bindService} now * requires an explicit Intent, and will throw an exception if given an implicit @@ -710,6 +712,8 @@ public class Build { /** * March 2015: Lollipop with an extra sugar coating on the outside! + * For more information about this release, see the + * <a href="/about/versions/android-5.1">Android 5.1 APIs</a>. */ public static final int LOLLIPOP_MR1 = 22; @@ -717,7 +721,8 @@ public class Build { * M is for Marshmallow! * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see the + * <a href="/about/versions/marshmallow/">Android 6.0 Marshmallow overview</a>.</p> * <ul> * <li> Runtime permissions. Dangerous permissions are no longer granted at * install time, but must be requested by the application at runtime through @@ -748,7 +753,8 @@ public class Build { * N is for Nougat. * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see + * the <a href="/about/versions/nougat/">Android Nougat overview</a>.</p> * <ul> * <li> {@link android.app.DownloadManager.Request#setAllowedNetworkTypes * DownloadManager.Request.setAllowedNetworkTypes} @@ -798,7 +804,9 @@ public class Build { public static final int N = 24; /** - * N MR1: Nougat++. + * N MR1: Nougat++. For more information about this release, see + * <a href="/about/versions/nougat/android-7.1">Android 7.1 for + * Developers</a>. */ public static final int N_MR1 = 25; @@ -806,7 +814,8 @@ public class Build { * O. * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see + * the <a href="/about/versions/oreo/">Android Oreo overview</a>.</p> * <ul> * <li><a href="{@docRoot}about/versions/oreo/background.html">Background execution limits</a> * are applied to the application.</li> @@ -895,13 +904,16 @@ public class Build { * O MR1. * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see + * <a href="/about/versions/oreo/android-8.1">Android 8.1 features and + * APIs</a>.</p> * <ul> * <li>Apps exporting and linking to apk shared libraries must explicitly * enumerate all signing certificates in a consistent order.</li> * <li>{@link android.R.attr#screenOrientation} can not be used to request a fixed * orientation if the associated activity is not fullscreen and opaque.</li> * </ul> + * */ public static final int O_MR1 = 27; @@ -909,7 +921,8 @@ public class Build { * P. * * <p>Applications targeting this or a later release will get these - * new changes in behavior:</p> + * new changes in behavior. For more information about this release, see the + * <a href="/about/versions/pie/">Android 9 Pie overview</a>.</p> * <ul> * <li>{@link android.app.Service#startForeground Service.startForeground} requires * that apps hold the permission @@ -917,6 +930,7 @@ public class Build { * <li>{@link android.widget.LinearLayout} will always remeasure weighted children, * even if there is no excess space.</li> * </ul> + * */ public static final int P = 28; diff --git a/core/java/android/os/IVibratorService.aidl b/core/java/android/os/IVibratorService.aidl index e59c3ae16ef7..e8b3ca6cb7ae 100644 --- a/core/java/android/os/IVibratorService.aidl +++ b/core/java/android/os/IVibratorService.aidl @@ -23,7 +23,8 @@ interface IVibratorService { boolean hasVibrator(); boolean hasAmplitudeControl(); - void vibrate(int uid, String opPkg, in VibrationEffect effect, int usageHint, IBinder token); + void vibrate(int uid, String opPkg, in VibrationEffect effect, int usageHint, String reason, + IBinder token); void cancelVibrate(IBinder token); } diff --git a/core/java/android/os/NullVibrator.java b/core/java/android/os/NullVibrator.java index b8bdc89a2f72..1d0f9d3157c0 100644 --- a/core/java/android/os/NullVibrator.java +++ b/core/java/android/os/NullVibrator.java @@ -44,8 +44,8 @@ public class NullVibrator extends Vibrator { } @Override - public void vibrate(int uid, String opPkg, - VibrationEffect effect, AudioAttributes attributes) { + public void vibrate(int uid, String opPkg, VibrationEffect effect, + String reason, AudioAttributes attributes) { } @Override diff --git a/core/java/android/os/SELinux.java b/core/java/android/os/SELinux.java index 2773da54b00b..94441cae7567 100644 --- a/core/java/android/os/SELinux.java +++ b/core/java/android/os/SELinux.java @@ -18,9 +18,9 @@ package android.os; import android.util.Slog; -import java.io.IOException; import java.io.File; import java.io.FileDescriptor; +import java.io.IOException; /** * This class provides access to the centralized jni bindings for @@ -79,6 +79,13 @@ public class SELinux { public static final native String getPeerContext(FileDescriptor fd); /** + * Get the security context of a file descriptor of a file. + * @param fd FileDescriptor of a file. + * @return a String representing the file descriptor security context. + */ + public static final native String getFileContext(FileDescriptor fd); + + /** * Gets the security context of the current process. * @return a String representing the security context of the current process. */ diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java index f776c17e56be..c989197f4409 100644 --- a/core/java/android/os/SystemVibrator.java +++ b/core/java/android/os/SystemVibrator.java @@ -67,14 +67,14 @@ public class SystemVibrator extends Vibrator { } @Override - public void vibrate(int uid, String opPkg, - VibrationEffect effect, AudioAttributes attributes) { + public void vibrate(int uid, String opPkg, VibrationEffect effect, + String reason, AudioAttributes attributes) { if (mService == null) { Log.w(TAG, "Failed to vibrate; no vibrator service."); return; } try { - mService.vibrate(uid, opPkg, effect, usageForAttributes(attributes), mToken); + mService.vibrate(uid, opPkg, effect, usageForAttributes(attributes), reason, mToken); } catch (RemoteException e) { Log.w(TAG, "Failed to vibrate.", e); } diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index d2d8f1e159e5..b5aeba0c5f16 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -248,17 +248,17 @@ public abstract class Vibrator { @RequiresPermission(android.Manifest.permission.VIBRATE) public void vibrate(VibrationEffect vibe, AudioAttributes attributes) { - vibrate(Process.myUid(), mPackageName, vibe, attributes); + vibrate(Process.myUid(), mPackageName, vibe, null, attributes); } /** - * Like {@link #vibrate(VibrationEffect, AudioAttributes)}, but allowing the caller to specify - * that the vibration is owned by someone else. + * Like {@link #vibrate(int, String, VibrationEffect, AudioAttributes)}, but allows the + * caller to specify the vibration is owned by someone else and set reason for vibration. * @hide */ @RequiresPermission(android.Manifest.permission.VIBRATE) - public abstract void vibrate(int uid, String opPkg, - VibrationEffect vibe, AudioAttributes attributes); + public abstract void vibrate(int uid, String opPkg, VibrationEffect vibe, + String reason, AudioAttributes attributes); /** * Turn the vibrator off. diff --git a/core/java/android/service/autofill/SaveInfo.java b/core/java/android/service/autofill/SaveInfo.java index 4943fc824ba5..b845250bb792 100644 --- a/core/java/android/service/autofill/SaveInfo.java +++ b/core/java/android/service/autofill/SaveInfo.java @@ -119,7 +119,8 @@ import java.util.Arrays; * * <p>But it is only triggered when all conditions below are met: * <ul> - * <li>The {@link SaveInfo} associated with the {@link FillResponse} is not {@code null}. + * <li>The {@link SaveInfo} associated with the {@link FillResponse} is not {@code null} neither + * has the {@link #FLAG_DELAY_SAVE} flag. * <li>The {@link AutofillValue}s of all required views (as set by the {@code requiredIds} passed * to the {@link SaveInfo.Builder} constructor are not empty. * <li>The {@link AutofillValue} of at least one view (be it required or optional) has changed @@ -234,10 +235,26 @@ public final class SaveInfo implements Parcelable { */ public static final int FLAG_DONT_SAVE_ON_FINISH = 0x2; + /** + * Don't trigger the autofill save UI when the autofill context associated with the response + * associated with this {@link SaveInfo} is {@link AutofillManager#commit() committed}, + * but keep its {@link FillContext} so it's delivered in a future + * {@link AutofillService#onSaveRequest(SaveRequest, SaveCallback) save request} of an + * activity belonging to the same task. + * + * <p>This flag should be used when the service detects that the application uses + * multiple screens to implement an autofillable workflow (for example, one screen for the + * username field, another for password). + */ + // TODO(b/112051762): improve documentation: add example, document relationship with other + // flagss, etc... + public static final int FLAG_DELAY_SAVE = 0x4; + /** @hide */ @IntDef(flag = true, prefix = { "FLAG_" }, value = { FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE, - FLAG_DONT_SAVE_ON_FINISH + FLAG_DONT_SAVE_ON_FINISH, + FLAG_DELAY_SAVE }) @Retention(RetentionPolicy.SOURCE) @interface SaveInfoFlags{} @@ -410,14 +427,15 @@ public final class SaveInfo implements Parcelable { * Sets flags changing the save behavior. * * @param flags {@link #FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE}, - * {@link #FLAG_DONT_SAVE_ON_FINISH}, or {@code 0}. + * {@link #FLAG_DONT_SAVE_ON_FINISH}, {@link #FLAG_DELAY_SAVE}, or {@code 0}. * @return This builder. */ public @NonNull Builder setFlags(@SaveInfoFlags int flags) { throwIfDestroyed(); mFlags = Preconditions.checkFlagsArgument(flags, - FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE | FLAG_DONT_SAVE_ON_FINISH); + FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE | FLAG_DONT_SAVE_ON_FINISH + | FLAG_DELAY_SAVE); return this; } @@ -663,14 +681,16 @@ public final class SaveInfo implements Parcelable { * Builds a new {@link SaveInfo} instance. * * @throws IllegalStateException if no - * {@link #SaveInfo.Builder(int, AutofillId[]) required ids} - * or {@link #setOptionalIds(AutofillId[]) optional ids} were set + * {@link #SaveInfo.Builder(int, AutofillId[]) required ids}, + * or {@link #setOptionalIds(AutofillId[]) optional ids}, or {@link #FLAG_DELAY_SAVE} + * were set */ public SaveInfo build() { throwIfDestroyed(); Preconditions.checkState( - !ArrayUtils.isEmpty(mRequiredIds) || !ArrayUtils.isEmpty(mOptionalIds), - "must have at least one required or optional id"); + !ArrayUtils.isEmpty(mRequiredIds) || !ArrayUtils.isEmpty(mOptionalIds) + || (mFlags & FLAG_DELAY_SAVE) != 0, + "must have at least one required or optional id or FLAG_DELAYED_SAVE"); mDestroyed = true; return new SaveInfo(this); } diff --git a/core/java/android/service/autofill/SaveRequest.java b/core/java/android/service/autofill/SaveRequest.java index 4f85e6b9b23c..c9b5b5529111 100644 --- a/core/java/android/service/autofill/SaveRequest.java +++ b/core/java/android/service/autofill/SaveRequest.java @@ -52,6 +52,12 @@ public final class SaveRequest implements Parcelable { } /** + * Gets the contexts associated with each previous fill request. + * + * <p><b>Note:</b> Starting on Android {@link android.os.Build.VERSION_CODES#Q}, it could also + * include contexts from requests whose {@link SaveInfo} had the + * {@link SaveInfo#FLAG_DELAY_SAVE} flag. + * * @return The contexts associated with each previous fill request. */ public @NonNull List<FillContext> getFillContexts() { diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index 6dad23815bef..cc2869f28bbb 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -313,10 +313,17 @@ public class StaticLayout extends Layout { /** * Set break strategy, useful for selecting high quality or balanced paragraph * layout options. The default is {@link Layout#BREAK_STRATEGY_SIMPLE}. + * <p/> + * Enabling hyphenation with either using {@link Layout#HYPHENATION_FREQUENCY_NORMAL} or + * {@link Layout#HYPHENATION_FREQUENCY_FULL} while line breaking is set to one of + * {@link Layout#BREAK_STRATEGY_BALANCED}, {@link Layout#BREAK_STRATEGY_HIGH_QUALITY} + * improves the structure of text layout however has performance impact and requires more + * time to do the text layout. * * @param breakStrategy break strategy for paragraph layout * @return this builder, useful for chaining * @see android.widget.TextView#setBreakStrategy + * @see #setHyphenationFrequency(int) */ @NonNull public Builder setBreakStrategy(@BreakStrategy int breakStrategy) { @@ -329,10 +336,17 @@ public class StaticLayout extends Layout { * possible values are defined in {@link Layout}, by constants named with the pattern * {@code HYPHENATION_FREQUENCY_*}. The default is * {@link Layout#HYPHENATION_FREQUENCY_NONE}. + * <p/> + * Enabling hyphenation with either using {@link Layout#HYPHENATION_FREQUENCY_NORMAL} or + * {@link Layout#HYPHENATION_FREQUENCY_FULL} while line breaking is set to one of + * {@link Layout#BREAK_STRATEGY_BALANCED}, {@link Layout#BREAK_STRATEGY_HIGH_QUALITY} + * improves the structure of text layout however has performance impact and requires more + * time to do the text layout. * * @param hyphenationFrequency hyphenation frequency for the paragraph * @return this builder, useful for chaining * @see android.widget.TextView#setHyphenationFrequency + * @see #setBreakStrategy(int) */ @NonNull public Builder setHyphenationFrequency(@HyphenationFrequency int hyphenationFrequency) { diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index ea546969ae4d..5cadbe46163a 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -4106,9 +4106,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * TextView is {@link Layout#BREAK_STRATEGY_HIGH_QUALITY}, and the default value for * EditText is {@link Layout#BREAK_STRATEGY_SIMPLE}, the latter to avoid the * text "dancing" when being edited. + * <p/> + * Enabling hyphenation with either using {@link Layout#HYPHENATION_FREQUENCY_NORMAL} or + * {@link Layout#HYPHENATION_FREQUENCY_FULL} while line breaking is set to one of + * {@link Layout#BREAK_STRATEGY_BALANCED}, {@link Layout#BREAK_STRATEGY_HIGH_QUALITY} + * improves the structure of text layout however has performance impact and requires more time + * to do the text layout. * * @attr ref android.R.styleable#TextView_breakStrategy * @see #getBreakStrategy() + * @see #setHyphenationFrequency(int) */ public void setBreakStrategy(@Layout.BreakStrategy int breakStrategy) { mBreakStrategy = breakStrategy; @@ -4134,12 +4141,26 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * Sets the frequency of automatic hyphenation to use when determining word breaks. * The default value for both TextView and {@link EditText} is - * {@link Layout#HYPHENATION_FREQUENCY_NORMAL}. - * Note that the default hyphenation frequency value is set from the theme. - * - * @param hyphenationFrequency The hyphenation frequency to use. + * {@link Layout#HYPHENATION_FREQUENCY_NONE}. Note that the default hyphenation frequency value + * is set from the theme. + * <p/> + * Enabling hyphenation with either using {@link Layout#HYPHENATION_FREQUENCY_NORMAL} or + * {@link Layout#HYPHENATION_FREQUENCY_FULL} while line breaking is set to one of + * {@link Layout#BREAK_STRATEGY_BALANCED}, {@link Layout#BREAK_STRATEGY_HIGH_QUALITY} + * improves the structure of text layout however has performance impact and requires more time + * to do the text layout. + * <p/> + * Note: Before Android Q, in the theme hyphenation frequency is set to + * {@link Layout#HYPHENATION_FREQUENCY_NORMAL}. The default value is changed into + * {@link Layout#HYPHENATION_FREQUENCY_NONE} on Q. + * + * @param hyphenationFrequency the hyphenation frequency to use, one of + * {@link Layout#HYPHENATION_FREQUENCY_NONE}, + * {@link Layout#HYPHENATION_FREQUENCY_NORMAL}, + * {@link Layout#HYPHENATION_FREQUENCY_FULL} * @attr ref android.R.styleable#TextView_hyphenationFrequency * @see #getHyphenationFrequency() + * @see #getBreakStrategy() */ public void setHyphenationFrequency(@Layout.HyphenationFrequency int hyphenationFrequency) { mHyphenationFrequency = hyphenationFrequency; diff --git a/core/java/com/android/internal/net/OWNERS b/core/java/com/android/internal/net/OWNERS index ef44ef7452f4..050cb5c2b44e 100644 --- a/core/java/com/android/internal/net/OWNERS +++ b/core/java/com/android/internal/net/OWNERS @@ -1,7 +1,9 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com jsharkey@android.com lorenzo@google.com +reminv@google.com satk@google.com diff --git a/core/java/com/android/internal/net/VpnConfig.java b/core/java/com/android/internal/net/VpnConfig.java index 921f1fed6849..5ce5bcd15710 100644 --- a/core/java/com/android/internal/net/VpnConfig.java +++ b/core/java/com/android/internal/net/VpnConfig.java @@ -35,6 +35,7 @@ import android.os.UserHandle; import java.net.Inet4Address; import java.net.InetAddress; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -195,4 +196,37 @@ public class VpnConfig implements Parcelable { return new VpnConfig[size]; } }; + + @Override + public String toString() { + return new StringBuilder() + .append("VpnConfig") + .append("{ user=").append(user) + .append(", interface=").append(interfaze) + .append(", session=").append(session) + .append(", mtu=").append(mtu) + .append(", addresses=").append(toString(addresses)) + .append(", routes=").append(toString(routes)) + .append(", dns=").append(toString(dnsServers)) + .append(", searchDomains=").append(toString(searchDomains)) + .append(", allowedApps=").append(toString(allowedApplications)) + .append(", disallowedApps=").append(toString(disallowedApplications)) + .append(", configureIntent=").append(configureIntent) + .append(", startTime=").append(startTime) + .append(", legacy=").append(legacy) + .append(", blocking=").append(blocking) + .append(", allowBypass=").append(allowBypass) + .append(", allowIPv4=").append(allowIPv4) + .append(", allowIPv6=").append(allowIPv6) + .append(", underlyingNetworks=").append(Arrays.toString(underlyingNetworks)) + .append("}") + .toString(); + } + + static <T> String toString(List<T> ls) { + if (ls == null) { + return "null"; + } + return Arrays.toString(ls.toArray()); + } } diff --git a/core/java/com/android/internal/os/BatteryStatsHelper.java b/core/java/com/android/internal/os/BatteryStatsHelper.java index a6b29c5f8ce8..061011b41a4b 100644 --- a/core/java/com/android/internal/os/BatteryStatsHelper.java +++ b/core/java/com/android/internal/os/BatteryStatsHelper.java @@ -31,6 +31,7 @@ import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.RemoteException; +import android.os.SELinux; import android.os.ServiceManager; import android.os.SystemClock; import android.os.UserHandle; @@ -1031,6 +1032,10 @@ public class BatteryStatsHelper { try { ParcelFileDescriptor pfd = service.getStatisticsStream(); if (pfd != null) { + if (false) { + Log.d(TAG, "selinux context: " + + SELinux.getFileContext(pfd.getFileDescriptor())); + } try (FileInputStream fis = new ParcelFileDescriptor.AutoCloseInputStream(pfd)) { byte[] data = readFully(fis, MemoryFile.getSize(pfd.getFileDescriptor())); Parcel parcel = Parcel.obtain(); diff --git a/core/java/com/android/server/net/OWNERS b/core/java/com/android/server/net/OWNERS index ce50558bf4f6..7311eee32a4c 100644 --- a/core/java/com/android/server/net/OWNERS +++ b/core/java/com/android/server/net/OWNERS @@ -1,6 +1,8 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com lorenzo@google.com +reminv@google.com satk@google.com diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index e5aea9730b51..02076bde07f9 100755 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -437,6 +437,10 @@ static FromColorProc ChooseFromColorProc(const SkBitmap& bitmap) { return NULL; } +static bool IsColorSpaceSRGB(SkColorSpace* colorSpace) { + return colorSpace == nullptr || colorSpace->isSRGB(); +} + bool GraphicsJNI::SetPixels(JNIEnv* env, jintArray srcColors, int srcOffset, int srcStride, int x, int y, int width, int height, const SkBitmap& dstBitmap) { void* dst = dstBitmap.getPixels(); @@ -453,8 +457,7 @@ bool GraphicsJNI::SetPixels(JNIEnv* env, jintArray srcColors, int srcOffset, int dst = dstBitmap.getAddr(x, y); SkColorSpace* colorSpace = dstBitmap.colorSpace(); - if (dstBitmap.colorType() == kRGBA_F16_SkColorType || - GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (dstBitmap.colorType() == kRGBA_F16_SkColorType || IsColorSpaceSRGB(colorSpace)) { // now copy/convert each scanline for (int y = 0; y < height; y++) { proc(dst, src, width, x, y); @@ -673,8 +676,8 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, SkBitmap bitmap; sk_sp<SkColorSpace> colorSpace; - if (colorType != kN32_SkColorType || xyzD50 == nullptr || transferParameters == nullptr) { - colorSpace = GraphicsJNI::colorSpaceForType(colorType); + if (xyzD50 == nullptr || transferParameters == nullptr) { + colorSpace = SkColorSpace::MakeSRGB(); } else { SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); @@ -1268,7 +1271,7 @@ static jboolean Bitmap_isSRGB(JNIEnv* env, jobject, jlong bitmapHandle) { if (!bitmapHolder.valid()) return JNI_TRUE; SkColorSpace* colorSpace = bitmapHolder->info().colorSpace(); - return GraphicsJNI::isColorSpaceSRGB(colorSpace); + return IsColorSpaceSRGB(colorSpace); } static jboolean Bitmap_isSRGBLinear(JNIEnv* env, jobject, jlong bitmapHandle) { @@ -1340,8 +1343,7 @@ static jint Bitmap_getPixel(JNIEnv* env, jobject, jlong bitmapHandle, proc(dst, src, 1); SkColorSpace* colorSpace = bitmap.colorSpace(); - if (bitmap.colorType() != kRGBA_F16_SkColorType && - !GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (bitmap.colorType() != kRGBA_F16_SkColorType && !IsColorSpaceSRGB(colorSpace)) { auto sRGB = SkColorSpace::MakeSRGB(); auto xform = SkColorSpaceXform::New(colorSpace, sRGB.get()); xform->apply(SkColorSpaceXform::kBGRA_8888_ColorFormat, &dst[0], @@ -1371,8 +1373,7 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle, SkColor* d = (SkColor*)dst + offset; SkColorSpace* colorSpace = bitmap.colorSpace(); - if (bitmap.colorType() == kRGBA_F16_SkColorType || - GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (bitmap.colorType() == kRGBA_F16_SkColorType || IsColorSpaceSRGB(colorSpace)) { while (--height >= 0) { proc(d, src, width); d += stride; @@ -1414,8 +1415,7 @@ static void Bitmap_setPixel(JNIEnv* env, jobject, jlong bitmapHandle, } SkColorSpace* colorSpace = bitmap.colorSpace(); - if (bitmap.colorType() != kRGBA_F16_SkColorType && - !GraphicsJNI::isColorSpaceSRGB(colorSpace)) { + if (bitmap.colorType() != kRGBA_F16_SkColorType && !IsColorSpaceSRGB(colorSpace)) { auto sRGB = SkColorSpace::MakeSRGB(); auto xform = SkColorSpaceXform::New(sRGB.get(), colorSpace); xform->apply(SkColorSpaceXform::kBGRA_8888_ColorFormat, &color, diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index 685fcaf15211..9ae05f4c1e08 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -360,7 +360,7 @@ static jobject doDecode(JNIEnv* env, std::unique_ptr<SkStreamRewindable> stream, // use the default. SkImageInfo bitmapInfo = decodeInfo; if (decodeInfo.colorSpace() && decodeInfo.colorSpace()->isSRGB()) { - bitmapInfo = bitmapInfo.makeColorSpace(GraphicsJNI::colorSpaceForType(decodeColorType)); + bitmapInfo = bitmapInfo.makeColorSpace(decodeInfo.refColorSpace()); } if (decodeColorType == kGray_8_SkColorType) { diff --git a/core/jni/android/graphics/GraphicBuffer.cpp b/core/jni/android/graphics/GraphicBuffer.cpp index ae6fd38da319..344e22c2ed69 100644 --- a/core/jni/android/graphics/GraphicBuffer.cpp +++ b/core/jni/android/graphics/GraphicBuffer.cpp @@ -196,8 +196,7 @@ static jboolean android_graphics_GraphicBuffer_lockCanvas(JNIEnv* env, jobject, SkBitmap bitmap; bitmap.setInfo(SkImageInfo::Make(buffer->getWidth(), buffer->getHeight(), convertPixelFormat(buffer->getPixelFormat()), - kPremul_SkAlphaType, - GraphicsJNI::defaultColorSpace()), + kPremul_SkAlphaType), bytesCount); if (buffer->getWidth() > 0 && buffer->getHeight() > 0) { diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp index 5d65aee5db2a..26af15e79e2d 100644 --- a/core/jni/android/graphics/Graphics.cpp +++ b/core/jni/android/graphics/Graphics.cpp @@ -454,31 +454,6 @@ android::Bitmap* GraphicsJNI::mapAshmemBitmap(JNIEnv* env, SkBitmap* bitmap, return wrapper; } -sk_sp<SkColorSpace> GraphicsJNI::defaultColorSpace() { -#ifdef ANDROID_ENABLE_LINEAR_BLENDING - return SkColorSpace::MakeSRGB(); -#else - return nullptr; -#endif -} - -sk_sp<SkColorSpace> GraphicsJNI::linearColorSpace() { - return SkColorSpace::MakeSRGBLinear(); -} - -sk_sp<SkColorSpace> GraphicsJNI::colorSpaceForType(SkColorType type) { - switch (type) { - case kRGBA_F16_SkColorType: - return linearColorSpace(); - default: - return defaultColorSpace(); - } -} - -bool GraphicsJNI::isColorSpaceSRGB(SkColorSpace* colorSpace) { - return colorSpace == nullptr || colorSpace->isSRGB(); -} - SkColorSpaceTransferFn GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) { SkColorSpaceTransferFn p; p.fA = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID); diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h index 7825f1d7708b..9d85cc25b6b0 100644 --- a/core/jni/android/graphics/GraphicsJNI.h +++ b/core/jni/android/graphics/GraphicsJNI.h @@ -104,11 +104,6 @@ public: int srcStride, int x, int y, int width, int height, const SkBitmap& dstBitmap); - static sk_sp<SkColorSpace> defaultColorSpace(); - static sk_sp<SkColorSpace> linearColorSpace(); - static sk_sp<SkColorSpace> colorSpaceForType(SkColorType type); - static bool isColorSpaceSRGB(SkColorSpace* colorSpace); - static SkColorSpaceTransferFn getNativeTransferParameters(JNIEnv* env, jobject transferParams); static SkMatrix44 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50); static sk_sp<SkColorSpace> getNativeColorSpace(JNIEnv* env, jobject colorSpace); diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp index 08d952791ef6..163b86b29030 100644 --- a/core/jni/android_os_HwBinder.cpp +++ b/core/jni/android_os_HwBinder.cpp @@ -33,6 +33,7 @@ #include <hidl/ServiceManagement.h> #include <hidl/Status.h> #include <hidl/HidlTransportSupport.h> +#include <hwbinder/IPCThreadState.h> #include <hwbinder/ProcessState.h> #include <nativehelper/ScopedLocalRef.h> #include <nativehelper/ScopedUtfChars.h> diff --git a/core/jni/android_os_SELinux.cpp b/core/jni/android_os_SELinux.cpp index 6778b294a93c..8cb10782310c 100644 --- a/core/jni/android_os_SELinux.cpp +++ b/core/jni/android_os_SELinux.cpp @@ -60,33 +60,30 @@ static jboolean isSELinuxEnforced(JNIEnv *env, jobject) { return (security_getenforce() == 1) ? true : false; } -/* - * Function: getPeerCon - * Purpose: retrieves security context of peer socket - * Parameters: - * fileDescriptor: peer socket file as a FileDescriptor object - * Returns: jstring representing the security_context of socket or NULL if error - * Exceptions: NullPointerException if fileDescriptor object is NULL - */ -static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) { +static jstring getFdConInner(JNIEnv *env, jobject fileDescriptor, bool isSocket) { if (isSELinuxDisabled) { return NULL; } if (fileDescriptor == NULL) { jniThrowNullPointerException(env, - "Trying to check security context of a null peer socket."); + "Trying to check security context of a null FileDescriptor."); return NULL; } int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (env->ExceptionCheck()) { - ALOGE("getPeerCon => getFD for %p failed", fileDescriptor); + ALOGE("getFdCon => getFD for %p failed", fileDescriptor); return NULL; } security_context_t tmp = NULL; - int ret = getpeercon(fd, &tmp); + int ret; + if (isSocket) { + ret = getpeercon(fd, &tmp); + } else{ + ret = fgetfilecon(fd, &tmp); + } Unique_SecurityContext context(tmp); ScopedLocalRef<jstring> contextStr(env, NULL); @@ -94,11 +91,35 @@ static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) { contextStr.reset(env->NewStringUTF(context.get())); } - ALOGV("getPeerCon(%d) => %s", fd, context.get()); + ALOGV("getFdCon(%d) => %s", fd, context.get()); return contextStr.release(); } /* + * Function: getPeerCon + * Purpose: retrieves security context of peer socket + * Parameters: + * fileDescriptor: peer socket file as a FileDescriptor object + * Returns: jstring representing the security_context of socket or NULL if error + * Exceptions: NullPointerException if fileDescriptor object is NULL + */ +static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) { + return getFdConInner(env, fileDescriptor, true); +} + +/* + * Function: getFdCon + * Purpose: retrieves security context of a file descriptor. + * Parameters: + * fileDescriptor: a FileDescriptor object + * Returns: jstring representing the security_context of socket or NULL if error + * Exceptions: NullPointerException if fileDescriptor object is NULL + */ +static jstring getFdCon(JNIEnv *env, jobject, jobject fileDescriptor) { + return getFdConInner(env, fileDescriptor, false); +} + +/* * Function: setFSCreateCon * Purpose: set security context used for creating a new file system object * Parameters: @@ -326,6 +347,7 @@ static const JNINativeMethod method_table[] = { { "getContext" , "()Ljava/lang/String;" , (void*)getCon }, { "getFileContext" , "(Ljava/lang/String;)Ljava/lang/String;" , (void*)getFileCon }, { "getPeerContext" , "(Ljava/io/FileDescriptor;)Ljava/lang/String;" , (void*)getPeerCon }, + { "getFileContext" , "(Ljava/io/FileDescriptor;)Ljava/lang/String;" , (void*)getFdCon }, { "getPidContext" , "(I)Ljava/lang/String;" , (void*)getPidCon }, { "isSELinuxEnforced" , "()Z" , (void*)isSELinuxEnforced}, { "isSELinuxEnabled" , "()Z" , (void*)isSELinuxEnabled }, diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index f70cf07b9535..f512ce418a93 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -332,8 +332,7 @@ static jlong nativeLockCanvas(JNIEnv* env, jclass clazz, SkImageInfo info = SkImageInfo::Make(outBuffer.width, outBuffer.height, convertPixelFormat(outBuffer.format), outBuffer.format == PIXEL_FORMAT_RGBX_8888 - ? kOpaque_SkAlphaType : kPremul_SkAlphaType, - GraphicsJNI::defaultColorSpace()); + ? kOpaque_SkAlphaType : kPremul_SkAlphaType); SkBitmap bitmap; ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format); diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp index 2921b3789e40..15319adf134a 100644 --- a/core/jni/android_view_TextureView.cpp +++ b/core/jni/android_view_TextureView.cpp @@ -94,8 +94,7 @@ static inline SkImageInfo convertPixelFormat(const ANativeWindow_Buffer& buffer) default: break; } - return SkImageInfo::Make(buffer.width, buffer.height, colorType, alphaType, - GraphicsJNI::defaultColorSpace()); + return SkImageInfo::Make(buffer.width, buffer.height, colorType, alphaType); } /** diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index 738069216b2c..19691e2cfbe3 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -386,7 +386,7 @@ static bool createPkgSandbox(uid_t uid, const char* package_name, std::string& p // Create /mnt/user/0/package/<package-name> userid_t user_id = multiuser_get_user_id(uid); StringAppendF(&pkg_sandbox_dir, "/%d", user_id); - if (fs_prepare_dir(pkg_sandbox_dir.c_str(), 0700, AID_ROOT, AID_ROOT) != 0) { + if (fs_prepare_dir(pkg_sandbox_dir.c_str(), 0751, AID_ROOT, AID_ROOT) != 0) { *error_msg = CREATE_ERROR("fs_prepare_dir failed on %s", pkg_sandbox_dir.c_str()); return false; } diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 6a88c300922f..ccf8aa64183c 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -34,7 +34,7 @@ <string name="defaultMsisdnAlphaTag" msgid="2850889754919584674">"MSISDN1"</string> <string name="mmiError" msgid="5154499457739052907">"Problem sa povezivanjem ili nevažeći MMI kôd."</string> <string name="mmiFdnError" msgid="5224398216385316471">"Operacija je ograničena samo na brojeve fiksnog biranja."</string> - <string name="mmiErrorWhileRoaming" msgid="762488890299284230">"Nije moguće promijeniti postavke za preusmjeravanje poziva s vašeg telefona dok ste u romingu."</string> + <string name="mmiErrorWhileRoaming" msgid="762488890299284230">"Nije moguće promijeniti postavke prosljeđivanja poziva s vašeg telefona dok ste u romingu."</string> <string name="serviceEnabled" msgid="8147278346414714315">"Usluga je omogućena."</string> <string name="serviceEnabledFor" msgid="6856228140453471041">"Usluga je omogućena za:"</string> <string name="serviceDisabled" msgid="1937553226592516411">"Usluga je onemogućena."</string> @@ -61,7 +61,7 @@ <string name="ClirMmi" msgid="7784673673446833091">"ID odlaznog poziva"</string> <string name="ColpMmi" msgid="3065121483740183974">"Identifikacija povezane linije"</string> <string name="ColrMmi" msgid="4996540314421889589">"Ograničenje identifikacije povezane linije"</string> - <string name="CfMmi" msgid="5123218989141573515">"Preusmjeravanje poziva"</string> + <string name="CfMmi" msgid="5123218989141573515">"Prosljeđivanje poziva"</string> <string name="CwMmi" msgid="9129678056795016867">"Poziv na čekanju"</string> <string name="BaMmi" msgid="455193067926770581">"Zabrana poziva"</string> <string name="PwdMmi" msgid="7043715687905254199">"Promjena lozinke"</string> @@ -89,17 +89,17 @@ <string name="EmergencyCallWarningTitle" msgid="813380189532491336">"Hitni pozivi su nedostupni"</string> <string name="EmergencyCallWarningSummary" msgid="1899692069750260619">"Nije moguće uspostaviti hitne pozive putem Wi‑Fi mreže"</string> <string name="notification_channel_network_alert" msgid="4427736684338074967">"Upozorenja"</string> - <string name="notification_channel_call_forward" msgid="2419697808481833249">"Preusmjeravanje poziva"</string> + <string name="notification_channel_call_forward" msgid="2419697808481833249">"Prosljeđivanje poziva"</string> <string name="notification_channel_emergency_callback" msgid="6686166232265733921">"Način rada za hitni povratni poziv"</string> <string name="notification_channel_mobile_data_status" msgid="4575131690860945836">"Status prijenosa podataka na mobilnoj mreži"</string> <string name="notification_channel_sms" msgid="3441746047346135073">"SMS poruke"</string> <string name="notification_channel_voice_mail" msgid="3954099424160511919">"Poruke govorne pošte"</string> - <string name="notification_channel_wfc" msgid="2130802501654254801">"WiFi pozivanje"</string> + <string name="notification_channel_wfc" msgid="2130802501654254801">"Pozivanje putem WiFi-ja"</string> <string name="notification_channel_sim" msgid="4052095493875188564">"Status SIM-a"</string> - <string name="peerTtyModeFull" msgid="6165351790010341421">"Ravnopravni uređaj zatražio TTY PUNI način rada"</string> - <string name="peerTtyModeHco" msgid="5728602160669216784">"Ravnopravni uređaj zatražio TTY HCO način rada"</string> - <string name="peerTtyModeVco" msgid="1742404978686538049">"Ravnopravni uređaj zatražio TTY VCO način rada"</string> - <string name="peerTtyModeOff" msgid="3280819717850602205">"Ravnopravni uređaj zatražio TTY ISKLJUČENI način rada"</string> + <string name="peerTtyModeFull" msgid="6165351790010341421">"Ravnopravni uređaj zatražio načina rada TTY FULL"</string> + <string name="peerTtyModeHco" msgid="5728602160669216784">"Ravnopravni uređaj zatražio načina rada TTY HCO"</string> + <string name="peerTtyModeVco" msgid="1742404978686538049">"Ravnopravni uređaj zatražio načina rada TTY VCO"</string> + <string name="peerTtyModeOff" msgid="3280819717850602205">"Ravnopravni uređaj zatražio načina rada TTY OFF"</string> <string name="serviceClassVoice" msgid="1258393812335258019">"Govorna"</string> <string name="serviceClassData" msgid="872456782077937893">"Podatke"</string> <string name="serviceClassFAX" msgid="5566624998840486475">"Faks"</string> @@ -122,16 +122,16 @@ <string name="roamingText11" msgid="4154476854426920970">"Oznaka da je uređaj u roamingu uključena"</string> <string name="roamingText12" msgid="1189071119992726320">"Oznaka da je uređaj u roamingu ugašena"</string> <string name="roamingTextSearching" msgid="8360141885972279963">"Traženje usluge"</string> - <string name="wfcRegErrorTitle" msgid="3855061241207182194">"Nije moguće postaviti WiFi pozivanje"</string> + <string name="wfcRegErrorTitle" msgid="3855061241207182194">"Nije moguće postaviti pozivanje putem WiFi-ja"</string> <string-array name="wfcOperatorErrorAlertMessages"> - <item msgid="3910386316304772394">"Da biste pozivali i slali poruke koristeći WiFi mrežu, prvo zatražite od operatera da postavi tu uslugu. Zatim ponovo uključite WiFi pozivanje u Postavkama. (Kôd greške: <xliff:g id="CODE">%1$s</xliff:g>)"</item> + <item msgid="3910386316304772394">"Da biste pozivali i slali poruke koristeći WiFi mrežu, prvo zatražite od operatera da postavi tu uslugu. Zatim ponovo uključite pozivanje putem WiFi-ja u Postavkama. (Kôd greške: <xliff:g id="CODE">%1$s</xliff:g>)"</item> </string-array> <string-array name="wfcOperatorErrorNotificationMessages"> <item msgid="7372514042696663278">"Došlo je do problema prilikom registracije pozivanja putem WiFi mreže kod vašeg operatera: <xliff:g id="CODE">%1$s</xliff:g>"</item> </string-array> <string-array name="wfcSpnFormats"> <item msgid="6830082633573257149">"%s"</item> - <item msgid="4397097370387921767">"WiFi pozivanje preko operatera %s"</item> + <item msgid="4397097370387921767">"Pozivanje putem WiFi-ja preko operatera %s"</item> </string-array> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Isključeno"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Preferira se WiFi"</string> @@ -521,7 +521,7 @@ </string-array> <string name="fingerprint_icon_content_description" msgid="2340202869968465936">"Ikona za otisak prsta"</string> <string name="permlab_manageFace" msgid="2137540986007309781">"upravljanje hardverom za autentifikaciju licem"</string> - <string name="permdesc_manageFace" msgid="8919637120670185330">"Omogućava aplikaciji da koristi metode za dodavanje i brisanje šablona lica za upotrebu."</string> + <string name="permdesc_manageFace" msgid="8919637120670185330">"Omogućava aplikaciji korištenje metoda za dodavanje i brisanje šablona lica za upotrebu."</string> <string name="permlab_useFaceAuthentication" msgid="8996134460546804535">"upotreba hardvera za autentifikaciju licem"</string> <string name="permdesc_useFaceAuthentication" msgid="5011118722951833089">"Omogućava aplikaciji da za autentifikaciju koristi hardver za autentifikaciju licem"</string> <string name="face_acquired_insufficient" msgid="5901287247766106330">"Obrada lica nije uspjela. Pokušajte ponovo."</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 289e49e16c99..40b5e29308d9 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -58,8 +58,8 @@ </plurals> <string name="imei" msgid="2625429890869005782">"IMEI"</string> <string name="meid" msgid="4841221237681254195">"MEID"</string> - <string name="ClipMmi" msgid="6952821216480289285">"Příchozí identifikace volajícího"</string> - <string name="ClirMmi" msgid="7784673673446833091">"Odchozí identifikace volajícího"</string> + <string name="ClipMmi" msgid="6952821216480289285">"Příchozí ID volajícího"</string> + <string name="ClirMmi" msgid="7784673673446833091">"Odchozí ID volajícího"</string> <string name="ColpMmi" msgid="3065121483740183974">"ID připojené linky"</string> <string name="ColrMmi" msgid="4996540314421889589">"Omezení ID připojené linky"</string> <string name="CfMmi" msgid="5123218989141573515">"Přesměrování hovorů"</string> @@ -73,12 +73,12 @@ <string name="RuacMmi" msgid="7827887459138308886">"Odmítnutí nevyžádaných obtěžujících hovorů"</string> <string name="CndMmi" msgid="3116446237081575808">"Doručení volaného čísla"</string> <string name="DndMmi" msgid="1265478932418334331">"Nerušit"</string> - <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Ve výchozím nastavení je identifikace volajícího omezena. Příští hovor: Omezeno"</string> - <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Ve výchozím nastavení je identifikace volajícího omezena. Příští hovor: Neomezeno"</string> - <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Ve výchozím nastavení není identifikace volajícího omezena. Příští hovor: Omezeno"</string> - <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Ve výchozím nastavení není identifikace volajícího omezena. Příští hovor: Neomezeno"</string> + <string name="CLIRDefaultOnNextCallOn" msgid="429415409145781923">"Ve výchozím nastavení je funkce ID volajícího omezena. Příští hovor: Omezeno"</string> + <string name="CLIRDefaultOnNextCallOff" msgid="3092918006077864624">"Ve výchozím nastavení je funkce ID volajícího omezena. Příští hovor: Neomezeno"</string> + <string name="CLIRDefaultOffNextCallOn" msgid="6179425182856418465">"Ve výchozím nastavení není funkce ID volajícího omezena. Příští hovor: Omezeno"</string> + <string name="CLIRDefaultOffNextCallOff" msgid="2567998633124408552">"Ve výchozím nastavení není funkce ID volajícího omezena. Příští hovor: Neomezeno"</string> <string name="serviceNotProvisioned" msgid="8614830180508686666">"Služba není zřízena."</string> - <string name="CLIRPermanent" msgid="3377371145926835671">"Nastavení identifikace volajícího nesmíte měnit."</string> + <string name="CLIRPermanent" msgid="3377371145926835671">"Nastavení ID volajícího nesmíte měnit."</string> <string name="RestrictedOnDataTitle" msgid="5221736429761078014">"Není k dispozici žádná mobilní datová služba"</string> <string name="RestrictedOnEmergencyTitle" msgid="6855466023161191166">"Tísňová volání jsou nedostupná"</string> <string name="RestrictedOnNormalTitle" msgid="3179574012752700984">"Hlasová volání nejsou k dispozici"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 8c86ac827cb4..947754f12a05 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -267,7 +267,7 @@ <string name="android_system_label" msgid="6577375335728551336">"Android-system"</string> <string name="user_owner_label" msgid="8836124313744349203">"Skift til personlig profil"</string> <string name="managed_profile_label" msgid="8947929265267690522">"Skift til arbejdsprofil"</string> - <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontaktpersoner"</string> + <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontakter"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"have adgang til dine kontaktpersoner"</string> <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> adgang til dine kontaktpersoner?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Placering"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 33053d2f19ff..e69584b8d829 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1894,7 +1894,7 @@ <string name="mmcc_illegal_ms_msim_template" msgid="5994323296399913454">"Carte SIM <xliff:g id="SIMNUMBER">%d</xliff:g> non autorisée"</string> <string name="mmcc_illegal_me_msim_template" msgid="5550259730350571826">"Carte SIM <xliff:g id="SIMNUMBER">%d</xliff:g> non autorisée"</string> <string name="popup_window_default_title" msgid="4874318849712115433">"Fenêtre pop-up"</string> - <string name="slice_more_content" msgid="8504342889413274608">"<xliff:g id="NUMBER">%1$d</xliff:g> autres"</string> + <string name="slice_more_content" msgid="8504342889413274608">"+ <xliff:g id="NUMBER">%1$d</xliff:g>"</string> <string name="shortcut_restored_on_lower_version" msgid="4860853725206702336">"La version de l\'application est revenue à une version antérieure ou n\'est pas compatible avec cet raccourci"</string> <string name="shortcut_restore_not_supported" msgid="5028808567940014190">"Le raccourci ne peut pas être restauré car l\'application n\'accepte pas la sauvegarde et la restauration"</string> <string name="shortcut_restore_signature_mismatch" msgid="2406209324521327518">"Le raccourci ne peut pas être restauré car la signature de l\'application est différente"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 445f3a70d749..de0b5287af0b 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -134,7 +134,7 @@ </string-array> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Non attiva"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Rete preferita: Wi-Fi"</string> - <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Modalità preferita: dati mobili"</string> + <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Rete preferita: dati mobili"</string> <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"Solo Wi-Fi"</string> <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: inoltro non effettuato"</string> <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 7557cfae2551..a75a00c7af19 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -60,7 +60,7 @@ <string name="ClirMmi" msgid="7784673673446833091">"Чыгуучу номурду аныктоо"</string> <string name="ColpMmi" msgid="3065121483740183974">"Туташкан линия ID-си"</string> <string name="ColrMmi" msgid="4996540314421889589">"Туташкан линия ID-син Чектөө"</string> - <string name="CfMmi" msgid="5123218989141573515">"Чалууну багыттоо"</string> + <string name="CfMmi" msgid="5123218989141573515">"Башка номерге багыттоо"</string> <string name="CwMmi" msgid="9129678056795016867">"Чалууну кармап туруу"</string> <string name="BaMmi" msgid="455193067926770581">"Чалууга тыюу салуу"</string> <string name="PwdMmi" msgid="7043715687905254199">"Сырсөздү өзгөртүү"</string> diff --git a/core/res/res/values-mcc313-mnc100-as/strings.xml b/core/res/res/values-mcc313-mnc100-as/strings.xml deleted file mode 100644 index 350757ca43a4..000000000000 --- a/core/res/res/values-mcc313-mnc100-as/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ফ\'নৰ অনুমতি নাই MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-az/strings.xml b/core/res/res/values-mcc313-mnc100-az/strings.xml deleted file mode 100644 index 44796dfc1b95..000000000000 --- a/core/res/res/values-mcc313-mnc100-az/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"MM#6 telefonu dəstəklənmir"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml b/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml deleted file mode 100644 index d5bf39e51327..000000000000 --- a/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Telefon nije dozvoljen MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-be/strings.xml b/core/res/res/values-mcc313-mnc100-be/strings.xml deleted file mode 100644 index c9f4633c3ba2..000000000000 --- a/core/res/res/values-mcc313-mnc100-be/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Тэлефон не дапускаецца MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-bn/strings.xml b/core/res/res/values-mcc313-mnc100-bn/strings.xml deleted file mode 100644 index 5292241b0745..000000000000 --- a/core/res/res/values-mcc313-mnc100-bn/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ফোন অনুমোদিত নয় MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-bs/strings.xml b/core/res/res/values-mcc313-mnc100-bs/strings.xml deleted file mode 100644 index d5bf39e51327..000000000000 --- a/core/res/res/values-mcc313-mnc100-bs/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Telefon nije dozvoljen MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-en-rAU/strings.xml b/core/res/res/values-mcc313-mnc100-en-rAU/strings.xml deleted file mode 100644 index f1a361146a97..000000000000 --- a/core/res/res/values-mcc313-mnc100-en-rAU/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Phone not allowed MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-en-rCA/strings.xml b/core/res/res/values-mcc313-mnc100-en-rCA/strings.xml deleted file mode 100644 index f1a361146a97..000000000000 --- a/core/res/res/values-mcc313-mnc100-en-rCA/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Phone not allowed MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-en-rIN/strings.xml b/core/res/res/values-mcc313-mnc100-en-rIN/strings.xml deleted file mode 100644 index f1a361146a97..000000000000 --- a/core/res/res/values-mcc313-mnc100-en-rIN/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Phone not allowed MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-en-rXC/strings.xml b/core/res/res/values-mcc313-mnc100-en-rXC/strings.xml deleted file mode 100644 index 8a8bf7e02106..000000000000 --- a/core/res/res/values-mcc313-mnc100-en-rXC/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Phone not allowed MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-et/strings.xml b/core/res/res/values-mcc313-mnc100-et/strings.xml deleted file mode 100644 index 83cfbafd87cc..000000000000 --- a/core/res/res/values-mcc313-mnc100-et/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Telefon pole lubatud MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-eu/strings.xml b/core/res/res/values-mcc313-mnc100-eu/strings.xml deleted file mode 100644 index 028ca37f03ec..000000000000 --- a/core/res/res/values-mcc313-mnc100-eu/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Telefonoa ez da onartzen MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-fr-rCA/strings.xml b/core/res/res/values-mcc313-mnc100-fr-rCA/strings.xml deleted file mode 100644 index 89c50ea24f3c..000000000000 --- a/core/res/res/values-mcc313-mnc100-fr-rCA/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Téléphone non autorisé MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-gl/strings.xml b/core/res/res/values-mcc313-mnc100-gl/strings.xml deleted file mode 100644 index 04390a0b5f84..000000000000 --- a/core/res/res/values-mcc313-mnc100-gl/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Non se admite o teléfono MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-gu/strings.xml b/core/res/res/values-mcc313-mnc100-gu/strings.xml deleted file mode 100644 index 6291d574c7ed..000000000000 --- a/core/res/res/values-mcc313-mnc100-gu/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"MM#6 ફોનની મંજૂરી નથી"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-hy/strings.xml b/core/res/res/values-mcc313-mnc100-hy/strings.xml deleted file mode 100644 index 62acde34ced8..000000000000 --- a/core/res/res/values-mcc313-mnc100-hy/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Հեռախոսի օգտագործումն արգելված է (MM#6)"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-is/strings.xml b/core/res/res/values-mcc313-mnc100-is/strings.xml deleted file mode 100644 index 3ad7b3c3d11b..000000000000 --- a/core/res/res/values-mcc313-mnc100-is/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Sími ekki leyfður MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-ka/strings.xml b/core/res/res/values-mcc313-mnc100-ka/strings.xml deleted file mode 100644 index a063fc4843da..000000000000 --- a/core/res/res/values-mcc313-mnc100-ka/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ტელეფონი დაუშვებელია MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-kk/strings.xml b/core/res/res/values-mcc313-mnc100-kk/strings.xml deleted file mode 100644 index 0562a2f0024a..000000000000 --- a/core/res/res/values-mcc313-mnc100-kk/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Телефон пайдалануға болмайды MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-km/strings.xml b/core/res/res/values-mcc313-mnc100-km/strings.xml deleted file mode 100644 index 74e607b6045f..000000000000 --- a/core/res/res/values-mcc313-mnc100-km/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"មិនអនុញ្ញាតចំពោះទូរសព្ទទេ MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-kn/strings.xml b/core/res/res/values-mcc313-mnc100-kn/strings.xml deleted file mode 100644 index e287270ff7ba..000000000000 --- a/core/res/res/values-mcc313-mnc100-kn/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ಫೋನ್ MM#6 ಅನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-ky/strings.xml b/core/res/res/values-mcc313-mnc100-ky/strings.xml deleted file mode 100644 index 8c08c4ffb73c..000000000000 --- a/core/res/res/values-mcc313-mnc100-ky/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Телефонду колдонууга тыюу салынган MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-lo/strings.xml b/core/res/res/values-mcc313-mnc100-lo/strings.xml deleted file mode 100644 index 793b87bee136..000000000000 --- a/core/res/res/values-mcc313-mnc100-lo/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ໂທລະສັບ MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-mk/strings.xml b/core/res/res/values-mcc313-mnc100-mk/strings.xml deleted file mode 100644 index 0b403e99491c..000000000000 --- a/core/res/res/values-mcc313-mnc100-mk/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Телефонот не е дозволен MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-ml/strings.xml b/core/res/res/values-mcc313-mnc100-ml/strings.xml deleted file mode 100644 index 1adc4556562b..000000000000 --- a/core/res/res/values-mcc313-mnc100-ml/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ഫോൺ അനുവദനീയമല്ല MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-mn/strings.xml b/core/res/res/values-mcc313-mnc100-mn/strings.xml deleted file mode 100644 index 5d5fbff3e9d4..000000000000 --- a/core/res/res/values-mcc313-mnc100-mn/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Утсыг зөвшөөрөөгүй MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-mr/strings.xml b/core/res/res/values-mcc313-mnc100-mr/strings.xml deleted file mode 100644 index 32c69463e263..000000000000 --- a/core/res/res/values-mcc313-mnc100-mr/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"फोन MM#6 ला अनुमती देत नाही"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-my/strings.xml b/core/res/res/values-mcc313-mnc100-my/strings.xml deleted file mode 100644 index 7de66f763ea1..000000000000 --- a/core/res/res/values-mcc313-mnc100-my/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ဖုန်းကို ခွင့်မပြုပါ MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-ne/strings.xml b/core/res/res/values-mcc313-mnc100-ne/strings.xml deleted file mode 100644 index 0fb9d648c336..000000000000 --- a/core/res/res/values-mcc313-mnc100-ne/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"फोनलाई अनुमति छैन MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-or/strings.xml b/core/res/res/values-mcc313-mnc100-or/strings.xml deleted file mode 100644 index a64ee94d284c..000000000000 --- a/core/res/res/values-mcc313-mnc100-or/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ଫୋନ୍ର ଅନୁମତି ନାହିଁ MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-pa/strings.xml b/core/res/res/values-mcc313-mnc100-pa/strings.xml deleted file mode 100644 index 87b2e4742310..000000000000 --- a/core/res/res/values-mcc313-mnc100-pa/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ਫ਼ੋਨ ਨੂੰ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-pt-rBR/strings.xml b/core/res/res/values-mcc313-mnc100-pt-rBR/strings.xml deleted file mode 100644 index f80f618e60af..000000000000 --- a/core/res/res/values-mcc313-mnc100-pt-rBR/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Smartphone não permitido MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-si/strings.xml b/core/res/res/values-mcc313-mnc100-si/strings.xml deleted file mode 100644 index 9493af0bcaf0..000000000000 --- a/core/res/res/values-mcc313-mnc100-si/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"දුරකථනය MM#6 ඉඩ නොදේ"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-sq/strings.xml b/core/res/res/values-mcc313-mnc100-sq/strings.xml deleted file mode 100644 index 237a4a447d00..000000000000 --- a/core/res/res/values-mcc313-mnc100-sq/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Telefoni nuk lejohet MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-sw/strings.xml b/core/res/res/values-mcc313-mnc100-sw/strings.xml deleted file mode 100644 index a7574fbbfce1..000000000000 --- a/core/res/res/values-mcc313-mnc100-sw/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Simu hairuhusiwi MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-ta/strings.xml b/core/res/res/values-mcc313-mnc100-ta/strings.xml deleted file mode 100644 index 7ef5ea9cef2d..000000000000 --- a/core/res/res/values-mcc313-mnc100-ta/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ஃபோன் அனுமதிக்கப்படவில்லை MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-te/strings.xml b/core/res/res/values-mcc313-mnc100-te/strings.xml deleted file mode 100644 index 8908fb72f499..000000000000 --- a/core/res/res/values-mcc313-mnc100-te/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"ఫోన్ అనుమతించబడదు MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-ur/strings.xml b/core/res/res/values-mcc313-mnc100-ur/strings.xml deleted file mode 100644 index d670d0e60858..000000000000 --- a/core/res/res/values-mcc313-mnc100-ur/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"فون کی اجازت نہیں ہے MM#6"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-uz/strings.xml b/core/res/res/values-mcc313-mnc100-uz/strings.xml deleted file mode 100644 index 202a30ca7445..000000000000 --- a/core/res/res/values-mcc313-mnc100-uz/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"Chaqiruvlar taqiqlangan (MM#6)"</string> -</resources> diff --git a/core/res/res/values-mcc313-mnc100-zh-rHK/strings.xml b/core/res/res/values-mcc313-mnc100-zh-rHK/strings.xml deleted file mode 100644 index db85730e3aed..000000000000 --- a/core/res/res/values-mcc313-mnc100-zh-rHK/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="7320955531336937252">"不允許手機 MM#6"</string> -</resources> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 2a30fcb044a8..e1b967093180 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -133,8 +133,8 @@ <item msgid="4397097370387921767">"%s Wi-Fi Дуудлага"</item> </string-array> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Идэвхгүй"</string> - <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi илүү эрхэмлэдэг"</string> - <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Давуу эрхтэй мобайл"</string> + <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi давуу эрхтэй"</string> + <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Мобайл давуу эрхтэй"</string> <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"Зөвхөн Wi-Fi"</string> <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: дамжуулагдаагүй"</string> <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string> @@ -762,7 +762,7 @@ <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"Тайлах PIN-г оруулна уу"</string> <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"Буруу PIN код."</string> <string name="keyguard_label_text" msgid="861796461028298424">"Тайлах бол Цэсийг дараад 0."</string> - <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Яаралтай дугаар"</string> + <string name="emergency_call_dialog_number_for_display" msgid="696192103195090970">"Яаралтай тусламжийн дугаар"</string> <string name="lockscreen_carrier_default" msgid="6169005837238288522">"Үйлчилгээ байхгүй"</string> <string name="lockscreen_screen_locked" msgid="7288443074806832904">"Дэлгэц түгжигдсэн."</string> <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Яаралтай дуудлага хийх буюу эсвэл түгжээг тайлах бол цэсийг дарна уу."</string> @@ -1161,7 +1161,7 @@ <string name="dump_heap_text" msgid="4809417337240334941">"Энэ үйл явц <xliff:g id="PROC">%1$s</xliff:g> нь үйл ажиллагааны санах ойн хязгаар болох <xliff:g id="SIZE">%2$s</xliff:g> хэмжээг давсан байна. Та хэт их хуримтлагдсан мэдээллийг тэдгээрийн өөрсдийнх нь хөгжүүлэгчтэй хуваалцах боломжтой. Болгоомжтой байгаарай: энэхүү хэт их хуримтлагдсан мэдээлэлд аппликейшнаас нэвтрэх боломжтой таны хувийн мэдээлэл агуулагдсан байж болно."</string> <string name="sendText" msgid="5209874571959469142">"Текст илгээх үйлдлийг сонгох"</string> <string name="volume_ringtone" msgid="6885421406845734650">"Хонхны аяны хэмжээ"</string> - <string name="volume_music" msgid="5421651157138628171">"Медиа дууны хэмжээ"</string> + <string name="volume_music" msgid="5421651157138628171">"Медиа дууны түвшин"</string> <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Блютүүтээр тоглож байна"</string> <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Хонхны дууг чимээгүй болгов"</string> <string name="volume_call" msgid="3941680041282788711">"Ирсэн дуудлагын дууны хэмжээ"</string> @@ -1172,7 +1172,7 @@ <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Блютүүтын хэмжээ"</string> <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Хонхны дууны хэмжээ"</string> <string name="volume_icon_description_incall" msgid="8890073218154543397">"Дуудлагын дууны хэмжээ"</string> - <string name="volume_icon_description_media" msgid="4217311719665194215">"Медиа дууны хэмжээ"</string> + <string name="volume_icon_description_media" msgid="4217311719665194215">"Медиа дууны түвшин"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Мэдэгдлийн дууны хэмжээ"</string> <string name="ringtone_default" msgid="3789758980357696936">"Үндсэн хонхны ая"</string> <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Үндсэн (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 27f64775d2c9..65c882862dd1 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1842,7 +1842,7 @@ <string name="demo_starting_message" msgid="5268556852031489931">"डेमो प्रारंभ करत आहे..."</string> <string name="demo_restarting_message" msgid="952118052531642451">"डिव्हाइस रीसेट करत आहे..."</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> अक्षम केले"</string> - <string name="conference_call" msgid="3751093130790472426">"परिषद कॉल"</string> + <string name="conference_call" msgid="3751093130790472426">"कॉन्फरन्स कॉल"</string> <string name="tooltip_popup_title" msgid="5253721848739260181">"टूलटिप"</string> <string name="app_category_game" msgid="5431836943981492993">"गेम"</string> <string name="app_category_audio" msgid="1659853108734301647">"संगीत आणि ऑडिओ"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 05aed4448feb..de01af6cce31 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -242,7 +242,7 @@ <string name="global_action_settings" msgid="1756531602592545966">"Setări"</string> <string name="global_action_assist" msgid="3892832961594295030">"Asistență"</string> <string name="global_action_voice_assist" msgid="7751191495200504480">"Asistent vocal"</string> - <string name="global_action_lockdown" msgid="1099326950891078929">"Blocați"</string> + <string name="global_action_lockdown" msgid="1099326950891078929">"Blocare strictă"</string> <string name="status_bar_notification_info_overflow" msgid="5301981741705354993">"˃999"</string> <string name="notification_hidden_text" msgid="6351207030447943784">"Notificare nouă"</string> <string name="notification_channel_virtual_keyboard" msgid="6969925135507955575">"Tastatură virtuală"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 8f29cb7d29ab..3f2f46d56b42 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -135,8 +135,8 @@ <item msgid="4397097370387921767">"Volanie siete Wi‑Fi %s"</item> </string-array> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Vypnuté"</string> - <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Uprednostniť Wi‑Fi"</string> - <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Preferujem mobilné dáta"</string> + <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Preferovať Wi‑Fi"</string> + <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Preferovať mobilné spojenie"</string> <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"Len Wi‑Fi"</string> <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Nepresmerované"</string> <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 3e035bfbba3f..90ab23b059b5 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -135,7 +135,7 @@ <item msgid="4397097370387921767">"Klicanje prek Wi-Fi-ja (%s)"</item> </string-array> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Izklopljeno"</string> - <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Prednostno – Wi-Fi"</string> + <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Prednostno Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="1988279625335345908">"Prednostno mobilno"</string> <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"Samo Wi-Fi"</string> <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ni posredovano"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 18fc2c9603fd..0b7520211b1e 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1772,7 +1772,7 @@ <string name="zen_mode_forever_dnd" msgid="3792132696572189081">"直至您關閉「請勿騷擾」功能"</string> <string name="zen_mode_rule_name_combination" msgid="191109939968076477">"<xliff:g id="FIRST">%1$s</xliff:g>/<xliff:g id="REST">%2$s</xliff:g>"</string> <string name="toolbar_collapse_description" msgid="2821479483960330739">"收合"</string> - <string name="zen_mode_feature_name" msgid="5254089399895895004">"請勿干擾"</string> + <string name="zen_mode_feature_name" msgid="5254089399895895004">"請勿騷擾"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"休息時間"</string> <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"平日夜間"</string> <string name="zen_mode_default_weekends_name" msgid="2786495801019345244">"週末"</string> diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 50a6ff313f9b..e1db71f701b6 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -506,13 +506,13 @@ please see styles_device_defaults.xml. <item name="textEditSuggestionHighlightStyle">?attr/textEditSuggestionHighlightStyle</item> <item name="textCursorDrawable">?attr/textCursorDrawable</item> <item name="breakStrategy">high_quality</item> - <item name="hyphenationFrequency">normal</item> + <item name="hyphenationFrequency">none</item> </style> <style name="Widget.CheckedTextView"> <item name="textAlignment">viewStart</item> <item name="breakStrategy">high_quality</item> - <item name="hyphenationFrequency">normal</item> + <item name="hyphenationFrequency">none</item> </style> <style name="Widget.TextView.ListSeparator"> @@ -540,7 +540,7 @@ please see styles_device_defaults.xml. <item name="textColor">?attr/editTextColor</item> <item name="gravity">center_vertical</item> <item name="breakStrategy">simple</item> - <item name="hyphenationFrequency">normal</item> + <item name="hyphenationFrequency">none</item> <item name="defaultFocusHighlightEnabled">false</item> </style> diff --git a/native/android/OWNERS b/native/android/OWNERS index 11d4be43571e..067cdf8eb983 100644 --- a/native/android/OWNERS +++ b/native/android/OWNERS @@ -1,11 +1,15 @@ set noparent +per-file libandroid_net.map.txt=codewiz@google.com per-file libandroid_net.map.txt=ek@google.com per-file libandroid_net.map.txt=jchalard@google.com per-file libandroid_net.map.txt=lorenzo@google.com +per-file libandroid_net.map.txt=reminv@google.com per-file libandroid_net.map.txt=satk@google.com +per-file net.c=codewiz@google.com per-file net.c=ek@google.com per-file net.c=jchalard@google.com per-file net.c=lorenzo@google.com +per-file net.c=reminv@google.com per-file net.c=satk@google.com diff --git a/packages/CaptivePortalLogin/OWNERS b/packages/CaptivePortalLogin/OWNERS index ce50558bf4f6..7311eee32a4c 100644 --- a/packages/CaptivePortalLogin/OWNERS +++ b/packages/CaptivePortalLogin/OWNERS @@ -1,6 +1,8 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com lorenzo@google.com +reminv@google.com satk@google.com diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 9bacaf33806e..0887010bd3b5 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"op <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Tydsduur"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vra elke keer"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Sopas"</string> </resources> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 329e9fe03271..b69618d00b67 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"በ<xliff:g id="WHEN">%1$s</xliff:g> ላይ"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"የቆይታ ጊዜ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ሁልጊዜ ጠይቅ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ልክ አሁን"</string> </resources> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 846f5d82a71f..37e8346d4166 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -453,5 +453,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"يوم <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"المدة"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"الطلب في كل مرة"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"للتو"</string> </resources> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index e3b4bc97a79f..787d4d5687e5 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> বজাত"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"সময়সীমা"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"প্ৰতিবাৰতে সোধক"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"এই মাত্ৰ"</string> </resources> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 5a49c62bd1fe..e3211265c236 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> olduqda"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Müddət"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Hər dəfə soruşun"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"İndicə"</string> </resources> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index 75999a403860..b4ea7b90b1ff 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -450,5 +450,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trajanje"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Uvek pitaj"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Upravo sada"</string> </resources> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 654138395e03..630d697a3427 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"у <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Працягласць"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Заўсёды пытацца"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Зараз"</string> </resources> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 676114026b30..aa42e0a2ac63 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"в/ъв <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Времетраене"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Да се пита винаги"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Току-що"</string> </resources> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 66f5c0709fdb..c11b58ef5fc8 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"তারিখ ও সময় <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"সময়কাল"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"প্রতিবার জিজ্ঞেস করা হবে"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"এখনই"</string> </resources> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index e049f6f99d18..887a74bf6597 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -450,5 +450,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"u <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trajanje"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pitaj svaki put"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Upravo"</string> </resources> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index d30be58d45ce..7d350956722e 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"Data: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Durada"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pregunta sempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Ara mateix"</string> </resources> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index a90231abf842..1057ae014a5c 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"v <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trvání"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pokaždé se zeptat"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Právě teď"</string> </resources> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index fbedd900c1b9..6cd185558e2c 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"på <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Varighed"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Spørg hver gang"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Lige nu"</string> </resources> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index 6fb0fc9941be..aaacc29f1022 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"am <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Dauer"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Jedes Mal fragen"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Gerade eben"</string> </resources> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 336075faaaf1..eb8346dffc3c 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"το/τη(ν) <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Διάρκεια"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Να ερωτώμαι κάθε φορά"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Μόλις τώρα"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index e028e73932a1..a00f018f0d3c 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"on <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duration"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index e028e73932a1..a00f018f0d3c 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"on <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duration"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index e028e73932a1..a00f018f0d3c 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"on <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duration"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index e028e73932a1..a00f018f0d3c 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"on <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duration"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index 5e046e03242f..0b70def9a93c 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"on <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duration"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string> </resources> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 6c4f3b0172ab..9085adbf103b 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"el <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duración"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Preguntar siempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Recién"</string> </resources> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index f04767b72b78..038dfd4b309a 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"Fecha: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duración"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Preguntar siempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Justo ahora"</string> </resources> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 1f50226d9a47..d9a93c980e82 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"– <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Kestus"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Küsi iga kord"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Äsja"</string> </resources> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 04109771ee61..739eaf0ff028 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"data: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Iraupena"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Galdetu beti"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Oraintxe"</string> </resources> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 447ce3cf6172..18fb3e2d3170 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"روز <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"مدت"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"هربار پرسیده شود"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"هماکنون"</string> </resources> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index 377f8ce700b3..38584862cfd7 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Kesto"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Kysy aina"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Äsken"</string> </resources> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 67e7779e692c..36efa53d418e 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"le <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Durée"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Toujours demander"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"À l\'instant"</string> </resources> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index e94dd7383ee3..9cadd3c26bdf 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"le <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Durée"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Toujours demander"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"À l\'instant"</string> </resources> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index 3e55dc3f93bc..82a56e69db6f 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"na seguinte data: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duración"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Preguntar sempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora mesmo"</string> </resources> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index bccf0e6ef227..2af406de54a5 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> વાગ્યે"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"અવધિ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"દર વખતે પૂછો"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"હમણાં જ"</string> </resources> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index c5d662cb660d..4bd79f960978 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"अलार्म <xliff:g id="WHEN">%1$s</xliff:g> को बजेगा"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"अवधि"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"हर बार पूछें"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"अभी-अभी"</string> </resources> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index f269c384fbaf..8eb41b5a51f6 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -450,5 +450,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"u <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trajanje"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pitaj svaki put"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Upravo sad"</string> </resources> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index a09a4ff7851b..5fee9339c9d0 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"ezen a napon: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Időtartam"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Mindig kérdezzen rá"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Az imént"</string> </resources> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index c808fe72c6aa..8f68ac7b8206 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>-ին"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Տևողություն"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Հարցնել ամեն անգամ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Հենց նոր"</string> </resources> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index e4b12e4c6832..7c18a83220c4 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"pada <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Durasi"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Selalu tanya"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Baru saja"</string> </resources> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 61510c2e2401..0f2d55ea8b74 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"á/í <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Lengd"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Spyrja í hvert skipti"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Rétt í þessu"</string> </resources> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index 546495b5c10f..f44fbb3e817c 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"il giorno <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Durata"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Chiedi ogni volta"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Adesso"</string> </resources> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index 015487ab31ff..c1d858cf0546 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"ב-<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"משך"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"שאל בכל פעם"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"הרגע"</string> </resources> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index b2a6bd003f06..d59c611a417b 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"期間"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"毎回確認"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"たった今"</string> </resources> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index bd09bf16d858..4418bef9bd8d 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>-ზე"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ხანგრძლივობა"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ყოველთვის მკითხეთ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ახლახან"</string> </resources> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 005ee6db824d..88669a7bb28f 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"Уақыты: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Ұзақтығы"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Әрдайым сұрау"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Дәл қазір"</string> </resources> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index d90a89f801b6..509dafa1c046 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"នៅថ្ងៃ <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"រយៈពេល"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"សួរគ្រប់ពេល"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"អម្បាញ់មិញ"</string> </resources> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index af7890ef6f88..f01fac786edc 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> ಕ್ಕೆ"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ಅವಧಿ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ಇದೀಗ"</string> </resources> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 14ce137f0822..34fa2ae1827d 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"일시: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"지속 시간"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"항상 확인"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"조금 전"</string> </resources> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 109c47eb1811..0a3bd80fc9f2 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Узактыгы"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ар дайым суралсын"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Азыр эле"</string> </resources> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 4034a7e816a0..2853fee84462 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"ເວລາ <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ໄລຍະເວລາ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ຖາມທຸກເທື່ອ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ຕອນນີ້"</string> </resources> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index c9748127aad0..3866922877e8 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trukmė"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Klausti kaskart"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Ką tik"</string> </resources> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index 80aa91798d65..6133f7f62a66 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -450,5 +450,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Ilgums"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vaicāt katru reizi"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Tikko"</string> </resources> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 534dc2a311aa..0a27a06098ab 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"во <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Времетраење"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Секогаш прашувај"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Неодамнешни"</string> </resources> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 01d710703f43..8601d97c940e 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>-ന്"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ദൈർഘ്യം"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"എപ്പോഴും ചോദിക്കുക"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ഇപ്പോൾ"</string> </resources> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 960f3e1efea9..62dd1e946d47 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>-д"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Хугацаа"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Тухай бүрт асуух"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Дөнгөж сая"</string> </resources> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 6e89a846f649..9428338c527b 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> रोजी"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"कालावधी"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"प्रत्येक वेळी विचारा"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"आत्ताच"</string> </resources> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index f3f9eb649722..47d4cbc1b36d 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"pada <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Tempoh"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Tanya setiap kali"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Sebentar tadi"</string> </resources> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index adae0d2ded3d..40e351adbc09 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> တွင်"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ကြာချိန်"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"အမြဲမေးပါ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ယခုလေးတင်"</string> </resources> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index a3293e5ba400..a9637c15416a 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Varighet"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Spør hver gang"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Nå nettopp"</string> </resources> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index ca6fe8829406..6ae6a22bf5f2 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> मा"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"अवधि"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"प्रत्येक पटक सोध्नुहोस्"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"अहिले भर्खरै"</string> </resources> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index a5d68ece7646..e6a7e0a0d9b6 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"op <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duur"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Altijd vragen"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Zojuist"</string> </resources> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 987d075bb707..3532e897f7fd 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> ବେଳେ"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ଅବଧି"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ଏହିକ୍ଷଣି"</string> </resources> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index 995ebfe5f773..ff1f4f334aed 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> ਵਜੇ"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ਮਿਆਦ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ਹੁਣੇ ਹੀ"</string> </resources> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index e472b15c92f2..7ff80c9308f8 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"w: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Czas"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Zawsze pytaj"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Przed chwilą"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 98b877bee5e7..585aee6e3a0d 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duração"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Perguntar sempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index ce40198442f9..e41acde71a1e 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"no(a) <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duração"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Perguntar sempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora mesmo"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 98b877bee5e7..585aee6e3a0d 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Duração"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Perguntar sempre"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Agora"</string> </resources> diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml index e4a341a04b6b..7935a2a0e3fd 100644 --- a/packages/SettingsLib/res/values-ro/arrays.xml +++ b/packages/SettingsLib/res/values-ro/arrays.xml @@ -22,7 +22,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string-array name="wifi_status"> <item msgid="1922181315419294640"></item> - <item msgid="8934131797783724664">"În curs de scanare..."</item> + <item msgid="8934131797783724664">"Se caută..."</item> <item msgid="8513729475867537913">"Se conectează..."</item> <item msgid="515055375277271756">"În curs de autentificare…"</item> <item msgid="1943354004029184381">"Se obține adresa IP..."</item> @@ -36,7 +36,7 @@ </string-array> <string-array name="wifi_status_with_ssid"> <item msgid="7714855332363650812"></item> - <item msgid="8878186979715711006">"În curs de scanare..."</item> + <item msgid="8878186979715711006">"Se caută..."</item> <item msgid="355508996603873860">"Se conectează la <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> <item msgid="554971459996405634">"Se autentifică cu <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="7928343808033020343">"Se obține adresa IP de la <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index b53a3e33469a..8024047e1b6e 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -450,5 +450,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Durată"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Întreabă de fiecare dată"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Chiar acum"</string> </resources> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index a421c728c149..494d107cf373 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Длительность"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Всегда спрашивать"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Только что"</string> </resources> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 6916787a9e86..21c96f1b4ff1 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>හිදී"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"කාල සීමාව"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"සෑම විටම ඉල්ලන්න"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"මේ දැන්"</string> </resources> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index fc30b702851a..4a92357518e6 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"o <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trvanie"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vždy sa opýtať"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Teraz"</string> </resources> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 458f7f1823a0..fb17c17900b9 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"v <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Trajanje"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vedno vprašaj"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Pravkar"</string> </resources> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index cab1201ec5a8..a8e9a76e9c38 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"ditën <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Kohëzgjatja"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pyet çdo herë"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Pikërisht tani"</string> </resources> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index d2ebb18399c5..fe158a0645f7 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -450,5 +450,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Трајање"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Увек питај"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Управо сада"</string> </resources> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index 0f33159281c1..99e915a0ca8b 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"på <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Varaktighet"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Fråga varje gång"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Nyss"</string> </resources> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 2d752ea92d5d..ce06a62ac28a 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"siku ya <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Muda"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Uliza kila wakati"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Sasa hivi"</string> </resources> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index 5f63fee33b43..9c8a2f19ba7a 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"அலாரம்: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"கால அளவு"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ஒவ்வொரு முறையும் கேள்"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"சற்றுமுன்"</string> </resources> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index c30b9cd65309..cb2403c1a1ae 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>కి"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"వ్యవధి"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ప్రతిసారి అడుగు"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ఇప్పుడే"</string> </resources> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index b937a7d285a1..e89a4d027e13 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"วัน<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ระยะเวลา"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ถามทุกครั้ง"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"เมื่อสักครู่"</string> </resources> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 2e62dc081da6..e527eec87ba0 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"sa <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Tagal"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Magtanong palagi"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Ngayon lang"</string> </resources> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index 0995a804902c..2f7f2f638b27 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"zaman: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Süre"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Her zaman sor"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Az önce"</string> </resources> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index 06fe03676b58..cb99b5d56b5e 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -451,5 +451,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Тривалість"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Запитувати щоразу"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Щойно"</string> </resources> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 6b33df7b3d01..af5e83c36fd3 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> بجے"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"مدت"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ہر بار پوچھیں"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"ابھی ابھی"</string> </resources> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index fdb6bb6d7714..0072db826e08 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Davomiyligi"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Har safar so‘ralsin"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Hozir"</string> </resources> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index 88721084385b..b3b5a458f213 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"vào <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Thời lượng"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Luôn hỏi"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Vừa xong"</string> </resources> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index addad73474c9..cdd069b1c81e 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"时间:<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"持续时间"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"每次都询问"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"刚刚"</string> </resources> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 8054548f96fe..f7b6fc17877f 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"時間:<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"持續時間"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"每次都詢問"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"剛剛"</string> </resources> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 95d8b5d4acd4..6dc0720a5062 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"時間:<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"時間長度"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"每次都詢問"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"剛剛"</string> </resources> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 541c5883d51b..ae552fc4727f 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -449,5 +449,7 @@ <string name="alarm_template_far" msgid="3779172822607461675">"nge-<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Ubude besikhathi"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Buza njalo"</string> + <!-- no translation found for zen_mode_forever (2704305038191592967) --> + <skip /> <string name="time_unit_just_now" msgid="6363336622778342422">"Khona manje"</string> </resources> diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothCallback.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothCallback.java index eba6f94de12a..a91c45dd59af 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothCallback.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothCallback.java @@ -33,7 +33,7 @@ public interface BluetoothCallback { * {@link android.bluetooth.BluetoothAdapter#STATE_ON}, * {@link android.bluetooth.BluetoothAdapter#STATE_TURNING_OFF}. */ - void onBluetoothStateChanged(int bluetoothState); + default void onBluetoothStateChanged(int bluetoothState) {} /** * It will be called when the local Bluetooth adapter has started @@ -43,7 +43,7 @@ public interface BluetoothCallback { * * @param started indicate the current process is started or finished. */ - void onScanningStateChanged(boolean started); + default void onScanningStateChanged(boolean started) {} /** * It will be called in following situations: @@ -54,7 +54,7 @@ public interface BluetoothCallback { * * @param cachedDevice the Bluetooth device. */ - void onDeviceAdded(CachedBluetoothDevice cachedDevice); + default void onDeviceAdded(CachedBluetoothDevice cachedDevice) {} /** * It will be called when a remote device that was @@ -63,7 +63,7 @@ public interface BluetoothCallback { * * @param cachedDevice the Bluetooth device. */ - void onDeviceDeleted(CachedBluetoothDevice cachedDevice); + default void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {} /** * It will be called when bond state of a remote device is changed. @@ -75,7 +75,7 @@ public interface BluetoothCallback { * {@link android.bluetooth.BluetoothDevice#BOND_BONDING}, * {@link android.bluetooth.BluetoothDevice#BOND_BONDED}. */ - void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState); + default void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {} /** * It will be called in following situations: @@ -91,7 +91,7 @@ public interface BluetoothCallback { * {@link android.bluetooth.BluetoothAdapter#STATE_CONNECTED}, * {@link android.bluetooth.BluetoothAdapter#STATE_DISCONNECTING}. */ - void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state); + default void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {} /** * It will be called when device been set as active for {@code bluetoothProfile} @@ -103,7 +103,7 @@ public interface BluetoothCallback { * @param activeDevice the active Bluetooth device. * @param bluetoothProfile the profile of active Bluetooth device. */ - void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile); + default void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile) {} /** * It will be called in following situations: @@ -113,7 +113,7 @@ public interface BluetoothCallback { * {@link android.bluetooth.BluetoothHeadset#ACTION_AUDIO_STATE_CHANGED} * {@link android.telephony.TelephonyManager#ACTION_PHONE_STATE_CHANGED} */ - void onAudioModeChanged(); + default void onAudioModeChanged() {} /** * It will be called when one of the bluetooth device profile connection state is changed. diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/DashboardCategory.java b/packages/SettingsLib/src/com/android/settingslib/drawer/DashboardCategory.java index cb21f87f12d5..a3dda658bec7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/DashboardCategory.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/DashboardCategory.java @@ -94,17 +94,18 @@ public class DashboardCategory implements Parcelable { * Sort priority value and package name for tiles in this category. */ public synchronized void sortTiles(String skipPackageName) { - // Sort mTiles based on [priority, package within priority] + // Sort mTiles based on [order, package within order] Collections.sort(mTiles, (tile1, tile2) -> { - final String package1 = tile1.intent.getComponent().getPackageName(); - final String package2 = tile2.intent.getComponent().getPackageName(); - final int packageCompare = CASE_INSENSITIVE_ORDER.compare(package1, package2); - // First sort by priority - final int priorityCompare = tile2.priority - tile1.priority; - if (priorityCompare != 0) { - return priorityCompare; + // First sort by order + final int orderCompare = tile2.getOrder() - tile1.getOrder(); + if (orderCompare != 0) { + return orderCompare; } + // Then sort by package name, skip package take precedence + final String package1 = tile1.getPackageName(); + final String package2 = tile2.getPackageName(); + final int packageCompare = CASE_INSENSITIVE_ORDER.compare(package1, package2); if (packageCompare != 0) { if (TextUtils.equals(package1, skipPackageName)) { return -1; diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java b/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java index 33204335beb5..84c8b21c925c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java @@ -16,9 +16,11 @@ package com.android.settingslib.drawer; +import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER; import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; +import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL; import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY; @@ -60,35 +62,20 @@ public class Tile implements Parcelable { public CharSequence summary; /** - * Intent to launch when the preference is selected. - */ - public Intent intent; - - /** * Optional list of user handles which the intent should be launched on. */ public ArrayList<UserHandle> userHandle = new ArrayList<>(); - private String mCategory; - - /** - * Priority of the intent filter that created this tile, used for display ordering. - */ - public int priority; - /** * The metaData from the activity that defines this tile. */ - private Bundle mMetaData; - - /** - * Optional key to use for this tile. - */ - public String key; - + private final Bundle mMetaData; private final String mActivityPackage; private final String mActivityName; + private final Intent mIntent; + private ActivityInfo mActivityInfo; + private String mCategory; public Tile(ActivityInfo activityInfo, String category) { mActivityInfo = activityInfo; @@ -96,6 +83,21 @@ public class Tile implements Parcelable { mActivityName = mActivityInfo.name; mMetaData = activityInfo.metaData; mCategory = category; + mIntent = new Intent().setClassName(mActivityPackage, mActivityName); + } + + Tile(Parcel in) { + mActivityPackage = in.readString(); + mActivityName = in.readString(); + mIntent = new Intent().setClassName(mActivityPackage, mActivityName); + title = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + summary = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + final int N = in.readInt(); + for (int i = 0; i < N; i++) { + userHandle.add(UserHandle.CREATOR.createFromParcel(in)); + } + mCategory = in.readString(); + mMetaData = in.readBundle(); } @Override @@ -109,21 +111,24 @@ public class Tile implements Parcelable { dest.writeString(mActivityName); TextUtils.writeToParcel(title, dest, flags); TextUtils.writeToParcel(summary, dest, flags); - if (intent != null) { - dest.writeByte((byte) 1); - intent.writeToParcel(dest, flags); - } else { - dest.writeByte((byte) 0); - } final int N = userHandle.size(); dest.writeInt(N); for (int i = 0; i < N; i++) { userHandle.get(i).writeToParcel(dest, flags); } dest.writeString(mCategory); - dest.writeInt(priority); dest.writeBundle(mMetaData); - dest.writeString(key); + } + + public String getPackageName() { + return mActivityPackage; + } + + /** + * Intent to launch when the preference is selected. + */ + public Intent getIntent() { + return mIntent; } /** @@ -138,10 +143,19 @@ public class Tile implements Parcelable { } /** - * Priority of the intent filter that created this tile, used for display ordering. + * Priority of this tile, used for display ordering. */ - public int getPriority() { - return 0; + public int getOrder() { + if (hasOrder()) { + return mMetaData.getInt(META_DATA_KEY_ORDER); + } else { + return 0; + } + } + + public boolean hasOrder() { + return mMetaData.containsKey(META_DATA_KEY_ORDER) + && mMetaData.get(META_DATA_KEY_ORDER) instanceof Integer; } public Bundle getMetaData() { @@ -149,6 +163,24 @@ public class Tile implements Parcelable { } /** + * Optional key to use for this tile. + */ + public String getKey(Context context) { + if (!hasKey()) { + return null; + } + if (mMetaData.get(META_DATA_PREFERENCE_KEYHINT) instanceof Integer) { + return context.getResources().getString(mMetaData.getInt(META_DATA_PREFERENCE_KEYHINT)); + } else { + return mMetaData.getString(META_DATA_PREFERENCE_KEYHINT); + } + } + + public boolean hasKey() { + return mMetaData != null && mMetaData.containsKey(META_DATA_PREFERENCE_KEYHINT); + } + + /** * Optional icon to show for this tile. * * @attr ref android.R.styleable#PreferenceHeader_icon @@ -190,24 +222,6 @@ public class Tile implements Parcelable { && !TextUtils.equals(pkgName, activityInfo.packageName); } - Tile(Parcel in) { - mActivityPackage = in.readString(); - mActivityName = in.readString(); - title = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); - summary = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); - if (in.readByte() != 0) { - intent = Intent.CREATOR.createFromParcel(in); - } - final int N = in.readInt(); - for (int i = 0; i < N; i++) { - userHandle.add(UserHandle.CREATOR.createFromParcel(in)); - } - mCategory = in.readString(); - priority = in.readInt(); - mMetaData = in.readBundle(); - key = in.readString(); - } - private ActivityInfo getActivityInfo(Context context) { if (mActivityInfo == null) { final PackageManager pm = context.getApplicationContext().getPackageManager(); @@ -239,5 +253,5 @@ public class Tile implements Parcelable { } public static final Comparator<Tile> TILE_COMPARATOR = - (lhs, rhs) -> rhs.priority - lhs.priority; + (lhs, rhs) -> rhs.getOrder() - lhs.getOrder(); } diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java index 7b54fe1f4d09..f39b85105b9e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java @@ -65,20 +65,17 @@ public class TileUtils { * * <p>A summary my be defined by meta-data named {@link #META_DATA_PREFERENCE_SUMMARY} */ - public static final String EXTRA_SETTINGS_ACTION = - "com.android.settings.action.EXTRA_SETTINGS"; + public static final String EXTRA_SETTINGS_ACTION = "com.android.settings.action.EXTRA_SETTINGS"; /** * @See {@link #EXTRA_SETTINGS_ACTION}. */ - private static final String IA_SETTINGS_ACTION = - "com.android.settings.action.IA_SETTINGS"; + private static final String IA_SETTINGS_ACTION = "com.android.settings.action.IA_SETTINGS"; /** * Same as #EXTRA_SETTINGS_ACTION but used for the platform Settings activities. */ - private static final String SETTINGS_ACTION = - "com.android.settings.action.SETTINGS"; + private static final String SETTINGS_ACTION = "com.android.settings.action.SETTINGS"; private static final String OPERATOR_SETTINGS = "com.android.settings.OPERATOR_APPLICATION_SETTING"; @@ -112,6 +109,12 @@ public class TileUtils { public static final String META_DATA_PREFERENCE_KEYHINT = "com.android.settings.keyhint"; /** + * Order of the item that should be displayed on screen. Bigger value items displays closer on + * top. + */ + public static final String META_DATA_KEY_ORDER = "com.android.settings.order"; + + /** * Name of the meta-data item that should be set in the AndroidManifest.xml * to specify the icon that should be displayed for the preference. */ @@ -303,9 +306,6 @@ public class TileUtils { Tile tile = addedCache.get(key); if (tile == null) { tile = new Tile(activityInfo, categoryKey); - tile.intent = new Intent().setClassName( - activityInfo.packageName, activityInfo.name); - tile.priority = usePriority ? resolved.priority : 0; updateTileData(context, tile, activityInfo, activityInfo.applicationInfo, pm); if (DEBUG) Log.d(LOG_TAG, "Adding tile " + tile.title); addedCache.put(key, tile); @@ -325,7 +325,6 @@ public class TileUtils { if (applicationInfo.isSystemApp()) { CharSequence title = null; String summary = null; - String keyHint = null; // Get the activity's meta-data try { @@ -347,13 +346,6 @@ public class TileUtils { summary = metaData.getString(META_DATA_PREFERENCE_SUMMARY); } } - if (metaData.containsKey(META_DATA_PREFERENCE_KEYHINT)) { - if (metaData.get(META_DATA_PREFERENCE_KEYHINT) instanceof Integer) { - keyHint = res.getString(metaData.getInt(META_DATA_PREFERENCE_KEYHINT)); - } else { - keyHint = metaData.getString(META_DATA_PREFERENCE_KEYHINT); - } - } } } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) { if (DEBUG) Log.d(LOG_TAG, "Couldn't find info", e); @@ -368,12 +360,6 @@ public class TileUtils { // Set title and summary for the preference tile.title = title; tile.summary = summary; - // Replace the intent with this specific activity - tile.intent = new Intent().setClassName(activityInfo.packageName, - activityInfo.name); - // Suggest a key for this tile - tile.key = keyHint; - return true; } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java index d95965707831..a501ffa1200e 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileTest.java @@ -1,5 +1,6 @@ package com.android.settingslib.drawer; +import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER; import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; @@ -30,6 +31,7 @@ public class TileTest { public void setUp() { mActivityInfo = new ActivityInfo(); mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); + mActivityInfo.name = "abc"; mActivityInfo.icon = R.drawable.ic_plus; mActivityInfo.metaData = new Bundle(); mTile = new Tile(mActivityInfo, "category"); @@ -60,7 +62,8 @@ public class TileTest { @Test public void getIcon_noContextOrMetadata_returnNull() { - final Tile tile = new Tile(new ActivityInfo(), "category"); + mActivityInfo.metaData = null; + final Tile tile = new Tile(mActivityInfo, "category"); assertThat(tile.getIcon(null)).isNull(); assertThat(tile.getIcon(RuntimeEnvironment.application)).isNull(); } @@ -113,8 +116,34 @@ public class TileTest { final ActivityInfo activityInfo = new ActivityInfo(); activityInfo.packageName = "blah"; + activityInfo.name = "abc"; final Tile tile2 = new Tile(activityInfo, "category"); assertThat(tile2.isIconTintable(RuntimeEnvironment.application)).isTrue(); } + + @Test + public void getPriority_noMetadata_return0() { + final Tile tile = new Tile(mActivityInfo, "category"); + + assertThat(tile.getOrder()).isEqualTo(0); + } + + @Test + public void getPriority_badMetadata_return0() { + mActivityInfo.metaData.putString(META_DATA_KEY_ORDER, "1"); + + final Tile tile = new Tile(mActivityInfo, "category"); + + assertThat(tile.getOrder()).isEqualTo(0); + } + + @Test + public void getPriority_validMetadata_returnMetadataValue() { + mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 1); + + final Tile tile = new Tile(mActivityInfo, "category"); + + assertThat(tile.getOrder()).isEqualTo(1); + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java index 9fda8564ede5..9f097d85e84f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java @@ -16,6 +16,12 @@ package com.android.settingslib.drawer; +import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; +import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; +import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; +import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY; +import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -47,7 +53,6 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings.Global; -import android.text.TextUtils; import android.util.ArrayMap; import android.util.Pair; @@ -131,7 +136,7 @@ public class TileUtilsTest { null /* defaultCategory */, outTiles, false /* usePriority */); assertThat(outTiles.size()).isEqualTo(1); - assertThat(outTiles.get(0).key).isEqualTo(keyHint); + assertThat(outTiles.get(0).getKey(mContext)).isEqualTo(keyHint); } @Test @@ -361,16 +366,16 @@ public class TileUtilsTest { info.activityInfo.name = "123"; info.activityInfo.metaData = new Bundle(); info.activityInfo.metaData.putString("com.android.settings.category", category); - info.activityInfo.metaData.putInt("com.android.settings.icon", 314159); - info.activityInfo.metaData.putString("com.android.settings.summary", "static-summary"); + info.activityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, 314159); + info.activityInfo.metaData.putString(META_DATA_PREFERENCE_SUMMARY, "static-summary"); if (keyHint != null) { - info.activityInfo.metaData.putString("com.android.settings.keyhint", keyHint); + info.activityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, keyHint); } if (iconUri != null) { - info.activityInfo.metaData.putString("com.android.settings.icon_uri", iconUri); + info.activityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_URI, iconUri); } if (summaryUri != null) { - info.activityInfo.metaData.putString("com.android.settings.summary_uri", summaryUri); + info.activityInfo.metaData.putString(META_DATA_PREFERENCE_SUMMARY_URI, summaryUri); } if (titleResId != 0) { info.activityInfo.metaData.putInt(TileUtils.META_DATA_PREFERENCE_TITLE, titleResId); @@ -383,16 +388,4 @@ public class TileUtilsTest { } return info; } - - private void addMetadataToInfo(ResolveInfo info, String key, String value) { - if (!TextUtils.isEmpty(key)) { - if (info.activityInfo == null) { - info.activityInfo = new ActivityInfo(); - } - if (info.activityInfo.metaData == null) { - info.activityInfo.metaData = new Bundle(); - } - info.activityInfo.metaData.putString(key, value); - } - } } diff --git a/packages/SystemUI/res/values-af/strings_car.xml b/packages/SystemUI/res/values-af/strings_car.xml index 407ddcb072c1..3f470625dc3d 100644 --- a/packages/SystemUI/res/values-af/strings_car.xml +++ b/packages/SystemUI/res/values-af/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gas"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Voeg gebruiker by"</string> <string name="car_new_user" msgid="8142927244990323906">"Nuwe gebruiker"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel."</string> diff --git a/packages/SystemUI/res/values-am/strings_car.xml b/packages/SystemUI/res/values-am/strings_car.xml index 635c9debc3fd..769cb5b66af6 100644 --- a/packages/SystemUI/res/values-am/strings_car.xml +++ b/packages/SystemUI/res/values-am/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"እንግዳ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ተጠቃሚ አክል"</string> <string name="car_new_user" msgid="8142927244990323906">"አዲስ ተጠቃሚ"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሳቸውን ቦታ ማቀናበር አለባቸው።"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 8f197e80abd7..dcf02d52de0a 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -799,7 +799,7 @@ <string name="accessibility_quick_settings_open_settings" msgid="7806613775728380737">"فتح إعدادات <xliff:g id="ID_1">%s</xliff:g>."</string> <string name="accessibility_quick_settings_edit" msgid="7839992848995240393">"تعديل ترتيب الإعدادات."</string> <string name="accessibility_quick_settings_page" msgid="5032979051755200721">"الصفحة <xliff:g id="ID_1">%1$d</xliff:g> من <xliff:g id="ID_2">%2$d</xliff:g>"</string> - <string name="tuner_lock_screen" msgid="5755818559638850294">"شاشة التأمين"</string> + <string name="tuner_lock_screen" msgid="5755818559638850294">"شاشة القفل"</string> <string name="pip_phone_expand" msgid="5889780005575693909">"توسيع"</string> <string name="pip_phone_minimize" msgid="1079119422589131792">"تصغير"</string> <string name="pip_phone_close" msgid="8416647892889710330">"إغلاق"</string> diff --git a/packages/SystemUI/res/values-ar/strings_car.xml b/packages/SystemUI/res/values-ar/strings_car.xml index d6dfa12fee2a..deadaae3de3a 100644 --- a/packages/SystemUI/res/values-ar/strings_car.xml +++ b/packages/SystemUI/res/values-ar/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ضيف"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"إضافة المستخدم"</string> <string name="car_new_user" msgid="8142927244990323906">"مستخدم جديد"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"عند إضافة مستخدم جديد، عليه إعداد مساحته."</string> diff --git a/packages/SystemUI/res/values-as/strings_car.xml b/packages/SystemUI/res/values-as/strings_car.xml index 1c4d7944b451..ce19a03d19f9 100644 --- a/packages/SystemUI/res/values-as/strings_car.xml +++ b/packages/SystemUI/res/values-as/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"অতিথি"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ব্যৱহাৰকাৰী যোগ কৰক"</string> <string name="car_new_user" msgid="8142927244990323906">"নতুন ব্যৱহাৰকাৰী"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"আপুনি কোনো নতুন ব্য়ৱহাৰকাৰীক যোগ কৰিলে তেখেতে নিজৰ বাবে খালী ঠাই ছেট আপ কৰিব লাগে।"</string> diff --git a/packages/SystemUI/res/values-az/strings_car.xml b/packages/SystemUI/res/values-az/strings_car.xml index 79a946c63f5a..02ee1771b476 100644 --- a/packages/SystemUI/res/values-az/strings_car.xml +++ b/packages/SystemUI/res/values-az/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Qonaq"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"İstifadəçi əlavə edin"</string> <string name="car_new_user" msgid="8142927244990323906">"Yeni İstifadəçi"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Yeni istifadəçi əlavə etdiyinizdə həmin şəxs öz yerini təyin etməlidir."</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml b/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml index 381d80421047..7a2032b1e0c5 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gost"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Dodaj korisnika"</string> <string name="car_new_user" msgid="8142927244990323906">"Novi korisnik"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kada dodate novog korisnika, ta osoba treba da podesi svoj prostor."</string> diff --git a/packages/SystemUI/res/values-be/strings_car.xml b/packages/SystemUI/res/values-be/strings_car.xml index a56dd84ae144..357aeeb97164 100644 --- a/packages/SystemUI/res/values-be/strings_car.xml +++ b/packages/SystemUI/res/values-be/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Госць"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Дадаць карыстальніка"</string> <string name="car_new_user" msgid="8142927244990323906">"Новы карыстальнік"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Калі вы дадаяце новага карыстальніка, яму трэба наладзіць свой профіль."</string> diff --git a/packages/SystemUI/res/values-bg/strings_car.xml b/packages/SystemUI/res/values-bg/strings_car.xml index fe159ea25f76..c117ab4efb2e 100644 --- a/packages/SystemUI/res/values-bg/strings_car.xml +++ b/packages/SystemUI/res/values-bg/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Гост"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Добавяне на потребител"</string> <string name="car_new_user" msgid="8142927244990323906">"Нов потребител"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Когато добавите нов потребител, той трябва да настрои работното си пространство."</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index eacf30cc2809..a6dc54a39b1f 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -47,7 +47,7 @@ <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"সেটিংস"</string> <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"ওয়াই-ফাই"</string> <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"অটো-রোটেট স্ক্রিন"</string> - <string name="status_bar_settings_mute_label" msgid="554682549917429396">"নিঃশব্দ করুন"</string> + <string name="status_bar_settings_mute_label" msgid="554682549917429396">"মিউট করুন"</string> <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"স্বতঃ"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"বিজ্ঞপ্তিগুলি"</string> <string name="bluetooth_tethered" msgid="7094101612161133267">"ব্লুটুথ টিথার করা হয়েছে"</string> @@ -538,10 +538,10 @@ <string name="qs_status_phone_vibrate" msgid="204362991135761679">"ফোন ভাইব্রেশন মোডে আছে"</string> <string name="qs_status_phone_muted" msgid="5437668875879171548">"ফোন মিউট করা আছে"</string> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। সশব্দ করতে আলতো চাপুন।"</string> - <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। কম্পন এ সেট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে নিঃশব্দ করা হতে পারে।"</string> - <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s। নিঃশব্দ করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে নিঃশব্দ করা হতে পারে।"</string> + <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। কম্পন এ সেট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে মিউট করা হতে পারে।"</string> + <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s। মিউট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে মিউট করা হতে পারে।"</string> <string name="volume_stream_content_description_vibrate_a11y" msgid="6427727603978431301">"%1$s। ভাইব্রেট করতে ট্যাপ করুন।"</string> - <string name="volume_stream_content_description_mute_a11y" msgid="8995013018414535494">"%1$s। নিঃশব্দ করতে ট্যাপ করুন।"</string> + <string name="volume_stream_content_description_mute_a11y" msgid="8995013018414535494">"%1$s। মিউট করতে ট্যাপ করুন।"</string> <string name="volume_ringer_hint_mute" msgid="9199811307292269601">"মিউট করুন"</string> <string name="volume_ringer_hint_unmute" msgid="6602880133293060368">"আনমিউট করুন"</string> <string name="volume_ringer_hint_vibrate" msgid="4036802135666515202">"ভাইব্রেট করান"</string> diff --git a/packages/SystemUI/res/values-bn/strings_car.xml b/packages/SystemUI/res/values-bn/strings_car.xml index 121e5171b6c8..2c6857d2c2ab 100644 --- a/packages/SystemUI/res/values-bn/strings_car.xml +++ b/packages/SystemUI/res/values-bn/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"অতিথি"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ব্যবহারকারীকে যুক্ত করুন"</string> <string name="car_new_user" msgid="8142927244990323906">"নতুন ব্যবহারকারী"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"আপনি কোনও নতুন ব্যবহারকারীকে যোগ করলে তাকে তার স্পেস সেট-আপ করে নিতে হবে।"</string> diff --git a/packages/SystemUI/res/values-bs/strings_car.xml b/packages/SystemUI/res/values-bs/strings_car.xml index 659188016989..4d334c565cd9 100644 --- a/packages/SystemUI/res/values-bs/strings_car.xml +++ b/packages/SystemUI/res/values-bs/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gost"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Dodaj korisnika"</string> <string name="car_new_user" msgid="8142927244990323906">"Novi korisnik"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor."</string> diff --git a/packages/SystemUI/res/values-ca/strings_car.xml b/packages/SystemUI/res/values-ca/strings_car.xml index 47d59dd42c26..8cd7d3852ff1 100644 --- a/packages/SystemUI/res/values-ca/strings_car.xml +++ b/packages/SystemUI/res/values-ca/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Convidat"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Afegeix un usuari"</string> <string name="car_new_user" msgid="8142927244990323906">"Usuari nou"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Quan s\'afegeix un usuari nou, aquest usuari ha de configurar el seu espai."</string> diff --git a/packages/SystemUI/res/values-cs/strings_car.xml b/packages/SystemUI/res/values-cs/strings_car.xml index 7f29118146ef..7356fd977244 100644 --- a/packages/SystemUI/res/values-cs/strings_car.xml +++ b/packages/SystemUI/res/values-cs/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Host"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Přidat uživatele"</string> <string name="car_new_user" msgid="8142927244990323906">"Nový uživatel"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Každý nově přidaný uživatel si musí nastavit vlastní prostor."</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index fd24f977eaf9..8e4f91bdeeb9 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -680,7 +680,7 @@ <string name="keyboard_shortcut_group_applications" msgid="9129465955073449206">"Applikationer"</string> <string name="keyboard_shortcut_group_applications_assist" msgid="9095441910537146013">"Assistance"</string> <string name="keyboard_shortcut_group_applications_browser" msgid="6465985474000766533">"Browser"</string> - <string name="keyboard_shortcut_group_applications_contacts" msgid="2064197111278436375">"Kontaktpersoner"</string> + <string name="keyboard_shortcut_group_applications_contacts" msgid="2064197111278436375">"Kontakter"</string> <string name="keyboard_shortcut_group_applications_email" msgid="6257036897441939004">"E-mail"</string> <string name="keyboard_shortcut_group_applications_sms" msgid="638701213803242744">"Sms"</string> <string name="keyboard_shortcut_group_applications_music" msgid="4775559515850922780">"Musik"</string> diff --git a/packages/SystemUI/res/values-da/strings_car.xml b/packages/SystemUI/res/values-da/strings_car.xml index 1e7bbbf7aca9..4112ad9b678b 100644 --- a/packages/SystemUI/res/values-da/strings_car.xml +++ b/packages/SystemUI/res/values-da/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gæst"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Tilføj bruger"</string> <string name="car_new_user" msgid="8142927244990323906">"Ny bruger"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Når du tilføjer en ny bruger, skal vedkommende konfigurere sit område."</string> diff --git a/packages/SystemUI/res/values-de/strings_car.xml b/packages/SystemUI/res/values-de/strings_car.xml index bf03f5d87322..7dcf6be1b66f 100644 --- a/packages/SystemUI/res/values-de/strings_car.xml +++ b/packages/SystemUI/res/values-de/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gast"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Nutzer hinzufügen"</string> <string name="car_new_user" msgid="8142927244990323906">"Neuer Nutzer"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten."</string> diff --git a/packages/SystemUI/res/values-el/strings_car.xml b/packages/SystemUI/res/values-el/strings_car.xml index 37e4e92b66af..b4157e72a361 100644 --- a/packages/SystemUI/res/values-el/strings_car.xml +++ b/packages/SystemUI/res/values-el/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Επισκέπτης"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Προσθήκη χρήστη"</string> <string name="car_new_user" msgid="8142927244990323906">"Νέος χρήστης"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Όταν προσθέτετε έναν νέο χρήστη, αυτός ο χρήστης θα πρέπει να ρυθμίσει τον χώρο του."</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings_car.xml b/packages/SystemUI/res/values-en-rAU/strings_car.xml index e058c5bad3b6..4bb06c7a358e 100644 --- a/packages/SystemUI/res/values-en-rAU/strings_car.xml +++ b/packages/SystemUI/res/values-en-rAU/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Guest"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Add User"</string> <string name="car_new_user" msgid="8142927244990323906">"New User"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"When you add a new user, that person needs to set up their space."</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings_car.xml b/packages/SystemUI/res/values-en-rCA/strings_car.xml index e058c5bad3b6..4bb06c7a358e 100644 --- a/packages/SystemUI/res/values-en-rCA/strings_car.xml +++ b/packages/SystemUI/res/values-en-rCA/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Guest"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Add User"</string> <string name="car_new_user" msgid="8142927244990323906">"New User"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"When you add a new user, that person needs to set up their space."</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings_car.xml b/packages/SystemUI/res/values-en-rGB/strings_car.xml index e058c5bad3b6..4bb06c7a358e 100644 --- a/packages/SystemUI/res/values-en-rGB/strings_car.xml +++ b/packages/SystemUI/res/values-en-rGB/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Guest"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Add User"</string> <string name="car_new_user" msgid="8142927244990323906">"New User"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"When you add a new user, that person needs to set up their space."</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings_car.xml b/packages/SystemUI/res/values-en-rIN/strings_car.xml index e058c5bad3b6..4bb06c7a358e 100644 --- a/packages/SystemUI/res/values-en-rIN/strings_car.xml +++ b/packages/SystemUI/res/values-en-rIN/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Guest"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Add User"</string> <string name="car_new_user" msgid="8142927244990323906">"New User"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"When you add a new user, that person needs to set up their space."</string> diff --git a/packages/SystemUI/res/values-en-rXC/strings_car.xml b/packages/SystemUI/res/values-en-rXC/strings_car.xml index fe91beacb697..deb7021824ed 100644 --- a/packages/SystemUI/res/values-en-rXC/strings_car.xml +++ b/packages/SystemUI/res/values-en-rXC/strings_car.xml @@ -20,6 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Guest"</string> + <string name="start_guest_session" msgid="7055742120180595689">"Guest"</string> <string name="car_add_user" msgid="5245196248349230898">"Add User"</string> <string name="car_new_user" msgid="8142927244990323906">"New User"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"When you add a new user, that person needs to set up their space."</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings_car.xml b/packages/SystemUI/res/values-es-rUS/strings_car.xml index c81573eb8c5a..db6c93e1ce0b 100644 --- a/packages/SystemUI/res/values-es-rUS/strings_car.xml +++ b/packages/SystemUI/res/values-es-rUS/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Invitado"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Agregar usuario"</string> <string name="car_new_user" msgid="8142927244990323906">"Nuevo usuario"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Cuando agregues un usuario nuevo, esa persona deberá configurar su espacio."</string> diff --git a/packages/SystemUI/res/values-es/strings_car.xml b/packages/SystemUI/res/values-es/strings_car.xml index 7da21a82dea5..503788c726d8 100644 --- a/packages/SystemUI/res/values-es/strings_car.xml +++ b/packages/SystemUI/res/values-es/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Invitado"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Añadir usuario"</string> <string name="car_new_user" msgid="8142927244990323906">"Nuevo usuario"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Al añadir un nuevo usuario, este debe configurar su espacio."</string> diff --git a/packages/SystemUI/res/values-et/strings_car.xml b/packages/SystemUI/res/values-et/strings_car.xml index 9ed97aab424f..ac010fe50673 100644 --- a/packages/SystemUI/res/values-et/strings_car.xml +++ b/packages/SystemUI/res/values-et/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Külaline"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Kasutaja lisamine"</string> <string name="car_new_user" msgid="8142927244990323906">"Uus kasutaja"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi."</string> diff --git a/packages/SystemUI/res/values-eu/strings_car.xml b/packages/SystemUI/res/values-eu/strings_car.xml index 99c66d2f1c8f..6375ce0d6e14 100644 --- a/packages/SystemUI/res/values-eu/strings_car.xml +++ b/packages/SystemUI/res/values-eu/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gonbidatua"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Gehitu erabiltzaile bat"</string> <string name="car_new_user" msgid="8142927244990323906">"Erabiltzaile berria"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Erabiltzaile bat gehitzen duzunean, bere eremua konfiguratu beharko du."</string> diff --git a/packages/SystemUI/res/values-fa/strings_car.xml b/packages/SystemUI/res/values-fa/strings_car.xml index 3328af11e586..f74c33cfc987 100644 --- a/packages/SystemUI/res/values-fa/strings_car.xml +++ b/packages/SystemUI/res/values-fa/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"مهمان"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"افزودن کاربر"</string> <string name="car_new_user" msgid="8142927244990323906">"کاربر جدید"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"وقتی کاربر جدیدی اضافه میکنید، آن فرد باید فضای خود را تنظیم کند."</string> diff --git a/packages/SystemUI/res/values-fi/strings_car.xml b/packages/SystemUI/res/values-fi/strings_car.xml index 408eea1503bf..b2501ee2eace 100644 --- a/packages/SystemUI/res/values-fi/strings_car.xml +++ b/packages/SystemUI/res/values-fi/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Vieras"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Lisää käyttäjä"</string> <string name="car_new_user" msgid="8142927244990323906">"Uusi käyttäjä"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kun lisäät uuden käyttäjän, hänen on määritettävä oman tilansa asetukset."</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings_car.xml b/packages/SystemUI/res/values-fr-rCA/strings_car.xml index e1cd5a22d3cd..8041e7ec9c54 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings_car.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Invité"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Ajouter un utilisateur"</string> <string name="car_new_user" msgid="8142927244990323906">"Nouvel utilisateur"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index e38e83c0f53e..532fe500ccfe 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -536,7 +536,7 @@ <string name="ring_toggle_title" msgid="3281244519428819576">"Appels"</string> <string name="volume_ringer_status_normal" msgid="4273142424125855384">"Sonnerie"</string> <string name="volume_ringer_status_vibrate" msgid="1825615171021346557">"Vibreur"</string> - <string name="volume_ringer_status_silent" msgid="6896394161022916369">"Silencieux"</string> + <string name="volume_ringer_status_silent" msgid="6896394161022916369">"Couper le son"</string> <string name="qs_status_phone_vibrate" msgid="204362991135761679">"Mode Vibreur activé"</string> <string name="qs_status_phone_muted" msgid="5437668875879171548">"Sons du téléphone désactivés"</string> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Appuyez pour ne plus ignorer."</string> diff --git a/packages/SystemUI/res/values-fr/strings_car.xml b/packages/SystemUI/res/values-fr/strings_car.xml index f35d2f6a693a..4a6bd70f75a3 100644 --- a/packages/SystemUI/res/values-fr/strings_car.xml +++ b/packages/SystemUI/res/values-fr/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Invité"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Ajouter un utilisateur"</string> <string name="car_new_user" msgid="8142927244990323906">"Nouvel utilisateur"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string> diff --git a/packages/SystemUI/res/values-gl/strings_car.xml b/packages/SystemUI/res/values-gl/strings_car.xml index e69c302fb75f..d897b344d173 100644 --- a/packages/SystemUI/res/values-gl/strings_car.xml +++ b/packages/SystemUI/res/values-gl/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Convidado"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Engadir usuario"</string> <string name="car_new_user" msgid="8142927244990323906">"Novo usuario"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Cando engadas un usuario novo, este deberá configurar o seu espazo."</string> diff --git a/packages/SystemUI/res/values-gu/strings_car.xml b/packages/SystemUI/res/values-gu/strings_car.xml index 83ae9329ecce..e42c247078f7 100644 --- a/packages/SystemUI/res/values-gu/strings_car.xml +++ b/packages/SystemUI/res/values-gu/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"અતિથિ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"વપરાશકર્તા ઉમેરો"</string> <string name="car_new_user" msgid="8142927244990323906">"નવા વપરાશકર્તા"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"જ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિએ તેમની સ્પેસ સેટ કરવાની જરૂર રહે છે."</string> diff --git a/packages/SystemUI/res/values-hi/strings_car.xml b/packages/SystemUI/res/values-hi/strings_car.xml index 468fba050fe0..8820046cf11f 100644 --- a/packages/SystemUI/res/values-hi/strings_car.xml +++ b/packages/SystemUI/res/values-hi/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"मेहमान"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"उपयोगकर्ता जोड़ें"</string> <string name="car_new_user" msgid="8142927244990323906">"नया उपयोगकर्ता"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं तो, उस व्यक्ति को अपनी जगह सेट करनी होती है."</string> diff --git a/packages/SystemUI/res/values-hr/strings_car.xml b/packages/SystemUI/res/values-hr/strings_car.xml index aff0090df455..a94f2357f865 100644 --- a/packages/SystemUI/res/values-hr/strings_car.xml +++ b/packages/SystemUI/res/values-hr/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gost"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Dodajte korisnika"</string> <string name="car_new_user" msgid="8142927244990323906">"Novi korisnik"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor."</string> diff --git a/packages/SystemUI/res/values-hu/strings_car.xml b/packages/SystemUI/res/values-hu/strings_car.xml index 1eb17ce5e018..223b3549cefc 100644 --- a/packages/SystemUI/res/values-hu/strings_car.xml +++ b/packages/SystemUI/res/values-hu/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Vendég"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Felhasználó hozzáadása"</string> <string name="car_new_user" msgid="8142927244990323906">"Új felhasználó"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Ha új felhasználót ad hozzá, az illetőnek be kell állítania saját felületét."</string> diff --git a/packages/SystemUI/res/values-hy/strings_car.xml b/packages/SystemUI/res/values-hy/strings_car.xml index 555deeb96b93..dd734f0c13dd 100644 --- a/packages/SystemUI/res/values-hy/strings_car.xml +++ b/packages/SystemUI/res/values-hy/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Հյուր"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Ավելացնել օգտատեր"</string> <string name="car_new_user" msgid="8142927244990323906">"Նոր օգտատեր"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Երբ դուք նոր օգտատեր եք ավելացնում, նա պետք է կարգավորի իր պրոֆիլը:"</string> diff --git a/packages/SystemUI/res/values-in/strings_car.xml b/packages/SystemUI/res/values-in/strings_car.xml index f0620d04d76d..de0a1a8ef368 100644 --- a/packages/SystemUI/res/values-in/strings_car.xml +++ b/packages/SystemUI/res/values-in/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Tamu"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Tambahkan Pengguna"</string> <string name="car_new_user" msgid="8142927244990323906">"Pengguna Baru"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruangnya sendiri."</string> diff --git a/packages/SystemUI/res/values-is/strings_car.xml b/packages/SystemUI/res/values-is/strings_car.xml index 2a633f4408b8..f962765d94f0 100644 --- a/packages/SystemUI/res/values-is/strings_car.xml +++ b/packages/SystemUI/res/values-is/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gestur"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Bæta notanda við"</string> <string name="car_new_user" msgid="8142927244990323906">"Nýr notandi"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Þegar þú bætir nýjum notanda við þarf viðkomandi að setja upp sitt eigið svæði."</string> diff --git a/packages/SystemUI/res/values-it/strings_car.xml b/packages/SystemUI/res/values-it/strings_car.xml index 095e5dc07487..5121eb709bb5 100644 --- a/packages/SystemUI/res/values-it/strings_car.xml +++ b/packages/SystemUI/res/values-it/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Ospite"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Aggiungi utente"</string> <string name="car_new_user" msgid="8142927244990323906">"Nuovo utente"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Il nuovo utente, una volta aggiunto, dovrà configurare il proprio spazio."</string> diff --git a/packages/SystemUI/res/values-iw/strings_car.xml b/packages/SystemUI/res/values-iw/strings_car.xml index 04a8b9e8fa6c..8b77940b675f 100644 --- a/packages/SystemUI/res/values-iw/strings_car.xml +++ b/packages/SystemUI/res/values-iw/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"אורח"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"הוספת משתמש"</string> <string name="car_new_user" msgid="8142927244990323906">"משתמש חדש"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"בעת הוספת משתמש חדש, על משתמש זה להגדיר את המרחב שלו."</string> diff --git a/packages/SystemUI/res/values-ja/strings_car.xml b/packages/SystemUI/res/values-ja/strings_car.xml index 5a2872df6c10..fddd512183aa 100644 --- a/packages/SystemUI/res/values-ja/strings_car.xml +++ b/packages/SystemUI/res/values-ja/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ゲスト"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ユーザーを追加"</string> <string name="car_new_user" msgid="8142927244990323906">"新しいユーザー"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"新しいユーザーを追加したら、そのユーザーは自分のスペースをセットアップする必要があります。"</string> diff --git a/packages/SystemUI/res/values-ka/strings_car.xml b/packages/SystemUI/res/values-ka/strings_car.xml index bb12f6dfa31b..b7292555a7d0 100644 --- a/packages/SystemUI/res/values-ka/strings_car.xml +++ b/packages/SystemUI/res/values-ka/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"სტუმარი"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"მომხმარებლის დამატება"</string> <string name="car_new_user" msgid="8142927244990323906">"ახალი მომხმარებელი"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"ახალი მომხმარებლის დამატებისას, ამ მომხმარებელს საკუთარი სივრცის შექმნა მოუწევს."</string> diff --git a/packages/SystemUI/res/values-kk/strings_car.xml b/packages/SystemUI/res/values-kk/strings_car.xml index 50aedf3a91a9..4d1f9cf9f898 100644 --- a/packages/SystemUI/res/values-kk/strings_car.xml +++ b/packages/SystemUI/res/values-kk/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Қонақ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Пайдаланушыны енгізу"</string> <string name="car_new_user" msgid="8142927244990323906">"Жаңа пайдаланушы"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Енгізілген жаңа пайдаланушы өз профилін реттеуі керек."</string> diff --git a/packages/SystemUI/res/values-km/strings_car.xml b/packages/SystemUI/res/values-km/strings_car.xml index 15b462c65713..a897dba08634 100644 --- a/packages/SystemUI/res/values-km/strings_car.xml +++ b/packages/SystemUI/res/values-km/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ភ្ញៀវ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"បញ្ចូលអ្នកប្រើប្រាស់"</string> <string name="car_new_user" msgid="8142927244990323906">"អ្នកប្រើប្រាស់ថ្មី"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"នៅពេលដែលអ្នកបញ្ចូលអ្នកប្រើប្រាស់ថ្មី បុគ្គលនោះត្រូវតែរៀបចំទំហំផ្ទុករបស់គេ។"</string> diff --git a/packages/SystemUI/res/values-kn/strings_car.xml b/packages/SystemUI/res/values-kn/strings_car.xml index d06d411ed053..53cdc32cf69b 100644 --- a/packages/SystemUI/res/values-kn/strings_car.xml +++ b/packages/SystemUI/res/values-kn/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ಅತಿಥಿ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ಬಳಕೆದಾರ ಸೇರಿಸು"</string> <string name="car_new_user" msgid="8142927244990323906">"ಹೊಸ ಬಳಕೆದಾರ"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"ನೀವು ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಸೆಟಪ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ."</string> diff --git a/packages/SystemUI/res/values-ko/strings_car.xml b/packages/SystemUI/res/values-ko/strings_car.xml index 1af18aa6753c..9cfaa7f5bfc2 100644 --- a/packages/SystemUI/res/values-ko/strings_car.xml +++ b/packages/SystemUI/res/values-ko/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"게스트"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"사용자 추가"</string> <string name="car_new_user" msgid="8142927244990323906">"신규 사용자"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"추가된 새로운 사용자는 자신의 공간을 설정해야 합니다."</string> diff --git a/packages/SystemUI/res/values-ky/strings_car.xml b/packages/SystemUI/res/values-ky/strings_car.xml index f84e073e361d..67ffdbe4ee94 100644 --- a/packages/SystemUI/res/values-ky/strings_car.xml +++ b/packages/SystemUI/res/values-ky/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Конок"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Колдонуучу кошуу"</string> <string name="car_new_user" msgid="8142927244990323906">"Жаңы колдонуучу"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Жаңы колдонуучу кошулганда, ал өзүнүн профилин жөндөп алышы керек."</string> diff --git a/packages/SystemUI/res/values-lo/strings_car.xml b/packages/SystemUI/res/values-lo/strings_car.xml index 124d6a85820f..a41700985c64 100644 --- a/packages/SystemUI/res/values-lo/strings_car.xml +++ b/packages/SystemUI/res/values-lo/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ແຂກ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ເພີ່ມຜູ້ໃຊ້"</string> <string name="car_new_user" msgid="8142927244990323906">"ຜູ້ໃຊ້ໃໝ່"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈຳເປັນຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າ."</string> diff --git a/packages/SystemUI/res/values-lt/strings_car.xml b/packages/SystemUI/res/values-lt/strings_car.xml index 7b7856fe2d9c..704184c9057b 100644 --- a/packages/SystemUI/res/values-lt/strings_car.xml +++ b/packages/SystemUI/res/values-lt/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Svečias"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Pridėti naudotoją"</string> <string name="car_new_user" msgid="8142927244990323906">"Naujas naudotojas"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą."</string> diff --git a/packages/SystemUI/res/values-lv/strings_car.xml b/packages/SystemUI/res/values-lv/strings_car.xml index d19834b09cd3..8f5c28316269 100644 --- a/packages/SystemUI/res/values-lv/strings_car.xml +++ b/packages/SystemUI/res/values-lv/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Viesis"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Lietotāja pievienošana"</string> <string name="car_new_user" msgid="8142927244990323906">"Jauns lietotājs"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kad pievienosiet jaunu lietotāju, viņam būs jāizveido savs profils."</string> diff --git a/packages/SystemUI/res/values-mk/strings_car.xml b/packages/SystemUI/res/values-mk/strings_car.xml index 0ac6cd31f819..772f8cfd8190 100644 --- a/packages/SystemUI/res/values-mk/strings_car.xml +++ b/packages/SystemUI/res/values-mk/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Гостин"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Додај корисник"</string> <string name="car_new_user" msgid="8142927244990323906">"Нов корисник"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Кога додавате нов корисник, тоа лице треба да го постави својот простор."</string> diff --git a/packages/SystemUI/res/values-ml/strings_car.xml b/packages/SystemUI/res/values-ml/strings_car.xml index e83baf1c1818..10e28ab56d9a 100644 --- a/packages/SystemUI/res/values-ml/strings_car.xml +++ b/packages/SystemUI/res/values-ml/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"അതിഥി"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ഉപയോക്താവിനെ ചേര്ക്കുക"</string> <string name="car_new_user" msgid="8142927244990323906">"പുതിയ ഉപയോക്താവ്"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"നിങ്ങളൊരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തം ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string> diff --git a/packages/SystemUI/res/values-mn/strings_car.xml b/packages/SystemUI/res/values-mn/strings_car.xml index 01a92e7b82f1..0b46d3f3f7ae 100644 --- a/packages/SystemUI/res/values-mn/strings_car.xml +++ b/packages/SystemUI/res/values-mn/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Зочин"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Хэрэглэгч нэмэх"</string> <string name="car_new_user" msgid="8142927244990323906">"Шинэ хэрэглэгч"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Таныг шинэ хэрэглэгч нэмэх үед тухайн хэрэглэгч хувийн орон зайгаа тохируулах шаардлагатай."</string> diff --git a/packages/SystemUI/res/values-mr/strings_car.xml b/packages/SystemUI/res/values-mr/strings_car.xml index 52d6260c2c90..5e2328727f8b 100644 --- a/packages/SystemUI/res/values-mr/strings_car.xml +++ b/packages/SystemUI/res/values-mr/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"अतिथी"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"वापरकर्ता जोडा"</string> <string name="car_new_user" msgid="8142927244990323906">"नवीन वापरकर्ता"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"तुम्ही नवीन वापरकर्त्याला जोडल्यावर, त्या व्यक्तीने त्यांचे स्थान सेट करणे आवश्यक असते."</string> diff --git a/packages/SystemUI/res/values-ms/strings_car.xml b/packages/SystemUI/res/values-ms/strings_car.xml index 6aaf3482c83e..8c002c8ef426 100644 --- a/packages/SystemUI/res/values-ms/strings_car.xml +++ b/packages/SystemUI/res/values-ms/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Tetamu"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Tambah Pengguna"</string> <string name="car_new_user" msgid="8142927244990323906">"Pengguna Baharu"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Apabila anda menambahkan pengguna baharu, orang itu perlu menyediakan ruang mereka."</string> diff --git a/packages/SystemUI/res/values-my/strings_car.xml b/packages/SystemUI/res/values-my/strings_car.xml index 66ab4afa080b..778a82e36fff 100644 --- a/packages/SystemUI/res/values-my/strings_car.xml +++ b/packages/SystemUI/res/values-my/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ဧည့်သည်"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"အသုံးပြုသူ ထည့်ရန်"</string> <string name="car_new_user" msgid="8142927244990323906">"အသုံးပြုသူ အသစ်"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"အသုံးပြုသူအသစ် ထည့်သည့်အခါ ထိုသူသည် မိမိ၏ နေရာကို စီစဉ်သတ်မှတ်ရပါမည်။"</string> diff --git a/packages/SystemUI/res/values-nb/strings_car.xml b/packages/SystemUI/res/values-nb/strings_car.xml index f63db6344862..9db879d263c0 100644 --- a/packages/SystemUI/res/values-nb/strings_car.xml +++ b/packages/SystemUI/res/values-nb/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gjest"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Legg til bruker"</string> <string name="car_new_user" msgid="8142927244990323906">"Ny bruker"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Når du legger til en ny bruker, må vedkommende konfigurere sitt eget område."</string> diff --git a/packages/SystemUI/res/values-ne/strings_car.xml b/packages/SystemUI/res/values-ne/strings_car.xml index 1b92f6e86a5f..a435c2f7657e 100644 --- a/packages/SystemUI/res/values-ne/strings_car.xml +++ b/packages/SystemUI/res/values-ne/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"अतिथि"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"प्रयोगकर्ता थप्नुहोस्"</string> <string name="car_new_user" msgid="8142927244990323906">"नयाँ प्रयोगकर्ता"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"तपाईंले नयाँ प्रयोगकर्ता थप्दा ती व्यक्तिले आफ्नो स्थान सेटअप गर्नु पर्छ।"</string> diff --git a/packages/SystemUI/res/values-nl/strings_car.xml b/packages/SystemUI/res/values-nl/strings_car.xml index 63460370beae..a3fc561641c5 100644 --- a/packages/SystemUI/res/values-nl/strings_car.xml +++ b/packages/SystemUI/res/values-nl/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gast"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Gebruiker toevoegen"</string> <string name="car_new_user" msgid="8142927244990323906">"Nieuwe gebruiker"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Wanneer je een nieuwe gebruiker toevoegt, moet die persoon zijn eigen profiel instellen."</string> diff --git a/packages/SystemUI/res/values-or/strings_car.xml b/packages/SystemUI/res/values-or/strings_car.xml index 2dfa37dbc505..aedec96d3f22 100644 --- a/packages/SystemUI/res/values-or/strings_car.xml +++ b/packages/SystemUI/res/values-or/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ଅତିଥି"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ୟୁଜର୍ଙ୍କୁ ଯୋଡ଼ନ୍ତୁ"</string> <string name="car_new_user" msgid="8142927244990323906">"ନୂଆ ୟୁଜର୍"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"ଯେତେବେଳେ ଆପଣ ଜଣେ ନୂଆ ୟୁଜର୍ଙ୍କୁ ଯୋଡ଼ିବେ, ସେହି ବ୍ୟକ୍ତିଙ୍କୁ ନିଜ ପାଇଁ ସ୍ପେସ୍ ସେଟଅପ୍ କରିବାକୁ ପଡ଼ିବ।"</string> diff --git a/packages/SystemUI/res/values-pa/strings_car.xml b/packages/SystemUI/res/values-pa/strings_car.xml index 5da837692bf3..e114144646a0 100644 --- a/packages/SystemUI/res/values-pa/strings_car.xml +++ b/packages/SystemUI/res/values-pa/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ਮਹਿਮਾਨ"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੋ"</string> <string name="car_new_user" msgid="8142927244990323906">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।"</string> diff --git a/packages/SystemUI/res/values-pl/strings_car.xml b/packages/SystemUI/res/values-pl/strings_car.xml index 807eeab9442c..c6f4c4df9c49 100644 --- a/packages/SystemUI/res/values-pl/strings_car.xml +++ b/packages/SystemUI/res/values-pl/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gość"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Dodaj użytkownika"</string> <string name="car_new_user" msgid="8142927244990323906">"Nowy użytkownik"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Gdy dodasz nowego użytkownika, musi on skonfigurować swój profil."</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings_car.xml b/packages/SystemUI/res/values-pt-rBR/strings_car.xml index fa23b581cbb1..5e6bab747341 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings_car.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Visitante"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Adicionar usuário"</string> <string name="car_new_user" msgid="8142927244990323906">"Novo usuário"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Quando você adiciona um usuário novo, essa pessoa precisa configurar o espaço dela."</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings_car.xml b/packages/SystemUI/res/values-pt-rPT/strings_car.xml index 9ea0e7a703bb..5850c50980dc 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings_car.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Convidado"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Adicionar utilizador"</string> <string name="car_new_user" msgid="8142927244990323906">"Novo utilizador"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço."</string> diff --git a/packages/SystemUI/res/values-pt/strings_car.xml b/packages/SystemUI/res/values-pt/strings_car.xml index fa23b581cbb1..5e6bab747341 100644 --- a/packages/SystemUI/res/values-pt/strings_car.xml +++ b/packages/SystemUI/res/values-pt/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Visitante"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Adicionar usuário"</string> <string name="car_new_user" msgid="8142927244990323906">"Novo usuário"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Quando você adiciona um usuário novo, essa pessoa precisa configurar o espaço dela."</string> diff --git a/packages/SystemUI/res/values-ro/strings_car.xml b/packages/SystemUI/res/values-ro/strings_car.xml index c9f0132fcf54..41713d1edb71 100644 --- a/packages/SystemUI/res/values-ro/strings_car.xml +++ b/packages/SystemUI/res/values-ro/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Invitat"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Adăugați un utilizator"</string> <string name="car_new_user" msgid="8142927244990323906">"Utilizator nou"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Când adăugați un utilizator nou, acesta trebuie să-și configureze spațiul."</string> diff --git a/packages/SystemUI/res/values-ru/strings_car.xml b/packages/SystemUI/res/values-ru/strings_car.xml index 63aefb0bdcd2..f8418ac9eaca 100644 --- a/packages/SystemUI/res/values-ru/strings_car.xml +++ b/packages/SystemUI/res/values-ru/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Гость"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Добавить пользователя"</string> <string name="car_new_user" msgid="8142927244990323906">"Новый пользователь"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Когда вы добавите пользователя, ему потребуется настроить профиль."</string> diff --git a/packages/SystemUI/res/values-si/strings_car.xml b/packages/SystemUI/res/values-si/strings_car.xml index 24b8e490ff98..656696cda96b 100644 --- a/packages/SystemUI/res/values-si/strings_car.xml +++ b/packages/SystemUI/res/values-si/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"අමුත්තා"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"පරිශීලක එක් කරන්න"</string> <string name="car_new_user" msgid="8142927244990323906">"නව පරිශීලක"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"ඔබ අලුත් පරිශීලකයෙක් එක් කරන විට, එම පුද්ගලයාට තමන්ගේ ඉඩ සකසා ගැනීමට අවශ්ය වේ."</string> diff --git a/packages/SystemUI/res/values-sk/strings_car.xml b/packages/SystemUI/res/values-sk/strings_car.xml index 550fecd71275..2d5c2ba17a57 100644 --- a/packages/SystemUI/res/values-sk/strings_car.xml +++ b/packages/SystemUI/res/values-sk/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Hosť"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Pridať používateľa"</string> <string name="car_new_user" msgid="8142927244990323906">"Nový používateľ"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Keď pridáte nového používateľa, musí si nastaviť vlastný priestor."</string> diff --git a/packages/SystemUI/res/values-sl/strings_car.xml b/packages/SystemUI/res/values-sl/strings_car.xml index c67d11e40c2b..bb122b43b966 100644 --- a/packages/SystemUI/res/values-sl/strings_car.xml +++ b/packages/SystemUI/res/values-sl/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gost"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Dodaj uporabnika"</string> <string name="car_new_user" msgid="8142927244990323906">"Nov uporabnik"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor."</string> diff --git a/packages/SystemUI/res/values-sq/strings_car.xml b/packages/SystemUI/res/values-sq/strings_car.xml index e622e6001f98..7dc7dd56a9c2 100644 --- a/packages/SystemUI/res/values-sq/strings_car.xml +++ b/packages/SystemUI/res/values-sq/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"I ftuar"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Shto përdorues"</string> <string name="car_new_user" msgid="8142927244990323906">"Përdorues i ri"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet."</string> diff --git a/packages/SystemUI/res/values-sr/strings_car.xml b/packages/SystemUI/res/values-sr/strings_car.xml index d25f0e7f018e..801114dd5ac9 100644 --- a/packages/SystemUI/res/values-sr/strings_car.xml +++ b/packages/SystemUI/res/values-sr/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Гост"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Додај корисника"</string> <string name="car_new_user" msgid="8142927244990323906">"Нови корисник"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Када додате новог корисника, та особа треба да подеси свој простор."</string> diff --git a/packages/SystemUI/res/values-sv/strings_car.xml b/packages/SystemUI/res/values-sv/strings_car.xml index c75864154335..fb801ad24abd 100644 --- a/packages/SystemUI/res/values-sv/strings_car.xml +++ b/packages/SystemUI/res/values-sv/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Gäst"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Lägg till användare"</string> <string name="car_new_user" msgid="8142927244990323906">"Ny användare"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme."</string> diff --git a/packages/SystemUI/res/values-sw/strings_car.xml b/packages/SystemUI/res/values-sw/strings_car.xml index c4b3dccedc79..bf7fb5b99b0f 100644 --- a/packages/SystemUI/res/values-sw/strings_car.xml +++ b/packages/SystemUI/res/values-sw/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Mgeni"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Ongeza Mtumiaji"</string> <string name="car_new_user" msgid="8142927244990323906">"Mtumiaji Mpya"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Ukiongeza mtumiaji mpya, ni lazima aweke kikundi chake."</string> diff --git a/packages/SystemUI/res/values-ta/strings_car.xml b/packages/SystemUI/res/values-ta/strings_car.xml index 0187c94a3173..731c275591f7 100644 --- a/packages/SystemUI/res/values-ta/strings_car.xml +++ b/packages/SystemUI/res/values-ta/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"விருந்தினர்"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"பயனரைச் சேர்க்கவும்"</string> <string name="car_new_user" msgid="8142927244990323906">"புதிய பயனர்"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"புதிய பயனரைச் சேர்க்கும்போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்."</string> diff --git a/packages/SystemUI/res/values-te/strings_car.xml b/packages/SystemUI/res/values-te/strings_car.xml index 36afe5d9a131..ec7a779fedae 100644 --- a/packages/SystemUI/res/values-te/strings_car.xml +++ b/packages/SystemUI/res/values-te/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"అతిథి"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"వినియోగదారును జోడించండి"</string> <string name="car_new_user" msgid="8142927244990323906">"కొత్త వినియోగదారు"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"మీరు కొత్త వినియోగదారును జోడించినప్పుడు, ఆ వ్యక్తి తన స్థలాన్ని సెటప్ చేసుకోవాలి."</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 5ca8eff6207d..46169963a740 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -85,7 +85,7 @@ <string name="accessibility_back" msgid="567011538994429120">"กลับ"</string> <string name="accessibility_home" msgid="8217216074895377641">"หน้าแรก"</string> <string name="accessibility_menu" msgid="316839303324695949">"เมนู"</string> - <string name="accessibility_accessibility_button" msgid="7601252764577607915">"ความสามารถเข้าถึงได้ง่าย"</string> + <string name="accessibility_accessibility_button" msgid="7601252764577607915">"การเข้าถึงพิเศษ"</string> <string name="accessibility_rotate_button" msgid="7402949513740253006">"หมุนหน้าจอ"</string> <string name="accessibility_recent" msgid="5208608566793607626">"ภาพรวม"</string> <string name="accessibility_search_light" msgid="1103867596330271848">"ค้นหา"</string> diff --git a/packages/SystemUI/res/values-th/strings_car.xml b/packages/SystemUI/res/values-th/strings_car.xml index 92cc60b159b1..17f9b8f8e725 100644 --- a/packages/SystemUI/res/values-th/strings_car.xml +++ b/packages/SystemUI/res/values-th/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"ผู้มาเยือน"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"เพิ่มผู้ใช้"</string> <string name="car_new_user" msgid="8142927244990323906">"ผู้ใช้ใหม่"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"เมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง"</string> diff --git a/packages/SystemUI/res/values-tl/strings_car.xml b/packages/SystemUI/res/values-tl/strings_car.xml index 19e60a57161d..0707b2c5d6ab 100644 --- a/packages/SystemUI/res/values-tl/strings_car.xml +++ b/packages/SystemUI/res/values-tl/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Bisita"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Magdagdag ng User"</string> <string name="car_new_user" msgid="8142927244990323906">"Bagong User"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo."</string> diff --git a/packages/SystemUI/res/values-tr/strings_car.xml b/packages/SystemUI/res/values-tr/strings_car.xml index f54498ba85ef..6dc7e5d17778 100644 --- a/packages/SystemUI/res/values-tr/strings_car.xml +++ b/packages/SystemUI/res/values-tr/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Misafir"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Kullanıcı Ekle"</string> <string name="car_new_user" msgid="8142927244990323906">"Yeni Kullanıcı"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Yeni kullanıcı eklediğinizde, bu kişinin kendi alanını ayarlaması gerekir."</string> diff --git a/packages/SystemUI/res/values-uk/strings_car.xml b/packages/SystemUI/res/values-uk/strings_car.xml index c5e86084903a..2d36a4b1ddb4 100644 --- a/packages/SystemUI/res/values-uk/strings_car.xml +++ b/packages/SystemUI/res/values-uk/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Гість"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Додати користувача"</string> <string name="car_new_user" msgid="8142927244990323906">"Новий користувач"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Коли ви додаєте нового користувача, він має налаштувати свій профіль."</string> diff --git a/packages/SystemUI/res/values-ur/strings_car.xml b/packages/SystemUI/res/values-ur/strings_car.xml index eabff5b0baec..6a85f5612e6a 100644 --- a/packages/SystemUI/res/values-ur/strings_car.xml +++ b/packages/SystemUI/res/values-ur/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"مہمان"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"صارف شامل کریں"</string> <string name="car_new_user" msgid="8142927244990323906">"نیا صارف"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"جب آپ ایک نیا صارف شامل کرتے ہیں تو اس شخص کو اپنی جگہ کو ترتیب دینے کی ضرورت ہوتی ہے۔"</string> diff --git a/packages/SystemUI/res/values-uz/strings_car.xml b/packages/SystemUI/res/values-uz/strings_car.xml index 656e7b37278e..ad4faf66c71b 100644 --- a/packages/SystemUI/res/values-uz/strings_car.xml +++ b/packages/SystemUI/res/values-uz/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Mehmon"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Foydalanuvchi qo‘shish"</string> <string name="car_new_user" msgid="8142927244990323906">"Yangi foydalanuvchi"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Yangi profil qo‘shilgach, uni sozlash lozim."</string> diff --git a/packages/SystemUI/res/values-vi/strings_car.xml b/packages/SystemUI/res/values-vi/strings_car.xml index 08aece1a4976..ad9bc9e085cc 100644 --- a/packages/SystemUI/res/values-vi/strings_car.xml +++ b/packages/SystemUI/res/values-vi/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Khách"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Thêm người dùng"</string> <string name="car_new_user" msgid="8142927244990323906">"Người dùng mới"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Khi bạn thêm một người dùng mới, người đó cần thiết lập không gian của họ."</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings_car.xml b/packages/SystemUI/res/values-zh-rCN/strings_car.xml index e29397aa0ec0..8dbb846a5acb 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings_car.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"访客"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"添加用户"</string> <string name="car_new_user" msgid="8142927244990323906">"新用户"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"当您添加新用户时,该用户必须设置自己的空间。"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings_car.xml b/packages/SystemUI/res/values-zh-rHK/strings_car.xml index b247dd652141..ea8836f213fa 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings_car.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"訪客"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"新增使用者"</string> <string name="car_new_user" msgid="8142927244990323906">"新使用者"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"新增的使用者需要自行設定個人空間。"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings_car.xml b/packages/SystemUI/res/values-zh-rTW/strings_car.xml index 6772d37f8e9f..2779c7b16f98 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings_car.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"訪客"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"新增使用者"</string> <string name="car_new_user" msgid="8142927244990323906">"新使用者"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"新增的使用者需要自行設定個人空間。"</string> diff --git a/packages/SystemUI/res/values-zu/strings_car.xml b/packages/SystemUI/res/values-zu/strings_car.xml index f922f46773ea..dc0fec2366fb 100644 --- a/packages/SystemUI/res/values-zu/strings_car.xml +++ b/packages/SystemUI/res/values-zu/strings_car.xml @@ -20,6 +20,8 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="car_guest" msgid="3738772168718508650">"Isivakashi"</string> + <!-- no translation found for start_guest_session (7055742120180595689) --> + <skip /> <string name="car_add_user" msgid="5245196248349230898">"Engeza umsebenzisi"</string> <string name="car_new_user" msgid="8142927244990323906">"Umsebenzisi omusha"</string> <string name="user_add_user_message_setup" msgid="1791011504259527329">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha izikhala zakhe."</string> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index a9d995c889c7..ca6b2d977dc2 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -236,6 +236,9 @@ <!-- Height of search panel including navigation bar height --> <dimen name="navbar_search_panel_height">230dip</dimen> + <!-- Move the back button drawable for 3 button layout upwards in ime mode and in portrait --> + <dimen name="navbar_back_button_ime_offset">2dp</dimen> + <!-- Height of the draggable handle at the bottom of the phone notification panel --> <dimen name="close_handle_height">36dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java index d295bd6a2dc8..a42191cce487 100644 --- a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java +++ b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java @@ -598,21 +598,6 @@ public class KeyboardUI extends SystemUI implements InputManager.OnTabletModeCha mHandler.obtainMessage(MSG_ON_DEVICE_BOND_STATE_CHANGED, bondState, 0, cachedDevice).sendToTarget(); } - - @Override - public void onDeviceAdded(CachedBluetoothDevice cachedDevice) { } - @Override - public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) { } - @Override - public void onScanningStateChanged(boolean started) { } - @Override - public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) { } - @Override - public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, - int bluetoothProfile) { } - - @Override - public void onAudioModeChanged() { } } private final class BluetoothErrorListener implements BluetoothUtils.ErrorListener { diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java index 9070170f4df9..21eab592098d 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java @@ -266,9 +266,12 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { || mEstimate.estimateMillis < mSevereWarningThreshold) { nb.setColor(Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorError)); } - nb.addAction(0, - mContext.getString(R.string.battery_saver_start_action), - pendingBroadcast(ACTION_START_SAVER)); + + if (!mPowerMan.isPowerSaveMode()) { + nb.addAction(0, + mContext.getString(R.string.battery_saver_start_action), + pendingBroadcast(ACTION_START_SAVER)); + } nb.setOnlyAlertOnce(!mPlaySound); mPlaySound = false; SystemUI.overrideNotificationAppName(mContext, nb, false); diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index 9a648d17c4ff..0b9067e5dc1f 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -333,10 +333,11 @@ public class PowerUI extends SystemUI { @VisibleForTesting boolean shouldDismissLowBatteryWarning(boolean plugged, int oldBucket, int bucket, long timeRemaining, boolean isPowerSaver) { - final boolean hybridWouldDismiss = mEnhancedEstimates.isHybridNotificationEnabled() + final boolean hybridEnabled = mEnhancedEstimates.isHybridNotificationEnabled(); + final boolean hybridWouldDismiss = hybridEnabled && timeRemaining > mEnhancedEstimates.getLowWarningThreshold(); final boolean standardWouldDismiss = (bucket > oldBucket && bucket > 0); - return isPowerSaver + return (isPowerSaver && !hybridEnabled) || plugged || (standardWouldDismiss && (!mEnhancedEstimates.isHybridNotificationEnabled() || hybridWouldDismiss)); @@ -344,14 +345,14 @@ public class PowerUI extends SystemUI { private boolean isEnhancedTrigger(boolean plugged, long timeRemaining, boolean isPowerSaver, int batteryStatus) { - if (plugged || isPowerSaver || batteryStatus == BatteryManager.BATTERY_STATUS_UNKNOWN) { + if (plugged || batteryStatus == BatteryManager.BATTERY_STATUS_UNKNOWN) { return false; } int warnLevel = mLowBatteryReminderLevels[0]; int critLevel = mLowBatteryReminderLevels[1]; - // Only show the low warning once per charge cycle - final boolean canShowWarning = !mLowWarningShownThisChargeCycle + // Only show the low warning once per charge cycle & no battery saver + final boolean canShowWarning = !mLowWarningShownThisChargeCycle && !isPowerSaver && (timeRemaining < mEnhancedEstimates.getLowWarningThreshold() || mBatteryLevel <= warnLevel); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index 38d266dccc68..55dfd440bcae 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -16,6 +16,7 @@ package com.android.systemui.statusbar; +import static com.android.systemui.Interpolators.FAST_OUT_SLOW_IN_REVERSE; import static com.android.systemui.statusbar.phone.NotificationIconContainer.IconState.NO_VALUE; import android.content.Context; @@ -26,9 +27,11 @@ import android.os.SystemProperties; import android.util.AttributeSet; import android.util.Log; import android.util.MathUtils; +import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.view.WindowInsets; import android.view.accessibility.AccessibilityNodeInfo; import com.android.systemui.Interpolators; @@ -89,6 +92,7 @@ public class NotificationShelf extends ActivatableNotificationView implements private boolean mShowNotificationShelf; private float mFirstElementRoundness; private Rect mClipRect = new Rect(); + private int mCutoutHeight; public NotificationShelf(Context context, AttributeSet attrs) { super(context, attrs); @@ -200,8 +204,12 @@ public class NotificationShelf extends ActivatableNotificationView implements 0 : mAmbientState.getDarkAmount(); mShelfState.yTranslation = MathUtils.lerp(awakenTranslation, darkTranslation, yRatio); mShelfState.zTranslation = ambientState.getBaseZHeight(); + // For the small display size, it's not enough to make the icon not covered by + // the top cutout so the denominator add the height of cutout. + // Totally, (getIntrinsicHeight() * 2 + mCutoutHeight) should be smaller then + // mAmbientState.getTopPadding(). float openedAmount = (mShelfState.yTranslation - getFullyClosedTranslation()) - / (getIntrinsicHeight() * 2); + / (getIntrinsicHeight() * 2 + mCutoutHeight); openedAmount = Math.min(1.0f, openedAmount); mShelfState.openedAmount = openedAmount; mShelfState.clipTopAmount = 0; @@ -745,6 +753,22 @@ public class NotificationShelf extends ActivatableNotificationView implements mRelativeOffset -= mTmp[0]; } + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + WindowInsets ret = super.onApplyWindowInsets(insets); + + // NotificationShelf drag from the status bar and the status bar dock on the top + // of the display for current design so just focus on the top of ScreenDecorations. + // In landscape or multiple window split mode, the NotificationShelf still drag from + // the top and the physical notch/cutout goes to the right, left, or both side of the + // display so it doesn't matter for the NotificationSelf in landscape. + DisplayCutout displayCutout = insets.getDisplayCutout(); + mCutoutHeight = displayCutout == null || displayCutout.getSafeInsetTop() < 0 + ? 0 : displayCutout.getSafeInsetTop(); + + return ret; + } + private void setOpenedAmount(float openedAmount) { mNoAnimationsInThisFrame = openedAmount == 1.0f && mOpenedAmount == 0.0f; mOpenedAmount = openedAmount; @@ -759,7 +783,7 @@ public class NotificationShelf extends ActivatableNotificationView implements int width = (int) NotificationUtils.interpolate( start + mCollapsedIcons.getFinalTranslationX(), mShelfIcons.getWidth(), - openedAmount); + FAST_OUT_SLOW_IN_REVERSE.getInterpolation(openedAmount)); mShelfIcons.setActualLayoutWidth(width); boolean hasOverflow = mCollapsedIcons.hasOverflow(); int collapsedPadding = mCollapsedIcons.getPaddingEnd(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index 7a357ae43ae3..aa07c70f00c2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -20,7 +20,6 @@ import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; -import android.os.SystemProperties; import android.util.Log; import android.view.Gravity; import android.view.View; @@ -51,14 +50,13 @@ import com.android.systemui.statusbar.policy.UserSwitcherController; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.Map; + /** * A status bar (and navigation bar) tailored for the automotive use case. */ public class CarStatusBar extends StatusBar implements CarBatteryController.BatteryViewHandler { private static final String TAG = "CarStatusBar"; - public static final boolean ENABLE_HVAC_CONNECTION - = !SystemProperties.getBoolean("android.car.hvac.demo", true); private TaskStackListenerImpl mTaskStackListener; @@ -97,10 +95,9 @@ public class CarStatusBar extends StatusBar implements createBatteryController(); mCarBatteryController.startListening(); - if (ENABLE_HVAC_CONNECTION) { - Log.d(TAG, "Connecting to HVAC service"); - Dependency.get(HvacController.class).connectToCarService(); - } + Log.d(TAG, "Connecting to HVAC service"); + Dependency.get(HvacController.class).connectToCarService(); + mCarFacetButtonController = Dependency.get(CarFacetButtonController.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); mDeviceIsProvisioned = mDeviceProvisionedController.isDeviceProvisioned(); @@ -123,9 +120,9 @@ public class CarStatusBar extends StatusBar implements */ private void restartNavBars() { mCarFacetButtonController.removeAll(); - if (ENABLE_HVAC_CONNECTION) { - Dependency.get(HvacController.class).removeAllComponents(); - } + + Dependency.get(HvacController.class).removeAllComponents(); + if (mNavigationBarWindow != null) { mNavigationBarWindow.removeAllViews(); mNavigationBarView = null; @@ -147,7 +144,7 @@ public class CarStatusBar extends StatusBar implements * Allows for showing or hiding just the navigation bars. This is indented to be used when * the full screen user selector is shown. */ - void setNavBarVisibility(@View.Visibility int visibility) { + void setNavBarVisibility(@View.Visibility int visibility) { if (mNavigationBarWindow != null) { mNavigationBarWindow.setVisibility(visibility); } @@ -268,12 +265,12 @@ public class CarStatusBar extends StatusBar implements private void buildNavBarWindows() { if (mShowBottom) { - mNavigationBarWindow = (ViewGroup) View.inflate(mContext, + mNavigationBarWindow = (ViewGroup) View.inflate(mContext, R.layout.navigation_bar_window, null); } if (mShowLeft) { mLeftNavigationBarWindow = (ViewGroup) View.inflate(mContext, - R.layout.navigation_bar_window, null); + R.layout.navigation_bar_window, null); } if (mShowRight) { mRightNavigationBarWindow = (ViewGroup) View.inflate(mContext, @@ -378,10 +375,12 @@ public class CarStatusBar extends StatusBar implements + "," + mStackScroller.getScrollY()); } - pw.print(" mTaskStackListener="); pw.println(mTaskStackListener); + pw.print(" mTaskStackListener="); + pw.println(mTaskStackListener); pw.print(" mCarFacetButtonController="); pw.println(mCarFacetButtonController); - pw.print(" mFullscreenUserSwitcher="); pw.println(mFullscreenUserSwitcher); + pw.print(" mFullscreenUserSwitcher="); + pw.println(mFullscreenUserSwitcher); pw.print(" mCarBatteryController="); pw.println(mCarBatteryController); pw.print(" mBatteryMeterView="); @@ -400,7 +399,10 @@ public class CarStatusBar extends StatusBar implements pw.println("SharedPreferences:"); for (Map.Entry<String, ?> entry : Prefs.getAll(mContext).entrySet()) { - pw.print(" "); pw.print(entry.getKey()); pw.print("="); pw.println(entry.getValue()); + pw.print(" "); + pw.print(entry.getKey()); + pw.print("="); + pw.println(entry.getValue()); } } @@ -446,8 +448,8 @@ public class CarStatusBar extends StatusBar implements } /** - * An implementation of SysUiTaskStackChangeListener, that listens for changes in the system task - * stack and notifies the navigation bar. + * An implementation of SysUiTaskStackChangeListener, that listens for changes in the system + * task stack and notifies the navigation bar. */ private class TaskStackListenerImpl extends SysUiTaskStackChangeListener { @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index b7bc5777101e..ad2e9dcc70bc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -25,6 +25,7 @@ import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_ import android.animation.LayoutTransition; import android.animation.LayoutTransition.TransitionListener; import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; import android.annotation.DrawableRes; @@ -61,6 +62,7 @@ import android.widget.FrameLayout; import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.DockedStackExistsListener; +import com.android.systemui.Interpolators; import com.android.systemui.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.RecentsComponent; @@ -483,14 +485,15 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav Context lightContext = new ContextThemeWrapper(ctx, dualToneLightTheme); Context darkContext = new ContextThemeWrapper(ctx, dualToneDarkTheme); - if (oldConfig.orientation != newConfig.orientation - || oldConfig.densityDpi != newConfig.densityDpi) { + final boolean orientationChange = oldConfig.orientation != newConfig.orientation; + final boolean densityChange = oldConfig.densityDpi != newConfig.densityDpi; + final boolean dirChange = oldConfig.getLayoutDirection() != newConfig.getLayoutDirection(); + + if (orientationChange || densityChange) { mDockedIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_docked); mHomeDefaultIcon = getHomeDrawable(lightContext, darkContext); } - if (oldConfig.densityDpi != newConfig.densityDpi - || oldConfig.getLayoutDirection() != newConfig.getLayoutDirection()) { - mBackIcon = getBackDrawable(lightContext, darkContext); + if (densityChange || dirChange) { mRecentIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_recent); mMenuIcon = getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_menu); @@ -506,6 +509,9 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav updateCarModeIcons(ctx); } } + if (orientationChange || densityChange || dirChange) { + mBackIcon = getBackDrawable(lightContext, darkContext); + } } public KeyButtonDrawable getBackDrawable(Context lightContext, Context darkContext) { @@ -527,9 +533,26 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav private void orientBackButton(KeyButtonDrawable drawable) { final boolean useAltBack = - (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0; - drawable.setRotation(useAltBack - ? -90 : (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) ? 180 : 0); + (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0; + final boolean isRtl = getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; + float degrees = useAltBack + ? (isRtl ? 270 : -90) + : (isRtl ? 180 : 0); + if (drawable.getRotation() == degrees) { + return; + } + + // Animate the back button's rotation to the new degrees and only in portrait move up the + // back button to line up with the other buttons + float targetY = !mOverviewProxyService.shouldShowSwipeUpUI() && !mVertical && useAltBack + ? - getResources().getDimension(R.dimen.navbar_back_button_ime_offset) + : 0; + ObjectAnimator navBarAnimator = ObjectAnimator.ofPropertyValuesHolder(drawable, + PropertyValuesHolder.ofFloat(KeyButtonDrawable.KEY_DRAWABLE_ROTATE, degrees), + PropertyValuesHolder.ofFloat(KeyButtonDrawable.KEY_DRAWABLE_TRANSLATE_Y, targetY)); + navBarAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); + navBarAnimator.setDuration(200); + navBarAnimator.start(); } private void orientHomeButton(KeyButtonDrawable drawable) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadowKeyDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadowKeyDrawable.java index 2471e34a5a11..8bd804849e19 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadowKeyDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadowKeyDrawable.java @@ -28,8 +28,6 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import com.android.systemui.R; - /** * A drawable which adds shadow around a child drawable. */ @@ -60,6 +58,23 @@ public class ShadowKeyDrawable extends Drawable { } } + public void setTranslationX(float x) { + setTranslation(x, mState.mTranslationY); + } + + public void setTranslationY(float y) { + setTranslation(mState.mTranslationX, y); + } + + public void setTranslation(float x, float y) { + if (mState.mTranslationX != x || mState.mTranslationY != y) { + mState.mTranslationX = x; + mState.mTranslationY = y; + mState.mLastDrawnBitmap = null; + invalidateSelf(); + } + } + public void setShadowProperties(int x, int y, int size, int color) { if (mState.mShadowOffsetX != x || mState.mShadowOffsetY != y || mState.mShadowSize != size || mState.mShadowColor != color) { @@ -76,6 +91,14 @@ public class ShadowKeyDrawable extends Drawable { return mState.mRotateDegrees; } + public float getTranslationX() { + return mState.mTranslationX; + } + + public float getTranslationY() { + return mState.mTranslationY; + } + @Override public void draw(Canvas canvas) { Rect bounds = getBounds(); @@ -151,6 +174,7 @@ public class ShadowKeyDrawable extends Drawable { // Call mutate, so that the pixel allocation by the underlying vector drawable is cleared. final Drawable d = mState.mChildState.newDrawable().mutate(); d.setBounds(0, 0, mState.mBaseWidth, mState.mBaseHeight); + canvas.translate(mState.mTranslationX, mState.mTranslationY); d.draw(canvas); if (mState.mShadowSize > 0) { @@ -168,9 +192,9 @@ public class ShadowKeyDrawable extends Drawable { canvas.rotate(mState.mRotateDegrees, width / 2, height / 2); final float shadowOffsetX = (float) (Math.sin(radians) * mState.mShadowOffsetY - + Math.cos(radians) * mState.mShadowOffsetX); + + Math.cos(radians) * mState.mShadowOffsetX) - mState.mTranslationX; final float shadowOffsetY = (float) (Math.cos(radians) * mState.mShadowOffsetY - - Math.sin(radians) * mState.mShadowOffsetX); + - Math.sin(radians) * mState.mShadowOffsetX) - mState.mTranslationY; canvas.drawBitmap(shadow, offset[0] + shadowOffsetX, offset[1] + shadowOffsetY, paint); d.draw(canvas); @@ -189,6 +213,8 @@ public class ShadowKeyDrawable extends Drawable { int mBaseWidth; int mBaseHeight; float mRotateDegrees; + float mTranslationX; + float mTranslationY; int mShadowOffsetX; int mShadowOffsetY; int mShadowSize; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java index 8df51dbf5e68..1085b06c0f04 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java @@ -239,11 +239,6 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa } @Override - public void onScanningStateChanged(boolean started) { - // Don't care. - } - - @Override public void onDeviceAdded(CachedBluetoothDevice cachedDevice) { cachedDevice.registerCallback(this); updateConnected(); @@ -277,12 +272,6 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED); } - @Override - public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile) {} - - @Override - public void onAudioModeChanged() {} - private ActuallyCachedState getCachedState(CachedBluetoothDevice device) { ActuallyCachedState state = mCachedState.get(device); if (state == null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java index 1a85c479a42c..8e31f3149bd0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java @@ -22,6 +22,7 @@ import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; +import android.util.FloatProperty; import android.view.Gravity; import com.android.systemui.R; @@ -33,6 +34,32 @@ import com.android.systemui.statusbar.phone.ShadowKeyDrawable; */ public class KeyButtonDrawable extends LayerDrawable { + public static final FloatProperty<KeyButtonDrawable> KEY_DRAWABLE_ROTATE = + new FloatProperty<KeyButtonDrawable>("KeyButtonRotation") { + @Override + public void setValue(KeyButtonDrawable drawable, float degree) { + drawable.setRotation(degree); + } + + @Override + public Float get(KeyButtonDrawable drawable) { + return drawable.getRotation(); + } + }; + + public static final FloatProperty<KeyButtonDrawable> KEY_DRAWABLE_TRANSLATE_Y = + new FloatProperty<KeyButtonDrawable>("KeyButtonTranslateY") { + @Override + public void setValue(KeyButtonDrawable drawable, float y) { + drawable.setTranslationY(y); + } + + @Override + public Float get(KeyButtonDrawable drawable) { + return drawable.getTranslationY(); + } + }; + private final boolean mHasDarkDrawable; public static KeyButtonDrawable create(Context lightContext, Drawable lightDrawable, @@ -83,4 +110,33 @@ public class KeyButtonDrawable extends LayerDrawable { ((ShadowKeyDrawable) getDrawable(1)).setRotation(degrees); } } + + public void setTranslationY(float y) { + if (getDrawable(0) instanceof ShadowKeyDrawable) { + ((ShadowKeyDrawable) getDrawable(0)).setTranslationY(y); + } + if (mHasDarkDrawable && getDrawable(1) instanceof ShadowKeyDrawable) { + ((ShadowKeyDrawable) getDrawable(1)).setTranslationY(y); + } + } + + public float getRotation() { + if (getDrawable(0) instanceof ShadowKeyDrawable) { + return ((ShadowKeyDrawable) getDrawable(0)).getRotation(); + } + if (mHasDarkDrawable && getDrawable(1) instanceof ShadowKeyDrawable) { + return ((ShadowKeyDrawable) getDrawable(1)).getRotation(); + } + return 0; + } + + public float getTranslationY() { + if (getDrawable(0) instanceof ShadowKeyDrawable) { + return ((ShadowKeyDrawable) getDrawable(0)).getTranslationY(); + } + if (mHasDarkDrawable && getDrawable(1) instanceof ShadowKeyDrawable) { + return ((ShadowKeyDrawable) getDrawable(1)).getTranslationY(); + } + return 0; + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java index 5ecf0c04aeb1..a9d49f91e44e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java @@ -323,9 +323,9 @@ public class PowerUITest extends SysuiTestCase { } @Test - public void testShouldDismissLowBatteryWarning_dismissWhenPowerSaverEnabled() { + public void testShouldDismissLowBatteryWarning_dismissWhenPowerSaverEnabledLegacy() { mPowerUI.start(); - when(mEnhancedEstimates.isHybridNotificationEnabled()).thenReturn(true); + when(mEnhancedEstimates.isHybridNotificationEnabled()).thenReturn(false); when(mEnhancedEstimates.getLowWarningThreshold()).thenReturn(PowerUI.THREE_HOURS_IN_MILLIS); when(mEnhancedEstimates.getSevereWarningThreshold()).thenReturn(ONE_HOUR_MILLIS); @@ -337,6 +337,20 @@ public class PowerUITest extends SysuiTestCase { } @Test + public void testShouldNotDismissLowBatteryWarning_dismissWhenPowerSaverEnabledHybrid() { + mPowerUI.start(); + when(mEnhancedEstimates.isHybridNotificationEnabled()).thenReturn(true); + when(mEnhancedEstimates.getLowWarningThreshold()).thenReturn(PowerUI.THREE_HOURS_IN_MILLIS); + when(mEnhancedEstimates.getSevereWarningThreshold()).thenReturn(ONE_HOUR_MILLIS); + + // device that gets power saver turned on should dismiss + boolean shouldDismiss = + mPowerUI.shouldDismissLowBatteryWarning(UNPLUGGED, BELOW_WARNING_BUCKET, + BELOW_WARNING_BUCKET, ABOVE_HYBRID_THRESHOLD, !POWER_SAVER_OFF); + assertFalse(shouldDismiss); + } + + @Test public void testShouldDismissLowBatteryWarning_dismissWhenPlugged() { mPowerUI.start(); when(mEnhancedEstimates.isHybridNotificationEnabled()).thenReturn(true); diff --git a/packages/VpnDialogs/res/values-th/strings.xml b/packages/VpnDialogs/res/values-th/strings.xml index f6dfca5a8434..333ff5fefacc 100644 --- a/packages/VpnDialogs/res/values-th/strings.xml +++ b/packages/VpnDialogs/res/values-th/strings.xml @@ -17,7 +17,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="prompt" msgid="3183836924226407828">"ขอการเชื่อมต่อ"</string> - <string name="warning" msgid="809658604548412033">"<xliff:g id="APP">%s</xliff:g> ต้องการติดตั้งการเชื่อมต่อ VPN เพื่อให้แอปสามารถตรวจสอบการเข้าใช้งานเครือข่าย โปรดยอมรับหากคุณเชื่อถือแหล่งที่มานี้เท่านั้น <br /> <br /> <img src=vpn_icon /> จะปรากฏที่ด้านบนหน้าจอเมื่อมีการใช้งาน VPN อยู่"</string> + <string name="warning" msgid="809658604548412033">"<xliff:g id="APP">%s</xliff:g> ต้องการสร้างการเชื่อมต่อ VPN เพื่อให้แอปสามารถตรวจสอบการเข้าใช้งานเครือข่าย โปรดยอมรับหากคุณเชื่อถือแหล่งที่มานี้เท่านั้น <br /> <br /> <img src=vpn_icon /> จะปรากฏที่ด้านบนหน้าจอเมื่อมีการใช้งาน VPN อยู่"</string> <string name="legacy_title" msgid="192936250066580964">"เชื่อมต่อ VPN แล้ว"</string> <string name="session" msgid="6470628549473641030">"เซสชัน"</string> <string name="duration" msgid="3584782459928719435">"ระยะเวลา:"</string> diff --git a/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java index 1229c5847933..347a084d05a2 100644 --- a/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java +++ b/services/accessibility/java/com/android/server/accessibility/TouchExplorer.java @@ -375,6 +375,7 @@ class TouchExplorer extends BaseEventStreamTransformation return false; } + mAms.onTouchInteractionEnd(); // Remove pending event deliveries. mSendHoverEnterAndMoveDelayed.cancel(); mSendHoverExitDelayed.cancel(); @@ -382,9 +383,9 @@ class TouchExplorer extends BaseEventStreamTransformation if (mSendTouchExplorationEndDelayed.isPending()) { mSendTouchExplorationEndDelayed.forceSendAndRemove(); } - if (mSendTouchInteractionEndDelayed.isPending()) { - mSendTouchInteractionEndDelayed.forceSendAndRemove(); - } + + // Announce the end of a new touch interaction. + sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END); // Try to use the standard accessibility API to click if (mAms.performActionOnAccessibilityFocusedItem( @@ -487,20 +488,25 @@ class TouchExplorer extends BaseEventStreamTransformation case MotionEvent.ACTION_DOWN: { mAms.onTouchInteractionStart(); - sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_START); - // If we still have not notified the user for the last // touch, we figure out what to do. If were waiting // we resent the delayed callback and wait again. mSendHoverEnterAndMoveDelayed.cancel(); mSendHoverExitDelayed.cancel(); - if (mSendTouchExplorationEndDelayed.isPending()) { - mSendTouchExplorationEndDelayed.forceSendAndRemove(); + // If a touch exploration gesture is in progress send events for its end. + if(mTouchExplorationInProgress) { + sendHoverExitAndTouchExplorationGestureEndIfNeeded(policyFlags); } - if (mSendTouchInteractionEndDelayed.isPending()) { + // Avoid duplicated TYPE_TOUCH_INTERACTION_START event when 2nd tap of double tap. + if (!mGestureDetector.firstTapDetected()) { + mSendTouchExplorationEndDelayed.forceSendAndRemove(); mSendTouchInteractionEndDelayed.forceSendAndRemove(); + sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_START); + } else { + // Let gesture to handle to avoid duplicated TYPE_TOUCH_INTERACTION_END event. + mSendTouchInteractionEndDelayed.cancel(); } if (!mGestureDetector.firstTapDetected() && !mTouchExplorationInProgress) { diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java index 0610256ae10b..6f03b762254b 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java @@ -29,6 +29,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ActivityManager; +import android.app.ActivityManagerInternal; import android.app.ActivityThread; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -42,7 +43,6 @@ import android.database.ContentObserver; import android.graphics.Rect; import android.net.Uri; import android.os.Binder; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -963,12 +963,20 @@ public final class AutofillManagerService extends SystemService { throw new IllegalArgumentException(packageName + " is not a valid package", e); } + // TODO(b/112051762): rather than always call AM here, call it on demand on + // getPreviousSessionsLocked()? That way we save space / time here, and don't set + // a callback on AM unnecessarily (see TODO below :-) + final ActivityManagerInternal am = LocalServices + .getService(ActivityManagerInternal.class); + // TODO(b/112051762): add a callback method on AM to be notified when a task is finished + // so we can clean up sessions kept alive + final int taskId = am.getTaskIdForActivity(activityToken, false); final int sessionId; synchronized (mLock) { final AutofillManagerServiceImpl service = getServiceForUserLocked(userId); - sessionId = service.startSessionLocked(activityToken, getCallingUid(), appCallback, - autofillId, bounds, value, hasCallback, componentName, compatMode, - mAllowInstantService, flags); + sessionId = service.startSessionLocked(activityToken, taskId, getCallingUid(), + appCallback, autofillId, bounds, value, hasCallback, componentName, + compatMode, mAllowInstantService, flags); } send(receiver, sessionId); } diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 4206d9a43ae2..48b3798c863d 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -25,11 +25,9 @@ import static com.android.server.autofill.Helper.sVerbose; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.app.ActivityManagerInternal; import android.app.AppGlobals; -import android.app.IActivityManager; import android.app.IActivityTaskManager; import android.content.ComponentName; import android.content.Context; @@ -82,7 +80,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.LocalServices; import com.android.server.autofill.AutofillManagerService.AutofillCompatState; import com.android.server.autofill.ui.AutoFillUI; -import com.android.server.wm.ActivityTaskManagerInternal; import java.io.PrintWriter; import java.util.ArrayList; @@ -342,7 +339,7 @@ final class AutofillManagerServiceImpl { } @GuardedBy("mLock") - int startSessionLocked(@NonNull IBinder activityToken, int uid, + int startSessionLocked(@NonNull IBinder activityToken, int taskId, int uid, @NonNull IBinder appCallbackToken, @NonNull AutofillId autofillId, @NonNull Rect virtualBounds, @Nullable AutofillValue value, boolean hasCallback, @NonNull ComponentName componentName, boolean compatMode, @@ -375,8 +372,9 @@ final class AutofillManagerServiceImpl { // Occasionally clean up abandoned sessions pruneAbandonedSessionsLocked(); - final Session newSession = createSessionByTokenLocked(activityToken, uid, appCallbackToken, - hasCallback, componentName, compatMode, bindInstantServiceAllowed, flags); + final Session newSession = createSessionByTokenLocked(activityToken, taskId, uid, + appCallbackToken, hasCallback, componentName, compatMode, bindInstantServiceAllowed, + flags); if (newSession == null) { return NO_SESSION; } @@ -493,7 +491,7 @@ final class AutofillManagerServiceImpl { } @GuardedBy("mLock") - private Session createSessionByTokenLocked(@NonNull IBinder activityToken, int uid, + private Session createSessionByTokenLocked(@NonNull IBinder activityToken, int taskId, int uid, @NonNull IBinder appCallbackToken, boolean hasCallback, @NonNull ComponentName componentName, boolean compatMode, boolean bindInstantServiceAllowed, int flags) { @@ -513,9 +511,9 @@ final class AutofillManagerServiceImpl { assertCallerLocked(componentName, compatMode); final Session newSession = new Session(this, mUi, mContext, mHandler, mUserId, mLock, - sessionId, uid, activityToken, appCallbackToken, hasCallback, mUiLatencyHistory, - mWtfHistory, mInfo.getServiceInfo().getComponentName(), componentName, compatMode, - bindInstantServiceAllowed, flags); + sessionId, taskId, uid, activityToken, appCallbackToken, hasCallback, + mUiLatencyHistory, mWtfHistory, mInfo.getServiceInfo().getComponentName(), + componentName, compatMode, bindInstantServiceAllowed, flags); mSessions.put(newSession.id, newSession); return newSession; @@ -607,6 +605,30 @@ final class AutofillManagerServiceImpl { mSessions.remove(sessionId); } + /** + * Ges the previous sessions asked to be kept alive in a given activity task. + * + * @param session session calling this method (so it's excluded from the result). + */ + @Nullable + @GuardedBy("mLock") + ArrayList<Session> getPreviousSessionsLocked(@NonNull Session session) { + final int size = mSessions.size(); + ArrayList<Session> previousSessions = null; + for (int i = 0; i < size; i++) { + final Session previousSession = mSessions.valueAt(i); + // TODO(b/112051762): only return sessions asked to be kept alive / add CTS test + if (previousSession.taskId == session.taskId && previousSession.id != session.id) { + if (previousSessions == null) { + previousSessions = new ArrayList<>(size); + } + previousSessions.add(previousSession); + } + } + // TODO(b/112051762): remove returned sessions / add CTS test + return previousSessions; + } + void handleSessionSave(Session session) { synchronized (mLock) { if (mSessions.get(session.id) == null) { diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 13de9fa0fcd4..101bf496538c 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -129,12 +129,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState private static AtomicInteger sIdCounter = new AtomicInteger(); - /** Id of the session */ + /** ID of the session */ public final int id; /** uid the session is for */ public final int uid; + /** ID of the task associated with this session's activity */ + public final int taskId; + /** Flags used to start the session */ public final int mFlags; @@ -329,8 +332,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // until the dispatch happens. The items in the list don't need to be cloned // since we don't hold on them anywhere else. The client state is not touched // by us, so no need to copy. - request = new FillRequest(requestId, new ArrayList<>(mContexts), - mClientState, flags); + request = new FillRequest(requestId, new ArrayList<>(mContexts), mClientState, + flags); } mRemoteFillService.onFillRequest(request); @@ -528,14 +531,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } Session(@NonNull AutofillManagerServiceImpl service, @NonNull AutoFillUI ui, - @NonNull Context context, @NonNull Handler handler, int userId, - @NonNull Object lock, int sessionId, int uid, @NonNull IBinder activityToken, + @NonNull Context context, @NonNull Handler handler, int userId, @NonNull Object lock, + int sessionId, int taskId, int uid, @NonNull IBinder activityToken, @NonNull IBinder client, boolean hasCallback, @NonNull LocalLog uiLatencyHistory, - @NonNull LocalLog wtfHistory, - @NonNull ComponentName serviceComponentName, @NonNull ComponentName componentName, - boolean compatMode, boolean bindInstantServiceAllowed, int flags) { + @NonNull LocalLog wtfHistory, @NonNull ComponentName serviceComponentName, + @NonNull ComponentName componentName, boolean compatMode, + boolean bindInstantServiceAllowed, int flags) { id = sessionId; mFlags = flags; + this.taskId = taskId; this.uid = uid; mStartTime = SystemClock.elapsedRealtime(); mService = service; @@ -1431,7 +1435,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState /** * Shows the save UI, when session can be saved. * - * @return {@code true} if session is done, or {@code false} if it's pending user action. + * @return {@code true} if session is done and could be removed, or {@code false} if it's + * pending user action or the service asked to keep it alive (for multi-screens workflow). */ @GuardedBy("mLock") public boolean showSaveLocked() { @@ -1451,12 +1456,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * - autofillValue of at least one id (required or optional) has changed. * - there is no Dataset in the last FillResponse whose values of all dataset fields matches * the current values of all fields in the screen. + * - server didn't ask to keep session alive */ if (saveInfo == null) { if (sVerbose) Slog.v(TAG, "showSaveLocked(): no saveInfo from service"); return true; } + if ((saveInfo.getFlags() & SaveInfo.FLAG_DELAY_SAVE) != 0) { + // TODO(b/112051762): log metrics + if (sDebug) Slog.v(TAG, "showSaveLocked(): service asked to delay save"); + return false; + } + final ArrayMap<AutofillId, InternalSanitizer> sanitizers = createSanitizers(saveInfo); // Cache used to make sure changed fields do not belong to a dataset. @@ -1769,35 +1781,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } /** - * Calls service when user requested save. + * Update the {@link AutofillValue values} of the {@link AssistStructure} before sending it to + * the service on save(). */ - @GuardedBy("mLock") - void callSaveLocked() { - if (mDestroyed) { - Slog.w(TAG, "Call to Session#callSaveLocked() rejected - session: " - + id + " destroyed"); - return; - } - - if (sVerbose) Slog.v(TAG, "callSaveLocked(): mViewStates=" + mViewStates); - - if (mContexts == null) { - Slog.w(TAG, "callSaveLocked(): no contexts"); - return; - } - + private void updateValuesForSaveLocked() { final ArrayMap<AutofillId, InternalSanitizer> sanitizers = createSanitizers(getSaveInfoLocked()); final int numContexts = mContexts.size(); - for (int contextNum = 0; contextNum < numContexts; contextNum++) { final FillContext context = mContexts.get(contextNum); final ViewNode[] nodes = context.findViewNodesByAutofillIds(getIdsOfAllViewStatesLocked()); - if (sVerbose) Slog.v(TAG, "callSaveLocked(): updating " + context); + if (sVerbose) Slog.v(TAG, "updateValuesForSaveLocked(): updating " + context); for (int viewStateNum = 0; viewStateNum < mViewStates.size(); viewStateNum++) { final ViewState viewState = mViewStates.valueAt(viewStateNum); @@ -1805,7 +1803,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final AutofillId id = viewState.id; final AutofillValue value = viewState.getCurrentValue(); if (value == null) { - if (sVerbose) Slog.v(TAG, "callSaveLocked(): skipping " + id); + if (sVerbose) Slog.v(TAG, "updateValuesForSaveLocked(): skipping " + id); continue; } final ViewNode node = nodes[viewStateNum]; @@ -1813,7 +1811,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState Slog.w(TAG, "callSaveLocked(): did not find node with id " + id); continue; } - if (sVerbose) Slog.v(TAG, "callSaveLocked(): updating " + id + " to " + value); + if (sVerbose) { + Slog.v(TAG, "updateValuesForSaveLocked(): updating " + id + " to " + value); + } AutofillValue sanitizedValue = viewState.getSanitizedValue(); @@ -1824,7 +1824,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (sanitizedValue != null) { node.updateAutofillValue(sanitizedValue); } else if (sDebug) { - Slog.d(TAG, "Not updating field " + id + " because it failed sanitization"); + Slog.d(TAG, "updateValuesForSaveLocked(): not updating field " + id + + " because it failed sanitization"); } } @@ -1832,20 +1833,74 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState context.getStructure().sanitizeForParceling(false); if (sVerbose) { - Slog.v(TAG, "Dumping structure of " + context + " before calling service.save()"); + Slog.v(TAG, "updateValuesForSaveLocked(): dumping structure of " + context + + " before calling service.save()"); context.getStructure().dump(false); } } + } + + /** + * Calls service when user requested save. + */ + @GuardedBy("mLock") + void callSaveLocked() { + if (mDestroyed) { + Slog.w(TAG, "Call to Session#callSaveLocked() rejected - session: " + + id + " destroyed"); + return; + } + + if (sVerbose) Slog.v(TAG, "callSaveLocked(): mViewStates=" + mViewStates); + + if (mContexts == null) { + Slog.w(TAG, "callSaveLocked(): no contexts"); + return; + } + + updateValuesForSaveLocked(); // Remove pending fill requests as the session is finished. cancelCurrentRequestLocked(); - // Dispatch a snapshot of the current contexts list since it may change - // until the dispatch happens. The items in the list don't need to be cloned - // since we don't hold on them anywhere else. The client state is not touched - // by us, so no need to copy. - final SaveRequest saveRequest = new SaveRequest(new ArrayList<>(mContexts), mClientState, - mSelectedDatasetIds); + // Merge the previous sessions that the service asked to be kept alive + final ArrayList<Session> previousSessions = mService.getPreviousSessionsLocked(this); + final ArrayList<FillContext> contexts; + final Bundle clientState; + if (previousSessions != null) { + if (sDebug) { + Slog.d(TAG, "callSaveLocked(): Merging the content of " + previousSessions.size() + + " sessions for task " + taskId); + } + contexts = new ArrayList<>(); + for (int i = 0; i < previousSessions.size(); i++) { + final Session previousSession = previousSessions.get(i); + final ArrayList<FillContext> previousContexts = previousSession.mContexts; + if (previousContexts == null) { + Slog.w(TAG, "callSaveLocked(): Not merging null contexts from " + + previousSession.id); + continue; + } + previousSession.updateValuesForSaveLocked(); + if (sVerbose) { + Slog.v(TAG, "callSaveLocked(): adding " + previousContexts.size() + + " context from previous session #" + previousSession.id); + } + contexts.addAll(previousContexts); + } + contexts.addAll(mContexts); + // TODO(b/112051762): decided what to do with client state / add CTS test + clientState = mClientState; + } else { + // Dispatch a snapshot of the current contexts list since it may change + // until the dispatch happens. The items in the list don't need to be cloned + // since we don't hold on them anywhere else. The client state is not touched + // by us, so no need to copy. + contexts = new ArrayList<>(mContexts); + clientState = mClientState; + } + + final SaveRequest saveRequest = new SaveRequest(contexts, clientState, mSelectedDatasetIds); mRemoteFillService.onSaveRequest(saveRequest); } @@ -2510,6 +2565,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final String prefix2 = prefix + " "; pw.print(prefix); pw.print("id: "); pw.println(id); pw.print(prefix); pw.print("uid: "); pw.println(uid); + pw.print(prefix); pw.print("taskId: "); pw.println(taskId); pw.print(prefix); pw.print("flags: "); pw.println(mFlags); pw.print(prefix); pw.print("mComponentName: "); pw.println(mComponentName); pw.print(prefix); pw.print("mActivityToken: "); pw.println(mActivityToken); diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS index 3ca3a96fcd25..4fa0c07dcef5 100644 --- a/services/core/java/com/android/server/OWNERS +++ b/services/core/java/com/android/server/OWNERS @@ -1,15 +1,21 @@ # Connectivity / Networking +per-file ConnectivityService.java=codewiz@google.com per-file ConnectivityService.java=ek@google.com per-file ConnectivityService.java=jchalard@google.com per-file ConnectivityService.java=lorenzo@google.com +per-file ConnectivityService.java=reminv@google.com per-file ConnectivityService.java=satk@google.com +per-file NetworkManagementService.java=codewiz@google.com per-file NetworkManagementService.java=ek@google.com per-file NetworkManagementService.java=jchalard@google.com per-file NetworkManagementService.java=lorenzo@google.com +per-file NetworkManagementService.java=reminv@google.com per-file NetworkManagementService.java=satk@google.com +per-file NsdService.java=codewiz@google.com per-file NsdService.java=ek@google.com per-file NsdService.java=jchalard@google.com per-file NsdService.java=lorenzo@google.com +per-file NsdService.java=reminv@google.com per-file NsdService.java=satk@google.com # Vibrator diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 6409bb3fa879..42157cc562b9 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -79,6 +79,7 @@ import android.os.Process; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.ServiceSpecificException; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; @@ -2380,6 +2381,9 @@ class StorageManagerService extends IStorageManager.Stub } }, DateUtils.SECOND_IN_MILLIS); return 0; + } catch (ServiceSpecificException e) { + Slog.e(TAG, "fdeCheckPassword failed", e); + return e.errorCode; } catch (Exception e) { Slog.wtf(TAG, e); return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN; diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 95e55182f823..ae3946a40521 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -66,6 +66,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.LinkedList; +import java.util.List; import java.util.Date; public class VibratorService extends IVibratorService.Stub @@ -158,6 +159,7 @@ public class VibratorService extends IVibratorService.Stub public final int usageHint; public final int uid; public final String opPkg; + public final String reason; // The actual effect to be played. public VibrationEffect effect; @@ -167,7 +169,7 @@ public class VibratorService extends IVibratorService.Stub public VibrationEffect originalEffect; private Vibration(IBinder token, VibrationEffect effect, - int usageHint, int uid, String opPkg) { + int usageHint, int uid, String opPkg, String reason) { this.token = token; this.effect = effect; this.startTime = SystemClock.elapsedRealtime(); @@ -175,6 +177,7 @@ public class VibratorService extends IVibratorService.Stub this.usageHint = usageHint; this.uid = uid; this.opPkg = opPkg; + this.reason = reason; } public void binderDied() { @@ -233,7 +236,7 @@ public class VibratorService extends IVibratorService.Stub public VibrationInfo toInfo() { return new VibrationInfo( - startTimeDebug, effect, originalEffect, usageHint, uid, opPkg); + startTimeDebug, effect, originalEffect, usageHint, uid, opPkg, reason); } } @@ -244,15 +247,18 @@ public class VibratorService extends IVibratorService.Stub private final int mUsageHint; private final int mUid; private final String mOpPkg; + private final String mReason; public VibrationInfo(long startTimeDebug, VibrationEffect effect, - VibrationEffect originalEffect, int usageHint, int uid, String opPkg) { + VibrationEffect originalEffect, int usageHint, int uid, + String opPkg, String reason) { mStartTimeDebug = startTimeDebug; mEffect = effect; mOriginalEffect = originalEffect; mUsageHint = usageHint; mUid = uid; mOpPkg = opPkg; + mReason = reason; } @Override @@ -270,6 +276,8 @@ public class VibratorService extends IVibratorService.Stub .append(mUid) .append(", opPkg: ") .append(mOpPkg) + .append(", reason: ") + .append(mReason) .toString(); } } @@ -482,9 +490,9 @@ public class VibratorService extends IVibratorService.Stub } @Override // Binder call - public void vibrate(int uid, String opPkg, VibrationEffect effect, int usageHint, + public void vibrate(int uid, String opPkg, VibrationEffect effect, int usageHint, String reason, IBinder token) { - Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate"); + Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "vibrate, reason = " + reason); try { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED) { @@ -531,10 +539,11 @@ public class VibratorService extends IVibratorService.Stub return; } - Vibration vib = new Vibration(token, effect, usageHint, uid, opPkg); + Vibration vib = new Vibration(token, effect, usageHint, uid, opPkg, reason); linkVibration(vib); long ident = Binder.clearCallingIdentity(); try { + doCancelVibrateLocked(); startVibrationLocked(vib); addToPreviousVibrationsLocked(vib); @@ -1001,8 +1010,8 @@ public class VibratorService extends IVibratorService.Stub Slog.w(TAG, "Failed to play prebaked effect, no fallback"); return 0; } - Vibration fallbackVib = - new Vibration(vib.token, effect, vib.usageHint, vib.uid, vib.opPkg); + Vibration fallbackVib = new Vibration(vib.token, effect, vib.usageHint, vib.uid, + vib.opPkg, vib.reason + " (fallback)"); final int intensity = getCurrentIntensityLocked(fallbackVib); linkVibration(fallbackVib); applyVibrationIntensityScalingLocked(fallbackVib, intensity); @@ -1292,7 +1301,7 @@ public class VibratorService extends IVibratorService.Stub VibrationEffect effect = VibrationEffect.createOneShot(duration, VibrationEffect.DEFAULT_AMPLITUDE); vibrate(Binder.getCallingUid(), description, effect, AudioAttributes.USAGE_UNKNOWN, - mToken); + "Shell Command", mToken); return 0; } finally { Trace.traceEnd(Trace.TRACE_TAG_VIBRATOR); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a6600405a633..65f315413c2e 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -56,7 +56,6 @@ import static android.os.Process.PROC_CHAR; import static android.os.Process.PROC_OUT_LONG; import static android.os.Process.PROC_PARENS; import static android.os.Process.PROC_SPACE_TERM; -import static android.os.Process.ProcessStartResult; import static android.os.Process.ROOT_UID; import static android.os.Process.SCHED_FIFO; import static android.os.Process.SCHED_OTHER; @@ -91,9 +90,7 @@ import static android.provider.Settings.Global.DEBUG_APP; import static android.provider.Settings.Global.NETWORK_ACCESS_TIMEOUT_MS; import static android.provider.Settings.Global.WAIT_FOR_DEBUGGER; import static android.text.format.DateUtils.DAY_IN_MILLIS; -import static com.android.internal.util.XmlUtils.readBooleanAttribute; -import static com.android.internal.util.XmlUtils.readIntAttribute; -import static com.android.internal.util.XmlUtils.readLongAttribute; + import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ANR; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK; @@ -254,6 +251,7 @@ import android.os.ParcelFileDescriptor; import android.os.PowerManager.ServiceType; import android.os.PowerManagerInternal; import android.os.Process; +import android.os.Process.ProcessStartResult; import android.os.RemoteCallback; import android.os.RemoteCallbackList; import android.os.RemoteException; @@ -298,9 +296,6 @@ import android.view.View; import android.view.WindowManager; import android.view.autofill.AutofillManagerInternal; -import com.android.server.uri.GrantUri; -import com.android.server.uri.UriGrantsManagerInternal; - import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; @@ -352,11 +347,17 @@ import com.android.server.job.JobSchedulerInternal; import com.android.server.pm.Installer; import com.android.server.pm.Installer.InstallerException; import com.android.server.pm.dex.DexManager; +import com.android.server.uri.GrantUri; +import com.android.server.uri.UriGrantsManagerInternal; import com.android.server.utils.PriorityDump; import com.android.server.vr.VrManagerInternal; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerService; +import dalvik.system.VMRuntime; + +import libcore.util.EmptyArray; + import java.io.BufferedReader; import java.io.File; import java.io.FileDescriptor; @@ -390,9 +391,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.function.BiFunction; -import dalvik.system.VMRuntime; -import libcore.util.EmptyArray; - public class ActivityManagerService extends IActivityManager.Stub implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback { @@ -21105,6 +21103,13 @@ public class ActivityManagerService extends IActivityManager.Stub ActivityManagerService.this.scheduleAppGcsLocked(); } } + + @Override + public int getTaskIdForActivity(IBinder token, boolean onlyRoot) { + synchronized (ActivityManagerService.this) { + return ActivityManagerService.this.getTaskForActivity(token, onlyRoot); + } + } } /** diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index c7e103c7e43f..8caa70283acf 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -2580,12 +2580,12 @@ public class AudioService extends IAudioService.Stub toastText = com.android.internal.R.string.volume_dialog_ringer_guidance_vibrate; break; } - maybeVibrate(effect); + maybeVibrate(effect, reason); setRingerModeInternal(ringerMode, reason); Toast.makeText(mContext, toastText, Toast.LENGTH_SHORT).show(); } - private boolean maybeVibrate(VibrationEffect effect) { + private boolean maybeVibrate(VibrationEffect effect, String reason) { if (!mHasVibrator) { return false; } @@ -2598,8 +2598,8 @@ public class AudioService extends IAudioService.Stub if (effect == null) { return false; } - mVibrator.vibrate( - Binder.getCallingUid(), mContext.getOpPackageName(), effect, VIBRATION_ATTRIBUTES); + mVibrator.vibrate(Binder.getCallingUid(), mContext.getOpPackageName(), effect, + reason, VIBRATION_ATTRIBUTES); return true; } diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java index 59beef25bbdd..843ba2e23224 100644 --- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java +++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java @@ -261,7 +261,7 @@ public class NetworkMonitor extends StateMachine { private final WifiManager mWifiManager; private final NetworkRequest mDefaultRequest; private final IpConnectivityLog mMetricsLog; - private final NetworkMonitorSettings mSettings; + private final Dependencies mDependencies; // Configuration values for captive portal detection probes. private final String mCaptivePortalUserAgent; @@ -301,18 +301,19 @@ public class NetworkMonitor extends StateMachine { // This variable is set before transitioning to the mCaptivePortalState. private CaptivePortalProbeResult mLastPortalProbeResult = CaptivePortalProbeResult.FAILED; + // Random generator to select fallback URL index + private final Random mRandom; private int mNextFallbackUrlIndex = 0; public NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo, NetworkRequest defaultRequest) { this(context, handler, networkAgentInfo, defaultRequest, new IpConnectivityLog(), - NetworkMonitorSettings.DEFAULT); + Dependencies.DEFAULT); } @VisibleForTesting protected NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo, - NetworkRequest defaultRequest, IpConnectivityLog logger, - NetworkMonitorSettings settings) { + NetworkRequest defaultRequest, IpConnectivityLog logger, Dependencies deps) { // Add suffix indicating which NetworkMonitor we're talking about. super(TAG + networkAgentInfo.name()); @@ -323,9 +324,9 @@ public class NetworkMonitor extends StateMachine { mContext = context; mMetricsLog = logger; mConnectivityServiceHandler = handler; - mSettings = settings; + mDependencies = deps; mNetworkAgentInfo = networkAgentInfo; - mNetwork = new OneAddressPerFamilyNetwork(networkAgentInfo.network()); + mNetwork = deps.getNetwork(networkAgentInfo); mNetId = mNetwork.netId; mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); @@ -343,9 +344,10 @@ public class NetworkMonitor extends StateMachine { mUseHttps = getUseHttpsValidation(); mCaptivePortalUserAgent = getCaptivePortalUserAgent(); mCaptivePortalHttpsUrl = makeURL(getCaptivePortalServerHttpsUrl()); - mCaptivePortalHttpUrl = makeURL(getCaptivePortalServerHttpUrl(settings, context)); + mCaptivePortalHttpUrl = makeURL(getCaptivePortalServerHttpUrl(deps, context)); mCaptivePortalFallbackUrls = makeCaptivePortalFallbackUrls(); mCaptivePortalFallbackSpecs = makeCaptivePortalFallbackProbeSpecs(); + mRandom = deps.getRandom(); start(); } @@ -883,40 +885,38 @@ public class NetworkMonitor extends StateMachine { public boolean getIsCaptivePortalCheckEnabled() { String symbol = Settings.Global.CAPTIVE_PORTAL_MODE; int defaultValue = Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT; - int mode = mSettings.getSetting(mContext, symbol, defaultValue); + int mode = mDependencies.getSetting(mContext, symbol, defaultValue); return mode != Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE; } public boolean getUseHttpsValidation() { - return mSettings.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1; + return mDependencies.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1; } public boolean getWifiScansAlwaysAvailableDisabled() { - return mSettings.getSetting(mContext, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0; + return mDependencies.getSetting(mContext, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0; } private String getCaptivePortalServerHttpsUrl() { - return mSettings.getSetting(mContext, + return mDependencies.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_HTTPS_URL, DEFAULT_HTTPS_URL); } // Static for direct access by ConnectivityService public static String getCaptivePortalServerHttpUrl(Context context) { - return getCaptivePortalServerHttpUrl(NetworkMonitorSettings.DEFAULT, context); + return getCaptivePortalServerHttpUrl(Dependencies.DEFAULT, context); } - public static String getCaptivePortalServerHttpUrl( - NetworkMonitorSettings settings, Context context) { - return settings.getSetting( - context, Settings.Global.CAPTIVE_PORTAL_HTTP_URL, DEFAULT_HTTP_URL); + public static String getCaptivePortalServerHttpUrl(Dependencies deps, Context context) { + return deps.getSetting(context, Settings.Global.CAPTIVE_PORTAL_HTTP_URL, DEFAULT_HTTP_URL); } private URL[] makeCaptivePortalFallbackUrls() { try { String separator = ","; - String firstUrl = mSettings.getSetting(mContext, + String firstUrl = mDependencies.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_FALLBACK_URL, DEFAULT_FALLBACK_URL); - String joinedUrls = firstUrl + separator + mSettings.getSetting(mContext, + String joinedUrls = firstUrl + separator + mDependencies.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS, DEFAULT_OTHER_FALLBACK_URLS); List<URL> urls = new ArrayList<>(); @@ -940,7 +940,7 @@ public class NetworkMonitor extends StateMachine { private CaptivePortalProbeSpec[] makeCaptivePortalFallbackProbeSpecs() { try { - final String settingsValue = mSettings.getSetting( + final String settingsValue = mDependencies.getSetting( mContext, Settings.Global.CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS, null); // Probe specs only used if configured in settings if (TextUtils.isEmpty(settingsValue)) { @@ -956,7 +956,7 @@ public class NetworkMonitor extends StateMachine { } private String getCaptivePortalUserAgent() { - return mSettings.getSetting(mContext, + return mDependencies.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT); } @@ -965,7 +965,7 @@ public class NetworkMonitor extends StateMachine { return null; } int idx = Math.abs(mNextFallbackUrlIndex) % mCaptivePortalFallbackUrls.length; - mNextFallbackUrlIndex += new Random().nextInt(); // randomely change url without memory. + mNextFallbackUrlIndex += mRandom.nextInt(); // randomly change url without memory. return mCaptivePortalFallbackUrls[idx]; } @@ -974,7 +974,7 @@ public class NetworkMonitor extends StateMachine { return null; } // Randomly change spec without memory. Also randomize the first attempt. - final int idx = Math.abs(new Random().nextInt()) % mCaptivePortalFallbackSpecs.length; + final int idx = Math.abs(mRandom.nextInt()) % mCaptivePortalFallbackSpecs.length; return mCaptivePortalFallbackSpecs[idx]; } @@ -1392,15 +1392,15 @@ public class NetworkMonitor extends StateMachine { } @VisibleForTesting - public interface NetworkMonitorSettings { - int getSetting(Context context, String symbol, int defaultValue); - String getSetting(Context context, String symbol, String defaultValue); + public static class Dependencies { + public Network getNetwork(NetworkAgentInfo networkAgentInfo) { + return new OneAddressPerFamilyNetwork(networkAgentInfo.network()); + } - static NetworkMonitorSettings DEFAULT = new DefaultNetworkMonitorSettings(); - } + public Random getRandom() { + return new Random(); + } - @VisibleForTesting - public static class DefaultNetworkMonitorSettings implements NetworkMonitorSettings { public int getSetting(Context context, String symbol, int defaultValue) { return Settings.Global.getInt(context.getContentResolver(), symbol, defaultValue); } @@ -1409,5 +1409,7 @@ public class NetworkMonitor extends StateMachine { final String value = Settings.Global.getString(context.getContentResolver(), symbol); return value != null ? value : defaultValue; } + + public static final Dependencies DEFAULT = new Dependencies(); } } diff --git a/services/core/java/com/android/server/connectivity/OWNERS b/services/core/java/com/android/server/connectivity/OWNERS index ce50558bf4f6..7311eee32a4c 100644 --- a/services/core/java/com/android/server/connectivity/OWNERS +++ b/services/core/java/com/android/server/connectivity/OWNERS @@ -1,6 +1,8 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com lorenzo@google.com +reminv@google.com satk@google.com diff --git a/services/core/java/com/android/server/net/OWNERS b/services/core/java/com/android/server/net/OWNERS index 64dc98ed82f0..2e91f998076d 100644 --- a/services/core/java/com/android/server/net/OWNERS +++ b/services/core/java/com/android/server/net/OWNERS @@ -1,9 +1,11 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com jsharkey@android.com lorenzo@google.com +reminv@google.com satk@google.com silberst@google.com sudheersai@google.com diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index de53427a93b8..3f57faf58e8c 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -5033,11 +5033,11 @@ public class NotificationManagerService extends SystemService { Thread.sleep(waitMs); } catch (InterruptedException e) { } mVibrator.vibrate(record.sbn.getUid(), record.sbn.getOpPkg(), - effect, record.getAudioAttributes()); + effect, "Notification (delayed)", record.getAudioAttributes()); }).start(); } else { mVibrator.vibrate(record.sbn.getUid(), record.sbn.getOpPkg(), - effect, record.getAudioAttributes()); + effect, "Notification", record.getAudioAttributes()); } return true; } finally{ diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index bfa45e1fd16e..3b67663697ec 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -8912,10 +8912,10 @@ public class PackageManagerService extends IPackageManager.Stub + " better than this " + pkg.getLongVersionCode()); } - // Verify certificates against what was last scanned. If it is an updated priv app, we will - // force re-collecting certificate. - final boolean forceCollect = PackageManagerServiceUtils.isApkVerificationForced( - disabledPkgSetting); + // Verify certificates against what was last scanned. If there was an upgrade or this is an + // updated priv app, we will force re-collecting certificate. + final boolean forceCollect = mIsUpgrade || + PackageManagerServiceUtils.isApkVerificationForced(disabledPkgSetting); // Full APK verification can be skipped during certificate collection, only if the file is // in verified partition, or can be verified on access (when apk verity is enabled). In both // cases, only data in Signing Block is verified instead of the whole file. @@ -21220,7 +21220,8 @@ public class PackageManagerService extends IPackageManager.Stub } @Override - public int getComponentEnabledSetting(ComponentName component, int userId) { + public int getComponentEnabledSetting(@NonNull ComponentName component, int userId) { + if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT; if (!sUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED; int callingUid = Binder.getCallingUid(); mPermissionManager.enforceCrossUserPermission(callingUid, userId, @@ -22063,9 +22064,6 @@ public class PackageManagerService extends IPackageManager.Stub //TODO: b/111402650 private void disableSkuSpecificApps() { - if (!mIsUpgrade && !mFirstBoot) { - return; - } String apkList[] = mContext.getResources().getStringArray( R.array.config_disableApksUnlessMatchedSku_apk_list); String skuArray[] = mContext.getResources().getStringArray( @@ -22079,7 +22077,9 @@ public class PackageManagerService extends IPackageManager.Stub } for (String packageName : apkList) { setSystemAppHiddenUntilInstalled(packageName, true); - setSystemAppInstallState(packageName, false, ActivityManager.getCurrentUser()); + for (UserInfo user : sUserManager.getUsers(false)) { + setSystemAppInstallState(packageName, false, user.id); + } } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 966684a65ec6..ed1dc58701bd 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -990,7 +990,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void onWakeUp() { synchronized (mLock) { if (shouldEnableWakeGestureLp()) { - performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false, + "Wake Up"); wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromWakeGesture, "android.policy:GESTURE"); } @@ -1427,19 +1428,22 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; case LONG_PRESS_POWER_GLOBAL_ACTIONS: mPowerKeyHandled = true; - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Global Actions"); showGlobalActionsInternal(); break; case LONG_PRESS_POWER_SHUT_OFF: case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM: mPowerKeyHandled = true; - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Shut Off"); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); mWindowManagerFuncs.shutdown(behavior == LONG_PRESS_POWER_SHUT_OFF); break; case LONG_PRESS_POWER_GO_TO_VOICE_ASSIST: mPowerKeyHandled = true; - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Go To Voice Assist"); final boolean keyguardActive = mKeyguardDelegate == null ? false : mKeyguardDelegate.isShowing(); @@ -1461,7 +1465,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; case VERY_LONG_PRESS_POWER_GLOBAL_ACTIONS: mPowerKeyHandled = true; - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "Power - Very Long Press - Show Global Actions"); showGlobalActionsInternal(); break; } @@ -1616,7 +1621,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void run() { mEndCallKeyHandled = true; - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "End Call - Long Press - Show Global Actions"); showGlobalActionsInternal(); } }; @@ -1743,7 +1749,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { return; } mHomeConsumed = true; - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "Home - Long Press"); switch (mLongPressOnHomeBehavior) { case LONG_PRESS_HOME_ALL_APPS: launchAllAppsAction(); @@ -3923,7 +3930,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void launchAssistLongPressAction() { - performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false, + "Assist - Long Press"); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_ASSIST); // launch the search activity @@ -6023,7 +6031,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } if (useHapticFeedback) { - performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false); + performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false, + "Virtual Key - Press"); } if (isWakeKey) { @@ -6856,7 +6865,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void setSafeMode(boolean safeMode) { mSafeMode = safeMode; if (safeMode) { - performHapticFeedbackLw(null, HapticFeedbackConstants.SAFE_MODE_ENABLED, true); + performHapticFeedbackLw(null, HapticFeedbackConstants.SAFE_MODE_ENABLED, true, + "Safe Mode Enabled"); } } @@ -7318,7 +7328,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } @Override - public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) { + public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always, + String reason) { if (!mVibrator.hasVibrator()) { return false; } @@ -7342,7 +7353,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { owningUid = android.os.Process.myUid(); owningPackage = mContext.getOpPackageName(); } - mVibrator.vibrate(owningUid, owningPackage, effect, VIBRATION_ATTRIBUTES); + mVibrator.vibrate(owningUid, owningPackage, effect, reason, VIBRATION_ATTRIBUTES); return true; } diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index cc3921776f56..3ae5cedec773 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -1468,7 +1468,8 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { /** * Call from application to perform haptic feedback on its window. */ - public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always); + public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always, + String reason); /** * Called when we have started keeping the screen on because a window diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index 1b5ffda946d2..a731e9b01f56 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -1062,10 +1062,17 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { } } - // If we're extending a persistable grant, then we always need to create - // the grant data structure so that take/release APIs work + // Figure out the value returned when access is allowed + final int allowedResult; if ((modeFlags & Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION) != 0) { - return targetUid; + // If we're extending a persistable grant, then we need to return + // "targetUid" so that we always create a grant data structure to + // support take/release APIs + allowedResult = targetUid; + } else { + // Otherwise, we can return "-1" to indicate that no grant data + // structures need to be created + allowedResult = -1; } if (targetUid >= 0) { @@ -1074,7 +1081,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { // No need to grant the target this permission. if (DEBUG) Slog.v(TAG, "Target " + targetPkg + " already has full permission to " + grantUri); - return -1; + return allowedResult; } } else { // First... there is no target package, so can anyone access it? @@ -1109,7 +1116,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { } } if (allowed) { - return -1; + return allowedResult; } } diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java index 26ddf2c4be81..5cf5e0d74e23 100644 --- a/services/core/java/com/android/server/wm/Session.java +++ b/services/core/java/com/android/server/wm/Session.java @@ -287,7 +287,7 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient { try { return mService.mPolicy.performHapticFeedbackLw( mService.windowForClientLocked(this, window, true), - effectId, always); + effectId, always, null); } finally { Binder.restoreCallingIdentity(ident); } diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index 9e1191d2c1ef..becde7311607 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -59,17 +59,6 @@ cc_library_static { "frameworks/native/services", "system/gatekeeper/include", ], - - product_variables: { - arc: { - cflags: [ - "-DUSE_ARC", - ], - srcs: [ - "com_android_server_ArcVideoService.cpp", - ], - } - } } cc_defaults { @@ -144,7 +133,9 @@ cc_defaults { shared_libs: [ "libarcbridge", "libarcbridgeservice", - "libarcvideobridge", + "libarctimer", + "libbase", + "libcap", "libchrome", "libmojo", ], diff --git a/services/core/jni/com_android_server_ArcVideoService.cpp b/services/core/jni/com_android_server_ArcVideoService.cpp deleted file mode 100644 index f93cd905a584..000000000000 --- a/services/core/jni/com_android_server_ArcVideoService.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2016, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -//#define LOG_NDEBUG 0 -#define LOG_TAG "ArcVideoService" - -#include <binder/IPCThreadState.h> -#include <binder/IServiceManager.h> -#include <media/arcvideobridge/IArcVideoBridge.h> -#include <utils/Log.h> - -#include <base/bind.h> -#include <base/bind_helpers.h> -#include <mojo/edk/embedder/embedder.h> -#include <mojo/public/cpp/bindings/binding.h> - -#include <arc/ArcBridgeSupport.h> -#include <arc/ArcService.h> -#include <arc/Future.h> -#include <arc/IArcBridgeService.h> -#include <arc/MojoProcessSupport.h> -#include <components/arc/common/video.mojom.h> - -namespace { - -// [MinVersion] of OnVideoInstanceReady method in arc_bridge.mojom. -constexpr int kMinimumArcBridgeHostVersion = 6; - -void onCaptureResult(arc::Future<arc::MojoBootstrapResult>* future, uint32_t version, - mojo::ScopedHandle handle, const std::string& token) { - mojo::edk::ScopedPlatformHandle scoped_platform_handle; - MojoResult result = - mojo::edk::PassWrappedPlatformHandle(handle.release().value(), &scoped_platform_handle); - if (result != MOJO_RESULT_OK) { - ALOGE("Received invalid file descriptor."); - future->set(arc::MojoBootstrapResult()); - return; - } - - base::ScopedFD fd(scoped_platform_handle.release().handle); - future->set(arc::MojoBootstrapResult(std::move(fd), token, version)); -} - -} // namespace - -namespace arc { - -class VideoService : public mojom::VideoInstance, - public ArcService, - public android::BnArcVideoBridge { -public: - explicit VideoService(MojoProcessSupport* mojoProcessSupport) - : mMojoProcessSupport(mojoProcessSupport), mBinding(this) { - mMojoProcessSupport->arc_bridge_support().requestArcBridgeProxyAsync( - this, kMinimumArcBridgeHostVersion); - } - - ~VideoService() override { mMojoProcessSupport->disconnect(&mBinding, &mHostPtr); } - - // VideoInstance overrides: - void InitDeprecated(mojom::VideoHostPtr hostPtr) override { - Init(std::move(hostPtr), base::Bind(&base::DoNothing)); - } - - void Init(mojom::VideoHostPtr hostPtr, const InitCallback& callback) override { - ALOGV("Init"); - mHostPtr = std::move(hostPtr); - // A method must be called while we are still in a Mojo thread so the - // proxy can perform lazy initialization and be able to be called from - // non-Mojo threads later. - // This also caches the version number so it can be obtained by calling - // .version(). - mHostPtr.QueryVersion(base::Bind( - [](const InitCallback& callback, uint32_t version) { - ALOGI("VideoService ready (version=%d)", version); - callback.Run(); - }, - callback)); - ALOGV("Init done"); - } - - // ArcService overrides: - void ready(mojom::ArcBridgeHostPtr* bridgeHost) override { - (*bridgeHost)->OnVideoInstanceReady(mBinding.CreateInterfacePtrAndBind()); - } - - void versionMismatch(uint32_t version) override { - ALOGE("ArcBridgeHost version %d, does not support video (version %d)\n", version, - kMinimumArcBridgeHostVersion); - } - - // BnArcVideoBridge overrides: - MojoBootstrapResult bootstrapVideoAcceleratorFactory() override { - ALOGV("VideoService::bootstrapVideoAcceleratorFactory"); - - Future<MojoBootstrapResult> future; - mMojoProcessSupport->mojo_thread().getTaskRunner()->PostTask( - FROM_HERE, base::Bind(&VideoService::bootstrapVideoAcceleratorFactoryOnMojoThread, - base::Unretained(this), &future)); - return future.get(); - } - - int32_t hostVersion() override { - ALOGV("VideoService::hostVersion"); - return mHostPtr.version(); - } - -private: - void bootstrapVideoAcceleratorFactoryOnMojoThread(Future<MojoBootstrapResult>* future) { - if (!mHostPtr) { - ALOGE("mHostPtr is not ready yet"); - future->set(MojoBootstrapResult()); - return; - } - mHostPtr->OnBootstrapVideoAcceleratorFactory( - base::Bind(&onCaptureResult, base::Unretained(future), mHostPtr.version())); - } - - // Outlives VideoService. - MojoProcessSupport* const mMojoProcessSupport; - mojo::Binding<mojom::VideoInstance> mBinding; - mojom::VideoHostPtr mHostPtr; -}; - -} // namespace arc - -namespace android { - -int register_android_server_ArcVideoService() { - defaultServiceManager()->addService( - String16("android.os.IArcVideoBridge"), - new arc::VideoService(arc::MojoProcessSupport::getLeakyInstance())); - return 0; -} - -} // namespace android diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp index 0ebef37c1f2f..bb6e6840f3b4 100644 --- a/services/core/jni/onload.cpp +++ b/services/core/jni/onload.cpp @@ -54,9 +54,6 @@ int register_android_server_SyntheticPasswordManager(JNIEnv* env); int register_android_server_GraphicsStatsService(JNIEnv* env); int register_android_hardware_display_DisplayViewport(JNIEnv* env); int register_android_server_net_NetworkStatsService(JNIEnv* env); -#ifdef USE_ARC -int register_android_server_ArcVideoService(); -#endif }; using namespace android; @@ -104,8 +101,5 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) register_android_server_GraphicsStatsService(env); register_android_hardware_display_DisplayViewport(env); register_android_server_net_NetworkStatsService(env); -#ifdef USE_ARC - register_android_server_ArcVideoService(); -#endif return JNI_VERSION_1_4; } diff --git a/services/net/OWNERS b/services/net/OWNERS index ce50558bf4f6..7311eee32a4c 100644 --- a/services/net/OWNERS +++ b/services/net/OWNERS @@ -1,6 +1,8 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com lorenzo@google.com +reminv@google.com satk@google.com diff --git a/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java index 735e2845bb20..5fb89977f905 100644 --- a/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java +++ b/services/tests/servicestests/src/com/android/server/wm/TestWindowManagerPolicy.java @@ -417,7 +417,7 @@ class TestWindowManagerPolicy implements WindowManagerPolicy { @Override public boolean performHapticFeedbackLw(WindowState win, int effectId, - boolean always) { + boolean always, String reason) { return false; } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java index dbba2b287382..7abf49e2c1f9 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java @@ -364,22 +364,23 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { private void verifyNeverVibrate() { verify(mVibrator, never()).vibrate(anyInt(), anyString(), (VibrationEffect) anyObject(), - (AudioAttributes) anyObject()); + anyString(), (AudioAttributes) anyObject()); } private void verifyVibrate() { verify(mVibrator, times(1)).vibrate(anyInt(), anyString(), argThat(mVibrateOnceMatcher), - (AudioAttributes) anyObject()); + anyString(), (AudioAttributes) anyObject()); } private void verifyVibrateLooped() { verify(mVibrator, times(1)).vibrate(anyInt(), anyString(), argThat(mVibrateLoopMatcher), - (AudioAttributes) anyObject()); + anyString(), (AudioAttributes) anyObject()); } private void verifyDelayedVibrateLooped() { verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - argThat(mVibrateLoopMatcher), (AudioAttributes) anyObject()); + argThat(mVibrateLoopMatcher), anyString(), + (AudioAttributes) anyObject()); } private void verifyStopVibrate() { @@ -646,7 +647,8 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { VibrationEffect effect = VibrationEffect.createWaveform(r.getVibration(), -1); verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - eq(effect), (AudioAttributes) anyObject()); + eq(effect), anyString(), + (AudioAttributes) anyObject()); assertTrue(r.isInterruptive()); } @@ -680,7 +682,7 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { mService.buzzBeepBlinkLocked(r); verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - eq(FALLBACK_VIBRATION), (AudioAttributes) anyObject()); + eq(FALLBACK_VIBRATION), anyString(), (AudioAttributes) anyObject()); verify(mRingtonePlayer, never()).playAsync (anyObject(), anyObject(), anyBoolean(), anyObject()); assertTrue(r.isInterruptive()); diff --git a/services/usage/java/com/android/server/usage/AppStandbyController.java b/services/usage/java/com/android/server/usage/AppStandbyController.java index 9c62700a9118..77cb7496fed3 100644 --- a/services/usage/java/com/android/server/usage/AppStandbyController.java +++ b/services/usage/java/com/android/server/usage/AppStandbyController.java @@ -1452,6 +1452,23 @@ public class AppStandbyController { TimeUtils.formatDuration(mAppIdleParoleDurationMillis, pw); pw.println(); + pw.print(" mStrongUsageTimeoutMillis="); + TimeUtils.formatDuration(mStrongUsageTimeoutMillis, pw); + pw.println(); + pw.print(" mNotificationSeenTimeoutMillis="); + TimeUtils.formatDuration(mNotificationSeenTimeoutMillis, pw); + pw.println(); + pw.print(" mSyncAdapterTimeoutMillis="); + TimeUtils.formatDuration(mSyncAdapterTimeoutMillis, pw); + pw.println(); + pw.print(" mSystemInteractionTimeoutMillis="); + TimeUtils.formatDuration(mSystemInteractionTimeoutMillis, pw); + pw.println(); + + pw.print(" mPredictionTimeoutMillis="); + TimeUtils.formatDuration(mPredictionTimeoutMillis, pw); + pw.println(); + pw.print(" mExemptedSyncScheduledNonDozeTimeoutMillis="); TimeUtils.formatDuration(mExemptedSyncScheduledNonDozeTimeoutMillis, pw); pw.println(); @@ -1462,6 +1479,14 @@ public class AppStandbyController { TimeUtils.formatDuration(mExemptedSyncStartTimeoutMillis, pw); pw.println(); + pw.print(" mSystemUpdateUsageTimeoutMillis="); + TimeUtils.formatDuration(mSystemUpdateUsageTimeoutMillis, pw); + pw.println(); + + pw.print(" mStableChargingThresholdMillis="); + TimeUtils.formatDuration(mStableChargingThresholdMillis, pw); + pw.println(); + pw.println(); pw.print("mAppIdleEnabled="); pw.print(mAppIdleEnabled); pw.print(" mAppIdleTempParoled="); pw.print(mAppIdleTempParoled); @@ -1910,4 +1935,3 @@ public class AppStandbyController { } } } - diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 17e7c49f6289..8aa5bf659be2 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -301,7 +301,7 @@ public class SubscriptionManager { * <P>Type: TEXT (String)</P> * @hide */ - public static final String CARD_ID = "card_id"; + public static final String CARD_ID = "card_id"; /** * TelephonyProvider column name for the encoded {@link UiccAccessRule}s from @@ -1051,24 +1051,9 @@ public class SubscriptionManager { */ public int setIconTint(int tint, int subId) { if (VDBG) logd("[setIconTint]+ tint:" + tint + " subId:" + subId); - if (!isValidSubscriptionId(subId)) { - logd("[setIconTint]- fail"); - return -1; - } - - int result = 0; - - try { - ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); - if (iSub != null) { - result = iSub.setIconTint(tint, subId); - } - } catch (RemoteException ex) { - // ignore it - } - - return result; - + return setSubscriptionPropertyHelper(subId, "setIconTint", + (iSub)-> iSub.setIconTint(tint, subId) + ); } /** @@ -1096,24 +1081,9 @@ public class SubscriptionManager { logd("[setDisplayName]+ displayName:" + displayName + " subId:" + subId + " nameSource:" + nameSource); } - if (!isValidSubscriptionId(subId)) { - logd("[setDisplayName]- fail"); - return -1; - } - - int result = 0; - - try { - ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); - if (iSub != null) { - result = iSub.setDisplayNameUsingSrc(displayName, subId, nameSource); - } - } catch (RemoteException ex) { - // ignore it - } - - return result; - + return setSubscriptionPropertyHelper(subId, "setDisplayName", + (iSub)-> iSub.setDisplayNameUsingSrc(displayName, subId, nameSource) + ); } /** @@ -1124,24 +1094,13 @@ public class SubscriptionManager { * @hide */ public int setDisplayNumber(String number, int subId) { - if (number == null || !isValidSubscriptionId(subId)) { + if (number == null) { logd("[setDisplayNumber]- fail"); return -1; } - - int result = 0; - - try { - ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); - if (iSub != null) { - result = iSub.setDisplayNumber(number, subId); - } - } catch (RemoteException ex) { - // ignore it - } - - return result; - + return setSubscriptionPropertyHelper(subId, "setDisplayNumber", + (iSub)-> iSub.setDisplayNumber(number, subId) + ); } /** @@ -1153,23 +1112,9 @@ public class SubscriptionManager { */ public int setDataRoaming(int roaming, int subId) { if (VDBG) logd("[setDataRoaming]+ roaming:" + roaming + " subId:" + subId); - if (roaming < 0 || !isValidSubscriptionId(subId)) { - logd("[setDataRoaming]- fail"); - return -1; - } - - int result = 0; - - try { - ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); - if (iSub != null) { - result = iSub.setDataRoaming(roaming, subId); - } - } catch (RemoteException ex) { - // ignore it - } - - return result; + return setSubscriptionPropertyHelper(subId, "setDataRoaming", + (iSub)->iSub.setDataRoaming(roaming, subId) + ); } /** @@ -1994,4 +1939,29 @@ public class SubscriptionManager { } return false; } + + private interface CallISubMethodHelper { + int callMethod(ISub iSub) throws RemoteException; + } + + private int setSubscriptionPropertyHelper(int subId, String methodName, + CallISubMethodHelper helper) { + if (!isValidSubscriptionId(subId)) { + logd("[" + methodName + "]" + "- fail"); + return -1; + } + + int result = 0; + + try { + ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); + if (iSub != null) { + result = helper.callMethod(iSub); + } + } catch (RemoteException ex) { + // ignore it + } + + return result; + } } diff --git a/tests/net/OWNERS b/tests/net/OWNERS index ce50558bf4f6..7311eee32a4c 100644 --- a/tests/net/OWNERS +++ b/tests/net/OWNERS @@ -1,6 +1,8 @@ set noparent +codewiz@google.com ek@google.com jchalard@google.com lorenzo@google.com +reminv@google.com satk@google.com diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 142c88b2f67d..e3db7e8a1354 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -880,7 +880,7 @@ public class ConnectivityServiceTest { NetworkAgentInfo networkAgentInfo, NetworkRequest defaultRequest, IpConnectivityLog log) { super(context, handler, networkAgentInfo, defaultRequest, log, - NetworkMonitor.NetworkMonitorSettings.DEFAULT); + NetworkMonitor.Dependencies.DEFAULT); connectivityHandler = handler; } diff --git a/tests/net/java/com/android/server/connectivity/NetworkMonitorTest.java b/tests/net/java/com/android/server/connectivity/NetworkMonitorTest.java index 27a897d175a2..b01713006254 100644 --- a/tests/net/java/com/android/server/connectivity/NetworkMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/NetworkMonitorTest.java @@ -16,22 +16,35 @@ package com.android.server.connectivity; -import static org.junit.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; + +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.net.ConnectivityManager; +import android.net.LinkProperties; import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkInfo; import android.net.NetworkRequest; +import android.net.captiveportal.CaptivePortalProbeResult; import android.net.metrics.IpConnectivityLog; import android.net.wifi.WifiManager; import android.os.Handler; +import android.provider.Settings; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.telephony.TelephonyManager; +import android.util.ArrayMap; import org.junit.Before; import org.junit.Test; @@ -39,38 +52,273 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.InetAddress; +import java.net.URL; +import java.util.Random; + +import javax.net.ssl.SSLHandshakeException; + @RunWith(AndroidJUnit4.class) @SmallTest public class NetworkMonitorTest { + private static final String LOCATION_HEADER = "location"; - static final int TEST_ID = 60; // should be less than min netid 100 + private @Mock Context mContext; + private @Mock Handler mHandler; + private @Mock IpConnectivityLog mLogger; + private @Mock NetworkAgentInfo mAgent; + private @Mock NetworkInfo mNetworkInfo; + private @Mock NetworkRequest mRequest; + private @Mock TelephonyManager mTelephony; + private @Mock WifiManager mWifi; + private @Mock Network mNetwork; + private @Mock HttpURLConnection mHttpConnection; + private @Mock HttpURLConnection mHttpsConnection; + private @Mock HttpURLConnection mFallbackConnection; + private @Mock HttpURLConnection mOtherFallbackConnection; + private @Mock Random mRandom; + private @Mock NetworkMonitor.Dependencies mDependencies; - @Mock Context mContext; - @Mock Handler mHandler; - @Mock IpConnectivityLog mLogger; - @Mock NetworkAgentInfo mAgent; - @Mock NetworkMonitor.NetworkMonitorSettings mSettings; - @Mock NetworkRequest mRequest; - @Mock TelephonyManager mTelephony; - @Mock WifiManager mWifi; + private static final String TEST_HTTP_URL = "http://www.google.com/gen_204"; + private static final String TEST_HTTPS_URL = "https://www.google.com/gen_204"; + private static final String TEST_FALLBACK_URL = "http://fallback.google.com/gen_204"; + private static final String TEST_OTHER_FALLBACK_URL = "http://otherfallback.google.com/gen_204"; @Before - public void setUp() { + public void setUp() throws IOException { MockitoAnnotations.initMocks(this); + mAgent.linkProperties = new LinkProperties(); + mAgent.networkCapabilities = new NetworkCapabilities() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); + mAgent.networkInfo = mNetworkInfo; + + when(mAgent.network()).thenReturn(mNetwork); + when(mDependencies.getNetwork(any())).thenReturn(mNetwork); + when(mDependencies.getRandom()).thenReturn(mRandom); + when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_MODE), anyInt())) + .thenReturn(Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT); + when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_USE_HTTPS), + anyInt())).thenReturn(1); + when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_HTTP_URL), + anyString())).thenReturn(TEST_HTTP_URL); + when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_HTTPS_URL), + anyString())).thenReturn(TEST_HTTPS_URL); - when(mAgent.network()).thenReturn(new Network(TEST_ID)); when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephony); when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifi); + + when(mNetworkInfo.getType()).thenReturn(ConnectivityManager.TYPE_WIFI); + setFallbackUrl(TEST_FALLBACK_URL); + setOtherFallbackUrls(TEST_OTHER_FALLBACK_URL); + setFallbackSpecs(null); // Test with no fallback spec by default + when(mRandom.nextInt()).thenReturn(0); + + when(mNetwork.openConnection(any())).then((invocation) -> { + URL url = invocation.getArgument(0); + switch(url.toString()) { + case TEST_HTTP_URL: + return mHttpConnection; + case TEST_HTTPS_URL: + return mHttpsConnection; + case TEST_FALLBACK_URL: + return mFallbackConnection; + case TEST_OTHER_FALLBACK_URL: + return mOtherFallbackConnection; + default: + fail("URL not mocked: " + url.toString()); + return null; + } + }); + when(mHttpConnection.getRequestProperties()).thenReturn(new ArrayMap<>()); + when(mHttpsConnection.getRequestProperties()).thenReturn(new ArrayMap<>()); + when(mNetwork.getAllByName(any())).thenReturn(new InetAddress[] { + InetAddress.parseNumericAddress("192.168.0.0") + }); } NetworkMonitor makeMonitor() { - return new NetworkMonitor(mContext, mHandler, mAgent, mRequest, mLogger, mSettings); + return new NetworkMonitor( + mContext, mHandler, mAgent, mRequest, mLogger, mDependencies); + } + + @Test + public void testIsCaptivePortal_HttpProbeIsPortal() throws IOException { + setSslException(mHttpsConnection); + setPortal302(mHttpConnection); + + assertPortal(makeMonitor().isCaptivePortal()); + } + + @Test + public void testIsCaptivePortal_HttpsProbeIsNotPortal() throws IOException { + setStatus(mHttpsConnection, 204); + setStatus(mHttpConnection, 500); + + assertNotPortal(makeMonitor().isCaptivePortal()); + } + + @Test + public void testIsCaptivePortal_HttpsProbeFailedHttpSuccessNotUsed() throws IOException { + setSslException(mHttpsConnection); + // Even if HTTP returns a 204, do not use the result unless HTTPS succeeded + setStatus(mHttpConnection, 204); + setStatus(mFallbackConnection, 500); + + assertFailed(makeMonitor().isCaptivePortal()); + } + + @Test + public void testIsCaptivePortal_FallbackProbeIsPortal() throws IOException { + setSslException(mHttpsConnection); + setStatus(mHttpConnection, 500); + setPortal302(mFallbackConnection); + + assertPortal(makeMonitor().isCaptivePortal()); + } + + @Test + public void testIsCaptivePortal_FallbackProbeIsNotPortal() throws IOException { + setSslException(mHttpsConnection); + setStatus(mHttpConnection, 500); + setStatus(mFallbackConnection, 204); + + // Fallback probe did not see portal, HTTPS failed -> inconclusive + assertFailed(makeMonitor().isCaptivePortal()); + } + + @Test + public void testIsCaptivePortal_OtherFallbackProbeIsPortal() throws IOException { + // Set all fallback probes but one to invalid URLs to verify they are being skipped + setFallbackUrl(TEST_FALLBACK_URL); + setOtherFallbackUrls(TEST_FALLBACK_URL + "," + TEST_OTHER_FALLBACK_URL); + + setSslException(mHttpsConnection); + setStatus(mHttpConnection, 500); + setStatus(mFallbackConnection, 500); + setPortal302(mOtherFallbackConnection); + + // TEST_OTHER_FALLBACK_URL is third + when(mRandom.nextInt()).thenReturn(2); + + final NetworkMonitor monitor = makeMonitor(); + + // First check always uses the first fallback URL: inconclusive + assertFailed(monitor.isCaptivePortal()); + verify(mFallbackConnection, times(1)).getResponseCode(); + verify(mOtherFallbackConnection, never()).getResponseCode(); + + // Second check uses the URL chosen by Random + assertPortal(monitor.isCaptivePortal()); + verify(mOtherFallbackConnection, times(1)).getResponseCode(); + } + + @Test + public void testIsCaptivePortal_AllProbesFailed() throws IOException { + setSslException(mHttpsConnection); + setStatus(mHttpConnection, 500); + setStatus(mFallbackConnection, 404); + + assertFailed(makeMonitor().isCaptivePortal()); + verify(mFallbackConnection, times(1)).getResponseCode(); + verify(mOtherFallbackConnection, never()).getResponseCode(); + } + + @Test + public void testIsCaptivePortal_InvalidUrlSkipped() throws IOException { + setFallbackUrl("invalid"); + setOtherFallbackUrls("otherinvalid," + TEST_OTHER_FALLBACK_URL + ",yetanotherinvalid"); + + setSslException(mHttpsConnection); + setStatus(mHttpConnection, 500); + setPortal302(mOtherFallbackConnection); + + assertPortal(makeMonitor().isCaptivePortal()); + verify(mOtherFallbackConnection, times(1)).getResponseCode(); + verify(mFallbackConnection, never()).getResponseCode(); + } + + private void setupFallbackSpec() throws IOException { + setFallbackSpecs("http://example.com@@/@@204@@/@@" + + "@@,@@" + + TEST_OTHER_FALLBACK_URL + "@@/@@30[12]@@/@@https://(www\\.)?google.com/?.*"); + + setSslException(mHttpsConnection); + setStatus(mHttpConnection, 500); + + // Use the 2nd fallback spec + when(mRandom.nextInt()).thenReturn(1); } @Test - public void testCreatingNetworkMonitor() { - NetworkMonitor monitor = makeMonitor(); + public void testIsCaptivePortal_FallbackSpecIsNotPortal() throws IOException { + setupFallbackSpec(); + set302(mOtherFallbackConnection, "https://www.google.com/test?q=3"); + + // HTTPS failed, fallback spec did not see a portal -> inconclusive + assertFailed(makeMonitor().isCaptivePortal()); + verify(mOtherFallbackConnection, times(1)).getResponseCode(); + verify(mFallbackConnection, never()).getResponseCode(); + } + + @Test + public void testIsCaptivePortal_FallbackSpecIsPortal() throws IOException { + setupFallbackSpec(); + set302(mOtherFallbackConnection, "http://login.portal.example.com"); + + assertPortal(makeMonitor().isCaptivePortal()); + } + + private void setFallbackUrl(String url) { + when(mDependencies.getSetting(any(), + eq(Settings.Global.CAPTIVE_PORTAL_FALLBACK_URL), any())).thenReturn(url); + } + + private void setOtherFallbackUrls(String urls) { + when(mDependencies.getSetting(any(), + eq(Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS), any())).thenReturn(urls); + } + + private void setFallbackSpecs(String specs) { + when(mDependencies.getSetting(any(), + eq(Settings.Global.CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS), any())).thenReturn(specs); + } + + private void assertPortal(CaptivePortalProbeResult result) { + assertTrue(result.isPortal()); + assertFalse(result.isFailed()); + assertFalse(result.isSuccessful()); + } + + private void assertNotPortal(CaptivePortalProbeResult result) { + assertFalse(result.isPortal()); + assertFalse(result.isFailed()); + assertTrue(result.isSuccessful()); + } + + private void assertFailed(CaptivePortalProbeResult result) { + assertFalse(result.isPortal()); + assertTrue(result.isFailed()); + assertFalse(result.isSuccessful()); + } + + private void setSslException(HttpURLConnection connection) throws IOException { + when(connection.getResponseCode()).thenThrow(new SSLHandshakeException("Invalid cert")); + } + + private void set302(HttpURLConnection connection, String location) throws IOException { + setStatus(connection, 302); + when(connection.getHeaderField(LOCATION_HEADER)).thenReturn(location); + } + + private void setPortal302(HttpURLConnection connection) throws IOException { + set302(connection, "http://login.example.com"); + } + + private void setStatus(HttpURLConnection connection, int status) throws IOException { + when(connection.getResponseCode()).thenReturn(status); } } diff --git a/tests/permission/src/com/android/framework/permission/tests/VibratorServicePermissionTest.java b/tests/permission/src/com/android/framework/permission/tests/VibratorServicePermissionTest.java index 2757296f588f..388c7d03dff2 100644 --- a/tests/permission/src/com/android/framework/permission/tests/VibratorServicePermissionTest.java +++ b/tests/permission/src/com/android/framework/permission/tests/VibratorServicePermissionTest.java @@ -52,7 +52,7 @@ public class VibratorServicePermissionTest extends TestCase { final VibrationEffect effect = VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE); mVibratorService.vibrate(Process.myUid(), null, effect, AudioManager.STREAM_ALARM, - new Binder()); + "testVibrate", new Binder()); fail("vibrate did not throw SecurityException as expected"); } catch (SecurityException e) { // expected diff --git a/tools/aapt2/cmd/Link.h b/tools/aapt2/cmd/Link.h index fb8796ff0a5d..e58a93ec416c 100644 --- a/tools/aapt2/cmd/Link.h +++ b/tools/aapt2/cmd/Link.h @@ -159,8 +159,10 @@ class LinkCommand : public Command { &options_.manifest_fixer_options.target_sdk_version_default); AddOptionalFlag("--version-code", "Version code (integer) to inject into the AndroidManifest.xml if none is\n" - "present.", - &options_.manifest_fixer_options.version_code_default); + "present.", &options_.manifest_fixer_options.version_code_default); + AddOptionalFlag("--version-code-major", + "Version code major (integer) to inject into the AndroidManifest.xml if none is\n" + "present.", &options_.manifest_fixer_options.version_code_major_default); AddOptionalFlag("--version-name", "Version name to inject into the AndroidManifest.xml if none is present.", &options_.manifest_fixer_options.version_name_default); diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp index ee4e70288994..55a32c8b512c 100644 --- a/tools/aapt2/link/ManifestFixer.cpp +++ b/tools/aapt2/link/ManifestFixer.cpp @@ -282,6 +282,17 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, } } + if (options_.version_code_major_default) { + if (options_.replace_version) { + el->RemoveAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + } + if (el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor") == nullptr) { + el->attributes.push_back( + xml::Attribute{xml::kSchemaAndroid, "versionCodeMajor", + options_.version_code_major_default.value()}); + } + } + if (el->FindAttribute("", "platformBuildVersionCode") == nullptr) { auto versionCode = el->FindAttribute(xml::kSchemaAndroid, "versionCode"); if (versionCode != nullptr) { diff --git a/tools/aapt2/link/ManifestFixer.h b/tools/aapt2/link/ManifestFixer.h index 98d06fd776d7..3ef57d0d0e42 100644 --- a/tools/aapt2/link/ManifestFixer.h +++ b/tools/aapt2/link/ManifestFixer.h @@ -52,6 +52,10 @@ struct ManifestFixerOptions { // replace_version is set. Maybe<std::string> version_code_default; + // The version code to set if 'android:versionCodeMajor' is not defined in <manifest> or if + // replace_version is set. + Maybe<std::string> version_code_major_default; + // The version of the framework being compiled against to set for 'android:compileSdkVersion' in // the <manifest> tag. Maybe<std::string> compile_sdk_version; diff --git a/tools/aapt2/link/ManifestFixer_test.cpp b/tools/aapt2/link/ManifestFixer_test.cpp index 5bc004d62ff2..adea6273bc8b 100644 --- a/tools/aapt2/link/ManifestFixer_test.cpp +++ b/tools/aapt2/link/ManifestFixer_test.cpp @@ -329,6 +329,7 @@ TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) { ManifestFixerOptions options; options.version_name_default = std::string("Beta"); options.version_code_default = std::string("0x10000000"); + options.version_code_major_default = std::string("0x20000000"); std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( <manifest xmlns:android="http://schemas.android.com/apk/res/android" @@ -347,136 +348,199 @@ TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) { attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); ASSERT_THAT(attr, NotNull()); EXPECT_THAT(attr->value, StrEq("0x10000000")); + + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x20000000")); } TEST_F(ManifestFixerTest, DontUseDefaultVersionNameAndCode) { -ManifestFixerOptions options; -options.version_name_default = std::string("Beta"); -options.version_code_default = std::string("0x10000000"); + ManifestFixerOptions options; + options.version_name_default = std::string("Beta"); + options.version_code_default = std::string("0x10000000"); + options.version_code_major_default = std::string("0x20000000"); + + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( + <manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="android" + android:versionCode="0x00000001" + android:versionCodeMajor="0x00000002" + android:versionName="Alpha" />)EOF", + options); + ASSERT_THAT(doc, NotNull()); + + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); + + xml::Attribute* attr = + manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("Alpha")); + + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000001")); + + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000002")); +} -std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( +TEST_F(ManifestFixerTest, ReplaceVersionNameAndCode) { + ManifestFixerOptions options; + options.replace_version = true; + options.version_name_default = std::string("Beta"); + options.version_code_default = std::string("0x10000000"); + options.version_code_major_default = std::string("0x20000000"); + + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android" - android:versionCode="0x20000000" + android:versionCode="0x00000001" + android:versionCodeMajor="0x00000002" android:versionName="Alpha" />)EOF", - options); -ASSERT_THAT(doc, NotNull()); + options); + ASSERT_THAT(doc, NotNull()); -xml::Element* manifest_el = doc->root.get(); -ASSERT_THAT(manifest_el, NotNull()); + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); -xml::Attribute* attr = - manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("Alpha")); + xml::Attribute* attr = + manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("Beta")); -attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("0x20000000")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x10000000")); + + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x20000000")); } -TEST_F(ManifestFixerTest, ReplaceVersionNameAndCode) { -ManifestFixerOptions options; -options.replace_version = true; -options.version_name_default = std::string("Beta"); -options.version_code_default = std::string("0x10000000"); +TEST_F(ManifestFixerTest, ReplaceVersionName) { + ManifestFixerOptions options; + options.replace_version = true; + options.version_name_default = std::string("Beta"); + -std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android" - android:versionCode="0x20000000" + android:versionCode="0x00000001" + android:versionCodeMajor="0x00000002" android:versionName="Alpha" />)EOF", - options); -ASSERT_THAT(doc, NotNull()); + options); + ASSERT_THAT(doc, NotNull()); -xml::Element* manifest_el = doc->root.get(); -ASSERT_THAT(manifest_el, NotNull()); + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); -xml::Attribute* attr = - manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("Beta")); + xml::Attribute* attr = + manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("Beta")); -attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("0x10000000")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000001")); + + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000002")); } -TEST_F(ManifestFixerTest, ReplaceVersionName) { -ManifestFixerOptions options; -options.replace_version = true; -options.version_name_default = std::string("Beta"); +TEST_F(ManifestFixerTest, ReplaceVersionCode) { + ManifestFixerOptions options; + options.replace_version = true; + options.version_code_default = std::string("0x10000000"); -std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( - <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="android" - android:versionCode="0x20000000" - android:versionName="Alpha" />)EOF", - options); -ASSERT_THAT(doc, NotNull()); + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( + <manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="android" + android:versionCode="0x00000001" + android:versionCodeMajor="0x00000002" + android:versionName="Alpha" />)EOF", + options); + ASSERT_THAT(doc, NotNull()); + + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); -xml::Element* manifest_el = doc->root.get(); -ASSERT_THAT(manifest_el, NotNull()); + xml::Attribute* attr = + manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("Alpha")); -xml::Attribute* attr = - manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("Beta")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x10000000")); -attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("0x20000000")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000002")); } -TEST_F(ManifestFixerTest, ReplaceVersionCode) { -ManifestFixerOptions options; -options.replace_version = true; -options.version_code_default = std::string("0x10000000"); +TEST_F(ManifestFixerTest, ReplaceVersionCodeMajor) { + ManifestFixerOptions options; + options.replace_version = true; + options.version_code_major_default = std::string("0x20000000"); -std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="android" - android:versionCode="0x20000000" - android:versionName="Alpha" />)EOF", - options); -ASSERT_THAT(doc, NotNull()); + package="android" + android:versionCode="0x00000001" + android:versionCodeMajor="0x00000002" + android:versionName="Alpha" />)EOF", + options); + ASSERT_THAT(doc, NotNull()); -xml::Element* manifest_el = doc->root.get(); -ASSERT_THAT(manifest_el, NotNull()); + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); -xml::Attribute* attr = - manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("Alpha")); + xml::Attribute* attr = + manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("Alpha")); -attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("0x10000000")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000001")); + + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x20000000")); } TEST_F(ManifestFixerTest, DontReplaceVersionNameOrCode) { -ManifestFixerOptions options; -options.replace_version = true; + ManifestFixerOptions options; + options.replace_version = true; -std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="android" - android:versionCode="0x20000000" - android:versionName="Alpha" />)EOF", - options); -ASSERT_THAT(doc, NotNull()); + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( + <manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="android" + android:versionCode="0x00000001" + android:versionCodeMajor="0x00000002" + android:versionName="Alpha" />)EOF", + options); + ASSERT_THAT(doc, NotNull()); + + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); -xml::Element* manifest_el = doc->root.get(); -ASSERT_THAT(manifest_el, NotNull()); + xml::Attribute* attr = + manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("Alpha")); -xml::Attribute* attr = - manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("Alpha")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000001")); -attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode"); -ASSERT_THAT(attr, NotNull()); -EXPECT_THAT(attr->value, StrEq("0x20000000")); + attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("0x00000002")); } TEST_F(ManifestFixerTest, EnsureManifestAttributesAreTyped) { diff --git a/tools/aapt2/link/TableMerger.cpp b/tools/aapt2/link/TableMerger.cpp index 91a55b337071..afb8ae097449 100644 --- a/tools/aapt2/link/TableMerger.cpp +++ b/tools/aapt2/link/TableMerger.cpp @@ -281,8 +281,17 @@ bool TableMerger::DoMerge(const Source& src, ResourceTable* src_table, dst_config_value->value = std::move(new_file_ref); } else { + Maybe<std::string> original_comment = (dst_config_value->value) + ? dst_config_value->value->GetComment() : Maybe<std::string>(); + dst_config_value->value = std::unique_ptr<Value>( src_config_value->value->Clone(&master_table_->string_pool)); + + // Keep the comment from the original resource and ignore all comments from overlaying + // resources + if (overlay && original_comment) { + dst_config_value->value->SetComment(original_comment.value()); + } } } } diff --git a/tools/aapt2/link/TableMerger_test.cpp b/tools/aapt2/link/TableMerger_test.cpp index cf504c4f4ce5..79a734bffabd 100644 --- a/tools/aapt2/link/TableMerger_test.cpp +++ b/tools/aapt2/link/TableMerger_test.cpp @@ -178,6 +178,49 @@ TEST_F(TableMergerTest, OverrideResourceWithOverlay) { Pointee(Field(&BinaryPrimitive::value, Field(&android::Res_value::data, Eq(0u))))); } +TEST_F(TableMergerTest, DoNotOverrideResourceComment) { + std::unique_ptr<Value> foo_original = ResourceUtils::TryParseBool("true"); + foo_original->SetComment(android::StringPiece("Original foo comment")); + std::unique_ptr<Value> bar_original = ResourceUtils::TryParseBool("true"); + + std::unique_ptr<Value> foo_overlay = ResourceUtils::TryParseBool("false"); + foo_overlay->SetComment(android::StringPiece("Overlay foo comment")); + std::unique_ptr<Value> bar_overlay = ResourceUtils::TryParseBool("false"); + bar_overlay->SetComment(android::StringPiece("Overlay bar comment")); + std::unique_ptr<Value> baz_overlay = ResourceUtils::TryParseBool("false"); + baz_overlay->SetComment(android::StringPiece("Overlay baz comment")); + + std::unique_ptr<ResourceTable> base = + test::ResourceTableBuilder() + .SetPackageId("", 0x00) + .AddValue("bool/foo", std::move(foo_original)) + .AddValue("bool/bar", std::move(bar_original)) + .Build(); + + std::unique_ptr<ResourceTable> overlay = + test::ResourceTableBuilder() + .SetPackageId("", 0x00) + .AddValue("bool/foo", std::move(foo_overlay)) + .AddValue("bool/bar", std::move(bar_overlay)) + .AddValue("bool/baz", std::move(baz_overlay)) + .Build(); + + ResourceTable final_table; + TableMergerOptions options; + options.auto_add_overlay = true; + TableMerger merger(context_.get(), &final_table, options); + + ASSERT_TRUE(merger.Merge({}, base.get(), false /*overlay*/)); + ASSERT_TRUE(merger.Merge({}, overlay.get(), true /*overlay*/)); + + BinaryPrimitive* foo = test::GetValue<BinaryPrimitive>(&final_table, "com.app.a:bool/foo"); + EXPECT_THAT(foo, Pointee(Property(&BinaryPrimitive::GetComment, StrEq("Original foo comment")))); + BinaryPrimitive* bar = test::GetValue<BinaryPrimitive>(&final_table, "com.app.a:bool/bar"); + EXPECT_THAT(bar, Pointee(Property(&BinaryPrimitive::GetComment, StrEq("")))); + BinaryPrimitive* baz = test::GetValue<BinaryPrimitive>(&final_table, "com.app.a:bool/baz"); + EXPECT_THAT(baz, Pointee(Property(&BinaryPrimitive::GetComment, StrEq("Overlay baz comment")))); +} + TEST_F(TableMergerTest, OverrideSameResourceIdsWithOverlay) { std::unique_ptr<ResourceTable> base = test::ResourceTableBuilder() diff --git a/tools/genprotos.sh b/tools/genprotos.sh new file mode 100755 index 000000000000..f901c9f588b6 --- /dev/null +++ b/tools/genprotos.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# TODO This should not be needed. If you set a custom OUT_DIR or OUT_DIR_COMMON_BASE you can +# end up with a command that is extremely long, potentially going passed MAX_ARG_STRLEN due to +# the way sbox rewrites the command. See b/70221552. + +set -e + +location_aprotoc=$1 +location_protoc=$2 +location_soong_zip=$3 +genDir=$4 +depfile=$5 +in=$6 +out=$7 + +mkdir -p ${genDir}/${in} && \ + ${location_aprotoc} --plugin=${location_protoc} \ + --dependency_out=${depfile} \ + --javastream_out=${genDir}/${in} \ + -Iexternal/protobuf/src \ + -I . \ + ${in} && \ + ${location_soong_zip} -jar -o ${out} -C ${genDir}/${in} -D ${genDir}/${in} |