diff options
156 files changed, 1669 insertions, 444 deletions
diff --git a/Android.mk b/Android.mk index 151621c36c8b..331b6c1e5eb3 100644 --- a/Android.mk +++ b/Android.mk @@ -247,7 +247,7 @@ LOCAL_INTERMEDIATE_SOURCES := \  			$(framework_res_source_path)/com/android/internal/R.java  LOCAL_NO_STANDARD_LIBRARIES := true -LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit ext +LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt core core-junit ext okhttp  LOCAL_MODULE := framework  LOCAL_MODULE_CLASS := JAVA_LIBRARIES @@ -415,7 +415,9 @@ framework_docs_LOCAL_INTERMEDIATE_SOURCES := \  framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES := \  	bouncycastle \ +	conscrypt \  	core \ +	okhttp \  	ext \  	framework \  	mms-common \ diff --git a/api/current.txt b/api/current.txt index 02b95a0fc10b..631deeca101e 100644 --- a/api/current.txt +++ b/api/current.txt @@ -31562,7 +31562,7 @@ package java.io {      ctor public CharConversionException(java.lang.String);    } -  public abstract interface Closeable { +  public abstract interface Closeable implements java.lang.AutoCloseable {      method public abstract void close() throws java.io.IOException;    } @@ -31732,7 +31732,7 @@ package java.io {      method public abstract boolean accept(java.io.File);    } -  public class FileInputStream extends java.io.InputStream implements java.io.Closeable { +  public class FileInputStream extends java.io.InputStream {      ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException;      ctor public FileInputStream(java.io.FileDescriptor);      ctor public FileInputStream(java.lang.String) throws java.io.FileNotFoundException; @@ -31746,7 +31746,7 @@ package java.io {      ctor public FileNotFoundException(java.lang.String);    } -  public class FileOutputStream extends java.io.OutputStream implements java.io.Closeable { +  public class FileOutputStream extends java.io.OutputStream {      ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException;      ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException;      ctor public FileOutputStream(java.io.FileDescriptor); @@ -31885,7 +31885,7 @@ package java.io {      ctor public NotSerializableException(java.lang.String);    } -  public abstract interface ObjectInput implements java.io.DataInput { +  public abstract interface ObjectInput implements java.lang.AutoCloseable java.io.DataInput {      method public abstract int available() throws java.io.IOException;      method public abstract void close() throws java.io.IOException;      method public abstract int read() throws java.io.IOException; @@ -31947,7 +31947,7 @@ package java.io {      method public abstract void validateObject() throws java.io.InvalidObjectException;    } -  public abstract interface ObjectOutput implements java.io.DataOutput { +  public abstract interface ObjectOutput implements java.lang.AutoCloseable java.io.DataOutput {      method public abstract void close() throws java.io.IOException;      method public abstract void flush() throws java.io.IOException;      method public abstract void write(byte[]) throws java.io.IOException; @@ -32446,6 +32446,7 @@ package java.lang {    public class AssertionError extends java.lang.Error {      ctor public AssertionError(); +    ctor public AssertionError(java.lang.String, java.lang.Throwable);      ctor public AssertionError(java.lang.Object);      ctor public AssertionError(boolean);      ctor public AssertionError(char); @@ -32455,10 +32456,15 @@ package java.lang {      ctor public AssertionError(double);    } +  public abstract interface AutoCloseable { +    method public abstract void close() throws java.lang.Exception; +  } +    public final class Boolean implements java.lang.Comparable java.io.Serializable {      ctor public Boolean(java.lang.String);      ctor public Boolean(boolean);      method public boolean booleanValue(); +    method public static int compare(boolean, boolean);      method public int compareTo(java.lang.Boolean);      method public static boolean getBoolean(java.lang.String);      method public static boolean parseBoolean(java.lang.String); @@ -32473,6 +32479,7 @@ package java.lang {    public final class Byte extends java.lang.Number implements java.lang.Comparable {      ctor public Byte(byte);      ctor public Byte(java.lang.String) throws java.lang.NumberFormatException; +    method public static int compare(byte, byte);      method public int compareTo(java.lang.Byte);      method public static java.lang.Byte decode(java.lang.String) throws java.lang.NumberFormatException;      method public double doubleValue(); @@ -32510,16 +32517,20 @@ package java.lang {      method public static int codePointBefore(char[], int, int);      method public static int codePointCount(java.lang.CharSequence, int, int);      method public static int codePointCount(char[], int, int); +    method public static int compare(char, char);      method public int compareTo(java.lang.Character);      method public static int digit(char, int);      method public static int digit(int, int);      method public static char forDigit(int, int);      method public static byte getDirectionality(char);      method public static byte getDirectionality(int); +    method public static java.lang.String getName(int);      method public static int getNumericValue(char);      method public static int getNumericValue(int);      method public static int getType(char);      method public static int getType(int); +    method public static char highSurrogate(int); +    method public static boolean isBmpCodePoint(int);      method public static boolean isDefined(char);      method public static boolean isDefined(int);      method public static boolean isDigit(char); @@ -32548,6 +32559,7 @@ package java.lang {      method public static boolean isSpaceChar(char);      method public static boolean isSpaceChar(int);      method public static boolean isSupplementaryCodePoint(int); +    method public static boolean isSurrogate(char);      method public static boolean isSurrogatePair(char, char);      method public static boolean isTitleCase(char);      method public static boolean isTitleCase(int); @@ -32560,6 +32572,7 @@ package java.lang {      method public static boolean isValidCodePoint(int);      method public static boolean isWhitespace(char);      method public static boolean isWhitespace(int); +    method public static char lowSurrogate(int);      method public static int offsetByCodePoints(java.lang.CharSequence, int, int);      method public static int offsetByCodePoints(char[], int, int, int, int);      method public static char reverseBytes(char); @@ -32888,7 +32901,7 @@ package java.lang {      method protected final void setSigners(java.lang.Class<?>, java.lang.Object[]);    } -  public class ClassNotFoundException extends java.lang.Exception { +  public class ClassNotFoundException extends java.lang.ReflectiveOperationException {      ctor public ClassNotFoundException();      ctor public ClassNotFoundException(java.lang.String);      ctor public ClassNotFoundException(java.lang.String, java.lang.Throwable); @@ -33030,7 +33043,7 @@ package java.lang {      ctor public IllegalAccessError(java.lang.String);    } -  public class IllegalAccessException extends java.lang.Exception { +  public class IllegalAccessException extends java.lang.ReflectiveOperationException {      ctor public IllegalAccessException();      ctor public IllegalAccessException(java.lang.String);    } @@ -33079,7 +33092,7 @@ package java.lang {      ctor public InstantiationError(java.lang.String);    } -  public class InstantiationException extends java.lang.Exception { +  public class InstantiationException extends java.lang.ReflectiveOperationException {      ctor public InstantiationException();      ctor public InstantiationException(java.lang.String);    } @@ -33088,6 +33101,7 @@ package java.lang {      ctor public Integer(int);      ctor public Integer(java.lang.String) throws java.lang.NumberFormatException;      method public static int bitCount(int); +    method public static int compare(int, int);      method public int compareTo(java.lang.Integer);      method public static java.lang.Integer decode(java.lang.String) throws java.lang.NumberFormatException;      method public double doubleValue(); @@ -33139,12 +33153,14 @@ package java.lang {    public class LinkageError extends java.lang.Error {      ctor public LinkageError();      ctor public LinkageError(java.lang.String); +    ctor public LinkageError(java.lang.String, java.lang.Throwable);    }    public final class Long extends java.lang.Number implements java.lang.Comparable {      ctor public Long(long);      ctor public Long(java.lang.String) throws java.lang.NumberFormatException;      method public static int bitCount(long); +    method public static int compare(long, long);      method public int compareTo(java.lang.Long);      method public static java.lang.Long decode(java.lang.String) throws java.lang.NumberFormatException;      method public double doubleValue(); @@ -33253,7 +33269,7 @@ package java.lang {      ctor public NoSuchFieldError(java.lang.String);    } -  public class NoSuchFieldException extends java.lang.Exception { +  public class NoSuchFieldException extends java.lang.ReflectiveOperationException {      ctor public NoSuchFieldException();      ctor public NoSuchFieldException(java.lang.String);    } @@ -33263,7 +33279,7 @@ package java.lang {      ctor public NoSuchMethodError(java.lang.String);    } -  public class NoSuchMethodException extends java.lang.Exception { +  public class NoSuchMethodException extends java.lang.ReflectiveOperationException {      ctor public NoSuchMethodException();      ctor public NoSuchMethodException(java.lang.String);    } @@ -33358,6 +33374,13 @@ package java.lang {      method public abstract int read(java.nio.CharBuffer) throws java.io.IOException;    } +  public class ReflectiveOperationException extends java.lang.Exception { +    ctor public ReflectiveOperationException(); +    ctor public ReflectiveOperationException(java.lang.String); +    ctor public ReflectiveOperationException(java.lang.Throwable); +    ctor public ReflectiveOperationException(java.lang.String, java.lang.Throwable); +  } +    public abstract interface Runnable {      method public abstract void run();    } @@ -33401,6 +33424,9 @@ package java.lang {      ctor public RuntimePermission(java.lang.String, java.lang.String);    } +  public abstract class SafeVarargs implements java.lang.annotation.Annotation { +  } +    public class SecurityException extends java.lang.RuntimeException {      ctor public SecurityException();      ctor public SecurityException(java.lang.String); @@ -33457,6 +33483,7 @@ package java.lang {    public final class Short extends java.lang.Number implements java.lang.Comparable {      ctor public Short(java.lang.String) throws java.lang.NumberFormatException;      ctor public Short(short); +    method public static int compare(short, short);      method public int compareTo(java.lang.Short);      method public static java.lang.Short decode(java.lang.String) throws java.lang.NumberFormatException;      method public double doubleValue(); @@ -33728,6 +33755,7 @@ package java.lang {      method public static java.util.Map<java.lang.String, java.lang.String> getenv();      method public static int identityHashCode(java.lang.Object);      method public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException; +    method public static java.lang.String lineSeparator();      method public static void load(java.lang.String);      method public static void loadLibrary(java.lang.String);      method public static java.lang.String mapLibraryName(java.lang.String); @@ -33860,11 +33888,14 @@ package java.lang {      ctor public Throwable(java.lang.String);      ctor public Throwable(java.lang.String, java.lang.Throwable);      ctor public Throwable(java.lang.Throwable); +    ctor protected Throwable(java.lang.String, java.lang.Throwable, boolean, boolean); +    method public final void addSuppressed(java.lang.Throwable);      method public java.lang.Throwable fillInStackTrace();      method public java.lang.Throwable getCause();      method public java.lang.String getLocalizedMessage();      method public java.lang.String getMessage();      method public java.lang.StackTraceElement[] getStackTrace(); +    method public final java.lang.Throwable[] getSuppressed();      method public java.lang.Throwable initCause(java.lang.Throwable);      method public void printStackTrace();      method public void printStackTrace(java.io.PrintStream); @@ -34116,7 +34147,7 @@ package java.lang.reflect {      method public abstract java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) throws java.lang.Throwable;    } -  public class InvocationTargetException extends java.lang.Exception { +  public class InvocationTargetException extends java.lang.ReflectiveOperationException {      ctor protected InvocationTargetException();      ctor public InvocationTargetException(java.lang.Throwable);      ctor public InvocationTargetException(java.lang.Throwable, java.lang.String); @@ -34159,6 +34190,10 @@ package java.lang.reflect {    public class Modifier {      ctor public Modifier(); +    method public static int classModifiers(); +    method public static int constructorModifiers(); +    method public static int fieldModifiers(); +    method public static int interfaceModifiers();      method public static boolean isAbstract(int);      method public static boolean isFinal(int);      method public static boolean isInterface(int); @@ -34171,6 +34206,7 @@ package java.lang.reflect {      method public static boolean isSynchronized(int);      method public static boolean isTransient(int);      method public static boolean isVolatile(int); +    method public static int methodModifiers();      method public static java.lang.String toString(int);      field public static final int ABSTRACT = 1024; // 0x400      field public static final int FINAL = 16; // 0x10 @@ -34510,7 +34546,7 @@ package java.net {      method public synchronized void setSocketAddress(java.net.SocketAddress);    } -  public class DatagramSocket { +  public class DatagramSocket implements java.io.Closeable {      ctor public DatagramSocket() throws java.net.SocketException;      ctor public DatagramSocket(int) throws java.net.SocketException;      ctor public DatagramSocket(int, java.net.InetAddress) throws java.net.SocketException; @@ -34707,6 +34743,7 @@ package java.net {      method public java.lang.String getHostAddress();      method public java.lang.String getHostName();      method public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException; +    method public static java.net.InetAddress getLoopbackAddress();      method public boolean isAnyLocalAddress();      method public boolean isLinkLocalAddress();      method public boolean isLoopbackAddress(); @@ -34729,6 +34766,7 @@ package java.net {      method public final boolean equals(java.lang.Object);      method public final java.net.InetAddress getAddress();      method public final java.lang.String getHostName(); +    method public final java.lang.String getHostString();      method public final int getPort();      method public final int hashCode();      method public final boolean isUnresolved(); @@ -34785,10 +34823,12 @@ package java.net {    }    public final class NetworkInterface { +    method public static java.net.NetworkInterface getByIndex(int) throws java.net.SocketException;      method public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress) throws java.net.SocketException;      method public static java.net.NetworkInterface getByName(java.lang.String) throws java.net.SocketException;      method public java.lang.String getDisplayName();      method public byte[] getHardwareAddress() throws java.net.SocketException; +    method public int getIndex();      method public java.util.Enumeration<java.net.InetAddress> getInetAddresses();      method public java.util.List<java.net.InterfaceAddress> getInterfaceAddresses();      method public int getMTU() throws java.net.SocketException; @@ -34866,7 +34906,7 @@ package java.net {      method public abstract java.util.List<java.security.cert.Certificate> getServerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;    } -  public class ServerSocket { +  public class ServerSocket implements java.io.Closeable {      ctor public ServerSocket() throws java.io.IOException;      ctor public ServerSocket(int) throws java.io.IOException;      ctor public ServerSocket(int, int) throws java.io.IOException; @@ -34892,7 +34932,7 @@ package java.net {      method public static synchronized void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;    } -  public class Socket { +  public class Socket implements java.io.Closeable {      ctor public Socket();      ctor public Socket(java.net.Proxy);      ctor public Socket(java.lang.String, int) throws java.io.IOException, java.net.UnknownHostException; @@ -35325,7 +35365,7 @@ package java.nio {      method public java.nio.CharBuffer put(java.lang.String, int, int);      method public int read(java.nio.CharBuffer) throws java.io.IOException;      method public abstract java.nio.CharBuffer slice(); -    method public abstract java.lang.CharSequence subSequence(int, int); +    method public abstract java.nio.CharBuffer subSequence(int, int);      method public static java.nio.CharBuffer wrap(char[]);      method public static java.nio.CharBuffer wrap(char[], int, int);      method public static java.nio.CharBuffer wrap(java.lang.CharSequence); @@ -35570,9 +35610,10 @@ package java.nio.channels {      field public static final java.nio.channels.FileChannel.MapMode READ_WRITE;    } -  public abstract class FileLock { +  public abstract class FileLock implements java.lang.AutoCloseable {      ctor protected FileLock(java.nio.channels.FileChannel, long, long, boolean);      method public final java.nio.channels.FileChannel channel(); +    method public final void close() throws java.io.IOException;      method public final boolean isShared();      method public abstract boolean isValid();      method public final boolean overlaps(long, long); @@ -35687,7 +35728,7 @@ package java.nio.channels {      field public static final int OP_WRITE = 4; // 0x4    } -  public abstract class Selector { +  public abstract class Selector implements java.io.Closeable {      ctor protected Selector();      method public abstract void close() throws java.io.IOException;      method public abstract boolean isOpen(); @@ -37623,7 +37664,7 @@ package java.sql {      method public abstract void truncate(long) throws java.sql.SQLException;    } -  public abstract interface Connection implements java.sql.Wrapper { +  public abstract interface Connection implements java.lang.AutoCloseable java.sql.Wrapper {      method public abstract void clearWarnings() throws java.sql.SQLException;      method public abstract void close() throws java.sql.SQLException;      method public abstract void commit() throws java.sql.SQLException; @@ -38052,7 +38093,7 @@ package java.sql {      method public abstract void setObject(java.lang.Object) throws java.sql.SQLException;    } -  public abstract interface ResultSet implements java.sql.Wrapper { +  public abstract interface ResultSet implements java.lang.AutoCloseable java.sql.Wrapper {      method public abstract boolean absolute(int) throws java.sql.SQLException;      method public abstract void afterLast() throws java.sql.SQLException;      method public abstract void beforeFirst() throws java.sql.SQLException; @@ -38558,7 +38599,7 @@ package java.sql {      method public abstract java.lang.String getSavepointName() throws java.sql.SQLException;    } -  public abstract interface Statement implements java.sql.Wrapper { +  public abstract interface Statement implements java.lang.AutoCloseable java.sql.Wrapper {      method public abstract void addBatch(java.lang.String) throws java.sql.SQLException;      method public abstract void cancel() throws java.sql.SQLException;      method public abstract void clearBatch() throws java.sql.SQLException; @@ -39458,11 +39499,19 @@ package java.util {      method public int nextClearBit(int);      method public int nextSetBit(int);      method public void or(java.util.BitSet); +    method public int previousClearBit(int); +    method public int previousSetBit(int);      method public void set(int);      method public void set(int, boolean);      method public void set(int, int, boolean);      method public void set(int, int);      method public int size(); +    method public byte[] toByteArray(); +    method public long[] toLongArray(); +    method public static java.util.BitSet valueOf(long[]); +    method public static java.util.BitSet valueOf(java.nio.LongBuffer); +    method public static java.util.BitSet valueOf(byte[]); +    method public static java.util.BitSet valueOf(java.nio.ByteBuffer);      method public void xor(java.util.BitSet);    } @@ -39595,7 +39644,10 @@ package java.util {      method public static java.util.SortedSet<E> checkedSortedSet(java.util.SortedSet<E>, java.lang.Class<E>);      method public static void copy(java.util.List<? super T>, java.util.List<? extends T>);      method public static boolean disjoint(java.util.Collection<?>, java.util.Collection<?>); +    method public static java.util.Enumeration<T> emptyEnumeration(); +    method public static java.util.Iterator<T> emptyIterator();      method public static final java.util.List<T> emptyList(); +    method public static java.util.ListIterator<T> emptyListIterator();      method public static final java.util.Map<K, V> emptyMap();      method public static final java.util.Set<T> emptySet();      method public static java.util.Enumeration<T> enumeration(java.util.Collection<T>); @@ -39648,11 +39700,16 @@ package java.util {    public class ConcurrentModificationException extends java.lang.RuntimeException {      ctor public ConcurrentModificationException();      ctor public ConcurrentModificationException(java.lang.String); +    ctor public ConcurrentModificationException(java.lang.String, java.lang.Throwable); +    ctor public ConcurrentModificationException(java.lang.Throwable);    }    public final class Currency implements java.io.Serializable { +    method public static java.util.Set<java.util.Currency> getAvailableCurrencies();      method public java.lang.String getCurrencyCode();      method public int getDefaultFractionDigits(); +    method public java.lang.String getDisplayName(); +    method public java.lang.String getDisplayName(java.util.Locale);      method public static java.util.Currency getInstance(java.lang.String);      method public static java.util.Currency getInstance(java.util.Locale);      method public java.lang.String getSymbol(); @@ -40317,7 +40374,7 @@ package java.util {      field public static final long TTL_NO_EXPIRATION_CONTROL = -2L; // 0xfffffffffffffffeL    } -  public final class Scanner implements java.util.Iterator { +  public final class Scanner implements java.io.Closeable java.util.Iterator {      ctor public Scanner(java.io.File) throws java.io.FileNotFoundException;      ctor public Scanner(java.io.File, java.lang.String) throws java.io.FileNotFoundException;      ctor public Scanner(java.lang.String); @@ -41959,6 +42016,7 @@ package java.util.logging {      method public static java.util.logging.Logger getAnonymousLogger();      method public static java.util.logging.Logger getAnonymousLogger(java.lang.String);      method public java.util.logging.Filter getFilter(); +    method public static java.util.logging.Logger getGlobal();      method public java.util.logging.Handler[] getHandlers();      method public java.util.logging.Level getLevel();      method public static java.util.logging.Logger getLogger(java.lang.String); @@ -42305,6 +42363,7 @@ package java.util.zip {      ctor public Deflater(int, boolean);      method public int deflate(byte[]);      method public synchronized int deflate(byte[], int, int); +    method public synchronized int deflate(byte[], int, int, int);      method public synchronized void end();      method public synchronized void finish();      method public synchronized boolean finished(); @@ -42327,8 +42386,11 @@ package java.util.zip {      field public static final int DEFAULT_STRATEGY = 0; // 0x0      field public static final int DEFLATED = 8; // 0x8      field public static final int FILTERED = 1; // 0x1 +    field public static final int FULL_FLUSH = 3; // 0x3      field public static final int HUFFMAN_ONLY = 2; // 0x2      field public static final int NO_COMPRESSION = 0; // 0x0 +    field public static final int NO_FLUSH = 0; // 0x0 +    field public static final int SYNC_FLUSH = 2; // 0x2    }    public class DeflaterInputStream extends java.io.FilterInputStream { @@ -42340,9 +42402,12 @@ package java.util.zip {    }    public class DeflaterOutputStream extends java.io.FilterOutputStream { -    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);      ctor public DeflaterOutputStream(java.io.OutputStream); +    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);      ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int); +    ctor public DeflaterOutputStream(java.io.OutputStream, boolean); +    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, boolean); +    ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int, boolean);      method protected void deflate() throws java.io.IOException;      method public void finish() throws java.io.IOException;      field protected byte[] buf; @@ -42437,7 +42502,7 @@ package java.util.zip {      ctor public ZipException(java.lang.String);    } -  public class ZipFile { +  public class ZipFile implements java.io.Closeable {      ctor public ZipFile(java.io.File) throws java.io.IOException, java.util.zip.ZipException;      ctor public ZipFile(java.lang.String) throws java.io.IOException;      ctor public ZipFile(java.io.File, int) throws java.io.IOException; @@ -42473,6 +42538,11 @@ package java.util.zip {  package javax.crypto { +  public class AEADBadTagException extends javax.crypto.BadPaddingException { +    ctor public AEADBadTagException(); +    ctor public AEADBadTagException(java.lang.String); +  } +    public class BadPaddingException extends java.security.GeneralSecurityException {      ctor public BadPaddingException(java.lang.String);      ctor public BadPaddingException(); @@ -42513,6 +42583,9 @@ package javax.crypto {      method public final int update(byte[], int, int, byte[]) throws javax.crypto.ShortBufferException;      method public final int update(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;      method public final int update(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException; +    method public final void updateAAD(byte[]); +    method public final void updateAAD(byte[], int, int); +    method public final void updateAAD(java.nio.ByteBuffer);      method public final byte[] wrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;      field public static final int DECRYPT_MODE = 2; // 0x2      field public static final int ENCRYPT_MODE = 1; // 0x1 @@ -42552,6 +42625,8 @@ package javax.crypto {      method protected abstract byte[] engineUpdate(byte[], int, int);      method protected abstract int engineUpdate(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;      method protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException; +    method protected void engineUpdateAAD(byte[], int, int); +    method protected void engineUpdateAAD(java.nio.ByteBuffer);      method protected byte[] engineWrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;    } @@ -42810,6 +42885,13 @@ package javax.crypto.spec {      method public java.math.BigInteger getY();    } +  public class GCMParameterSpec implements java.security.spec.AlgorithmParameterSpec { +    ctor public GCMParameterSpec(int, byte[]); +    ctor public GCMParameterSpec(int, byte[], int, int); +    method public byte[] getIV(); +    method public int getTLen(); +  } +    public class IvParameterSpec implements java.security.spec.AlgorithmParameterSpec {      ctor public IvParameterSpec(byte[]);      ctor public IvParameterSpec(byte[], int, int); diff --git a/cmds/input/src/com/android/commands/input/Input.java b/cmds/input/src/com/android/commands/input/Input.java index e43501cb6568..80ac53962c88 100644 --- a/cmds/input/src/com/android/commands/input/Input.java +++ b/cmds/input/src/com/android/commands/input/Input.java @@ -56,12 +56,14 @@ public class Input {                      return;                  }              } else if (command.equals("keyevent")) { -                if (args.length == 2) { -                    int keyCode = KeyEvent.keyCodeFromString(args[1]); -                    if (keyCode == KeyEvent.KEYCODE_UNKNOWN) { -                        keyCode = KeyEvent.keyCodeFromString("KEYCODE_" + args[1]); +                if (args.length >= 2) { +                    for (int i=1; i < args.length; i++) { +                        int keyCode = KeyEvent.keyCodeFromString(args[i]); +                        if (keyCode == KeyEvent.KEYCODE_UNKNOWN) { +                            keyCode = KeyEvent.keyCodeFromString("KEYCODE_" + args[i]); +                        } +                        sendKeyEvent(keyCode);                      } -                    sendKeyEvent(keyCode);                      return;                  }              } else if (command.equals("tap")) { @@ -237,7 +239,7 @@ public class Input {                  DEFAULT_META_STATE, DEFAULT_PRECISION_X, DEFAULT_PRECISION_Y, DEFAULT_DEVICE_ID,                  DEFAULT_EDGE_FLAGS);          event.setSource(inputSource); -        Log.i("Input", "injectMotionEvent: " + event); +        Log.i(TAG, "injectMotionEvent: " + event);          InputManager.getInstance().injectInputEvent(event,                  InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);      } @@ -249,7 +251,7 @@ public class Input {      private void showUsage() {          System.err.println("usage: input ...");          System.err.println("       input text <string>"); -        System.err.println("       input keyevent <key code number or name>"); +        System.err.println("       input keyevent <key code number or name> ...");          System.err.println("       input [touchscreen|touchpad|touchnavigation] tap <x> <y>");          System.err.println("       input [touchscreen|touchpad|touchnavigation] swipe "                  + "<x1> <y1> <x2> <y2> [duration(ms)]"); diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index d4056c98beec..4268fa6211ae 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -92,8 +92,7 @@ import com.android.internal.os.BinderInternal;  import com.android.internal.os.RuntimeInit;  import com.android.internal.os.SamplingProfilerIntegration;  import com.android.internal.util.Objects; - -import org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl; +import com.android.org.conscrypt.OpenSSLSocketImpl;  import java.io.File;  import java.io.FileDescriptor; diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index 10ea109edc08..72c91562d647 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -1169,7 +1169,7 @@ final class FragmentManagerImpl extends FragmentManager {          if (!fragment.mHidden) {              fragment.mHidden = true;              if (fragment.mView != null) { -                Animator anim = loadAnimator(fragment, transition, true, +                Animator anim = loadAnimator(fragment, transition, false,                          transitionStyle);                  if (anim != null) {                      anim.setTarget(fragment.mView); diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java index 25c790fd1232..bdd0adbbb436 100644 --- a/core/java/android/app/PendingIntent.java +++ b/core/java/android/app/PendingIntent.java @@ -207,8 +207,7 @@ public final class PendingIntent implements Parcelable {       *       * @param context The Context in which this PendingIntent should start       * the activity. -     * @param requestCode Private request code for the sender (currently -     * not used). +     * @param requestCode Private request code for the sender       * @param intent Intent of the activity to be launched.       * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},       * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, @@ -239,8 +238,7 @@ public final class PendingIntent implements Parcelable {       *       * @param context The Context in which this PendingIntent should start       * the activity. -     * @param requestCode Private request code for the sender (currently -     * not used). +     * @param requestCode Private request code for the sender       * @param intent Intent of the activity to be launched.       * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},       * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, @@ -332,8 +330,7 @@ public final class PendingIntent implements Parcelable {       *       * @param context The Context in which this PendingIntent should start       * the activity. -     * @param requestCode Private request code for the sender (currently -     * not used). +     * @param requestCode Private request code for the sender       * @param intents Array of Intents of the activities to be launched.       * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},       * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, @@ -383,8 +380,7 @@ public final class PendingIntent implements Parcelable {       *       * @param context The Context in which this PendingIntent should start       * the activity. -     * @param requestCode Private request code for the sender (currently -     * not used). +     * @param requestCode Private request code for the sender       * @param intents Array of Intents of the activities to be launched.       * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},       * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, @@ -454,8 +450,7 @@ public final class PendingIntent implements Parcelable {       *       * @param context The Context in which this PendingIntent should perform       * the broadcast. -     * @param requestCode Private request code for the sender (currently -     * not used). +     * @param requestCode Private request code for the sender       * @param intent The Intent to be broadcast.       * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},       * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, @@ -509,8 +504,7 @@ public final class PendingIntent implements Parcelable {       *       * @param context The Context in which this PendingIntent should start       * the service. -     * @param requestCode Private request code for the sender (currently -     * not used). +     * @param requestCode Private request code for the sender       * @param intent An Intent describing the service to be started.       * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},       * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT}, diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index 905ae0ddec87..68db33a2e630 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -853,11 +853,13 @@ public final class Configuration implements Parcelable, Comparable<Configuration              changed |= ActivityInfo.CONFIG_SCREEN_SIZE;              screenHeightDp = delta.screenHeightDp;          } -        if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) { -            changed |= ActivityInfo.CONFIG_SCREEN_SIZE; +        if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED +                && smallestScreenWidthDp != delta.smallestScreenWidthDp) { +            changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;              smallestScreenWidthDp = delta.smallestScreenWidthDp;          } -        if (delta.densityDpi != DENSITY_DPI_UNDEFINED) { +        if (delta.densityDpi != DENSITY_DPI_UNDEFINED && +                densityDpi != delta.densityDpi) {              changed |= ActivityInfo.CONFIG_DENSITY;              densityDpi = delta.densityDpi;          } diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 1fc12263e4ee..e2d972451976 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -792,6 +792,18 @@ public class DatabaseUtils {      }      /** +     * Query the table to check whether a table is empty or not +     * @param db the database the table is in +     * @param table the name of the table to query +     * @return True if the table is empty +     * @hide +     */ +    public static boolean queryIsEmpty(SQLiteDatabase db, String table) { +        long isEmpty = longForQuery(db, "select exists(select 1 from " + table + ")", null); +        return isEmpty == 0; +    } + +    /**       * Utility method to run the query on the db and return the value in the       * first column of the first row.       */ diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java index 4f59e8e7ceec..725a1ff6c9c0 100644 --- a/core/java/android/database/sqlite/SQLiteConnection.java +++ b/core/java/android/database/sqlite/SQLiteConnection.java @@ -30,9 +30,9 @@ import android.util.Log;  import android.util.LruCache;  import android.util.Printer; -import java.sql.Date;  import java.text.SimpleDateFormat;  import java.util.ArrayList; +import java.util.Date;  import java.util.Map;  import java.util.regex.Pattern; diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 2b15afdde9ea..4881d1433489 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -431,7 +431,7 @@ public class InputMethodService extends AbstractInputMethodService {                  }              }              // If user uses hard keyboard, IME button should always be shown. -            boolean showing = onEvaluateInputViewShown(); +            boolean showing = isInputViewShown();              mImm.setImeWindowStatus(mToken, IME_ACTIVE | (showing ? IME_VISIBLE : 0),                      mBackDisposition);              if (resultReceiver != null) { diff --git a/core/java/android/net/EthernetDataTracker.java b/core/java/android/net/EthernetDataTracker.java index 27d5a58e4918..7b803a870092 100644 --- a/core/java/android/net/EthernetDataTracker.java +++ b/core/java/android/net/EthernetDataTracker.java @@ -178,6 +178,7 @@ public class EthernetDataTracker implements NetworkStateTracker {                  }                  mLinkProperties = dhcpResults.linkProperties; +                mNetworkInfo.setIsAvailable(true);                  mNetworkInfo.setDetailedState(DetailedState.CONNECTED, null, mHwAddr);                  Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo);                  msg.sendToTarget(); diff --git a/core/java/android/net/SSLCertificateSocketFactory.java b/core/java/android/net/SSLCertificateSocketFactory.java index 2a2f7cf81f84..37f04d308773 100644 --- a/core/java/android/net/SSLCertificateSocketFactory.java +++ b/core/java/android/net/SSLCertificateSocketFactory.java @@ -18,6 +18,9 @@ package android.net;  import android.os.SystemProperties;  import android.util.Log; +import com.android.org.conscrypt.OpenSSLContextImpl; +import com.android.org.conscrypt.OpenSSLSocketImpl; +import com.android.org.conscrypt.SSLClientSessionCache;  import java.io.IOException;  import java.net.InetAddress;  import java.net.Socket; @@ -36,9 +39,6 @@ import javax.net.ssl.SSLSocket;  import javax.net.ssl.SSLSocketFactory;  import javax.net.ssl.TrustManager;  import javax.net.ssl.X509TrustManager; -import org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl; -import org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl; -import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache;  /**   * SSLSocketFactory implementation with several extra features: diff --git a/core/java/android/net/SSLSessionCache.java b/core/java/android/net/SSLSessionCache.java index 4cbeb947b8e3..15421de71111 100644 --- a/core/java/android/net/SSLSessionCache.java +++ b/core/java/android/net/SSLSessionCache.java @@ -16,12 +16,12 @@  package android.net; -import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache; -import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache; -  import android.content.Context;  import android.util.Log; +import com.android.org.conscrypt.FileClientSessionCache; +import com.android.org.conscrypt.SSLClientSessionCache; +  import java.io.File;  import java.io.IOException; diff --git a/core/java/android/net/http/CertificateChainValidator.java b/core/java/android/net/http/CertificateChainValidator.java index f66075d66b75..3652a4c12a19 100644 --- a/core/java/android/net/http/CertificateChainValidator.java +++ b/core/java/android/net/http/CertificateChainValidator.java @@ -16,21 +16,22 @@  package android.net.http; +import com.android.org.conscrypt.SSLParametersImpl; +import com.android.org.conscrypt.TrustManagerImpl; +import java.io.ByteArrayInputStream;  import java.io.IOException;  import java.security.GeneralSecurityException;  import java.security.KeyManagementException;  import java.security.cert.Certificate;  import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory;  import java.security.cert.X509Certificate;  import javax.net.ssl.DefaultHostnameVerifier;  import javax.net.ssl.SSLHandshakeException;  import javax.net.ssl.SSLSession;  import javax.net.ssl.SSLSocket;  import javax.net.ssl.X509TrustManager; -import org.apache.harmony.security.provider.cert.X509CertImpl; -import org.apache.harmony.xnet.provider.jsse.SSLParametersImpl; -import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl;  /**   * Class responsible for all server certificate validation functionality @@ -118,8 +119,14 @@ public class CertificateChainValidator {          X509Certificate[] serverCertificates = new X509Certificate[certChain.length]; -        for (int i = 0; i < certChain.length; ++i) { -            serverCertificates[i] = new X509CertImpl(certChain[i]); +        try { +            CertificateFactory cf = CertificateFactory.getInstance("X.509"); +            for (int i = 0; i < certChain.length; ++i) { +                serverCertificates[i] = (X509Certificate) cf.generateCertificate( +                        new ByteArrayInputStream(certChain[i])); +            } +        } catch (CertificateException e) { +            throw new IOException("can't read certificate", e);          }          return verifyServerDomainAndCertificates(serverCertificates, domain, authType); diff --git a/core/java/android/net/http/HttpResponseCache.java b/core/java/android/net/http/HttpResponseCache.java index 73f3d7cc339a..bd50bcf22890 100644 --- a/core/java/android/net/http/HttpResponseCache.java +++ b/core/java/android/net/http/HttpResponseCache.java @@ -17,21 +17,21 @@  package android.net.http;  import android.content.Context; +import com.android.okhttp.ResponseSource; +import com.android.okhttp.internal.DiskLruCache; +import com.android.okhttp.internal.http.OkResponseCache;  import java.io.Closeable;  import java.io.File;  import java.io.IOException;  import java.net.CacheRequest;  import java.net.CacheResponse; -import java.net.ExtendedResponseCache;  import java.net.HttpURLConnection;  import java.net.ResponseCache; -import java.net.ResponseSource;  import java.net.URI;  import java.net.URLConnection;  import java.util.List;  import java.util.Map;  import javax.net.ssl.HttpsURLConnection; -import libcore.io.DiskLruCache;  import libcore.io.IoUtils;  import org.apache.http.impl.client.DefaultHttpClient; @@ -151,13 +151,12 @@ import org.apache.http.impl.client.DefaultHttpClient;   *       } catch (Exception httpResponseCacheNotAvailable) {   *       }}</pre>   */ -public final class HttpResponseCache extends ResponseCache -        implements Closeable, ExtendedResponseCache { +public final class HttpResponseCache extends ResponseCache implements Closeable { -    private final libcore.net.http.HttpResponseCache delegate; +    private final com.android.okhttp.HttpResponseCache delegate; -    private HttpResponseCache(File directory, long maxSize) throws IOException { -        this.delegate = new libcore.net.http.HttpResponseCache(directory, maxSize); +    private HttpResponseCache(com.android.okhttp.HttpResponseCache delegate) { +        this.delegate = delegate;      }      /** @@ -166,7 +165,12 @@ public final class HttpResponseCache extends ResponseCache       */      public static HttpResponseCache getInstalled() {          ResponseCache installed = ResponseCache.getDefault(); -        return installed instanceof HttpResponseCache ? (HttpResponseCache) installed : null; +        if (installed instanceof com.android.okhttp.HttpResponseCache) { +            return new HttpResponseCache( +                    (com.android.okhttp.HttpResponseCache) installed); +        } + +        return null;      }      /** @@ -181,22 +185,25 @@ public final class HttpResponseCache extends ResponseCache       *     warning.       */      public static HttpResponseCache install(File directory, long maxSize) throws IOException { -        HttpResponseCache installed = getInstalled(); -        if (installed != null) { +        ResponseCache installed = ResponseCache.getDefault(); +        if (installed instanceof com.android.okhttp.HttpResponseCache) { +            com.android.okhttp.HttpResponseCache installedCache = +                    (com.android.okhttp.HttpResponseCache) installed;              // don't close and reopen if an equivalent cache is already installed -            DiskLruCache installedCache = installed.delegate.getCache();              if (installedCache.getDirectory().equals(directory) -                    && installedCache.maxSize() == maxSize +                    && installedCache.getMaxSize() == maxSize                      && !installedCache.isClosed()) { -                return installed; +                return new HttpResponseCache(installedCache);              } else { -                IoUtils.closeQuietly(installed); +                // The HttpResponseCache that owns this object is about to be replaced. +                installedCache.close();              }          } -        HttpResponseCache result = new HttpResponseCache(directory, maxSize); -        ResponseCache.setDefault(result); -        return result; +        com.android.okhttp.HttpResponseCache responseCache = +                new com.android.okhttp.HttpResponseCache(directory, maxSize); +        ResponseCache.setDefault(responseCache); +        return new HttpResponseCache(responseCache);      }      @Override public CacheResponse get(URI uri, String requestMethod, @@ -214,7 +221,7 @@ public final class HttpResponseCache extends ResponseCache       * deletion is pending.       */      public long size() { -        return delegate.getCache().size(); +        return delegate.getSize();      }      /** @@ -222,7 +229,7 @@ public final class HttpResponseCache extends ResponseCache       * its data.       */      public long maxSize() { -        return delegate.getCache().maxSize(); +        return delegate.getMaxSize();      }      /** @@ -232,7 +239,7 @@ public final class HttpResponseCache extends ResponseCache       */      public void flush() {          try { -            delegate.getCache().flush(); +            delegate.flush();          } catch (IOException ignored) {          }      } @@ -263,39 +270,24 @@ public final class HttpResponseCache extends ResponseCache          return delegate.getRequestCount();      } -    /** @hide */ -    @Override public void trackResponse(ResponseSource source) { -        delegate.trackResponse(source); -    } - -    /** @hide */ -    @Override public void trackConditionalCacheHit() { -        delegate.trackConditionalCacheHit(); -    } - -    /** @hide */ -    @Override public void update(CacheResponse conditionalCacheHit, HttpURLConnection connection) { -        delegate.update(conditionalCacheHit, connection); -    } -      /**       * Uninstalls the cache and releases any active resources. Stored contents       * will remain on the filesystem.       */      @Override public void close() throws IOException { -        if (ResponseCache.getDefault() == this) { +        if (ResponseCache.getDefault() == this.delegate) {              ResponseCache.setDefault(null);          } -        delegate.getCache().close(); +        delegate.close();      }      /**       * Uninstalls the cache and deletes all of its stored contents.       */      public void delete() throws IOException { -        if (ResponseCache.getDefault() == this) { +        if (ResponseCache.getDefault() == this.delegate) {              ResponseCache.setDefault(null);          } -        delegate.getCache().delete(); +        delegate.delete();      }  } diff --git a/core/java/android/net/http/HttpsConnection.java b/core/java/android/net/http/HttpsConnection.java index 84765a5cbcd2..f421d29dcabc 100644 --- a/core/java/android/net/http/HttpsConnection.java +++ b/core/java/android/net/http/HttpsConnection.java @@ -18,9 +18,9 @@ package android.net.http;  import android.content.Context;  import android.util.Log; -import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache; -import org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl; -import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache; +import com.android.org.conscrypt.FileClientSessionCache; +import com.android.org.conscrypt.OpenSSLContextImpl; +import com.android.org.conscrypt.SSLClientSessionCache;  import org.apache.http.Header;  import org.apache.http.HttpException;  import org.apache.http.HttpHost; diff --git a/core/java/android/net/http/X509TrustManagerExtensions.java b/core/java/android/net/http/X509TrustManagerExtensions.java index 64eacbc9ba0a..cfe5f27b9e86 100644 --- a/core/java/android/net/http/X509TrustManagerExtensions.java +++ b/core/java/android/net/http/X509TrustManagerExtensions.java @@ -16,7 +16,7 @@  package android.net.http; -import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl; +import com.android.org.conscrypt.TrustManagerImpl;  import java.security.cert.CertificateException;  import java.security.cert.X509Certificate; diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java index e343e830d894..6c0296537b50 100644 --- a/core/java/android/preference/Preference.java +++ b/core/java/android/preference/Preference.java @@ -1072,6 +1072,9 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis                  || (mOrder == DEFAULT_ORDER && another.mOrder != DEFAULT_ORDER)) {              // Do order comparison              return mOrder - another.mOrder;  +        } else if (mTitle == another.mTitle) { +            // If titles are null or share same object comparison +            return 0;          } else if (mTitle == null) {              return 1;          } else if (another.mTitle == null) { diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java index c497e35f7077..d1f35dd9503e 100644..100755 --- a/core/java/android/text/format/DateFormat.java +++ b/core/java/android/text/format/DateFormat.java @@ -280,13 +280,9 @@ public class DateFormat {              }          } -        /* -         * The setting is not set; use the default. -         * We use a resource string here instead of just DateFormat.SHORT -         * so that we get a four-digit year instead a two-digit year. -         */ -        value = context.getString(R.string.numeric_date_format); -        return value; +        // The setting is not set; use the locale's default. +        LocaleData d = LocaleData.get(context.getResources().getConfiguration().locale); +        return d.shortDateFormat4;      }      /** @@ -313,39 +309,13 @@ public class DateFormat {       * Gets the current date format stored as a char array. The array will contain       * 3 elements ({@link #DATE}, {@link #MONTH}, and {@link #YEAR}) in the order       * specified by the user's format preference.  Note that this order is -     * only appropriate for all-numeric dates; spelled-out (MEDIUM and LONG) +     * <i>only</i> appropriate for all-numeric dates; spelled-out (MEDIUM and LONG)       * dates will generally contain other punctuation, spaces, or words,       * not just the day, month, and year, and not necessarily in the same       * order returned here.       */      public static char[] getDateFormatOrder(Context context) { -        char[] order = new char[] {DATE, MONTH, YEAR}; -        String value = getDateFormatString(context); -        int index = 0; -        boolean foundDate = false; -        boolean foundMonth = false; -        boolean foundYear = false; - -        for (char c : value.toCharArray()) { -            if (!foundDate && (c == DATE)) { -                foundDate = true; -                order[index] = DATE; -                index++; -            } - -            if (!foundMonth && (c == MONTH || c == STANDALONE_MONTH)) { -                foundMonth = true; -                order[index] = MONTH; -                index++; -            } - -            if (!foundYear && (c == YEAR)) { -                foundYear = true; -                order[index] = YEAR; -                index++; -            } -        } -        return order; +        return ICU.getDateFormatOrder(getDateFormatString(context));      }      private static String getDateFormatString(Context context) { diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java index 366abd36294d..7e8fee56ea95 100644 --- a/core/java/android/util/SparseArray.java +++ b/core/java/android/util/SparseArray.java @@ -118,7 +118,7 @@ public class SparseArray<E> implements Cloneable {              mGarbage = true;          }      } -     +      private void gc() {          // Log.e("SparseArray", "gc start with " + mSize); @@ -214,7 +214,7 @@ public class SparseArray<E> implements Cloneable {      /**       * Given an index in the range <code>0...size()-1</code>, returns       * the key from the <code>index</code>th key-value mapping that this -     * SparseArray stores.   +     * SparseArray stores.       */      public int keyAt(int index) {          if (mGarbage) { @@ -223,11 +223,11 @@ public class SparseArray<E> implements Cloneable {          return mKeys[index];      } -     +      /**       * Given an index in the range <code>0...size()-1</code>, returns       * the value from the <code>index</code>th key-value mapping that this -     * SparseArray stores.   +     * SparseArray stores.       */      @SuppressWarnings("unchecked")      public E valueAt(int index) { @@ -241,7 +241,7 @@ public class SparseArray<E> implements Cloneable {      /**       * Given an index in the range <code>0...size()-1</code>, sets a new       * value for the <code>index</code>th key-value mapping that this -     * SparseArray stores.   +     * SparseArray stores.       */      public void setValueAt(int index, E value) {          if (mGarbage) { @@ -250,7 +250,7 @@ public class SparseArray<E> implements Cloneable {          mValues[index] = value;      } -     +      /**       * Returns the index for which {@link #keyAt} would return the       * specified key, or a negative number if the specified @@ -268,9 +268,11 @@ public class SparseArray<E> implements Cloneable {       * Returns an index for which {@link #valueAt} would return the       * specified key, or a negative number if no keys map to the       * specified value. -     * Beware that this is a linear search, unlike lookups by key, +     * <p>Beware that this is a linear search, unlike lookups by key,       * and that multiple keys can map to the same value and this will       * find only one of them. +     * <p>Note also that unlike most collections' {@code indexOf} methods, +     * this method compares values using {@code ==} rather than {@code equals}.       */      public int indexOfValue(E value) {          if (mGarbage) { @@ -332,7 +334,7 @@ public class SparseArray<E> implements Cloneable {          mValues[pos] = value;          mSize = pos + 1;      } -     +      private static int binarySearch(int[] a, int start, int len, int key) {          int high = start + len, low = start - 1, guess; diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java index 5a4f3227ec90..33964a067818 100644 --- a/core/java/android/util/TimeUtils.java +++ b/core/java/android/util/TimeUtils.java @@ -235,7 +235,7 @@ public class TimeUtils {       * during the lifetime of an activity.       */      public static String getTimeZoneDatabaseVersion() { -        return ZoneInfoDB.getVersion(); +        return ZoneInfoDB.getInstance().getVersion();      }      /** @hide Field length that can hold 999 days of time */ diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index 0546d249dbe3..5db3909b0d0b 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -634,8 +634,8 @@ public class KeyEvent extends InputEvent implements Parcelable {      // NOTE: If you add a new keycode here you must also add it to:      //  isSystem() -    //  native/include/android/keycodes.h -    //  frameworks/base/include/ui/KeycodeLabels.h +    //  frameworks/native/include/android/keycodes.h +    //  frameworks/base/include/androidfw/KeycodeLabels.h      //  external/webkit/WebKit/android/plugins/ANPKeyCodes.h      //  frameworks/base/core/res/res/values/attrs.xml      //  emulator? diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 01d80ac337c8..50638aaf4491 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10680,8 +10680,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,       * handler can be used to pump events in the UI events queue.       */      public Handler getHandler() { -        if (mAttachInfo != null) { -            return mAttachInfo.mHandler; +        final AttachInfo attachInfo = mAttachInfo; +        if (attachInfo != null) { +            return attachInfo.mHandler;          }          return null;      } diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 95d65eb3e761..3aa4cfb34374 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -1509,9 +1509,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager                      if (lastHoverTarget != null) {                          lastHoverTarget.next = hoverTarget;                      } else { -                        lastHoverTarget = hoverTarget;                          mFirstHoverTarget = hoverTarget;                      } +                    lastHoverTarget = hoverTarget;                      // Dispatch the event to the child.                      if (action == MotionEvent.ACTION_HOVER_ENTER) { diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index ce886f289a79..6955d149fbfd 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -40,13 +40,13 @@ import android.view.WindowManager;  import junit.framework.Assert; +import java.io.ByteArrayInputStream;  import java.io.IOException;  import java.io.InputStream;  import java.lang.ref.WeakReference;  import java.net.URLEncoder; -import java.nio.charset.Charsets;  import java.security.PrivateKey; -import java.security.cert.CertificateEncodingException; +import java.security.cert.CertificateFactory;  import java.security.cert.X509Certificate;  import java.util.ArrayList;  import java.util.HashMap; @@ -55,9 +55,8 @@ import java.util.Iterator;  import java.util.Map;  import java.util.Set; -import org.apache.harmony.security.provider.cert.X509CertImpl; -import org.apache.harmony.xnet.provider.jsse.OpenSSLKey; -import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder; +import com.android.org.conscrypt.OpenSSLKey; +import com.android.org.conscrypt.OpenSSLKeyHolder;  class BrowserFrame extends Handler { @@ -1081,10 +1080,12 @@ class BrowserFrame extends Handler {              String url) {          final SslError sslError;          try { -            X509Certificate cert = new X509CertImpl(certDER); +            CertificateFactory cf = CertificateFactory.getInstance("X.509"); +            X509Certificate cert = (X509Certificate) cf.generateCertificate( +                    new ByteArrayInputStream(certDER));              SslCertificate sslCert = new SslCertificate(cert);              sslError = SslError.SslErrorFromChromiumErrorCode(certError, sslCert, url); -        } catch (IOException e) { +        } catch (Exception e) {              // Can't get the certificate, not much to do.              Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling");              nativeSslCertErrorCancel(handle, certError); @@ -1202,9 +1203,11 @@ class BrowserFrame extends Handler {       */      private void setCertificate(byte cert_der[]) {          try { -            X509Certificate cert = new X509CertImpl(cert_der); +            CertificateFactory cf = CertificateFactory.getInstance("X.509"); +            X509Certificate cert = (X509Certificate) cf.generateCertificate( +                    new ByteArrayInputStream(cert_der));              mCallbackProxy.onReceivedCertificate(new SslCertificate(cert)); -        } catch (IOException e) { +        } catch (Exception e) {              // Can't get the certificate, not much to do.              Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling");              return; diff --git a/core/java/android/webkit/ClientCertRequestHandler.java b/core/java/android/webkit/ClientCertRequestHandler.java index f5a60f6e871d..d7a68060bf65 100644 --- a/core/java/android/webkit/ClientCertRequestHandler.java +++ b/core/java/android/webkit/ClientCertRequestHandler.java @@ -20,9 +20,9 @@ import android.os.Handler;  import java.security.PrivateKey;  import java.security.cert.CertificateEncodingException;  import java.security.cert.X509Certificate; -import org.apache.harmony.xnet.provider.jsse.NativeCrypto; -import org.apache.harmony.xnet.provider.jsse.OpenSSLKey; -import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder; +import com.android.org.conscrypt.NativeCrypto; +import com.android.org.conscrypt.OpenSSLKey; +import com.android.org.conscrypt.OpenSSLKeyHolder;  /**   * ClientCertRequestHandler: class responsible for handling client diff --git a/core/java/android/widget/CalendarView.java b/core/java/android/widget/CalendarView.java index 36d33e718e51..6970cdeab534 100644 --- a/core/java/android/widget/CalendarView.java +++ b/core/java/android/widget/CalendarView.java @@ -247,7 +247,7 @@ public class CalendarView extends FrameLayout {      /**       * Which month should be displayed/highlighted [0-11].       */ -    private int mCurrentMonthDisplayed; +    private int mCurrentMonthDisplayed = -1;      /**       * Used for tracking during a scroll. diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java index 8f515f53a295..d03161e4bc46 100644 --- a/core/java/android/widget/DatePicker.java +++ b/core/java/android/widget/DatePicker.java @@ -23,6 +23,7 @@ import android.content.res.TypedArray;  import android.os.Parcel;  import android.os.Parcelable;  import android.text.TextUtils; +import android.text.InputType;  import android.text.format.DateFormat;  import android.text.format.DateUtils;  import android.util.AttributeSet; @@ -38,6 +39,7 @@ import android.widget.NumberPicker.OnValueChangeListener;  import com.android.internal.R; +import java.text.DateFormatSymbols;  import java.text.ParseException;  import java.text.SimpleDateFormat;  import java.util.Arrays; @@ -45,6 +47,8 @@ import java.util.Calendar;  import java.util.Locale;  import java.util.TimeZone; +import libcore.icu.ICU; +  /**   * This class is a widget for selecting a date. The date can be selected by a   * year, month, and day spinners or a {@link CalendarView}. The set of spinners @@ -477,14 +481,27 @@ public class DatePicker extends FrameLayout {          mCurrentDate = getCalendarForLocale(mCurrentDate, locale);          mNumberOfMonths = mTempDate.getActualMaximum(Calendar.MONTH) + 1; -        mShortMonths = new String[mNumberOfMonths]; -        for (int i = 0; i < mNumberOfMonths; i++) { -            mShortMonths[i] = DateUtils.getMonthString(Calendar.JANUARY + i, -                    DateUtils.LENGTH_MEDIUM); +        mShortMonths = new DateFormatSymbols().getShortMonths(); + +        if (usingNumericMonths()) { +            // We're in a locale where a date should either be all-numeric, or all-text. +            // All-text would require custom NumberPicker formatters for day and year. +            mShortMonths = new String[mNumberOfMonths]; +            for (int i = 0; i < mNumberOfMonths; ++i) { +                mShortMonths[i] = String.format("%d", i + 1); +            }          }      }      /** +     * Tests whether the current locale is one where there are no real month names, +     * such as Chinese, Japanese, or Korean locales. +     */ +    private boolean usingNumericMonths() { +        return Character.isDigit(mShortMonths[Calendar.JANUARY].charAt(0)); +    } + +    /**       * Gets a calendar for locale bootstrapped with the value of a given calendar.       *       * @param oldCalendar The old calendar. @@ -508,24 +525,27 @@ public class DatePicker extends FrameLayout {       */      private void reorderSpinners() {          mSpinners.removeAllViews(); -        char[] order = DateFormat.getDateFormatOrder(getContext()); +        // We use numeric spinners for year and day, but textual months. Ask icu4c what +        // order the user's locale uses for that combination. http://b/7207103. +        String pattern = ICU.getBestDateTimePattern("yyyyMMMdd", Locale.getDefault().toString()); +        char[] order = ICU.getDateFormatOrder(pattern);          final int spinnerCount = order.length;          for (int i = 0; i < spinnerCount; i++) {              switch (order[i]) { -                case DateFormat.DATE: +                case 'd':                      mSpinners.addView(mDaySpinner);                      setImeOptions(mDaySpinner, spinnerCount, i);                      break; -                case DateFormat.MONTH: +                case 'M':                      mSpinners.addView(mMonthSpinner);                      setImeOptions(mMonthSpinner, spinnerCount, i);                      break; -                case DateFormat.YEAR: +                case 'y':                      mSpinners.addView(mYearSpinner);                      setImeOptions(mYearSpinner, spinnerCount, i);                      break;                  default: -                    throw new IllegalArgumentException(); +                    throw new IllegalArgumentException(Arrays.toString(order));              }          }      } @@ -660,6 +680,10 @@ public class DatePicker extends FrameLayout {          mYearSpinner.setValue(mCurrentDate.get(Calendar.YEAR));          mMonthSpinner.setValue(mCurrentDate.get(Calendar.MONTH));          mDaySpinner.setValue(mCurrentDate.get(Calendar.DAY_OF_MONTH)); + +        if (usingNumericMonths()) { +            mMonthSpinnerInput.setRawInputType(InputType.TYPE_CLASS_NUMBER); +        }      }      /** diff --git a/core/java/android/widget/HeaderViewListAdapter.java b/core/java/android/widget/HeaderViewListAdapter.java index e2a269ea13ef..f9d8f920f883 100644 --- a/core/java/android/widget/HeaderViewListAdapter.java +++ b/core/java/android/widget/HeaderViewListAdapter.java @@ -144,7 +144,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {      }      public boolean isEnabled(int position) { -        // Header (negative positions will throw an ArrayIndexOutOfBoundsException) +        // Header (negative positions will throw an IndexOutOfBoundsException)          int numHeaders = getHeadersCount();          if (position < numHeaders) {              return mHeaderViewInfos.get(position).isSelectable; @@ -160,12 +160,12 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {              }          } -        // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException) +        // Footer (off-limits positions will throw an IndexOutOfBoundsException)          return mFooterViewInfos.get(adjPosition - adapterCount).isSelectable;      }      public Object getItem(int position) { -        // Header (negative positions will throw an ArrayIndexOutOfBoundsException) +        // Header (negative positions will throw an IndexOutOfBoundsException)          int numHeaders = getHeadersCount();          if (position < numHeaders) {              return mHeaderViewInfos.get(position).data; @@ -181,7 +181,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {              }          } -        // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException) +        // Footer (off-limits positions will throw an IndexOutOfBoundsException)          return mFooterViewInfos.get(adjPosition - adapterCount).data;      } @@ -205,7 +205,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {      }      public View getView(int position, View convertView, ViewGroup parent) { -        // Header (negative positions will throw an ArrayIndexOutOfBoundsException) +        // Header (negative positions will throw an IndexOutOfBoundsException)          int numHeaders = getHeadersCount();          if (position < numHeaders) {              return mHeaderViewInfos.get(position).view; @@ -221,7 +221,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {              }          } -        // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException) +        // Footer (off-limits positions will throw an IndexOutOfBoundsException)          return mFooterViewInfos.get(adjPosition - adapterCount).view;      } diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java index e6796cb343df..e33c4d4da7a6 100644 --- a/core/java/android/widget/TimePicker.java +++ b/core/java/android/widget/TimePicker.java @@ -237,6 +237,7 @@ public class TimePicker extends FrameLayout {          // update controls to initial state          updateHourControl(); +        updateMinuteControl();          updateAmPmControl();          setOnTimeChangedListener(NO_OP_CHANGE_LISTENER); @@ -428,6 +429,7 @@ public class TimePicker extends FrameLayout {          updateHourControl();          // set value after spinner range is updated          setCurrentHour(currentHour); +        updateMinuteControl();          updateAmPmControl();      } @@ -508,6 +510,14 @@ public class TimePicker extends FrameLayout {          }      } +    private void updateMinuteControl() { +        if (is24HourView()) { +            mMinuteSpinnerInput.setImeOptions(EditorInfo.IME_ACTION_DONE); +        } else { +            mMinuteSpinnerInput.setImeOptions(EditorInfo.IME_ACTION_NEXT); +        } +    } +      private void updateAmPmControl() {          if (is24HourView()) {              if (mAmPmSpinner != null) { diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 2184fd2e30d5..fb22df7e4850 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -34,6 +34,7 @@ import dalvik.system.Zygote;  import libcore.io.IoUtils;  import libcore.io.Libcore; +import libcore.io.OsConstants;  import java.io.BufferedReader;  import java.io.FileDescriptor; @@ -472,12 +473,25 @@ public class ZygoteInit {       */      private static boolean startSystemServer()              throws MethodAndArgsCaller, RuntimeException { +        long capabilities = posixCapabilitiesAsBits( +            OsConstants.CAP_KILL, +            OsConstants.CAP_NET_ADMIN, +            OsConstants.CAP_NET_BIND_SERVICE, +            OsConstants.CAP_NET_BROADCAST, +            OsConstants.CAP_NET_RAW, +            OsConstants.CAP_SYS_BOOT, +            OsConstants.CAP_SYS_MODULE, +            OsConstants.CAP_SYS_NICE, +            OsConstants.CAP_SYS_RESOURCE, +            OsConstants.CAP_SYS_TIME, +            OsConstants.CAP_SYS_TTY_CONFIG +        );          /* Hardcoded command line to start the system server */          String args[] = {              "--setuid=1000",              "--setgid=1000",              "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,3001,3002,3003,3006,3007", -            "--capabilities=130104352,130104352", +            "--capabilities=" + capabilities + "," + capabilities,              "--runtime-init",              "--nice-name=system_server",              "com.android.server.SystemServer", @@ -511,6 +525,20 @@ public class ZygoteInit {          return true;      } +    /** +     * Gets the bit array representation of the provided list of POSIX capabilities. +     */ +    private static long posixCapabilitiesAsBits(int... capabilities) { +        long result = 0; +        for (int capability : capabilities) { +            if ((capability < 0) || (capability > OsConstants.CAP_LAST_CAP)) { +                throw new IllegalArgumentException(String.valueOf(capability)); +            } +            result |= (1L << capability); +        } +        return result; +    } +      public static void main(String argv[]) {          try {              // Start profiling the zygote initialization. diff --git a/core/jni/Android.mk b/core/jni/Android.mk index 594d5789517a..337c1ec994c3 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -230,6 +230,7 @@ endif  LOCAL_MODULE:= libandroid_runtime +include external/stlport/libstlport.mk  include $(BUILD_SHARED_LIBRARY)  include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/core/jni/android_os_SELinux.cpp b/core/jni/android_os_SELinux.cpp index 0a97f3922113..ca278cf00d4f 100644 --- a/core/jni/android_os_SELinux.cpp +++ b/core/jni/android_os_SELinux.cpp @@ -102,7 +102,7 @@ static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) {          return NULL;      } -    security_context_t tmp; +    security_context_t tmp = NULL;      int ret = getpeercon(fd, &tmp);      Unique_SecurityContext context(tmp); @@ -111,7 +111,7 @@ static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) {          contextStr.reset(env->NewStringUTF(context.get()));      } -    ALOGV("getPeerCon(%d) => %s", fd, contextStr.get()); +    ALOGV("getPeerCon(%d) => %s", fd, context.get());      return contextStr.release();  } @@ -198,7 +198,7 @@ static jstring getFileCon(JNIEnv *env, jobject, jstring pathStr) {          return NULL;      } -    security_context_t tmp; +    security_context_t tmp = NULL;      int ret = getfilecon(path.c_str(), &tmp);      Unique_SecurityContext context(tmp); @@ -224,7 +224,7 @@ static jstring getCon(JNIEnv *env, jobject) {          return NULL;      } -    security_context_t tmp; +    security_context_t tmp = NULL;      int ret = getcon(&tmp);      Unique_SecurityContext context(tmp); @@ -251,7 +251,7 @@ static jstring getPidCon(JNIEnv *env, jobject, jint pid) {          return NULL;      } -    security_context_t tmp; +    security_context_t tmp = NULL;      int ret = getpidcon(static_cast<pid_t>(pid), &tmp);      Unique_SecurityContext context(tmp); diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index dc4d9450ffaa..32f6ecf7cda3 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -293,17 +293,10 @@ static jobjectArray android_content_AssetManager_list(JNIEnv* env, jobject clazz          return NULL;      } -    jclass cls = env->FindClass("java/lang/String"); -    LOG_FATAL_IF(cls == NULL, "No string class?!?"); -    if (cls == NULL) { -        delete dir; -        return NULL; -    } -      size_t N = dir->getFileCount();      jobjectArray array = env->NewObjectArray(dir->getFileCount(), -                                                cls, NULL); +                                                g_stringClass, NULL);      if (array == NULL) {          delete dir;          return NULL; @@ -1459,19 +1452,13 @@ static jobjectArray android_content_AssetManager_getArrayStringResource(JNIEnv*      }      const ResTable& res(am->getResources()); -    jclass cls = env->FindClass("java/lang/String"); -    LOG_FATAL_IF(cls == NULL, "No string class?!?"); -    if (cls == NULL) { -        return NULL; -    } -      const ResTable::bag_entry* startOfBag;      const ssize_t N = res.lockBag(arrayResId, &startOfBag);      if (N < 0) {          return NULL;      } -    jobjectArray array = env->NewObjectArray(N, cls, NULL); +    jobjectArray array = env->NewObjectArray(N, g_stringClass, NULL);      if (env->ExceptionCheck()) {          res.unlockBag(startOfBag);          return NULL; @@ -1768,6 +1755,7 @@ int register_android_content_AssetManager(JNIEnv* env)      jclass stringClass = env->FindClass("java/lang/String");      LOG_FATAL_IF(stringClass == NULL, "Unable to find class java/lang/String");      g_stringClass = (jclass)env->NewGlobalRef(stringClass); +    LOG_FATAL_IF(g_stringClass == NULL, "Unable to create global reference for class java/lang/String");      return AndroidRuntime::registerNativeMethods(env,              "android/content/res/AssetManager", gAssetManagerMethods, NELEM(gAssetManagerMethods)); diff --git a/core/res/res/values-af/donottranslate-cldr.xml b/core/res/res/values-af/donottranslate-cldr.xml index ca693b69fb01..db900c7c9d49 100644..100755 --- a/core/res/res/values-af/donottranslate-cldr.xml +++ b/core/res/res/values-af/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%Y/%m/%d</string> -    <string name="numeric_date_format">yyyy/MM/dd</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-am/donottranslate-cldr.xml b/core/res/res/values-am/donottranslate-cldr.xml index a7cb1c723112..bd8938dbb7e2 100644..100755 --- a/core/res/res/values-am/donottranslate-cldr.xml +++ b/core/res/res/values-am/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-ar-rEG/donottranslate-cldr.xml b/core/res/res/values-ar-rEG/donottranslate-cldr.xml index 74807564c7c4..c6159a114449 100644..100755 --- a/core/res/res/values-ar-rEG/donottranslate-cldr.xml +++ b/core/res/res/values-ar-rEG/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e/%-m/%Y</string> -    <string name="numeric_date_format">d/M/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B، %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-ar/donottranslate-cldr.xml b/core/res/res/values-ar/donottranslate-cldr.xml index 44d8a2606a27..e0a5bc0fd43b 100644..100755 --- a/core/res/res/values-ar/donottranslate-cldr.xml +++ b/core/res/res/values-ar/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e/%-m/%Y</string> -    <string name="numeric_date_format">d/M/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B، %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-be/donottranslate-cldr.xml b/core/res/res/values-be/donottranslate-cldr.xml index 926b4bbecbf5..3a0372a88db7 100644..100755 --- a/core/res/res/values-be/donottranslate-cldr.xml +++ b/core/res/res/values-be/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l.%M %p</string>      <string name="hour_minute_cap_ampm">%-l.%M %p</string>      <string name="numeric_date">%-e.%-m.%Y</string> -    <string name="numeric_date_format">d.M.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H.%M.%S</string> diff --git a/core/res/res/values-bg/donottranslate-cldr.xml b/core/res/res/values-bg/donottranslate-cldr.xml index e7ad610b399e..7719fa23bc73 100644..100755 --- a/core/res/res/values-bg/donottranslate-cldr.xml +++ b/core/res/res/values-bg/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-ca/donottranslate-cldr.xml b/core/res/res/values-ca/donottranslate-cldr.xml index 08721258dc3c..4950f6731eaf 100644..100755 --- a/core/res/res/values-ca/donottranslate-cldr.xml +++ b/core/res/res/values-ca/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B de %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-cs/donottranslate-cldr.xml b/core/res/res/values-cs/donottranslate-cldr.xml index bbf42f0afb17..709e48bb6fde 100644..100755 --- a/core/res/res/values-cs/donottranslate-cldr.xml +++ b/core/res/res/values-cs/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e. %-m. %Y</string> -    <string name="numeric_date_format">d. M. yyyy</string>      <string name="numeric_date_template">"%s. %s. %s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-da/donottranslate-cldr.xml b/core/res/res/values-da/donottranslate-cldr.xml index 427fd0c2680b..68cb1793591d 100644..100755 --- a/core/res/res/values-da/donottranslate-cldr.xml +++ b/core/res/res/values-da/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l.%M %p</string>      <string name="hour_minute_cap_ampm">%-l.%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-de/donottranslate-cldr.xml b/core/res/res/values-de/donottranslate-cldr.xml index 850fe26348a8..d07c11efe96d 100644..100755 --- a/core/res/res/values-de/donottranslate-cldr.xml +++ b/core/res/res/values-de/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-el/donottranslate-cldr.xml b/core/res/res/values-el/donottranslate-cldr.xml index dfa199ddab78..e8ae35363c51 100644..100755 --- a/core/res/res/values-el/donottranslate-cldr.xml +++ b/core/res/res/values-el/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-en-rAU/donottranslate-cldr.xml b/core/res/res/values-en-rAU/donottranslate-cldr.xml index 7ccff4d725e6..c4a650b8e762 100644..100755 --- a/core/res/res/values-en-rAU/donottranslate-cldr.xml +++ b/core/res/res/values-en-rAU/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%-e/%m/%Y</string> -    <string name="numeric_date_format">d/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-en-rCA/donottranslate-cldr.xml b/core/res/res/values-en-rCA/donottranslate-cldr.xml index 21e9b7ee8403..6802eeee3826 100644..100755 --- a/core/res/res/values-en-rCA/donottranslate-cldr.xml +++ b/core/res/res/values-en-rCA/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%Y-%m-%d</string> -    <string name="numeric_date_format">yyyy-MM-dd</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%B %-e, %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-en-rGB/donottranslate-cldr.xml b/core/res/res/values-en-rGB/donottranslate-cldr.xml index 22a8e4171750..182a408fd5d0 100644..100755 --- a/core/res/res/values-en-rGB/donottranslate-cldr.xml +++ b/core/res/res/values-en-rGB/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-en-rIE/donottranslate-cldr.xml b/core/res/res/values-en-rIE/donottranslate-cldr.xml index c88d86c01d31..d8e83c64e1f0 100644..100755 --- a/core/res/res/values-en-rIE/donottranslate-cldr.xml +++ b/core/res/res/values-en-rIE/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-en-rIN/donottranslate-cldr.xml b/core/res/res/values-en-rIN/donottranslate-cldr.xml index 3b7a0ca08e63..be5b222bcdaa 100644..100755 --- a/core/res/res/values-en-rIN/donottranslate-cldr.xml +++ b/core/res/res/values-en-rIN/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-en-rNZ/donottranslate-cldr.xml b/core/res/res/values-en-rNZ/donottranslate-cldr.xml index 9156376a1941..fe1022c92d32 100644..100755 --- a/core/res/res/values-en-rNZ/donottranslate-cldr.xml +++ b/core/res/res/values-en-rNZ/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%-e/%m/%Y</string> -    <string name="numeric_date_format">d/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-en-rUS/donottranslate-cldr.xml b/core/res/res/values-en-rUS/donottranslate-cldr.xml index 4d37d47e1d9f..9a9885457491 100644..100755 --- a/core/res/res/values-en-rUS/donottranslate-cldr.xml +++ b/core/res/res/values-en-rUS/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%-m/%-e/%Y</string> -    <string name="numeric_date_format">M/d/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%B %-e, %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-en-rZA/donottranslate-cldr.xml b/core/res/res/values-en-rZA/donottranslate-cldr.xml index 5ae38c14e661..9b78dc35eca1 100644..100755 --- a/core/res/res/values-en-rZA/donottranslate-cldr.xml +++ b/core/res/res/values-en-rZA/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%Y/%m/%d</string> -    <string name="numeric_date_format">yyyy/MM/dd</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-es-rUS/donottranslate-cldr.xml b/core/res/res/values-es-rUS/donottranslate-cldr.xml index 2339066979f0..6d54d470ba3b 100644..100755 --- a/core/res/res/values-es-rUS/donottranslate-cldr.xml +++ b/core/res/res/values-es-rUS/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-m/%-e/%Y</string> -    <string name="numeric_date_format">M/d/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e de %B de %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-es/donottranslate-cldr.xml b/core/res/res/values-es/donottranslate-cldr.xml index dd8a8fa66f69..d3e9a9a483cd 100644..100755 --- a/core/res/res/values-es/donottranslate-cldr.xml +++ b/core/res/res/values-es/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e de %B de %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-et/donottranslate-cldr.xml b/core/res/res/values-et/donottranslate-cldr.xml index 912df106e47b..cddec59ec893 100644..100755 --- a/core/res/res/values-et/donottranslate-cldr.xml +++ b/core/res/res/values-et/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-fa/donottranslate-cldr.xml b/core/res/res/values-fa/donottranslate-cldr.xml index e1c8fec0ad51..3cd306d3eb01 100644..100755 --- a/core/res/res/values-fa/donottranslate-cldr.xml +++ b/core/res/res/values-fa/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%Y/%-m/%-e</string> -    <string name="numeric_date_format">yyyy/M/d</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-fi-rFI/donottranslate-cldr.xml b/core/res/res/values-fi-rFI/donottranslate-cldr.xml index 32b780351611..3313e825634a 100644..100755 --- a/core/res/res/values-fi-rFI/donottranslate-cldr.xml +++ b/core/res/res/values-fi-rFI/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l.%M %p</string>      <string name="hour_minute_cap_ampm">%-l.%M %^p</string>      <string name="numeric_date">%-e.%-m.%Y</string> -    <string name="numeric_date_format">d.M.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%-k.%M.%S</string> diff --git a/core/res/res/values-fi/donottranslate-cldr.xml b/core/res/res/values-fi/donottranslate-cldr.xml index df6f78f8dfe2..a7948e562e2f 100644..100755 --- a/core/res/res/values-fi/donottranslate-cldr.xml +++ b/core/res/res/values-fi/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l.%M %p</string>      <string name="hour_minute_cap_ampm">%-l.%M %^p</string>      <string name="numeric_date">%-e.%-m.%Y</string> -    <string name="numeric_date_format">d.M.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%-k.%M.%S</string> diff --git a/core/res/res/values-fr/donottranslate-cldr.xml b/core/res/res/values-fr/donottranslate-cldr.xml index 5698514ff021..5a6681f15762 100644..100755 --- a/core/res/res/values-fr/donottranslate-cldr.xml +++ b/core/res/res/values-fr/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-hi-rIN/donottranslate-cldr.xml b/core/res/res/values-hi-rIN/donottranslate-cldr.xml index 72b89c21835c..b7a20a538ebf 100644..100755 --- a/core/res/res/values-hi-rIN/donottranslate-cldr.xml +++ b/core/res/res/values-hi-rIN/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e-%-m-%Y</string> -    <string name="numeric_date_format">d-M-yyyy</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-hi/donottranslate-cldr.xml b/core/res/res/values-hi/donottranslate-cldr.xml index 3e6138eb09a2..011f094323d2 100644..100755 --- a/core/res/res/values-hi/donottranslate-cldr.xml +++ b/core/res/res/values-hi/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e-%-m-%Y</string> -    <string name="numeric_date_format">d-M-yyyy</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-hr-rHR/donottranslate-cldr.xml b/core/res/res/values-hr-rHR/donottranslate-cldr.xml index d6d20e797505..0dfa40d608bb 100644..100755 --- a/core/res/res/values-hr-rHR/donottranslate-cldr.xml +++ b/core/res/res/values-hr-rHR/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e.%-m.%Y.</string> -    <string name="numeric_date_format">d.M.yyyy.</string>      <string name="numeric_date_template">"%s.%s.%s."</string>      <string name="month_day_year">%-e. %B %Y.</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-hr/donottranslate-cldr.xml b/core/res/res/values-hr/donottranslate-cldr.xml index 87039814c0c8..a3e5207f964e 100644..100755 --- a/core/res/res/values-hr/donottranslate-cldr.xml +++ b/core/res/res/values-hr/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e.%-m.%Y.</string> -    <string name="numeric_date_format">d.M.yyyy.</string>      <string name="numeric_date_template">"%s.%s.%s."</string>      <string name="month_day_year">%-e. %B %Y.</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-hu-rHU/donottranslate-cldr.xml b/core/res/res/values-hu-rHU/donottranslate-cldr.xml index 59eb75a95e8c..645398f8e6fa 100644..100755 --- a/core/res/res/values-hu-rHU/donottranslate-cldr.xml +++ b/core/res/res/values-hu-rHU/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%p %-l:%M</string>      <string name="hour_minute_cap_ampm">%^p %-l:%M</string>      <string name="numeric_date">%Y.%m.%d.</string> -    <string name="numeric_date_format">yyyy.MM.dd.</string>      <string name="numeric_date_template">"%s.%s.%s."</string>      <string name="month_day_year">%Y. %B %-e.</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-hu/donottranslate-cldr.xml b/core/res/res/values-hu/donottranslate-cldr.xml index 525b0c0f2f25..96b77ce2deeb 100644..100755 --- a/core/res/res/values-hu/donottranslate-cldr.xml +++ b/core/res/res/values-hu/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%Y.%m.%d.</string> -    <string name="numeric_date_format">yyyy.MM.dd.</string>      <string name="numeric_date_template">"%s.%s.%s."</string>      <string name="month_day_year">%Y. %B %-e.</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-in-rID/donottranslate-cldr.xml b/core/res/res/values-in-rID/donottranslate-cldr.xml index aedc2c71de07..6796c9d81294 100644..100755 --- a/core/res/res/values-in-rID/donottranslate-cldr.xml +++ b/core/res/res/values-in-rID/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="time_of_day">%H:%M:%S</string>      <string name="date_and_time">%H:%M:%S %-e %b %Y</string> diff --git a/core/res/res/values-in/donottranslate-cldr.xml b/core/res/res/values-in/donottranslate-cldr.xml index 73711328ee75..a0cddf5f8f6b 100644..100755 --- a/core/res/res/values-in/donottranslate-cldr.xml +++ b/core/res/res/values-in/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-it/donottranslate-cldr.xml b/core/res/res/values-it/donottranslate-cldr.xml index b06e73d0cd04..5a7658b41a43 100644..100755 --- a/core/res/res/values-it/donottranslate-cldr.xml +++ b/core/res/res/values-it/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-iw/donottranslate-cldr.xml b/core/res/res/values-iw/donottranslate-cldr.xml index 037251eb3efb..2342296cfaa0 100644..100755 --- a/core/res/res/values-iw/donottranslate-cldr.xml +++ b/core/res/res/values-iw/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e ב%B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-ja/donottranslate-cldr.xml b/core/res/res/values-ja/donottranslate-cldr.xml index f2cdbba3678f..7b205b8d6d0a 100644..100755 --- a/core/res/res/values-ja/donottranslate-cldr.xml +++ b/core/res/res/values-ja/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%Y/%m/%d</string> -    <string name="numeric_date_format">yyyy/MM/dd</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%Y年%-m月%-e日</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-ko/donottranslate-cldr.xml b/core/res/res/values-ko/donottranslate-cldr.xml index 29d798297ea7..bc02832e7e19 100644..100755 --- a/core/res/res/values-ko/donottranslate-cldr.xml +++ b/core/res/res/values-ko/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%p %-l:%M</string>      <string name="hour_minute_cap_ampm">%p %-l:%M</string>      <string name="numeric_date">%Y. %-m. %-e.</string> -    <string name="numeric_date_format">yyyy. M. d.</string>      <string name="numeric_date_template">"%s. %s. %s."</string>      <string name="month_day_year">%Y년 %-m월 %-e일</string>      <string name="time_of_day">%p %-l:%M:%S</string> diff --git a/core/res/res/values-lt-rLT/donottranslate-cldr.xml b/core/res/res/values-lt-rLT/donottranslate-cldr.xml index 19ae2eaf02bd..2634d4361291 100644..100755 --- a/core/res/res/values-lt-rLT/donottranslate-cldr.xml +++ b/core/res/res/values-lt-rLT/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%Y-%m-%d</string> -    <string name="numeric_date_format">yyyy-MM-dd</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%Y m. %B %-e d.</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-lt/donottranslate-cldr.xml b/core/res/res/values-lt/donottranslate-cldr.xml index 0683d4657eaf..a565803300bb 100644..100755 --- a/core/res/res/values-lt/donottranslate-cldr.xml +++ b/core/res/res/values-lt/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%Y-%m-%d</string> -    <string name="numeric_date_format">yyyy-MM-dd</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%Y m. %B %-e d.</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-lv-rLV/donottranslate-cldr.xml b/core/res/res/values-lv-rLV/donottranslate-cldr.xml index eb74fa35a184..dfcc61029b89 100644..100755 --- a/core/res/res/values-lv-rLV/donottranslate-cldr.xml +++ b/core/res/res/values-lv-rLV/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%Y. gada %-e. %B</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-lv/donottranslate-cldr.xml b/core/res/res/values-lv/donottranslate-cldr.xml index cd554784cebb..25caf980ab1e 100644..100755 --- a/core/res/res/values-lv/donottranslate-cldr.xml +++ b/core/res/res/values-lv/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%Y. gada %-e. %B</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-mcc202-mnc05/config.xml b/core/res/res/values-mcc202-mnc05/config.xml new file mode 100644 index 000000000000..ec5ecaf12134 --- /dev/null +++ b/core/res/res/values-mcc202-mnc05/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">Vf Tethering,internet.vodafone.gr,,,,,,,,,202,05,,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc208-mnc01/config.xml b/core/res/res/values-mcc208-mnc01/config.xml index c1489b199eb5..3b84ff231e68 100644 --- a/core/res/res/values-mcc208-mnc01/config.xml +++ b/core/res/res/values-mcc208-mnc01/config.xml @@ -34,5 +34,6 @@           TETHER_DUN_APN.  Value is a comma separated series of strings:           "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"           note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> -    <string translatable="false" name="config_tether_apndata">Orange Internet,orange.fr,,,,,,orange,orange,,208,01,,DUN</string> +    <string translatable="false" name="config_tether_apndata">Orange Internet,orange.fr,,,orange,orange,,,,,208,01,1,DUN</string> +  </resources> diff --git a/core/res/res/values-mcc208-mnc10/config.xml b/core/res/res/values-mcc208-mnc10/config.xml index 99cc599fed8d..358bef674c7b 100644 --- a/core/res/res/values-mcc208-mnc10/config.xml +++ b/core/res/res/values-mcc208-mnc10/config.xml @@ -33,6 +33,6 @@           TETHER_DUN_APN.  Value is a comma separated series of strings:           "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"           note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> -    <string translatable="false" name="config_tether_apndata">SFR Option Modem,websfr,,,,,,,,,208,10,,DUN"</string> +    <string translatable="false" name="config_tether_apndata">SFR option modem,websfr,,,,,,,,,208,10,,DUN</string>  </resources> diff --git a/core/res/res/values-mcc214-mnc01/config.xml b/core/res/res/values-mcc214-mnc01/config.xml new file mode 100644 index 000000000000..1b7c462df3da --- /dev/null +++ b/core/res/res/values-mcc214-mnc01/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">INTERNET,airtelnet.es,,,vodafone,vodafone,,,,,214,01,1,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc214-mnc03/config.xml b/core/res/res/values-mcc214-mnc03/config.xml index 02f1475acfad..4a51a2ffd03e 100644 --- a/core/res/res/values-mcc214-mnc03/config.xml +++ b/core/res/res/values-mcc214-mnc03/config.xml @@ -34,5 +34,6 @@           TETHER_DUN_APN.  Value is a comma separated series of strings:           "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"           note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> -    <string translatable="false" name="config_tether_apndata">Orange Internet PC,internet,,,,,,orange,orange,,214,03,,DUN</string> +    <string translatable="false" name="config_tether_apndata">Orange Internet PC,internet,,,orange,orange,,,,,214,03,1,DUN</string> +  </resources> diff --git a/core/res/res/values-mcc214-mnc07/config.xml b/core/res/res/values-mcc214-mnc07/config.xml index 4e3fa162cf62..b49ad74c36c6 100644 --- a/core/res/res/values-mcc214-mnc07/config.xml +++ b/core/res/res/values-mcc214-mnc07/config.xml @@ -34,5 +34,6 @@           TETHER_DUN_APN.  Value is a comma separated series of strings:           "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"           note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> -    <string translatable="false" name="config_tether_apndata">Conexión compartida,movistar.es,,,,,,MOVISTAR,MOVISTAR,,214,07,,DUN</string> +    <string translatable="false" name="config_tether_apndata">Conexión Compartida,movistar.es,,,MOVISTAR,MOVISTAR,,,,,214,07,1,DUN</string> +  </resources> diff --git a/core/res/res/values-mcc302-mnc370/config.xml b/core/res/res/values-mcc302-mnc370/config.xml index b1d363fac070..3d2ea757ae4a 100644 --- a/core/res/res/values-mcc302-mnc370/config.xml +++ b/core/res/res/values-mcc302-mnc370/config.xml @@ -34,5 +34,6 @@           TETHER_DUN_APN.  Value is a comma separated series of strings:           "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"           note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> -    <string translatable="false" name="config_tether_apndata">Fido Tethering,isp.fido.apn,,,,,,,,,302,370,,DUN</string> +    <string translatable="false" name="config_tether_apndata">Fido LTE Tethering,ltedata.apn,,,,,,,,,302,370,,DUN</string> +  </resources> diff --git a/core/res/res/values-mcc302-mnc720/config.xml b/core/res/res/values-mcc302-mnc720/config.xml index 40ef9391ffd8..680f1a38f5d1 100644 --- a/core/res/res/values-mcc302-mnc720/config.xml +++ b/core/res/res/values-mcc302-mnc720/config.xml @@ -34,5 +34,6 @@           TETHER_DUN_APN.  Value is a comma separated series of strings:           "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"           note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> -    <string translatable="false" name="config_tether_apndata">Rogers Tethering,isp.apn,,,,,,,,,302,720,,DUN</string> +    <string translatable="false" name="config_tether_apndata">Rogers LTE Tethering,ltedata.apn,,,,,,,,,302,720,,DUN</string> +  </resources> diff --git a/core/res/res/values-mcc302-mnc780/config.xml b/core/res/res/values-mcc302-mnc780/config.xml new file mode 100644 index 000000000000..42d495691222 --- /dev/null +++ b/core/res/res/values-mcc302-mnc780/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">SaskTel Tethering,inet.stm.sk.ca,,,,,,,,,302,780,,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc310-mnc260/config.xml b/core/res/res/values-mcc310-mnc260/config.xml new file mode 100644 index 000000000000..56a5d4effd8d --- /dev/null +++ b/core/res/res/values-mcc310-mnc260/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">T-Mobile Tethering,pcweb.tmobile.com,,,,,,,,,310,260,,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc425-mnc01/config.xml b/core/res/res/values-mcc425-mnc01/config.xml new file mode 100644 index 000000000000..f4854da5ede8 --- /dev/null +++ b/core/res/res/values-mcc425-mnc01/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">DUN,modem.orange.net.il,,,,,,,,,425,01,,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc425-mnc07/config.xml b/core/res/res/values-mcc425-mnc07/config.xml new file mode 100644 index 000000000000..890420ecc2c0 --- /dev/null +++ b/core/res/res/values-mcc425-mnc07/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">PC HOT mobile,pc.hotm,,,,,,,,,425,07,,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc454-mnc00/config.xml b/core/res/res/values-mcc454-mnc00/config.xml new file mode 100644 index 000000000000..c92b9c71da2b --- /dev/null +++ b/core/res/res/values-mcc454-mnc00/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">1O1O tethering,lte.internet,,,,,,,,,454,00,3,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc454-mnc03/config.xml b/core/res/res/values-mcc454-mnc03/config.xml new file mode 100644 index 000000000000..c7dc960ae854 --- /dev/null +++ b/core/res/res/values-mcc454-mnc03/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">3 Share,share.lte.three.com.hk,,,,,,,,,454,03,1,DUN</string> + +</resources> diff --git a/core/res/res/values-mcc505-mnc01/config.xml b/core/res/res/values-mcc505-mnc01/config.xml new file mode 100644 index 000000000000..f9d9ac7bf050 --- /dev/null +++ b/core/res/res/values-mcc505-mnc01/config.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2013, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized +     for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> +    <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or +    <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> +    <integer-array translatable="false" name="config_tether_upstream_types"> +      <item>1</item> +      <item>4</item> +      <item>7</item> +      <item>9</item> +    </integer-array> + +    <!-- String containing the apn value for tethering.  May be overriden by secure settings +         TETHER_DUN_APN.  Value is a comma separated series of strings: +         "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type" +         note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" --> +    <string translatable="false" name="config_tether_apndata">Telstra Tethering,telstra.internet,,,,,,,,,505,01,,DUN</string> + +</resources> diff --git a/core/res/res/values-ms/donottranslate-cldr.xml b/core/res/res/values-ms/donottranslate-cldr.xml index 7c02f3fd3166..24aa541a6209 100644..100755 --- a/core/res/res/values-ms/donottranslate-cldr.xml +++ b/core/res/res/values-ms/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values-nb/donottranslate-cldr.xml b/core/res/res/values-nb/donottranslate-cldr.xml index 6d343cae0d90..5568f38b2d14 100644..100755 --- a/core/res/res/values-nb/donottranslate-cldr.xml +++ b/core/res/res/values-nb/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-nl/donottranslate-cldr.xml b/core/res/res/values-nl/donottranslate-cldr.xml index 54e7e390c22c..5df5175baf71 100644..100755 --- a/core/res/res/values-nl/donottranslate-cldr.xml +++ b/core/res/res/values-nl/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d-%m-%Y</string> -    <string name="numeric_date_format">dd-MM-yyyy</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-pl/donottranslate-cldr.xml b/core/res/res/values-pl/donottranslate-cldr.xml index 91c98eabf96f..14c5f3b61dd1 100644..100755 --- a/core/res/res/values-pl/donottranslate-cldr.xml +++ b/core/res/res/values-pl/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-pt-rPT/donottranslate-cldr.xml b/core/res/res/values-pt-rPT/donottranslate-cldr.xml index 60787a94cdce..04791ae2796d 100644..100755 --- a/core/res/res/values-pt-rPT/donottranslate-cldr.xml +++ b/core/res/res/values-pt-rPT/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e de %B de %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-pt/donottranslate-cldr.xml b/core/res/res/values-pt/donottranslate-cldr.xml index d5fee19546d6..f3fbf5e16b03 100644..100755 --- a/core/res/res/values-pt/donottranslate-cldr.xml +++ b/core/res/res/values-pt/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e de %B de %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-rm/donottranslate-cldr.xml b/core/res/res/values-rm/donottranslate-cldr.xml index 32e117010a79..57c4a4943bea 100644..100755 --- a/core/res/res/values-rm/donottranslate-cldr.xml +++ b/core/res/res/values-rm/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-ro-rRO/donottranslate-cldr.xml b/core/res/res/values-ro-rRO/donottranslate-cldr.xml index 1233f4e12b6e..68e14d6818d0 100644..100755 --- a/core/res/res/values-ro-rRO/donottranslate-cldr.xml +++ b/core/res/res/values-ro-rRO/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-ro/donottranslate-cldr.xml b/core/res/res/values-ro/donottranslate-cldr.xml index f80a944f9e49..5738c7c6f57a 100644..100755 --- a/core/res/res/values-ro/donottranslate-cldr.xml +++ b/core/res/res/values-ro/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-ru/donottranslate-cldr.xml b/core/res/res/values-ru/donottranslate-cldr.xml index 4e315eb2fa17..263415bf91fc 100644..100755 --- a/core/res/res/values-ru/donottranslate-cldr.xml +++ b/core/res/res/values-ru/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y г.</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-sk-rSK/donottranslate-cldr.xml b/core/res/res/values-sk-rSK/donottranslate-cldr.xml index 94dca66beda8..4ea35f9fa4b5 100644..100755 --- a/core/res/res/values-sk-rSK/donottranslate-cldr.xml +++ b/core/res/res/values-sk-rSK/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e. %-m. %Y</string> -    <string name="numeric_date_format">d. M. yyyy</string>      <string name="numeric_date_template">"%s. %s. %s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-sk/donottranslate-cldr.xml b/core/res/res/values-sk/donottranslate-cldr.xml index 9eeb1331d684..68c03a74c642 100644..100755 --- a/core/res/res/values-sk/donottranslate-cldr.xml +++ b/core/res/res/values-sk/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e.%-m.%Y</string> -    <string name="numeric_date_format">d.M.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e. %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-sl-rSI/donottranslate-cldr.xml b/core/res/res/values-sl-rSI/donottranslate-cldr.xml index 6cf9bd63b164..d947ed75c26d 100644..100755 --- a/core/res/res/values-sl-rSI/donottranslate-cldr.xml +++ b/core/res/res/values-sl-rSI/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e. %m. %Y</string> -    <string name="numeric_date_format">d. MM. yyyy</string>      <string name="numeric_date_template">"%s. %s. %s"</string>      <string name="month_day_year">%d. %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-sl/donottranslate-cldr.xml b/core/res/res/values-sl/donottranslate-cldr.xml index 49d36fd6053c..d8e18148c38a 100644..100755 --- a/core/res/res/values-sl/donottranslate-cldr.xml +++ b/core/res/res/values-sl/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%-e. %m. %Y</string> -    <string name="numeric_date_format">d. MM. yyyy</string>      <string name="numeric_date_template">"%s. %s. %s"</string>      <string name="month_day_year">%d. %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-sr-rRS/donottranslate-cldr.xml b/core/res/res/values-sr-rRS/donottranslate-cldr.xml index 3f8896001806..6702b9fcdfef 100644..100755 --- a/core/res/res/values-sr-rRS/donottranslate-cldr.xml +++ b/core/res/res/values-sr-rRS/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e.%-m.%Y.</string> -    <string name="numeric_date_format">d.M.yyyy.</string>      <string name="numeric_date_template">"%s.%s.%s."</string>      <string name="month_day_year">%d. %B %Y.</string>      <string name="time_of_day">%H.%M.%S</string> diff --git a/core/res/res/values-sr/donottranslate-cldr.xml b/core/res/res/values-sr/donottranslate-cldr.xml index ca3cb08ad9a9..9419e39b0fa5 100644..100755 --- a/core/res/res/values-sr/donottranslate-cldr.xml +++ b/core/res/res/values-sr/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e.%-m.%Y.</string> -    <string name="numeric_date_format">d.M.yyyy.</string>      <string name="numeric_date_template">"%s.%s.%s."</string>      <string name="month_day_year">%d. %B %Y.</string>      <string name="time_of_day">%H.%M.%S</string> diff --git a/core/res/res/values-sv/donottranslate-cldr.xml b/core/res/res/values-sv/donottranslate-cldr.xml index 46b9f9dc41e6..d1f5c35070c7 100644..100755 --- a/core/res/res/values-sv/donottranslate-cldr.xml +++ b/core/res/res/values-sv/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d-%m-%Y</string> -    <string name="numeric_date_format">dd-MM-yyyy</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-sw/donottranslate-cldr.xml b/core/res/res/values-sw/donottranslate-cldr.xml index e0625e9d2cd5..3c888babb8e3 100644..100755 --- a/core/res/res/values-sw/donottranslate-cldr.xml +++ b/core/res/res/values-sw/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%Y/%m/%d</string> -    <string name="numeric_date_format">yyyy/MM/dd</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%Y %B %-e</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-th-rTH/donottranslate-cldr.xml b/core/res/res/values-th-rTH/donottranslate-cldr.xml index 94ec23d0e282..f05d30114dff 100644..100755 --- a/core/res/res/values-th-rTH/donottranslate-cldr.xml +++ b/core/res/res/values-th-rTH/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e/%-m/%Y</string> -    <string name="numeric_date_format">d/M/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-th/donottranslate-cldr.xml b/core/res/res/values-th/donottranslate-cldr.xml index b42656a4e1f7..e7ad4ffdd28b 100644..100755 --- a/core/res/res/values-th/donottranslate-cldr.xml +++ b/core/res/res/values-th/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%-e/%-m/%Y</string> -    <string name="numeric_date_format">d/M/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-k:%M:%S</string> diff --git a/core/res/res/values-tl/donottranslate-cldr.xml b/core/res/res/values-tl/donottranslate-cldr.xml index 970a538bf2a2..7df53b46372e 100644..100755 --- a/core/res/res/values-tl/donottranslate-cldr.xml +++ b/core/res/res/values-tl/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%Y-%m-%d</string> -    <string name="numeric_date_format">yyyy-MM-dd</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%Y %B %-e</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-tr/donottranslate-cldr.xml b/core/res/res/values-tr/donottranslate-cldr.xml index a0ee3706c589..8181e7f5b914 100644..100755 --- a/core/res/res/values-tr/donottranslate-cldr.xml +++ b/core/res/res/values-tr/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d %m %Y</string> -    <string name="numeric_date_format">dd MM yyyy</string>      <string name="numeric_date_template">"%s %s %s"</string>      <string name="month_day_year">%d %B %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-uk-rUA/donottranslate-cldr.xml b/core/res/res/values-uk-rUA/donottranslate-cldr.xml index 5cb41f40a44a..8dfd77bbf19a 100644..100755 --- a/core/res/res/values-uk-rUA/donottranslate-cldr.xml +++ b/core/res/res/values-uk-rUA/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y р.</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-uk/donottranslate-cldr.xml b/core/res/res/values-uk/donottranslate-cldr.xml index f2a61da33301..b7434bd2fcb6 100644..100755 --- a/core/res/res/values-uk/donottranslate-cldr.xml +++ b/core/res/res/values-uk/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %p</string>      <string name="numeric_date">%d.%m.%Y</string> -    <string name="numeric_date_format">dd.MM.yyyy</string>      <string name="numeric_date_template">"%s.%s.%s"</string>      <string name="month_day_year">%-e %B %Y р.</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-vi-rVN/donottranslate-cldr.xml b/core/res/res/values-vi-rVN/donottranslate-cldr.xml index 307dab251118..13c01c951c5c 100644..100755 --- a/core/res/res/values-vi-rVN/donottranslate-cldr.xml +++ b/core/res/res/values-vi-rVN/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">Ngày %d tháng %-m năm %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-vi/donottranslate-cldr.xml b/core/res/res/values-vi/donottranslate-cldr.xml index f4d5dc3d3530..1a3924e74229 100644..100755 --- a/core/res/res/values-vi/donottranslate-cldr.xml +++ b/core/res/res/values-vi/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%d/%m/%Y</string> -    <string name="numeric_date_format">dd/MM/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">Ngày %d tháng %-m năm %Y</string>      <string name="time_of_day">%H:%M:%S</string> diff --git a/core/res/res/values-zh-rCN/donottranslate-cldr.xml b/core/res/res/values-zh-rCN/donottranslate-cldr.xml index 6ac384a85f32..f1540b496c0b 100644..100755 --- a/core/res/res/values-zh-rCN/donottranslate-cldr.xml +++ b/core/res/res/values-zh-rCN/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%p %-l:%M</string>      <string name="hour_minute_cap_ampm">%p %-l:%M</string>      <string name="numeric_date">%Y-%-m-%-e</string> -    <string name="numeric_date_format">yyyy-M-d</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%Y 年 %-m 月 %-e 日</string>      <string name="time_of_day">%p %I:%M:%S</string> diff --git a/core/res/res/values-zh-rTW/donottranslate-cldr.xml b/core/res/res/values-zh-rTW/donottranslate-cldr.xml index 42faa83e5f4a..7a8a21d81494 100644..100755 --- a/core/res/res/values-zh-rTW/donottranslate-cldr.xml +++ b/core/res/res/values-zh-rTW/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%p %-l:%M</string>      <string name="hour_minute_cap_ampm">%p %-l:%M</string>      <string name="numeric_date">%Y/%-m/%-e</string> -    <string name="numeric_date_format">yyyy/M/d</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%Y 年 %-m 月 %-e 日</string>      <string name="time_of_day">%p %I:%M:%S</string> diff --git a/core/res/res/values-zu/donottranslate-cldr.xml b/core/res/res/values-zu/donottranslate-cldr.xml index 703823c95117..fe7491cb6da8 100644..100755 --- a/core/res/res/values-zu/donottranslate-cldr.xml +++ b/core/res/res/values-zu/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M %p</string>      <string name="hour_minute_cap_ampm">%-l:%M %^p</string>      <string name="numeric_date">%Y-%m-%d</string> -    <string name="numeric_date_format">yyyy-MM-dd</string>      <string name="numeric_date_template">"%s-%s-%s"</string>      <string name="month_day_year">%-e %B %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values/donottranslate-cldr.xml b/core/res/res/values/donottranslate-cldr.xml index 4d37d47e1d9f..9a9885457491 100644..100755 --- a/core/res/res/values/donottranslate-cldr.xml +++ b/core/res/res/values/donottranslate-cldr.xml @@ -5,7 +5,6 @@      <string name="hour_minute_ampm">%-l:%M%p</string>      <string name="hour_minute_cap_ampm">%-l:%M%^p</string>      <string name="numeric_date">%-m/%-e/%Y</string> -    <string name="numeric_date_format">M/d/yyyy</string>      <string name="numeric_date_template">"%s/%s/%s"</string>      <string name="month_day_year">%B %-e, %Y</string>      <string name="time_of_day">%-l:%M:%S %p</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 3ecdc0cbdc31..cdb5724da820 100644..100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -632,7 +632,6 @@    <java-symbol type="string" name="number_picker_increment_scroll_action" />    <java-symbol type="string" name="number_picker_increment_scroll_mode" />    <java-symbol type="string" name="numeric_date" /> -  <java-symbol type="string" name="numeric_date_format" />    <java-symbol type="string" name="numeric_date_template" />    <java-symbol type="string" name="numeric_md1_md2" />    <java-symbol type="string" name="numeric_md1_time1_md2_time2" /> diff --git a/core/res/res/xml/sms_short_codes.xml b/core/res/res/xml/sms_short_codes.xml index 8b395af0a7b3..7804dd2422c7 100644 --- a/core/res/res/xml/sms_short_codes.xml +++ b/core/res/res/xml/sms_short_codes.xml @@ -184,6 +184,6 @@      <shortcode country="ua" pattern="\\d{4}" premium="444[3-9]|70[579]4|7540" />      <!-- USA: 5-6 digits (premium codes from https://www.premiumsmsrefunds.com/ShortCodes.htm) --> -    <shortcode country="us" pattern="\\d{5,6}" premium="20433|21(?:344|472)|22715|23(?:333|847)|24(?:15|28)0|25209|27(?:449|606|663)|28498|305(?:00|83)|32(?:340|941)|33(?:166|786|849)|34746|35(?:182|564)|37975|38(?:135|146|254)|41(?:366|463)|42335|43(?:355|500)|44(?:578|711|811)|45814|46(?:157|173|327)|46666|47553|48(?:221|277|669)|50(?:844|920)|51(?:062|368)|52944|54(?:723|892)|55928|56483|57370|59(?:182|187|252|342)|60339|61(?:266|982)|62478|64(?:219|898)|65(?:108|500)|69(?:208|388)|70877|71851|72(?:078|087|465)|73(?:288|588|882|909|997)|74(?:034|332|815)|76426|79213|81946|83177|84(?:103|685)|85797|86(?:234|236|666)|89616|90(?:715|842|938)|91(?:362|958)|94719|95297|96(?:040|666|835|969)|97(?:142|294|688)|99(?:689|796|807)" /> +    <shortcode country="us" pattern="\\d{5,6}" premium="20433|21(?:344|472)|22715|23(?:333|847)|24(?:15|28)0|25209|27(?:449|606|663)|28498|305(?:00|83)|32(?:340|941)|33(?:166|786|849)|34746|35(?:182|564)|37975|38(?:135|146|254)|41(?:366|463)|42335|43(?:355|500)|44(?:578|711|811)|45814|46(?:157|173|327)|46666|47553|48(?:221|277|669)|50(?:844|920)|51(?:062|368)|52944|54(?:723|892)|55928|56483|57370|59(?:182|187|252|342)|60339|61(?:266|982)|62478|64(?:219|898)|65(?:108|500)|69(?:208|388)|70877|71851|72(?:078|087|465)|73(?:288|588|882|909|997)|74(?:034|332|815)|76426|79213|81946|83177|84(?:103|685)|85797|86(?:234|236|666)|89616|90(?:715|842|938)|91(?:362|958)|94719|95297|96(?:040|666|835|969)|97(?:142|294|688)|99(?:689|796|807)" free="87902" />  </shortcodes> diff --git a/core/tests/coretests/Android.mk b/core/tests/coretests/Android.mk index b6b15c46fb5e..22fa7fc0a456 100644 --- a/core/tests/coretests/Android.mk +++ b/core/tests/coretests/Android.mk @@ -23,7 +23,7 @@ LOCAL_SRC_FILES := \  LOCAL_DX_FLAGS := --core-library  LOCAL_STATIC_JAVA_LIBRARIES := core-tests android-common frameworks-core-util-lib mockwebserver guava littlemock -LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common +LOCAL_JAVA_LIBRARIES := android.test.runner conscrypt telephony-common  LOCAL_PACKAGE_NAME := FrameworksCoreTests  LOCAL_CERTIFICATE := platform diff --git a/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java b/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java index 60c40dbdc320..04aa62a3e38e 100644 --- a/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java +++ b/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java @@ -25,7 +25,7 @@ import javax.net.ssl.X509TrustManager;  import junit.framework.TestCase; -import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl; +import com.android.org.conscrypt.TrustManagerImpl;  public class X509TrustManagerExtensionsTest extends TestCase { diff --git a/docs/html/guide/topics/data/backup.jd b/docs/html/guide/topics/data/backup.jd index 598b08a59547..4903852de9f1 100644 --- a/docs/html/guide/topics/data/backup.jd +++ b/docs/html/guide/topics/data/backup.jd @@ -680,7 +680,7 @@ android.app.backup.BackupAgentHelper} looks like this:</p>  <pre>  public class MyFileBackupAgent extends BackupAgentHelper { -    // The name of the SharedPreferences file +    // The name of the file      static final String TOP_SCORES = "scores";      static final String PLAYER_STATS = "stats"; diff --git a/keystore/java/android/security/AndroidKeyPairGenerator.java b/keystore/java/android/security/AndroidKeyPairGenerator.java index 43d1eb607fe6..390e7329b971 100644 --- a/keystore/java/android/security/AndroidKeyPairGenerator.java +++ b/keystore/java/android/security/AndroidKeyPairGenerator.java @@ -18,7 +18,7 @@ package android.security;  import com.android.org.bouncycastle.x509.X509V3CertificateGenerator; -import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine; +import com.android.org.conscrypt.OpenSSLEngine;  import java.security.InvalidAlgorithmParameterException;  import java.security.InvalidKeyException; diff --git a/keystore/java/android/security/AndroidKeyStore.java b/keystore/java/android/security/AndroidKeyStore.java index 04ee8c4bcb91..acbae8f816b8 100644 --- a/keystore/java/android/security/AndroidKeyStore.java +++ b/keystore/java/android/security/AndroidKeyStore.java @@ -16,8 +16,8 @@  package android.security; -import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine; -import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder; +import com.android.org.conscrypt.OpenSSLEngine; +import com.android.org.conscrypt.OpenSSLKeyHolder;  import android.util.Log; diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index c99dff02e97f..328ac5d882eb 100644 --- a/keystore/java/android/security/KeyChain.java +++ b/keystore/java/android/security/KeyChain.java @@ -37,8 +37,8 @@ import java.util.List;  import java.util.concurrent.BlockingQueue;  import java.util.concurrent.LinkedBlockingQueue; -import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine; -import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore; +import com.android.org.conscrypt.OpenSSLEngine; +import com.android.org.conscrypt.TrustedCertificateStore;  /**   * The {@code KeyChain} class provides access to private keys and @@ -346,6 +346,8 @@ public final class KeyChain {              List<X509Certificate> chain = store                      .getCertificateChain(toCertificate(certificateBytes));              return chain.toArray(new X509Certificate[chain.size()]); +        } catch (CertificateException e) { +            throw new KeyChainException(e);          } catch (RemoteException e) {              throw new KeyChainException(e);          } catch (RuntimeException e) { diff --git a/keystore/tests/Android.mk b/keystore/tests/Android.mk index 61cf64079015..35388d7d129e 100644 --- a/keystore/tests/Android.mk +++ b/keystore/tests/Android.mk @@ -5,7 +5,7 @@ include $(CLEAR_VARS)  LOCAL_MODULE_TAGS := tests  LOCAL_CERTIFICATE := platform -LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle +LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle conscrypt  # Include all test java files.  LOCAL_SRC_FILES := $(call all-java-files-under, src) diff --git a/keystore/tests/src/android/security/AndroidKeyStoreTest.java b/keystore/tests/src/android/security/AndroidKeyStoreTest.java index 8798fb5879ab..b7129db1a56f 100644 --- a/keystore/tests/src/android/security/AndroidKeyStoreTest.java +++ b/keystore/tests/src/android/security/AndroidKeyStoreTest.java @@ -18,7 +18,7 @@ package android.security;  import com.android.org.bouncycastle.x509.X509V3CertificateGenerator; -import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine; +import com.android.org.conscrypt.OpenSSLEngine;  import android.test.AndroidTestCase; diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 45a8b995678d..d703642cf7fe 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -171,7 +171,7 @@ final public class MediaCodec {       * <li>"audio/3gpp" - AMR narrowband audio       * <li>"audio/amr-wb" - AMR wideband audio       * <li>"audio/mpeg" - MPEG1/2 audio layer III -     * <li>"audio/mp4a-latm" - AAC audio +     * <li>"audio/mp4a-latm" - AAC audio (note, this is raw AAC packets, not packaged in LATM!)       * <li>"audio/vorbis" - vorbis audio       * <li>"audio/g711-alaw" - G.711 alaw audio       * <li>"audio/g711-mlaw" - G.711 ulaw audio diff --git a/native/android/input.cpp b/native/android/input.cpp index 7ac73c7ffaa1..f6ea5769869f 100644 --- a/native/android/input.cpp +++ b/native/android/input.cpp @@ -191,73 +191,73 @@ size_t AMotionEvent_getHistorySize(const AInputEvent* motion_event) {      return static_cast<const MotionEvent*>(motion_event)->getHistorySize();  } -int64_t AMotionEvent_getHistoricalEventTime(AInputEvent* motion_event, +int64_t AMotionEvent_getHistoricalEventTime(const AInputEvent* motion_event,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalEventTime(              history_index);  } -float AMotionEvent_getHistoricalRawX(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawX(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalRawY(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawY(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalX(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalX(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalX(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalY(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalY(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalPressure(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalPressure(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalSize(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalSize(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalSize(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalTouchMajor(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalTouchMajor(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMajor(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalTouchMinor(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMinor(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalToolMajor(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMajor(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalToolMinor(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMinor(              pointer_index, history_index);  } -float AMotionEvent_getHistoricalOrientation(AInputEvent* motion_event, size_t pointer_index, +float AMotionEvent_getHistoricalOrientation(const AInputEvent* motion_event, size_t pointer_index,          size_t history_index) {      return static_cast<const MotionEvent*>(motion_event)->getHistoricalOrientation(              pointer_index, history_index); diff --git a/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm b/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm new file mode 100644 index 000000000000..140c7acc031b --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm @@ -0,0 +1,339 @@ +# Copyright (C) 2013 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. + +# +# Brazilian keyboard layout. +# + +type OVERLAY + +map key 86 PLUS +map key 89 RO + +### ROW 1 + +key GRAVE { +    label:                              '\'' +    base:                               '\'' +    shift:                              '"' +} + +key 1 { +    label:                              '1' +    base:                               '1' +    shift:                              '!' +    ralt:                               '\u00b9' +} + +key 2 { +    label:                              '2' +    base:                               '2' +    shift:                              '@' +    ralt:                               '\u00b2' +} + +key 3 { +    label:                              '3' +    base:                               '3' +    shift:                              '#' +    ralt:                               '\u00b3' +} + +key 4 { +    label:                              '4' +    base:                               '4' +    shift:                              '$' +    ralt:                               '\u00a3' +} + +key 5 { +    label:                              '5' +    base:                               '5' +    shift:                              '%' +    ralt:                               '\u00a2' +} + +key 6 { +    label:                              '6' +    base:                               '6' +    shift:                              '\u0308' +    ralt:                               '\u00ac' +} + +key 7 { +    label:                              '7' +    base:                               '7' +    shift:                              '&' +} + +key 8 { +    label:                              '8' +    base:                               '8' +    shift:                              '*' +} + +key 9 { +    label:                              '9' +    base:                               '9' +    shift:                              '(' +} + +key 0 { +    label:                              '0' +    base:                               '0' +    shift:                              ')' +    ralt:                               '}' +} + +key MINUS { +    label:                              '-' +    base:                               '-' +    shift:                              '_' +} + +key EQUALS { +    label:                              '=' +    base:                               '=' +    shift:                              '+' +    ralt:                               '\u00a7' +} + +### ROW 2 + +key Q { +    label:                              'Q' +    base:                               'q' +    shift, capslock:                    'Q' +    ralt:                               '/' +} + +key W { +    label:                              'W' +    base:                               'w' +    shift, capslock:                    'W' +    ralt:                               '?' +} + +key E { +    label:                              'E' +    base:                               'e' +    shift, capslock:                    'E' +    ralt:                               '\u20ac' +} + +key R { +    label:                              'R' +    base:                               'r' +    shift, capslock:                    'R' +} + +key T { +    label:                              'T' +    base:                               't' +    shift, capslock:                    'T' +} + +key Y { +    label:                              'Y' +    base:                               'y' +    shift, capslock:                    'Y' +} + +key U { +    label:                              'U' +    base:                               'u' +    shift, capslock:                    'U' +} + +key I { +    label:                              'I' +    base:                               'i' +    shift, capslock:                    'I' +} + +key O { +    label:                              'O' +    base:                               'o' +    shift, capslock:                    'O' +} + +key P { +    label:                              'P' +    base:                               'p' +    shift, capslock:                    'P' +} + +key LEFT_BRACKET { +    label:                              '\u00b4' +    base:                               '\u0301' +    shift:                              '\u0300' +} + +key RIGHT_BRACKET { +    label:                              '[' +    base:                               '[' +    shift:                              '{' +    ralt:                               '\u00aa' +} + +### ROW 3 + +key A { +    label:                              'A' +    base:                               'a' +    shift, capslock:                    'A' +} + +key S { +    label:                              'S' +    base:                               's' +    shift, capslock:                    'S' +} + +key D { +    label:                              'D' +    base:                               'd' +    shift, capslock:                    'D' +} + +key F { +    label:                              'F' +    base:                               'f' +    shift, capslock:                    'F' +} + +key G { +    label:                              'G' +    base:                               'g' +    shift, capslock:                    'G' +} + +key H { +    label:                              'H' +    base:                               'h' +    shift, capslock:                    'H' +} + +key J { +    label:                              'J' +    base:                               'j' +    shift, capslock:                    'J' +} + +key K { +    label:                              'K' +    base:                               'k' +    shift, capslock:                    'K' +} + +key L { +    label:                              'L' +    base:                               'l' +    shift, capslock:                    'L' +} + +key SEMICOLON { +    label:                              '\u00c7' +    base:                               '\u00e7' +    shift, capslock:                    '\u00c7' +} + +key APOSTROPHE { +    label:                              '\u02dc' +    base:                               '\u0303' +    shift:                              '\u0302' +} + +key BACKSLASH { +    label:                              ']' +    base:                               ']' +    shift, capslock:                    '}' +    ralt:                               '\u00ba' +} + +### ROW 4 + +key PLUS { +    label:                              '\\' +    base:                               '\\' +    shift:                              '|' +} + +key Z { +    label:                              'Z' +    base:                               'z' +    shift, capslock:                    'Z' +} + +key X { +    label:                              'X' +    base:                               'x' +    shift, capslock:                    'X' +} + +key C { +    label:                              'C' +    base:                               'c' +    shift, capslock:                    'C' +    ralt:                               '\u20a2' +} + +key V { +    label:                              'V' +    base:                               'v' +    shift, capslock:                    'V' +} + +key B { +    label:                              'B' +    base:                               'b' +    shift, capslock:                    'B' +} + +key N { +    label:                              'N' +    base:                               'n' +    shift, capslock:                    'N' +} + +key M { +    label:                              'M' +    base:                               'm' +    shift, capslock:                    'M' +} + +key COMMA { +    label:                              ',' +    base:                               ',' +    shift:                              '<' +} + +key PERIOD { +    label:                              '.' +    base:                               '.' +    shift:                              '>' +} + +key SLASH { +    label:                              ';' +    base:                               ';' +    shift:                              ':' +} + +key RO { +    label:                              '/' +    base:                               '/' +    shift:                              '?' +    ralt:                               '\u00b0' +} diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm new file mode 100644 index 000000000000..0fabf02e5d2d --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm @@ -0,0 +1,379 @@ +# Copyright (C) 2013 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. + +# +# English (US) International keyboard layout. +# + +type OVERLAY + +map key 86 PLUS + +### ROW 1 + +key GRAVE { +    label:                              '\u0300' +    base:                               '\u0300' +    shift:                              '\u0303' +} + +key 1 { +    label:                              '1' +    base:                               '1' +    shift:                              '!' +    ralt:                               '\u00a1' +    ralt+shift:                         '\u00b9' +} + +key 2 { +    label:                              '2' +    base:                               '2' +    shift:                              '@' +    ralt:                               '\u00b2' +} + +key 3 { +    label:                              '3' +    base:                               '3' +    shift:                              '#' +    ralt:                               '\u00b3' +} + +key 4 { +    label:                              '4' +    base:                               '4' +    shift:                              '$' +    ralt:                               '\u00a4' +    ralt+shift:                         '\u00a3' +} + +key 5 { +    label:                              '5' +    base:                               '5' +    shift:                              '%' +    ralt:                               '\u20ac' +} + +key 6 { +    label:                              '6' +    base:                               '6' +    shift:                              '\u0302' +    ralt:                               '\u00bc' +} + +key 7 { +    label:                              '7' +    base:                               '7' +    shift:                              '&' +    ralt:                               '\u00bd' +} + +key 8 { +    label:                              '8' +    base:                               '8' +    shift:                              '*' +    ralt:                               '\u00be' +} + +key 9 { +    label:                              '9' +    base:                               '9' +    shift:                              '(' +    ralt:                               '\u2018' +} + +key 0 { +    label:                              '0' +    base:                               '0' +    shift:                              ')' +    ralt:                               '\u2019' +} + +key MINUS { +    label:                              '-' +    base:                               '-' +    shift:                              '_' +    ralt:                               '\u00a5' +} + +key EQUALS { +    label:                              '=' +    base:                               '=' +    shift:                              '+' +    ralt:                               '\u00d7' +    shift+ralt:                         '\u00f7' +} + +### ROW 2 + +key Q { +    label:                              'Q' +    base:                               'q' +    shift, capslock:                    'Q' +    ralt:                               '\u00e4' +    shift+ralt:                         '\u00c4' +} + +key W { +    label:                              'W' +    base:                               'w' +    shift, capslock:                    'W' +    ralt:                               '\u00e5' +    shift+ralt:                         '\u00c5' +} + +key E { +    label:                              'E' +    base:                               'e' +    shift, capslock:                    'E' +    ralt:                               '\u00e9' +    shift+ralt:                         '\u00c9' +} + +key R { +    label:                              'R' +    base:                               'r' +    shift, capslock:                    'R' +    ralt:                               '\u00ae' +} + +key T { +    label:                              'T' +    base:                               't' +    shift, capslock:                    'T' +    ralt:                               '\u00fe' +    shift+ralt:                         '\u00de' +} + +key Y { +    label:                              'Y' +    base:                               'y' +    shift, capslock:                    'Y' +    ralt:                               '\u00fc' +    shift+ralt:                         '\u00dc' +} + +key U { +    label:                              'U' +    base:                               'u' +    shift, capslock:                    'U' +    ralt:                               '\u00fa' +    shift+ralt:                         '\u00da' +} + +key I { +    label:                              'I' +    base:                               'i' +    shift, capslock:                    'I' +    ralt:                               '\u00ed' +    shift+ralt:                         '\u00cd' +} + +key O { +    label:                              'O' +    base:                               'o' +    shift, capslock:                    'O' +    ralt:                               '\u00f3' +    shift+ralt:                         '\u00d3' +} + +key P { +    label:                              'P' +    base:                               'p' +    shift, capslock:                    'P' +    ralt:                               '\u00f6' +    shift+ralt:                         '\u00d6' +} + +key LEFT_BRACKET { +    label:                              '[' +    base:                               '[' +    shift:                              '{' +    ralt:                               '\u00ab' +} + +key RIGHT_BRACKET { +    label:                              ']' +    base:                               ']' +    shift:                              '}' +    ralt:                               '\u00bb' +} + +key BACKSLASH { +    label:                              '\\' +    base:                               '\\' +    shift:                              '|' +    ralt:                               '\u00ac' +    shift+ralt:                         '\u00a6' +} + +### ROW 3 + +key A { +    label:                              'A' +    base:                               'a' +    shift, capslock:                    'A' +    ralt:                               '\u00e1' +    shift+ralt:                         '\u00c1' +} + +key S { +    label:                              'S' +    base:                               's' +    shift, capslock:                    'S' +    ralt:                               '\u00df' +    shift+ralt:                         '\u00a7' +} + +key D { +    label:                              'D' +    base:                               'd' +    shift, capslock:                    'D' +    ralt:                               '\u00f0' +    shift+ralt:                         '\u00d0' +} + +key F { +    label:                              'F' +    base:                               'f' +    shift, capslock:                    'F' +} + +key G { +    label:                              'G' +    base:                               'g' +    shift, capslock:                    'G' +} + +key H { +    label:                              'H' +    base:                               'h' +    shift, capslock:                    'H' +} + +key J { +    label:                              'J' +    base:                               'j' +    shift, capslock:                    'J' +} + +key K { +    label:                              'K' +    base:                               'k' +    shift, capslock:                    'K' +} + +key L { +    label:                              'L' +    base:                               'l' +    shift, capslock:                    'L' +    ralt:                               '\u00f8' +    shift+ralt:                         '\u00d8' +} + +key SEMICOLON { +    label:                              ';' +    base:                               ';' +    shift:                              ':' +    ralt:                               '\u00b6' +    shift+ralt:                         '\u00b0' +} + +key APOSTROPHE { +    label:                              '\'' +    base:                               '\'' +    shift:                              '"' +    ralt:                               '\u0301' +    shift+ralt:                         '\u0308' +} + +### ROW 4 + +key PLUS { +    label:                              '\\' +    base:                               '\\' +    shift:                              '|' +    ralt:                               '\u00ac' +    shift+ralt:                         '\u00a6' +} + +key Z { +    label:                              'Z' +    base:                               'z' +    shift, capslock:                    'Z' +    ralt:                               '\u00e6' +    shift+ralt:                         '\u00c6' +} + +key X { +    label:                              'X' +    base:                               'x' +    shift, capslock:                    'X' +} + +key C { +    label:                              'C' +    base:                               'c' +    shift, capslock:                    'C' +    ralt:                               '\u00a9' +    shift+ralt:                         '\u00a2' +} + +key V { +    label:                              'V' +    base:                               'v' +    shift, capslock:                    'V' +} + +key B { +    label:                              'B' +    base:                               'b' +    shift, capslock:                    'B' +} + +key N { +    label:                              'N' +    base:                               'n' +    shift, capslock:                    'N' +    ralt:                               '\u00f1' +    shift+ralt:                         '\u00d1' +} + +key M { +    label:                              'M' +    base:                               'm' +    shift, capslock:                    'M' +    ralt:                               '\u00b5' +} + +key COMMA { +    label:                              ',' +    base:                               ',' +    shift:                              '<' +    ralt:                               '\u00e7' +    shift+ralt:                         '\u00c7' +} + +key PERIOD { +    label:                              '.' +    base:                               '.' +    shift:                              '>' +} + +key SLASH { +    label:                              '/' +    base:                               '/' +    shift:                              '?' +    ralt:                               '\u00bf' +} diff --git a/packages/InputDevices/res/values/strings.xml b/packages/InputDevices/res/values/strings.xml index 65d33047afa5..32c665a2ee9b 100644 --- a/packages/InputDevices/res/values/strings.xml +++ b/packages/InputDevices/res/values/strings.xml @@ -12,6 +12,9 @@      <!-- US English keyboard layout label. [CHAR LIMIT=35] -->      <string name="keyboard_layout_english_us_label">English (US)</string> +    <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] --> +    <string name="keyboard_layout_english_us_intl">English (US), International style</string> +      <!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->      <string name="keyboard_layout_english_us_dvorak_label">English (US), Dvorak style</string> @@ -75,6 +78,9 @@      <!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->      <string name="keyboard_layout_icelandic">Icelandic</string> +    <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] --> +    <string name="keyboard_layout_brazilian">Brazilian</string> +      <!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->      <string name="keyboard_layout_portuguese">Portuguese</string> diff --git a/packages/InputDevices/res/xml/keyboard_layouts.xml b/packages/InputDevices/res/xml/keyboard_layouts.xml index 3cfa1709c5e3..ffd1a235abef 100644 --- a/packages/InputDevices/res/xml/keyboard_layouts.xml +++ b/packages/InputDevices/res/xml/keyboard_layouts.xml @@ -8,6 +8,10 @@              android:label="@string/keyboard_layout_english_us_label"              android:keyboardLayout="@raw/keyboard_layout_english_us" /> +    <keyboard-layout android:name="keyboard_layout_english_us_intl" +            android:label="@string/keyboard_layout_english_us_intl" +            android:keyboardLayout="@raw/keyboard_layout_english_us_intl" /> +      <keyboard-layout android:name="keyboard_layout_english_us_dvorak"              android:label="@string/keyboard_layout_english_us_dvorak_label"              android:keyboardLayout="@raw/keyboard_layout_english_us_dvorak" /> @@ -92,6 +96,10 @@              android:label="@string/keyboard_layout_icelandic"              android:keyboardLayout="@raw/keyboard_layout_icelandic" /> +    <keyboard-layout android:name="keyboard_layout_brazilian" +            android:label="@string/keyboard_layout_brazilian" +            android:keyboardLayout="@raw/keyboard_layout_brazilian" /> +      <keyboard-layout android:name="keyboard_layout_portuguese"              android:label="@string/keyboard_layout_portuguese"              android:keyboardLayout="@raw/keyboard_layout_portuguese" /> diff --git a/preloaded-classes b/preloaded-classes index 8e426c53f6f5..2aa610a362e9 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -1685,6 +1685,120 @@ com.android.org.bouncycastle.util.encoders.Hex  com.android.org.bouncycastle.util.encoders.HexEncoder  com.android.org.bouncycastle.util.io.Streams  com.android.org.bouncycastle.x509.ExtendedPKIXParameters +com.android.org.conscrypt.AbstractSessionContext +com.android.org.conscrypt.AbstractSessionContext$1 +com.android.org.conscrypt.ByteArray +com.android.org.conscrypt.CertPinManager +com.android.org.conscrypt.ChainStrengthAnalyzer +com.android.org.conscrypt.ClientSessionContext +com.android.org.conscrypt.ClientSessionContext$HostAndPort +com.android.org.conscrypt.DefaultSSLContextImpl +com.android.org.conscrypt.FileClientSessionCache +com.android.org.conscrypt.FileClientSessionCache$Impl +com.android.org.conscrypt.JSSEProvider +com.android.org.conscrypt.KeyManagerFactoryImpl +com.android.org.conscrypt.KeyManagerImpl +com.android.org.conscrypt.NativeCrypto +com.android.org.conscrypt.NativeCrypto$SSLHandshakeCallbacks +com.android.org.conscrypt.OpenSSLBIOInputStream +com.android.org.conscrypt.OpenSSLCipher +com.android.org.conscrypt.OpenSSLCipher$AES +com.android.org.conscrypt.OpenSSLCipher$AES$CBC +com.android.org.conscrypt.OpenSSLCipher$AES$CBC$NoPadding +com.android.org.conscrypt.OpenSSLCipher$AES$CBC$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$AES$CFB +com.android.org.conscrypt.OpenSSLCipher$AES$CFB$NoPadding +com.android.org.conscrypt.OpenSSLCipher$AES$CFB$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$AES$CTR +com.android.org.conscrypt.OpenSSLCipher$AES$CTR$NoPadding +com.android.org.conscrypt.OpenSSLCipher$AES$CTR$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$AES$ECB +com.android.org.conscrypt.OpenSSLCipher$AES$ECB$NoPadding +com.android.org.conscrypt.OpenSSLCipher$AES$ECB$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$AES$OFB +com.android.org.conscrypt.OpenSSLCipher$AES$OFB$NoPadding +com.android.org.conscrypt.OpenSSLCipher$AES$OFB$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$ARC4 +com.android.org.conscrypt.OpenSSLCipher$DESEDE +com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC +com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC$NoPadding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB +com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB$NoPadding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB +com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB$NoPadding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB +com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB$NoPadding +com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipherRSA +com.android.org.conscrypt.OpenSSLCipherRSA$PKCS1 +com.android.org.conscrypt.OpenSSLCipherRSA$Raw +com.android.org.conscrypt.OpenSSLContextImpl +com.android.org.conscrypt.OpenSSLDSAKeyFactory +com.android.org.conscrypt.OpenSSLDSAKeyPairGenerator +com.android.org.conscrypt.OpenSSLECDHKeyAgreement +com.android.org.conscrypt.OpenSSLECKeyFactory +com.android.org.conscrypt.OpenSSLECKeyPairGenerator +com.android.org.conscrypt.OpenSSLKey +com.android.org.conscrypt.OpenSSLKeyHolder +com.android.org.conscrypt.OpenSSLMac +com.android.org.conscrypt.OpenSSLMac$HmacMD5 +com.android.org.conscrypt.OpenSSLMac$HmacSHA1 +com.android.org.conscrypt.OpenSSLMac$HmacSHA256 +com.android.org.conscrypt.OpenSSLMac$HmacSHA384 +com.android.org.conscrypt.OpenSSLMac$HmacSHA512 +com.android.org.conscrypt.OpenSSLMessageDigestJDK +com.android.org.conscrypt.OpenSSLMessageDigestJDK$MD5 +com.android.org.conscrypt.OpenSSLMessageDigestJDK$SHA1 +com.android.org.conscrypt.OpenSSLProvider +com.android.org.conscrypt.OpenSSLRSAKeyFactory +com.android.org.conscrypt.OpenSSLRSAKeyPairGenerator +com.android.org.conscrypt.OpenSSLRSAPublicKey +com.android.org.conscrypt.OpenSSLRandom +com.android.org.conscrypt.OpenSSLSessionImpl +com.android.org.conscrypt.OpenSSLSignature +com.android.org.conscrypt.OpenSSLSignature$1 +com.android.org.conscrypt.OpenSSLSignature$EngineType +com.android.org.conscrypt.OpenSSLSignature$MD5RSA +com.android.org.conscrypt.OpenSSLSignature$SHA1DSA +com.android.org.conscrypt.OpenSSLSignature$SHA1ECDSA +com.android.org.conscrypt.OpenSSLSignature$SHA1RSA +com.android.org.conscrypt.OpenSSLSignature$SHA256ECDSA +com.android.org.conscrypt.OpenSSLSignature$SHA256RSA +com.android.org.conscrypt.OpenSSLSignature$SHA384ECDSA +com.android.org.conscrypt.OpenSSLSignature$SHA384RSA +com.android.org.conscrypt.OpenSSLSignature$SHA512ECDSA +com.android.org.conscrypt.OpenSSLSignature$SHA512RSA +com.android.org.conscrypt.OpenSSLSignatureRawRSA +com.android.org.conscrypt.OpenSSLSocketFactoryImpl +com.android.org.conscrypt.OpenSSLSocketImpl +com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream +com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream +com.android.org.conscrypt.OpenSSLSocketImplWrapper +com.android.org.conscrypt.OpenSSLX509CertPath +com.android.org.conscrypt.OpenSSLX509CertPath$Encoding +com.android.org.conscrypt.OpenSSLX509Certificate +com.android.org.conscrypt.OpenSSLX509CertificateFactory +com.android.org.conscrypt.OpenSSLX509CertificateFactory$1 +com.android.org.conscrypt.OpenSSLX509CertificateFactory$2 +com.android.org.conscrypt.OpenSSLX509CertificateFactory$Parser +com.android.org.conscrypt.ProtocolVersion +com.android.org.conscrypt.SSLClientSessionCache +com.android.org.conscrypt.SSLContextImpl +com.android.org.conscrypt.SSLParametersImpl +com.android.org.conscrypt.ServerSessionContext +com.android.org.conscrypt.TrustManagerFactoryImpl +com.android.org.conscrypt.TrustManagerImpl +com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker +com.android.org.conscrypt.TrustedCertificateIndex +com.android.org.conscrypt.TrustedCertificateKeyStoreSpi +com.android.org.conscrypt.TrustedCertificateStore +com.android.org.conscrypt.TrustedCertificateStore$1 +com.android.org.conscrypt.TrustedCertificateStore$2 +com.android.org.conscrypt.TrustedCertificateStore$3 +com.android.org.conscrypt.TrustedCertificateStore$CertSelector  com.android.server.NetworkManagementSocketTagger  com.android.server.NetworkManagementSocketTagger$1  com.android.server.NetworkManagementSocketTagger$SocketTags @@ -2503,120 +2617,6 @@ org.apache.harmony.security.x509.Validity  org.apache.harmony.security.x509.Validity$1  org.apache.harmony.xml.ExpatAttributes  org.apache.harmony.xml.ExpatParser -org.apache.harmony.xnet.provider.jsse.AbstractSessionContext -org.apache.harmony.xnet.provider.jsse.AbstractSessionContext$1 -org.apache.harmony.xnet.provider.jsse.ByteArray -org.apache.harmony.xnet.provider.jsse.CertPinManager -org.apache.harmony.xnet.provider.jsse.ChainStrengthAnalyzer -org.apache.harmony.xnet.provider.jsse.ClientSessionContext -org.apache.harmony.xnet.provider.jsse.ClientSessionContext$HostAndPort -org.apache.harmony.xnet.provider.jsse.DefaultSSLContextImpl -org.apache.harmony.xnet.provider.jsse.FileClientSessionCache -org.apache.harmony.xnet.provider.jsse.FileClientSessionCache$Impl -org.apache.harmony.xnet.provider.jsse.JSSEProvider -org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl -org.apache.harmony.xnet.provider.jsse.KeyManagerImpl -org.apache.harmony.xnet.provider.jsse.NativeCrypto -org.apache.harmony.xnet.provider.jsse.NativeCrypto$SSLHandshakeCallbacks -org.apache.harmony.xnet.provider.jsse.OpenSSLBIOInputStream -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CBC -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CBC$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CBC$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CFB -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CFB$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CFB$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CTR -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CTR$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CTR$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$ECB -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$ECB$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$ECB$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$OFB -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$OFB$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$OFB$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$ARC4 -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CBC -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CBC$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CBC$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CFB -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CFB$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CFB$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$ECB -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$ECB$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$ECB$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$OFB -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$OFB$NoPadding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$OFB$PKCS5Padding -org.apache.harmony.xnet.provider.jsse.OpenSSLCipherRSA -org.apache.harmony.xnet.provider.jsse.OpenSSLCipherRSA$PKCS1 -org.apache.harmony.xnet.provider.jsse.OpenSSLCipherRSA$Raw -org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl -org.apache.harmony.xnet.provider.jsse.OpenSSLDSAKeyFactory -org.apache.harmony.xnet.provider.jsse.OpenSSLDSAKeyPairGenerator -org.apache.harmony.xnet.provider.jsse.OpenSSLECDHKeyAgreement -org.apache.harmony.xnet.provider.jsse.OpenSSLECKeyFactory -org.apache.harmony.xnet.provider.jsse.OpenSSLECKeyPairGenerator -org.apache.harmony.xnet.provider.jsse.OpenSSLKey -org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder -org.apache.harmony.xnet.provider.jsse.OpenSSLMac -org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacMD5 -org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA1 -org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA256 -org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA384 -org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA512 -org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK -org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$MD5 -org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$SHA1 -org.apache.harmony.xnet.provider.jsse.OpenSSLProvider -org.apache.harmony.xnet.provider.jsse.OpenSSLRSAKeyFactory -org.apache.harmony.xnet.provider.jsse.OpenSSLRSAKeyPairGenerator -org.apache.harmony.xnet.provider.jsse.OpenSSLRSAPublicKey -org.apache.harmony.xnet.provider.jsse.OpenSSLRandom -org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$1 -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$EngineType -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$MD5RSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA1DSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA1ECDSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA1RSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA256ECDSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA256RSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA384ECDSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA384RSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA512ECDSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA512RSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSignatureRawRSA -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream -org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImplWrapper -org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertPath -org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertPath$Encoding -org.apache.harmony.xnet.provider.jsse.OpenSSLX509Certificate -org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory -org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory$1 -org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory$2 -org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory$Parser -org.apache.harmony.xnet.provider.jsse.ProtocolVersion -org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache -org.apache.harmony.xnet.provider.jsse.SSLContextImpl -org.apache.harmony.xnet.provider.jsse.SSLParametersImpl -org.apache.harmony.xnet.provider.jsse.ServerSessionContext -org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl -org.apache.harmony.xnet.provider.jsse.TrustManagerImpl -org.apache.harmony.xnet.provider.jsse.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker -org.apache.harmony.xnet.provider.jsse.TrustedCertificateIndex -org.apache.harmony.xnet.provider.jsse.TrustedCertificateKeyStoreSpi -org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore -org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$1 -org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$2 -org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$3 -org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$CertSelector  org.apache.http.ConnectionReuseStrategy  org.apache.http.FormattedHeader  org.apache.http.Header diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp index c774763fafe4..e2297554e7d8 100644 --- a/services/input/InputReader.cpp +++ b/services/input/InputReader.cpp @@ -4252,8 +4252,8 @@ void TouchInputMapper::cookPointerData() {              bottom = float(mRawPointerAxes.x.maxValue - rawLeft) * mXScale + mXTranslate;              top = float(mRawPointerAxes.x.maxValue - rawRight) * mXScale + mXTranslate;              orientation -= M_PI_2; -            if (orientation < - M_PI_2) { -                orientation += M_PI; +            if (orientation < mOrientedRanges.orientation.min) { +                orientation += (mOrientedRanges.orientation.max - mOrientedRanges.orientation.min);              }              break;          case DISPLAY_ORIENTATION_180: @@ -4263,6 +4263,10 @@ void TouchInputMapper::cookPointerData() {              right = float(mRawPointerAxes.x.maxValue - rawLeft) * mXScale + mXTranslate;              bottom = float(mRawPointerAxes.y.maxValue - rawTop) * mYScale + mYTranslate;              top = float(mRawPointerAxes.y.maxValue - rawBottom) * mYScale + mYTranslate; +            orientation -= M_PI; +            if (orientation < mOrientedRanges.orientation.min) { +                orientation += (mOrientedRanges.orientation.max - mOrientedRanges.orientation.min); +            }              break;          case DISPLAY_ORIENTATION_270:              x = float(mRawPointerAxes.y.maxValue - in.y) * mYScale + mYTranslate; @@ -4272,8 +4276,8 @@ void TouchInputMapper::cookPointerData() {              bottom = float(rawRight - mRawPointerAxes.x.minValue) * mXScale + mXTranslate;              top = float(rawLeft - mRawPointerAxes.x.minValue) * mXScale + mXTranslate;              orientation += M_PI_2; -            if (orientation > M_PI_2) { -                orientation -= M_PI; +            if (orientation > mOrientedRanges.orientation.max) { +                orientation -= (mOrientedRanges.orientation.max - mOrientedRanges.orientation.min);              }              break;          default: diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java index ab70e6f38111..7ecd2c0364e5 100644 --- a/services/java/com/android/server/DevicePolicyManagerService.java +++ b/services/java/com/android/server/DevicePolicyManagerService.java @@ -1664,7 +1664,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {                  if (realQuality < quality                          && quality != DevicePolicyManager.PASSWORD_QUALITY_COMPLEX) {                      Slog.w(TAG, "resetPassword: password quality 0x" -                            + Integer.toHexString(quality) +                            + Integer.toHexString(realQuality)                              + " does not meet required quality 0x"                              + Integer.toHexString(quality));                      return false; diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 1dd5fc64039d..c91685710a50 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -1500,7 +1500,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub                  if (mStatusBar != null) {                      mStatusBar.setImeWindowStatus(token, vis, backDisposition);                  } -                final boolean iconVisibility = (vis & InputMethodService.IME_ACTIVE) != 0; +                final boolean iconVisibility = ((vis & (InputMethodService.IME_ACTIVE)) != 0) +                        && (mWindowManagerService.isHardKeyboardAvailable() +                                || (vis & (InputMethodService.IME_VISIBLE)) != 0);                  final InputMethodInfo imi = mMethodMap.get(mCurMethodId);                  if (imi != null && iconVisibility && needsToShowImeSwitchOngoingNotification()) {                      // Used to load label diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java index f402f4bd3dcc..e670ef9ba621 100644 --- a/services/java/com/android/server/MountService.java +++ b/services/java/com/android/server/MountService.java @@ -860,7 +860,7 @@ class MountService extends IMountService.Stub                  if (DEBUG_EVENTS) Slog.i(TAG, "Sending unmounted event first");                  /* Send the media unmounted event first */                  updatePublicVolumeState(volume, Environment.MEDIA_UNMOUNTED); -                action = Intent.ACTION_MEDIA_UNMOUNTED; +                sendStorageIntent(Intent.ACTION_MEDIA_UNMOUNTED, volume, UserHandle.ALL);                  if (DEBUG_EVENTS) Slog.i(TAG, "Sending media bad removal");                  updatePublicVolumeState(volume, Environment.MEDIA_BAD_REMOVAL); diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 0081dfc512d0..db016558a76b 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -6334,6 +6334,7 @@ public final class ActivityManagerService  extends ActivityManagerNative                      // it runs in the process of the default user.  Get rid of it.                      providers.remove(i);                      N--; +                    i--;                      continue;                  } diff --git a/services/java/com/android/server/pm/SELinuxMMAC.java b/services/java/com/android/server/pm/SELinuxMMAC.java index 4bbdb5e26668..04f43d9676f7 100644 --- a/services/java/com/android/server/pm/SELinuxMMAC.java +++ b/services/java/com/android/server/pm/SELinuxMMAC.java @@ -57,7 +57,7 @@ public final class SELinuxMMAC {      // Locations of potential install policy files.      private static final File[] INSTALL_POLICY_FILE = { -        new File(Environment.getDataDirectory(), "system/mac_permissions.xml"), +        new File(Environment.getDataDirectory(), "security/mac_permissions.xml"),          new File(Environment.getRootDirectory(), "etc/security/mac_permissions.xml"),          null}; diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index bc442cef2e40..de72c2615005 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -8943,10 +8943,31 @@ public class WindowManagerService extends IWindowManager.Stub                  if (DEBUG_ORIENTATION &&                          winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING) Slog.i(                          TAG, "Resizing " + win + " WITH DRAW PENDING"); -                win.mClient.resized(win.mFrame, win.mLastOverscanInsets, win.mLastContentInsets, -                        win.mLastVisibleInsets, -                        winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING, -                        configChanged ? win.mConfiguration : null); +                final IWindow client = win.mClient; +                final Rect frame = win.mFrame; +                final Rect overscanInsets = win.mLastOverscanInsets; +                final Rect contentInsets = win.mLastContentInsets; +                final Rect visibleInsets = win.mLastVisibleInsets; +                final boolean reportDraw +                        = winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING; +                final Configuration newConfig = configChanged ? win.mConfiguration : null; +                if (win.mClient instanceof IWindow.Stub) { +                    // To prevent deadlock simulate one-way call if win.mClient is a local object. +                    mH.post(new Runnable() { +                        @Override +                        public void run() { +                            try { +                                client.resized(frame, overscanInsets, contentInsets, +                                        visibleInsets, reportDraw, newConfig); +                            } catch (RemoteException e) { +                                // Not a remote call, RemoteException won't be raised. +                            } +                        } +                    }); +                } else { +                   client.resized(frame, overscanInsets, contentInsets, visibleInsets, reportDraw, +                           newConfig); +                }                  win.mOverscanInsetsChanged = false;                  win.mContentInsetsChanged = false;                  win.mVisibleInsetsChanged = false; diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java index 55680c8a9a30..b456bb35b2d2 100644 --- a/telephony/java/android/telephony/CellSignalStrengthLte.java +++ b/telephony/java/android/telephony/CellSignalStrengthLte.java @@ -94,7 +94,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P       * @hide       */      public void initialize(SignalStrength ss, int timingAdvance) { -        mSignalStrength = ss.getLteSignalStrenght(); +        mSignalStrength = ss.getLteSignalStrength();          mRsrp = ss.getLteRsrp();          mRsrq = ss.getLteRsrq();          mRssnr = ss.getLteRssnr(); diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index 8b85d8ca7d88..3ae210636f84 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -152,6 +152,11 @@ public class PhoneNumberUtils          String number = null;          Uri uri = intent.getData(); + +        if (uri == null) { +            return null; +        } +          String scheme = uri.getScheme();          if (scheme.equals("tel") || scheme.equals("sip")) { diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index 674955cfe647..7b9cf4e5f204 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -438,7 +438,7 @@ public class SignalStrength implements Parcelable {      }      /** @hide */ -    public int getLteSignalStrenght() { +    public int getLteSignalStrength() {          return mLteSignalStrength;      } diff --git a/tests/CoreTests/android/Android.mk b/tests/CoreTests/android/Android.mk index 5abfc8821a6a..bc0e4e4ddaf8 100644 --- a/tests/CoreTests/android/Android.mk +++ b/tests/CoreTests/android/Android.mk @@ -6,7 +6,7 @@ LOCAL_MODULE_TAGS := tests  LOCAL_SRC_FILES := \  	$(call all-subdir-java-files) -LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle +LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle conscrypt  LOCAL_PACKAGE_NAME := CoreTests diff --git a/tests/CoreTests/android/core/SSLSocketTest.java b/tests/CoreTests/android/core/SSLSocketTest.java index 03905e1743e9..b06790bc715d 100644 --- a/tests/CoreTests/android/core/SSLSocketTest.java +++ b/tests/CoreTests/android/core/SSLSocketTest.java @@ -18,10 +18,10 @@ package android.core;  import junit.framework.TestCase; +import com.android.org.conscrypt.FileClientSessionCache; +import com.android.org.conscrypt.OpenSSLContextImpl; +import com.android.org.conscrypt.SSLClientSessionCache;  import org.apache.commons.codec.binary.Base64; -import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache; -import org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl; -import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache;  import java.io.ByteArrayInputStream;  import java.io.DataInputStream; diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp index 32fecb29034c..977226b61471 100644 --- a/tools/aapt/Main.cpp +++ b/tools/aapt/Main.cpp @@ -48,6 +48,7 @@ void usage(void)          "   List contents of Zip-compatible archive.\n\n", gProgName);      fprintf(stderr,          " %s d[ump] [--values] WHAT file.{apk} [asset [asset ...]]\n" +        "   strings          Print the contents of the resource table string pool in the APK.\n"          "   badging          Print the label and icon for the app declared in APK.\n"          "   permissions      Print the permissions from the APK.\n"          "   resources        Print the resource table from the APK.\n" diff --git a/wifi/java/android/net/wifi/SupplicantStateTracker.java b/wifi/java/android/net/wifi/SupplicantStateTracker.java index f7fc795ae756..f6a621fa297c 100644 --- a/wifi/java/android/net/wifi/SupplicantStateTracker.java +++ b/wifi/java/android/net/wifi/SupplicantStateTracker.java @@ -45,6 +45,7 @@ class SupplicantStateTracker extends StateMachine {      private WifiStateMachine mWifiStateMachine;      private WifiConfigStore mWifiConfigStore;      private int mAuthenticationFailuresCount = 0; +    private int mAssociationRejectCount = 0;      /* Indicates authentication failure in supplicant broadcast.       * TODO: enhance auth failure reporting to include notification       * for all type of failures: EAP, WPS & WPA networks */ @@ -53,6 +54,9 @@ class SupplicantStateTracker extends StateMachine {      /* Maximum retries on a authentication failure notification */      private static final int MAX_RETRIES_ON_AUTHENTICATION_FAILURE = 2; +    /* Maximum retries on assoc rejection events */ +    private static final int MAX_RETRIES_ON_ASSOCIATION_REJECT = 4; +      /* Tracks if networks have been disabled during a connection */      private boolean mNetworksDisabledDuringConnect = false; @@ -89,14 +93,14 @@ class SupplicantStateTracker extends StateMachine {          start();      } -    private void handleNetworkConnectionFailure(int netId) { +    private void handleNetworkConnectionFailure(int netId, int disableReason) {          /* If other networks disabled during connection, enable them */          if (mNetworksDisabledDuringConnect) {              mWifiConfigStore.enableAllNetworks();              mNetworksDisabledDuringConnect = false;          }          /* Disable failed network */ -        mWifiConfigStore.disableNetwork(netId, WifiConfiguration.DISABLED_AUTH_FAILURE); +        mWifiConfigStore.disableNetwork(netId, disableReason);      }      private void transitionOnSupplicantStateChange(StateChangeResult stateChangeResult) { @@ -182,6 +186,10 @@ class SupplicantStateTracker extends StateMachine {                      break;                  case WifiManager.CONNECT_NETWORK:                      mNetworksDisabledDuringConnect = true; +                    mAssociationRejectCount = 0; +                    break; +                case WifiMonitor.ASSOCIATION_REJECTION_EVENT: +                    mAssociationRejectCount++;                      break;                  default:                      Log.e(TAG, "Ignoring " + message); @@ -226,9 +234,17 @@ class SupplicantStateTracker extends StateMachine {               if (mAuthenticationFailuresCount >= MAX_RETRIES_ON_AUTHENTICATION_FAILURE) {                   Log.d(TAG, "Failed to authenticate, disabling network " +                           stateChangeResult.networkId); -                 handleNetworkConnectionFailure(stateChangeResult.networkId); +                 handleNetworkConnectionFailure(stateChangeResult.networkId, +                         WifiConfiguration.DISABLED_AUTH_FAILURE);                   mAuthenticationFailuresCount = 0;               } +             else if (mAssociationRejectCount >= MAX_RETRIES_ON_ASSOCIATION_REJECT) { +                 Log.d(TAG, "Association getting rejected, disabling network " + +                         stateChangeResult.networkId); +                 handleNetworkConnectionFailure(stateChangeResult.networkId, +                         WifiConfiguration.DISABLED_ASSOCIATION_REJECT); +                 mAssociationRejectCount = 0; +            }           }      } @@ -268,7 +284,8 @@ class SupplicantStateTracker extends StateMachine {                          if (mLoopDetectCount > MAX_SUPPLICANT_LOOP_ITERATIONS) {                              Log.d(TAG, "Supplicant loop detected, disabling network " +                                      stateChangeResult.networkId); -                            handleNetworkConnectionFailure(stateChangeResult.networkId); +                            handleNetworkConnectionFailure(stateChangeResult.networkId, +                                    WifiConfiguration.DISABLED_AUTH_FAILURE);                          }                          mLoopDetectIndex = state.ordinal();                          sendSupplicantStateChangedBroadcast(state, @@ -291,6 +308,7 @@ class SupplicantStateTracker extends StateMachine {               if (DBG) Log.d(TAG, getName() + "\n");               /* Reset authentication failure count */               mAuthenticationFailuresCount = 0; +             mAssociationRejectCount = 0;               if (mNetworksDisabledDuringConnect) {                   mWifiConfigStore.enableAllNetworks();                   mNetworksDisabledDuringConnect = false; diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index b971fc338735..bd8f0eb2d041 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -173,6 +173,8 @@ public class WifiConfiguration implements Parcelable {      public static final int DISABLED_DHCP_FAILURE                           = 2;      /** @hide */      public static final int DISABLED_AUTH_FAILURE                           = 3; +    /** @hide */ +    public static final int DISABLED_ASSOCIATION_REJECT                     = 4;      /**       * The ID number that the supplicant uses to identify this diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java index 6e3034b07856..4bee937aeb9a 100644 --- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java +++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java @@ -85,6 +85,7 @@ public class WifiEnterpriseConfig implements Parcelable {      private static final String ENGINE_KEY          = "engine";      private static final String ENGINE_ID_KEY       = "engine_id";      private static final String PRIVATE_KEY_ID_KEY  = "key_id"; +    private static final String OPP_KEY_CACHING     = "proactive_key_caching";      private HashMap<String, String> mFields = new HashMap<String, String>();      private X509Certificate mCaCert; @@ -273,6 +274,7 @@ public class WifiEnterpriseConfig implements Parcelable {              case Eap.TLS:              case Eap.TTLS:                  mFields.put(EAP_KEY, Eap.strings[eapMethod]); +                mFields.put(OPP_KEY_CACHING, "1");                  break;              default:                  throw new IllegalArgumentException("Unknown EAP method"); diff --git a/wifi/java/android/net/wifi/WifiMonitor.java b/wifi/java/android/net/wifi/WifiMonitor.java index 0b0d7388e6ee..fe3c70902052 100644 --- a/wifi/java/android/net/wifi/WifiMonitor.java +++ b/wifi/java/android/net/wifi/WifiMonitor.java @@ -56,7 +56,8 @@ public class WifiMonitor {      private static final int TERMINATING  = 6;      private static final int DRIVER_STATE = 7;      private static final int EAP_FAILURE  = 8; -    private static final int UNKNOWN      = 9; +    private static final int ASSOC_REJECT = 9; +    private static final int UNKNOWN      = 10;      /** All events coming from the supplicant start with this prefix */      private static final String EVENT_PREFIX_STR = "CTRL-EVENT-"; @@ -153,6 +154,11 @@ public class WifiMonitor {      private static final String EAP_AUTH_FAILURE_STR = "EAP authentication failed";      /** +     * This indicates an assoc reject event +     */ +    private static final String ASSOC_REJECT_STR = "ASSOC-REJECT"; + +    /**       * Regex pattern for extracting an Ethernet-style MAC address from a string.       * Matches a strings like the following:<pre>       * CTRL-EVENT-CONNECTED - Connection to 00:1e:58:ec:d5:6d completed (reauth) [id=1 id_str=]</pre> @@ -328,6 +334,8 @@ public class WifiMonitor {      public static final int AP_STA_DISCONNECTED_EVENT            = BASE + 41;      public static final int AP_STA_CONNECTED_EVENT               = BASE + 42; +    /* Indicates assoc reject event */ +    public static final int ASSOCIATION_REJECTION_EVENT          = BASE + 43;      /**       * This indicates the supplicant connection for the monitor is closed       */ @@ -429,6 +437,8 @@ public class WifiMonitor {                      event = DRIVER_STATE;                  else if (eventName.equals(EAP_FAILURE_STR))                      event = EAP_FAILURE; +                else if (eventName.equals(ASSOC_REJECT_STR)) +                    event = ASSOC_REJECT;                  else                      event = UNKNOWN; @@ -473,6 +483,8 @@ public class WifiMonitor {                      if (eventData.startsWith(EAP_AUTH_FAILURE_STR)) {                          mStateMachine.sendMessage(AUTHENTICATION_FAILURE_EVENT);                      } +                } else if (event == ASSOC_REJECT) { +                        mStateMachine.sendMessage(ASSOCIATION_REJECTION_EVENT);                  } else {                      handleEvent(event, eventData);                  } diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 3e3752e5314c..bb613395f7f5 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -1944,6 +1944,7 @@ public class WifiStateMachine extends StateMachine {                  case WifiMonitor.SCAN_RESULTS_EVENT:                  case WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT:                  case WifiMonitor.AUTHENTICATION_FAILURE_EVENT: +                case WifiMonitor.ASSOCIATION_REJECTION_EVENT:                  case WifiMonitor.WPS_OVERLAP_EVENT:                  case CMD_BLACKLIST_NETWORK:                  case CMD_CLEAR_BLACKLIST: @@ -2361,6 +2362,7 @@ public class WifiStateMachine extends StateMachine {                  case WifiMonitor.NETWORK_CONNECTION_EVENT:                  case WifiMonitor.NETWORK_DISCONNECTION_EVENT:                  case WifiMonitor.AUTHENTICATION_FAILURE_EVENT: +                case WifiMonitor.ASSOCIATION_REJECTION_EVENT:                  case WifiMonitor.WPS_OVERLAP_EVENT:                  case CMD_SET_COUNTRY_CODE:                  case CMD_SET_FREQUENCY_BAND: @@ -2726,6 +2728,9 @@ public class WifiStateMachine extends StateMachine {              WifiConfiguration config;              boolean ok;              switch(message.what) { +                case WifiMonitor.ASSOCIATION_REJECTION_EVENT: +                    mSupplicantStateTracker.sendMessage(WifiMonitor.ASSOCIATION_REJECTION_EVENT); +                    break;                  case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:                      mSupplicantStateTracker.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT);                      break; @@ -3455,6 +3460,9 @@ public class WifiStateMachine extends StateMachine {                      if (DBG) log("Network connection lost");                      handleNetworkDisconnect();                      break; +                case WifiMonitor.ASSOCIATION_REJECTION_EVENT: +                    if (DBG) log("Ignore Assoc reject event during WPS Connection"); +                    break;                  case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:                      // Disregard auth failure events during WPS connection. The                      // EAP sequence is retried several times, and there might be  |