diff options
183 files changed, 2317 insertions, 540 deletions
@@ -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 02b95a0..962b332 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,21 @@ 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 isAlphabetic(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); @@ -32529,6 +32541,7 @@ package java.lang { method public static boolean isISOControl(int); method public static boolean isIdentifierIgnorable(char); method public static boolean isIdentifierIgnorable(int); + method public static boolean isIdeographic(int); method public static boolean isJavaIdentifierPart(char); method public static boolean isJavaIdentifierPart(int); method public static boolean isJavaIdentifierStart(char); @@ -32548,6 +32561,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 +32574,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); @@ -32653,48 +32668,84 @@ package java.lang { method public static java.lang.Character.UnicodeBlock of(char); method public static java.lang.Character.UnicodeBlock of(int); field public static final java.lang.Character.UnicodeBlock AEGEAN_NUMBERS; + field public static final java.lang.Character.UnicodeBlock ALCHEMICAL_SYMBOLS; field public static final java.lang.Character.UnicodeBlock ALPHABETIC_PRESENTATION_FORMS; + field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION; + field public static final java.lang.Character.UnicodeBlock ANCIENT_GREEK_NUMBERS; + field public static final java.lang.Character.UnicodeBlock ANCIENT_SYMBOLS; field public static final java.lang.Character.UnicodeBlock ARABIC; field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_A; field public static final java.lang.Character.UnicodeBlock ARABIC_PRESENTATION_FORMS_B; + field public static final java.lang.Character.UnicodeBlock ARABIC_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock ARMENIAN; field public static final java.lang.Character.UnicodeBlock ARROWS; + field public static final java.lang.Character.UnicodeBlock AVESTAN; + field public static final java.lang.Character.UnicodeBlock BALINESE; + field public static final java.lang.Character.UnicodeBlock BAMUM; + field public static final java.lang.Character.UnicodeBlock BAMUM_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock BASIC_LATIN; + field public static final java.lang.Character.UnicodeBlock BATAK; field public static final java.lang.Character.UnicodeBlock BENGALI; field public static final java.lang.Character.UnicodeBlock BLOCK_ELEMENTS; field public static final java.lang.Character.UnicodeBlock BOPOMOFO; field public static final java.lang.Character.UnicodeBlock BOPOMOFO_EXTENDED; field public static final java.lang.Character.UnicodeBlock BOX_DRAWING; + field public static final java.lang.Character.UnicodeBlock BRAHMI; field public static final java.lang.Character.UnicodeBlock BRAILLE_PATTERNS; + field public static final java.lang.Character.UnicodeBlock BUGINESE; field public static final java.lang.Character.UnicodeBlock BUHID; field public static final java.lang.Character.UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS; + field public static final java.lang.Character.UnicodeBlock CARIAN; + field public static final java.lang.Character.UnicodeBlock CHAM; field public static final java.lang.Character.UnicodeBlock CHEROKEE; field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY; field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_FORMS; field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS; field public static final java.lang.Character.UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock CJK_RADICALS_SUPPLEMENT; + field public static final java.lang.Character.UnicodeBlock CJK_STROKES; field public static final java.lang.Character.UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION; field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS; field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A; field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B; + field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C; + field public static final java.lang.Character.UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D; field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS; + field public static final java.lang.Character.UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock COMBINING_HALF_MARKS; field public static final java.lang.Character.UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS; + field public static final java.lang.Character.UnicodeBlock COMMON_INDIC_NUMBER_FORMS; field public static final java.lang.Character.UnicodeBlock CONTROL_PICTURES; + field public static final java.lang.Character.UnicodeBlock COPTIC; + field public static final java.lang.Character.UnicodeBlock COUNTING_ROD_NUMERALS; + field public static final java.lang.Character.UnicodeBlock CUNEIFORM; + field public static final java.lang.Character.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION; field public static final java.lang.Character.UnicodeBlock CURRENCY_SYMBOLS; field public static final java.lang.Character.UnicodeBlock CYPRIOT_SYLLABARY; field public static final java.lang.Character.UnicodeBlock CYRILLIC; + field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_A; + field public static final java.lang.Character.UnicodeBlock CYRILLIC_EXTENDED_B; field public static final java.lang.Character.UnicodeBlock CYRILLIC_SUPPLEMENTARY; field public static final java.lang.Character.UnicodeBlock DESERET; field public static final java.lang.Character.UnicodeBlock DEVANAGARI; + field public static final java.lang.Character.UnicodeBlock DEVANAGARI_EXTENDED; field public static final java.lang.Character.UnicodeBlock DINGBATS; + field public static final java.lang.Character.UnicodeBlock DOMINO_TILES; + field public static final java.lang.Character.UnicodeBlock EGYPTIAN_HIEROGLYPHS; + field public static final java.lang.Character.UnicodeBlock EMOTICONS; field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERICS; + field public static final java.lang.Character.UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS; + field public static final java.lang.Character.UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock ETHIOPIC; + field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED; + field public static final java.lang.Character.UnicodeBlock ETHIOPIC_EXTENDED_A; + field public static final java.lang.Character.UnicodeBlock ETHIOPIC_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock GENERAL_PUNCTUATION; field public static final java.lang.Character.UnicodeBlock GEOMETRIC_SHAPES; field public static final java.lang.Character.UnicodeBlock GEORGIAN; + field public static final java.lang.Character.UnicodeBlock GEORGIAN_SUPPLEMENT; + field public static final java.lang.Character.UnicodeBlock GLAGOLITIC; field public static final java.lang.Character.UnicodeBlock GOTHIC; field public static final java.lang.Character.UnicodeBlock GREEK; field public static final java.lang.Character.UnicodeBlock GREEK_EXTENDED; @@ -32703,6 +32754,8 @@ package java.lang { field public static final java.lang.Character.UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS; field public static final java.lang.Character.UnicodeBlock HANGUL_COMPATIBILITY_JAMO; field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO; + field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_A; + field public static final java.lang.Character.UnicodeBlock HANGUL_JAMO_EXTENDED_B; field public static final java.lang.Character.UnicodeBlock HANGUL_SYLLABLES; field public static final java.lang.Character.UnicodeBlock HANUNOO; field public static final java.lang.Character.UnicodeBlock HEBREW; @@ -32710,12 +32763,20 @@ package java.lang { field public static final java.lang.Character.UnicodeBlock HIGH_SURROGATES; field public static final java.lang.Character.UnicodeBlock HIRAGANA; field public static final java.lang.Character.UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS; + field public static final java.lang.Character.UnicodeBlock IMPERIAL_ARAMAIC; + field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PAHLAVI; + field public static final java.lang.Character.UnicodeBlock INSCRIPTIONAL_PARTHIAN; field public static final java.lang.Character.UnicodeBlock IPA_EXTENSIONS; + field public static final java.lang.Character.UnicodeBlock JAVANESE; + field public static final java.lang.Character.UnicodeBlock KAITHI; + field public static final java.lang.Character.UnicodeBlock KANA_SUPPLEMENT; field public static final java.lang.Character.UnicodeBlock KANBUN; field public static final java.lang.Character.UnicodeBlock KANGXI_RADICALS; field public static final java.lang.Character.UnicodeBlock KANNADA; field public static final java.lang.Character.UnicodeBlock KATAKANA; field public static final java.lang.Character.UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS; + field public static final java.lang.Character.UnicodeBlock KAYAH_LI; + field public static final java.lang.Character.UnicodeBlock KHAROSHTHI; field public static final java.lang.Character.UnicodeBlock KHMER; field public static final java.lang.Character.UnicodeBlock KHMER_SYMBOLS; field public static final java.lang.Character.UnicodeBlock LAO; @@ -32723,58 +32784,96 @@ package java.lang { field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_A; field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_ADDITIONAL; field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_B; + field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_C; + field public static final java.lang.Character.UnicodeBlock LATIN_EXTENDED_D; + field public static final java.lang.Character.UnicodeBlock LEPCHA; field public static final java.lang.Character.UnicodeBlock LETTERLIKE_SYMBOLS; field public static final java.lang.Character.UnicodeBlock LIMBU; field public static final java.lang.Character.UnicodeBlock LINEAR_B_IDEOGRAMS; field public static final java.lang.Character.UnicodeBlock LINEAR_B_SYLLABARY; + field public static final java.lang.Character.UnicodeBlock LISU; field public static final java.lang.Character.UnicodeBlock LOW_SURROGATES; + field public static final java.lang.Character.UnicodeBlock LYCIAN; + field public static final java.lang.Character.UnicodeBlock LYDIAN; + field public static final java.lang.Character.UnicodeBlock MAHJONG_TILES; field public static final java.lang.Character.UnicodeBlock MALAYALAM; + field public static final java.lang.Character.UnicodeBlock MANDAIC; field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS; field public static final java.lang.Character.UnicodeBlock MATHEMATICAL_OPERATORS; + field public static final java.lang.Character.UnicodeBlock MEETEI_MAYEK; field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A; field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B; field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS; field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS; + field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS; field public static final java.lang.Character.UnicodeBlock MISCELLANEOUS_TECHNICAL; + field public static final java.lang.Character.UnicodeBlock MODIFIER_TONE_LETTERS; field public static final java.lang.Character.UnicodeBlock MONGOLIAN; field public static final java.lang.Character.UnicodeBlock MUSICAL_SYMBOLS; field public static final java.lang.Character.UnicodeBlock MYANMAR; + field public static final java.lang.Character.UnicodeBlock MYANMAR_EXTENDED_A; + field public static final java.lang.Character.UnicodeBlock NEW_TAI_LUE; + field public static final java.lang.Character.UnicodeBlock NKO; field public static final java.lang.Character.UnicodeBlock NUMBER_FORMS; field public static final java.lang.Character.UnicodeBlock OGHAM; field public static final java.lang.Character.UnicodeBlock OLD_ITALIC; + field public static final java.lang.Character.UnicodeBlock OLD_PERSIAN; + field public static final java.lang.Character.UnicodeBlock OLD_SOUTH_ARABIAN; + field public static final java.lang.Character.UnicodeBlock OLD_TURKIC; + field public static final java.lang.Character.UnicodeBlock OL_CHIKI; field public static final java.lang.Character.UnicodeBlock OPTICAL_CHARACTER_RECOGNITION; field public static final java.lang.Character.UnicodeBlock ORIYA; field public static final java.lang.Character.UnicodeBlock OSMANYA; + field public static final java.lang.Character.UnicodeBlock PHAGS_PA; + field public static final java.lang.Character.UnicodeBlock PHAISTOS_DISC; + field public static final java.lang.Character.UnicodeBlock PHOENICIAN; field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS; + field public static final java.lang.Character.UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT; + field public static final java.lang.Character.UnicodeBlock PLAYING_CARDS; field public static final java.lang.Character.UnicodeBlock PRIVATE_USE_AREA; + field public static final java.lang.Character.UnicodeBlock REJANG; + field public static final java.lang.Character.UnicodeBlock RUMI_NUMERAL_SYMBOLS; field public static final java.lang.Character.UnicodeBlock RUNIC; + field public static final java.lang.Character.UnicodeBlock SAMARITAN; + field public static final java.lang.Character.UnicodeBlock SAURASHTRA; field public static final java.lang.Character.UnicodeBlock SHAVIAN; field public static final java.lang.Character.UnicodeBlock SINHALA; field public static final java.lang.Character.UnicodeBlock SMALL_FORM_VARIANTS; field public static final java.lang.Character.UnicodeBlock SPACING_MODIFIER_LETTERS; field public static final java.lang.Character.UnicodeBlock SPECIALS; + field public static final java.lang.Character.UnicodeBlock SUNDANESE; field public static final java.lang.Character.UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS; field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_A; field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_ARROWS_B; field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS; + field public static final java.lang.Character.UnicodeBlock SUPPLEMENTAL_PUNCTUATION; field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A; field public static final java.lang.Character.UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B; field public static final deprecated java.lang.Character.UnicodeBlock SURROGATES_AREA; + field public static final java.lang.Character.UnicodeBlock SYLOTI_NAGRI; field public static final java.lang.Character.UnicodeBlock SYRIAC; field public static final java.lang.Character.UnicodeBlock TAGALOG; field public static final java.lang.Character.UnicodeBlock TAGBANWA; field public static final java.lang.Character.UnicodeBlock TAGS; field public static final java.lang.Character.UnicodeBlock TAI_LE; + field public static final java.lang.Character.UnicodeBlock TAI_THAM; + field public static final java.lang.Character.UnicodeBlock TAI_VIET; field public static final java.lang.Character.UnicodeBlock TAI_XUAN_JING_SYMBOLS; field public static final java.lang.Character.UnicodeBlock TAMIL; field public static final java.lang.Character.UnicodeBlock TELUGU; field public static final java.lang.Character.UnicodeBlock THAANA; field public static final java.lang.Character.UnicodeBlock THAI; field public static final java.lang.Character.UnicodeBlock TIBETAN; + field public static final java.lang.Character.UnicodeBlock TIFINAGH; + field public static final java.lang.Character.UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS; field public static final java.lang.Character.UnicodeBlock UGARITIC; field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS; + field public static final java.lang.Character.UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED; + field public static final java.lang.Character.UnicodeBlock VAI; field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS; field public static final java.lang.Character.UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT; + field public static final java.lang.Character.UnicodeBlock VEDIC_EXTENSIONS; + field public static final java.lang.Character.UnicodeBlock VERTICAL_FORMS; field public static final java.lang.Character.UnicodeBlock YIJING_HEXAGRAM_SYMBOLS; field public static final java.lang.Character.UnicodeBlock YI_RADICALS; field public static final java.lang.Character.UnicodeBlock YI_SYLLABLES; @@ -32888,7 +32987,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 +33129,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 +33178,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 +33187,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 +33239,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 +33355,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 +33365,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 +33460,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 +33510,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 +33569,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 +33841,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 +33974,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 +34233,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 +34276,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 +34292,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 +34632,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; @@ -34628,6 +34750,7 @@ package java.net { method public int getResponseCode() throws java.io.IOException; method public java.lang.String getResponseMessage() throws java.io.IOException; method public void setChunkedStreamingMode(int); + method public void setFixedLengthStreamingMode(long); method public void setFixedLengthStreamingMode(int); method public static void setFollowRedirects(boolean); method public void setInstanceFollowRedirects(boolean); @@ -34671,6 +34794,7 @@ package java.net { field public static final int HTTP_VERSION = 505; // 0x1f9 field protected int chunkLength; field protected int fixedContentLength; + field protected long fixedContentLengthLong; field protected boolean instanceFollowRedirects; field protected java.lang.String method; field protected int responseCode; @@ -34707,6 +34831,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 +34854,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 +34911,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 +34994,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 +35020,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 +35453,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 +35698,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 +35816,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(); @@ -35915,6 +36044,15 @@ package java.nio.charset { method public int getInputLength(); } + public final class StandardCharsets { + field public static final java.nio.charset.Charset ISO_8859_1; + field public static final java.nio.charset.Charset US_ASCII; + field public static final java.nio.charset.Charset UTF_16; + field public static final java.nio.charset.Charset UTF_16BE; + field public static final java.nio.charset.Charset UTF_16LE; + field public static final java.nio.charset.Charset UTF_8; + } + public class UnmappableCharacterException extends java.nio.charset.CharacterCodingException { ctor public UnmappableCharacterException(int); method public int getInputLength(); @@ -37623,7 +37761,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 +38190,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 +38696,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 +39596,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 +39741,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 +39797,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(); @@ -40184,6 +40338,18 @@ package java.util { ctor public NoSuchElementException(java.lang.String); } + public final class Objects { + method public static int compare(T, T, java.util.Comparator<? super T>); + method public static boolean deepEquals(java.lang.Object, java.lang.Object); + method public static boolean equals(java.lang.Object, java.lang.Object); + method public static int hash(java.lang.Object...); + method public static int hashCode(java.lang.Object); + method public static T requireNonNull(T); + method public static T requireNonNull(T, java.lang.String); + method public static java.lang.String toString(java.lang.Object); + method public static java.lang.String toString(java.lang.Object, java.lang.String); + } + public class Observable { ctor public Observable(); method public void addObserver(java.util.Observer); @@ -40317,7 +40483,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 +42125,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 +42472,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 +42495,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 +42511,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; @@ -42359,7 +42533,9 @@ package java.util.zip { public class GZIPOutputStream extends java.util.zip.DeflaterOutputStream { ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException; + ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream, int) throws java.io.IOException; + ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException; field protected java.util.zip.CRC32 crc; } @@ -42437,12 +42613,13 @@ 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; method public void close() throws java.io.IOException; method public java.util.Enumeration<? extends java.util.zip.ZipEntry> entries(); + method public java.lang.String getComment(); method public java.util.zip.ZipEntry getEntry(java.lang.String); method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; method public java.lang.String getName(); @@ -42473,6 +42650,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 +42695,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 +42737,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 +42997,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); @@ -48874,6 +49068,7 @@ package org.json { ctor public JSONArray(java.util.Collection); ctor public JSONArray(org.json.JSONTokener) throws org.json.JSONException; ctor public JSONArray(java.lang.String) throws org.json.JSONException; + ctor public JSONArray(java.lang.Object) throws org.json.JSONException; method public java.lang.Object get(int) throws org.json.JSONException; method public boolean getBoolean(int) throws org.json.JSONException; method public double getDouble(int) throws org.json.JSONException; @@ -48908,6 +49103,7 @@ package org.json { method public org.json.JSONArray put(int, int) throws org.json.JSONException; method public org.json.JSONArray put(int, long) throws org.json.JSONException; method public org.json.JSONArray put(int, java.lang.Object) throws org.json.JSONException; + method public java.lang.Object remove(int); method public org.json.JSONObject toJSONObject(org.json.JSONArray) throws org.json.JSONException; method public java.lang.String toString(int) throws org.json.JSONException; } @@ -48960,6 +49156,7 @@ package org.json { method public java.lang.Object remove(java.lang.String); method public org.json.JSONArray toJSONArray(org.json.JSONArray) throws org.json.JSONException; method public java.lang.String toString(int) throws org.json.JSONException; + method public static java.lang.Object wrap(java.lang.Object); field public static final java.lang.Object NULL; } diff --git a/cmds/input/src/com/android/commands/input/Input.java b/cmds/input/src/com/android/commands/input/Input.java index e43501c..80ac539 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 d4056c9..4268fa6 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 10ea109..72c9156 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 25c790f..bdd0adb 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 905ae0d..68db33a 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 1fc1226..e2d9724 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 4f59e8e..725a1ff 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 2b15afd..4881d14 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 27d5a58..7b803a8 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 2a2f7cf..31c8edb 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: @@ -89,6 +89,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { private TrustManager[] mTrustManagers = null; private KeyManager[] mKeyManagers = null; private byte[] mNpnProtocols = null; + private byte[] mAlpnProtocols = null; private PrivateKey mChannelIdPrivateKey = null; private final int mHandshakeTimeoutMillis; @@ -268,19 +269,42 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { * must be non-empty and of length less than 256. */ public void setNpnProtocols(byte[][] npnProtocols) { - this.mNpnProtocols = toNpnProtocolsList(npnProtocols); + this.mNpnProtocols = toLengthPrefixedList(npnProtocols); + } + + /** + * Sets the + * <a href="http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-01"> + * Application Layer Protocol Negotiation (ALPN)</a> protocols that this peer + * is interested in. + * + * <p>For servers this is the sequence of protocols to advertise as + * supported, in order of preference. This list is sent unencrypted to + * all clients that support ALPN. + * + * <p>For clients this is a list of supported protocols to match against the + * server's list. If there is no protocol supported by both client and + * server then the first protocol in the client's list will be selected. + * The order of the client's protocols is otherwise insignificant. + * + * @param protocols a non-empty list of protocol byte arrays. All arrays + * must be non-empty and of length less than 256. + * @hide + */ + public void setAlpnProtocols(byte[][] protocols) { + this.mAlpnProtocols = toLengthPrefixedList(protocols); } /** * Returns an array containing the concatenation of length-prefixed byte * strings. */ - static byte[] toNpnProtocolsList(byte[]... npnProtocols) { - if (npnProtocols.length == 0) { - throw new IllegalArgumentException("npnProtocols.length == 0"); + static byte[] toLengthPrefixedList(byte[]... items) { + if (items.length == 0) { + throw new IllegalArgumentException("items.length == 0"); } int totalLength = 0; - for (byte[] s : npnProtocols) { + for (byte[] s : items) { if (s.length == 0 || s.length > 255) { throw new IllegalArgumentException("s.length == 0 || s.length > 255: " + s.length); } @@ -288,7 +312,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { } byte[] result = new byte[totalLength]; int pos = 0; - for (byte[] s : npnProtocols) { + for (byte[] s : items) { result[pos++] = (byte) s.length; for (byte b : s) { result[pos++] = b; @@ -310,6 +334,20 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { } /** + * Returns the + * <a href="http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-01">Application + * Layer Protocol Negotiation (ALPN)</a> protocol selected by client and server, or null + * if no protocol was negotiated. + * + * @param socket a socket created by this factory. + * @throws IllegalArgumentException if the socket was not created by this factory. + * @hide + */ + public byte[] getAlpnSelectedProtocol(Socket socket) { + return castToOpenSSLSocket(socket).getAlpnSelectedProtocol(); + } + + /** * Sets the {@link KeyManager}s to be used for connections made by this factory. */ public void setKeyManagers(KeyManager[] keyManagers) { @@ -393,6 +431,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { public Socket createSocket(Socket k, String host, int port, boolean close) throws IOException { OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(k, host, port, close); s.setNpnProtocols(mNpnProtocols); + s.setAlpnProtocols(mAlpnProtocols); s.setHandshakeTimeout(mHandshakeTimeoutMillis); s.setChannelIdPrivateKey(mChannelIdPrivateKey); if (mSecure) { @@ -413,6 +452,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { public Socket createSocket() throws IOException { OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(); s.setNpnProtocols(mNpnProtocols); + s.setAlpnProtocols(mAlpnProtocols); s.setHandshakeTimeout(mHandshakeTimeoutMillis); s.setChannelIdPrivateKey(mChannelIdPrivateKey); return s; @@ -431,6 +471,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket( addr, port, localAddr, localPort); s.setNpnProtocols(mNpnProtocols); + s.setAlpnProtocols(mAlpnProtocols); s.setHandshakeTimeout(mHandshakeTimeoutMillis); s.setChannelIdPrivateKey(mChannelIdPrivateKey); return s; @@ -447,6 +488,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { public Socket createSocket(InetAddress addr, int port) throws IOException { OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(addr, port); s.setNpnProtocols(mNpnProtocols); + s.setAlpnProtocols(mAlpnProtocols); s.setHandshakeTimeout(mHandshakeTimeoutMillis); s.setChannelIdPrivateKey(mChannelIdPrivateKey); return s; @@ -464,6 +506,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket( host, port, localAddr, localPort); s.setNpnProtocols(mNpnProtocols); + s.setAlpnProtocols(mAlpnProtocols); s.setHandshakeTimeout(mHandshakeTimeoutMillis); s.setChannelIdPrivateKey(mChannelIdPrivateKey); if (mSecure) { @@ -482,6 +525,7 @@ public class SSLCertificateSocketFactory extends SSLSocketFactory { public Socket createSocket(String host, int port) throws IOException { OpenSSLSocketImpl s = (OpenSSLSocketImpl) getDelegate().createSocket(host, port); s.setNpnProtocols(mNpnProtocols); + s.setAlpnProtocols(mAlpnProtocols); s.setHandshakeTimeout(mHandshakeTimeoutMillis); s.setChannelIdPrivateKey(mChannelIdPrivateKey); if (mSecure) { diff --git a/core/java/android/net/SSLSessionCache.java b/core/java/android/net/SSLSessionCache.java index 4cbeb94..15421de 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/Uri.java b/core/java/android/net/Uri.java index 4b022d9..1d1e149 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -26,7 +26,7 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; import java.util.AbstractList; import java.util.ArrayList; import java.util.Collections; @@ -1689,7 +1689,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { return ""; } else { String encodedValue = query.substring(separator + 1, end); - return UriCodec.decode(encodedValue, true, Charsets.UTF_8, false); + return UriCodec.decode(encodedValue, true, StandardCharsets.UTF_8, false); } } @@ -1928,7 +1928,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { if (s == null) { return null; } - return UriCodec.decode(s, false, Charsets.UTF_8, false); + return UriCodec.decode(s, false, StandardCharsets.UTF_8, false); } /** diff --git a/core/java/android/net/dhcp/DhcpPacket.java b/core/java/android/net/dhcp/DhcpPacket.java index 7d2bd69..317a9b4 100644 --- a/core/java/android/net/dhcp/DhcpPacket.java +++ b/core/java/android/net/dhcp/DhcpPacket.java @@ -7,7 +7,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; import java.nio.ShortBuffer; import java.util.ArrayList; @@ -540,7 +540,7 @@ abstract class DhcpPacket { private static String readAsciiString(ByteBuffer buf, int byteCount) { byte[] bytes = new byte[byteCount]; buf.get(bytes); - return new String(bytes, 0, bytes.length, Charsets.US_ASCII); + return new String(bytes, 0, bytes.length, StandardCharsets.US_ASCII); } /** diff --git a/core/java/android/net/http/CertificateChainValidator.java b/core/java/android/net/http/CertificateChainValidator.java index f66075d..3652a4c 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 73f3d7c..269dfb8 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.OkResponseCache; +import com.android.okhttp.ResponseSource; +import com.android.okhttp.internal.DiskLruCache; 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 84765a5..f421d29 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 64eacbc..cfe5f27 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/nfc/NdefRecord.java b/core/java/android/nfc/NdefRecord.java index 2d9dae9..9b71f62 100644 --- a/core/java/android/nfc/NdefRecord.java +++ b/core/java/android/nfc/NdefRecord.java @@ -22,7 +22,7 @@ import android.os.Parcel; import android.os.Parcelable; import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -311,7 +311,7 @@ public final class NdefRecord implements Parcelable { if (packageName.length() == 0) throw new IllegalArgumentException("packageName is empty"); return new NdefRecord(TNF_EXTERNAL_TYPE, RTD_ANDROID_APP, null, - packageName.getBytes(Charsets.UTF_8)); + packageName.getBytes(StandardCharsets.UTF_8)); } /** @@ -350,7 +350,7 @@ public final class NdefRecord implements Parcelable { break; } } - byte[] uriBytes = uriString.getBytes(Charsets.UTF_8); + byte[] uriBytes = uriString.getBytes(StandardCharsets.UTF_8); byte[] recordBytes = new byte[uriBytes.length + 1]; recordBytes[0] = prefix; System.arraycopy(uriBytes, 0, recordBytes, 1, uriBytes.length); @@ -422,7 +422,7 @@ public final class NdefRecord implements Parcelable { // missing '/' is allowed // MIME RFCs suggest ASCII encoding for content-type - byte[] typeBytes = mimeType.getBytes(Charsets.US_ASCII); + byte[] typeBytes = mimeType.getBytes(StandardCharsets.US_ASCII); return new NdefRecord(TNF_MIME_MEDIA, typeBytes, null, mimeData); } @@ -462,8 +462,8 @@ public final class NdefRecord implements Parcelable { if (domain.length() == 0) throw new IllegalArgumentException("domain is empty"); if (type.length() == 0) throw new IllegalArgumentException("type is empty"); - byte[] byteDomain = domain.getBytes(Charsets.UTF_8); - byte[] byteType = type.getBytes(Charsets.UTF_8); + byte[] byteDomain = domain.getBytes(StandardCharsets.UTF_8); + byte[] byteType = type.getBytes(StandardCharsets.UTF_8); byte[] b = new byte[byteDomain.length + 1 + byteType.length]; System.arraycopy(byteDomain, 0, b, 0, byteDomain.length); b[byteDomain.length] = ':'; @@ -643,7 +643,7 @@ public final class NdefRecord implements Parcelable { } break; case NdefRecord.TNF_MIME_MEDIA: - String mimeType = new String(mType, Charsets.US_ASCII); + String mimeType = new String(mType, StandardCharsets.US_ASCII); return Intent.normalizeMimeType(mimeType); } return null; @@ -694,14 +694,14 @@ public final class NdefRecord implements Parcelable { break; case TNF_ABSOLUTE_URI: - Uri uri = Uri.parse(new String(mType, Charsets.UTF_8)); + Uri uri = Uri.parse(new String(mType, StandardCharsets.UTF_8)); return uri.normalizeScheme(); case TNF_EXTERNAL_TYPE: if (inSmartPoster) { break; } - return Uri.parse("vnd.android.nfc://ext/" + new String(mType, Charsets.US_ASCII)); + return Uri.parse("vnd.android.nfc://ext/" + new String(mType, StandardCharsets.US_ASCII)); } return null; } @@ -723,7 +723,7 @@ public final class NdefRecord implements Parcelable { } String prefix = URI_PREFIX_MAP[prefixIndex]; String suffix = new String(Arrays.copyOfRange(mPayload, 1, mPayload.length), - Charsets.UTF_8); + StandardCharsets.UTF_8); return Uri.parse(prefix + suffix); } diff --git a/core/java/android/os/StatFs.java b/core/java/android/os/StatFs.java index 2314057..9e9521a 100644 --- a/core/java/android/os/StatFs.java +++ b/core/java/android/os/StatFs.java @@ -18,14 +18,14 @@ package android.os; import libcore.io.ErrnoException; import libcore.io.Libcore; -import libcore.io.StructStatFs; +import libcore.io.StructStatVfs; /** * Retrieve overall information about the space on a filesystem. This is a - * wrapper for Unix statfs(). + * wrapper for Unix statvfs(). */ public class StatFs { - private StructStatFs mStat; + private StructStatVfs mStat; /** * Construct a new StatFs for looking at the stats of the filesystem at @@ -39,9 +39,9 @@ public class StatFs { mStat = doStat(path); } - private static StructStatFs doStat(String path) { + private static StructStatVfs doStat(String path) { try { - return Libcore.os.statfs(path); + return Libcore.os.statvfs(path); } catch (ErrnoException e) { throw new IllegalArgumentException("Invalid path: " + path, e); } @@ -66,7 +66,7 @@ public class StatFs { /** * The size, in bytes, of a block on the file system. This corresponds to - * the Unix {@code statfs.f_bsize} field. + * the Unix {@code statvfs.f_bsize} field. */ public long getBlockSizeLong() { return mStat.f_bsize; @@ -82,7 +82,7 @@ public class StatFs { /** * The total number of blocks on the file system. This corresponds to the - * Unix {@code statfs.f_blocks} field. + * Unix {@code statvfs.f_blocks} field. */ public long getBlockCountLong() { return mStat.f_blocks; @@ -99,7 +99,7 @@ public class StatFs { /** * The total number of blocks that are free on the file system, including * reserved blocks (that are not available to normal applications). This - * corresponds to the Unix {@code statfs.f_bfree} field. Most applications + * corresponds to the Unix {@code statvfs.f_bfree} field. Most applications * will want to use {@link #getAvailableBlocks()} instead. */ public long getFreeBlocksLong() { @@ -125,7 +125,7 @@ public class StatFs { /** * The number of blocks that are free on the file system and available to - * applications. This corresponds to the Unix {@code statfs.f_bavail} field. + * applications. This corresponds to the Unix {@code statvfs.f_bavail} field. */ public long getAvailableBlocksLong() { return mStat.f_bavail; diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java index e343e83..6c02965 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/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java index 028317f..a9ee96e 100644 --- a/core/java/android/preference/PreferenceActivity.java +++ b/core/java/android/preference/PreferenceActivity.java @@ -901,6 +901,8 @@ public abstract class PreferenceActivity extends ListActivity implements @Override protected void onDestroy() { + mHandler.removeMessages(MSG_BIND_PREFERENCES); + mHandler.removeMessages(MSG_BUILD_HEADERS); super.onDestroy(); if (mPreferenceManager != null) { diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java index c497e35..d1f35dd 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 366abd3..7e8fee5 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 5a4f322..33964a0 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 0546d24..5db3909 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 01d80ac..50638aa 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 95d65eb..3aa4cfb 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 ce886f2..6955d14 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/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java index 312af71..fea6be6 100644 --- a/core/java/android/webkit/CallbackProxy.java +++ b/core/java/android/webkit/CallbackProxy.java @@ -296,7 +296,12 @@ class CallbackProxy extends Handler { // in the UI thread. The WebViewClient and WebChromeClient functions // that check for a non-null callback are ok because java ensures atomic // 32-bit reads and writes. - if (messagesBlocked()) return; + if (messagesBlocked()) { + synchronized (this) { + notify(); + } + return; + } switch (msg.what) { case PAGE_STARTED: String startedUrl = msg.getData().getString("url"); diff --git a/core/java/android/webkit/ClientCertRequestHandler.java b/core/java/android/webkit/ClientCertRequestHandler.java index f5a60f6..d7a6806 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 36d33e7..6970cde 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/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index de8b80d..3f080d6 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -242,7 +242,7 @@ public class CheckedTextView extends TextView implements Checkable { right = width - mBasePadding; left = right - mCheckMarkWidth; } - checkMarkDrawable.setBounds( left, top, right, bottom); + checkMarkDrawable.setBounds(mScrollX + left, top, mScrollX + right, bottom); checkMarkDrawable.draw(canvas); } } diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java index 8f515f5..d03161e 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/FastScroller.java b/core/java/android/widget/FastScroller.java index fc9c000..10b8cbe 100644 --- a/core/java/android/widget/FastScroller.java +++ b/core/java/android/widget/FastScroller.java @@ -676,8 +676,13 @@ class FastScroller { final int section = mSectionIndexer.getSectionForPosition(firstVisibleItem); final int sectionPos = mSectionIndexer.getPositionForSection(section); - final int nextSectionPos = mSectionIndexer.getPositionForSection(section + 1); + final int nextSectionPos; final int sectionCount = mSections.length; + if (section + 1 < sectionCount) { + nextSectionPos = mSectionIndexer.getPositionForSection(section + 1); + } else { + nextSectionPos = totalItemCount - 1; + } final int positionsInSection = nextSectionPos - sectionPos; final View child = mList.getChildAt(0); diff --git a/core/java/android/widget/HeaderViewListAdapter.java b/core/java/android/widget/HeaderViewListAdapter.java index e2a269e..f9d8f92 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/ProgressBar.java b/core/java/android/widget/ProgressBar.java index 5392a96..65a2d4d 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -959,11 +959,9 @@ public class ProgressBar extends View { if (!mInDrawing) { if (verifyDrawable(dr)) { final Rect dirty = dr.getBounds(); - final int scrollX = mScrollX + mPaddingLeft; - final int scrollY = mScrollY + mPaddingTop; - invalidate(dirty.left + scrollX, dirty.top + scrollY, - dirty.right + scrollX, dirty.bottom + scrollY); + invalidate(dirty.left + mScrollX, dirty.top + mScrollY, + dirty.right + mScrollX, dirty.bottom + mScrollY); } else { super.invalidateDrawable(dr); } diff --git a/core/java/android/widget/SectionIndexer.java b/core/java/android/widget/SectionIndexer.java index 24f894c..a1c71f4 100644 --- a/core/java/android/widget/SectionIndexer.java +++ b/core/java/android/widget/SectionIndexer.java @@ -20,7 +20,9 @@ package android.widget; * Interface that should be implemented on Adapters to enable fast scrolling * in an {@link AbsListView} between sections of the list. A section is a group of list items * to jump to that have something in common. For example, they may begin with the - * same letter or they may be songs from the same artist. + * same letter or they may be songs from the same artist. ExpandableListAdapters that + * consider groups and sections as synonymous should account for collapsed groups and return + * an appropriate section/position. */ public interface SectionIndexer { /** diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java index e6796cb..e33c4d4 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/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java index 43a02cf..fe532b0 100644 --- a/core/java/com/android/internal/app/AlertController.java +++ b/core/java/com/android/internal/app/AlertController.java @@ -572,7 +572,7 @@ public class AlertController { if (whichButtons == BIT_BUTTON_POSITIVE) { centerButton(mButtonPositive); } else if (whichButtons == BIT_BUTTON_NEGATIVE) { - centerButton(mButtonNeutral); + centerButton(mButtonNegative); } else if (whichButtons == BIT_BUTTON_NEUTRAL) { centerButton(mButtonNeutral); } diff --git a/core/java/com/android/internal/net/VpnProfile.java b/core/java/com/android/internal/net/VpnProfile.java index c9b7cb3..01349bb 100644 --- a/core/java/com/android/internal/net/VpnProfile.java +++ b/core/java/com/android/internal/net/VpnProfile.java @@ -22,7 +22,7 @@ import android.text.TextUtils; import android.util.Log; import java.net.InetAddress; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; /** * Parcel-like entity class for VPN profiles. To keep things simple, all @@ -117,7 +117,7 @@ public class VpnProfile implements Cloneable, Parcelable { return null; } - String[] values = new String(value, Charsets.UTF_8).split("\0", -1); + String[] values = new String(value, StandardCharsets.UTF_8).split("\0", -1); // There can be 14 or 15 values in ICS MR1. if (values.length < 14 || values.length > 15) { return null; @@ -167,7 +167,7 @@ public class VpnProfile implements Cloneable, Parcelable { builder.append('\0').append(ipsecUserCert); builder.append('\0').append(ipsecCaCert); builder.append('\0').append(ipsecServerCert); - return builder.toString().getBytes(Charsets.UTF_8); + return builder.toString().getBytes(StandardCharsets.UTF_8); } /** diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 2184fd2..fb22df7 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/java/com/android/internal/util/ProcFileReader.java b/core/java/com/android/internal/util/ProcFileReader.java index 81571fe..ead58c7 100644 --- a/core/java/com/android/internal/util/ProcFileReader.java +++ b/core/java/com/android/internal/util/ProcFileReader.java @@ -20,13 +20,13 @@ import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.net.ProtocolException; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; /** * Reader that specializes in parsing {@code /proc/} files quickly. Walks * through the stream using a single space {@code ' '} as token separator, and * requires each line boundary to be explicitly acknowledged using - * {@link #finishLine()}. Assumes {@link Charsets#US_ASCII} encoding. + * {@link #finishLine()}. Assumes {@link StandardCharsets#US_ASCII} encoding. * <p> * Currently doesn't support formats based on {@code \0}, tabs, or repeated * delimiters. @@ -181,7 +181,7 @@ public class ProcFileReader implements Closeable { } private String parseAndConsumeString(int tokenIndex) throws IOException { - final String s = new String(mBuffer, 0, tokenIndex, Charsets.US_ASCII); + final String s = new String(mBuffer, 0, tokenIndex, StandardCharsets.US_ASCII); consumeBuf(tokenIndex + 1); return s; } @@ -212,7 +212,7 @@ public class ProcFileReader implements Closeable { private NumberFormatException invalidLong(int tokenIndex) { return new NumberFormatException( - "invalid long: " + new String(mBuffer, 0, tokenIndex, Charsets.US_ASCII)); + "invalid long: " + new String(mBuffer, 0, tokenIndex, StandardCharsets.US_ASCII)); } /** diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java index fa35308..f40f48c 100644 --- a/core/java/com/android/internal/util/XmlUtils.java +++ b/core/java/com/android/internal/util/XmlUtils.java @@ -796,16 +796,8 @@ public class XmlUtils { } throw new XmlPullParserException( "Unexpected end of document in <string>"); - } else if (tagName.equals("int")) { - res = Integer.parseInt(parser.getAttributeValue(null, "value")); - } else if (tagName.equals("long")) { - res = Long.valueOf(parser.getAttributeValue(null, "value")); - } else if (tagName.equals("float")) { - res = new Float(parser.getAttributeValue(null, "value")); - } else if (tagName.equals("double")) { - res = new Double(parser.getAttributeValue(null, "value")); - } else if (tagName.equals("boolean")) { - res = Boolean.valueOf(parser.getAttributeValue(null, "value")); + } else if ((res = readThisPrimitiveValueXml(parser, tagName)) != null) { + // all work already done by readThisPrimitiveValueXml } else if (tagName.equals("int-array")) { parser.next(); res = readThisIntArrayXml(parser, "int-array", name); @@ -858,6 +850,31 @@ public class XmlUtils { "Unexpected end of document in <" + tagName + ">"); } + private static final Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName) + throws XmlPullParserException, java.io.IOException + { + try { + if (tagName.equals("int")) { + return Integer.parseInt(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("long")) { + return Long.valueOf(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("float")) { + return new Float(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("double")) { + return new Double(parser.getAttributeValue(null, "value")); + } else if (tagName.equals("boolean")) { + return Boolean.valueOf(parser.getAttributeValue(null, "value")); + } else { + return null; + } + } catch (NullPointerException e) { + throw new XmlPullParserException("Need value attribute in <" + tagName + ">"); + } catch (NumberFormatException e) { + throw new XmlPullParserException( + "Not a number in value attribute in <" + tagName + ">"); + } + } + public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException { int type; diff --git a/core/jni/Android.mk b/core/jni/Android.mk index 594d578..337c1ec 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 0a97f39..ca278cf 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 dc4d945..32f6ecf 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 ca693b6..db900c7 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 a7cb1c7..bd8938d 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 7480756..c6159a1 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 44d8a26..e0a5bc0 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 926b4bb..3a0372a 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 e7ad610..7719fa2 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 0872125..4950f67 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 bbf42f0..709e48b 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 427fd0c..68cb179 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 850fe26..d07c11e 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 dfa199d..e8ae353 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 7ccff4d..c4a650b 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 21e9b7e..6802eee 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 22a8e41..182a408 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 c88d86c..d8e83c6 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 3b7a0ca..be5b222 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 9156376..fe1022c 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 4d37d47..9a98854 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 5ae38c1..9b78dc3 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 2339066..6d54d47 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 dd8a8fa..d3e9a9a 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 912df10..cddec59 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 e1c8fec..3cd306d 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 32b7803..3313e82 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 df6f78f..a7948e5 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 5698514..5a6681f 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 72b89c2..b7a20a5 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 3e6138e..011f094 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 d6d20e7..0dfa40d 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 8703981..a3e5207 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 59eb75a..645398f 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 525b0c0..96b77ce 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 aedc2c7..6796c9d 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 7371132..a0cddf5 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 b06e73d..5a7658b 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 037251e..2342296 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 f2cdbba..7b205b8 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 29d7982..bc02832 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 19ae2ea..2634d43 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 0683d46..a565803 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 eb74fa3..dfcc610 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 cd55478..25caf98 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 0000000..ec5ecaf --- /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 c1489b1..3b84ff2 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 99cc599..358bef6 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 0000000..1b7c462 --- /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 02f1475..4a51a2f 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 4e3fa16..b49ad74 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 b1d363f..3d2ea75 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 40ef939..680f1a3 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 0000000..42d4956 --- /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 0000000..56a5d4e --- /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 0000000..f4854da --- /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 0000000..890420e --- /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 0000000..c92b9c7 --- /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 0000000..c7dc960 --- /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 0000000..f9d9ac7 --- /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 7c02f3f..24aa541 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 6d343ca..5568f38 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 54e7e39..5df5175 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 91c98ea..14c5f3b 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 60787a9..04791ae 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 d5fee19..f3fbf5e 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 32e1170..57c4a49 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 1233f4e..68e14d6 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 f80a944..5738c7c 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 4e315eb..263415b 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 94dca66..4ea35f9 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 9eeb133..68c03a7 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 6cf9bd6..d947ed7 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 49d36fd..d8e1814 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 3f88960..6702b9f 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 ca3cb08..9419e39 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 46b9f9d..d1f5c35 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 e0625e9..3c888ba 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 94ec23d..f05d301 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 b42656a..e7ad4ff 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 970a538..7df53b4 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 a0ee370..8181e7f 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 5cb41f4..8dfd77bb 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 f2a61da..b7434bd 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 307dab2..13c01c9 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 f4d5dc3..1a3924e 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 6ac384a..f1540b4 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 42faa83..7a8a21d 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 703823c..fe7491c 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 4d37d47..9a98854 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 b885d56..9c46f38 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 8b395af..7804dd2 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 b6b15c4..22fa7fc 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/SSLTest.java b/core/tests/coretests/src/android/net/SSLTest.java index 27b699d..45d28ae 100644 --- a/core/tests/coretests/src/android/net/SSLTest.java +++ b/core/tests/coretests/src/android/net/SSLTest.java @@ -49,35 +49,35 @@ public class SSLTest extends TestCase { // System.out.println(new String(b)); } - public void testStringsToNpnBytes() { + public void testStringsToLengthPrefixedBytes() { byte[] expected = { 6, 's', 'p', 'd', 'y', '/', '2', 8, 'h', 't', 't', 'p', '/', '1', '.', '1', }; - assertTrue(Arrays.equals(expected, SSLCertificateSocketFactory.toNpnProtocolsList( + assertTrue(Arrays.equals(expected, SSLCertificateSocketFactory.toLengthPrefixedList( new byte[] { 's', 'p', 'd', 'y', '/', '2' }, new byte[] { 'h', 't', 't', 'p', '/', '1', '.', '1' }))); } - public void testStringsToNpnBytesEmptyArray() { + public void testStringsToLengthPrefixedBytesEmptyArray() { try { - SSLCertificateSocketFactory.toNpnProtocolsList(); + SSLCertificateSocketFactory.toLengthPrefixedList(); fail(); } catch (IllegalArgumentException expected) { } } - public void testStringsToNpnBytesEmptyByteArray() { + public void testStringsToLengthPrefixedBytesEmptyByteArray() { try { - SSLCertificateSocketFactory.toNpnProtocolsList(new byte[0]); + SSLCertificateSocketFactory.toLengthPrefixedList(new byte[0]); fail(); } catch (IllegalArgumentException expected) { } } - public void testStringsToNpnBytesOversizedInput() { + public void testStringsToLengthPrefixedBytesOversizedInput() { try { - SSLCertificateSocketFactory.toNpnProtocolsList(new byte[256]); + SSLCertificateSocketFactory.toLengthPrefixedList(new byte[256]); fail(); } catch (IllegalArgumentException expected) { } diff --git a/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java b/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java index 60c40db..04aa62a 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/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java b/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java index a81bb4b..b6da195 100644 --- a/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java +++ b/core/tests/coretests/src/com/android/internal/util/ProcFileReaderTest.java @@ -20,7 +20,7 @@ import android.test.AndroidTestCase; import java.io.ByteArrayInputStream; import java.io.IOException; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; /** * Tests for {@link ProcFileReader}. @@ -172,6 +172,6 @@ public class ProcFileReaderTest extends AndroidTestCase { private static ProcFileReader buildReader(String string, int bufferSize) throws IOException { return new ProcFileReader( - new ByteArrayInputStream(string.getBytes(Charsets.US_ASCII)), bufferSize); + new ByteArrayInputStream(string.getBytes(StandardCharsets.US_ASCII)), bufferSize); } } diff --git a/docs/html/guide/topics/data/backup.jd b/docs/html/guide/topics/data/backup.jd index 598b08a..4903852 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/docs/html/guide/topics/graphics/hardware-accel.jd b/docs/html/guide/topics/graphics/hardware-accel.jd index 8ba6676..54ef20c 100644 --- a/docs/html/guide/topics/graphics/hardware-accel.jd +++ b/docs/html/guide/topics/graphics/hardware-accel.jd @@ -164,7 +164,7 @@ href="#layers">View layers</a> for more information about their uses.</p> draws views without hardware acceleration as well. The following sections describe the software-based and hardware-accelerated drawing models.</p> -<h3>Software-based drawing model</h3> +<h3 id="software-model">Software-based drawing model</h3> <p>In the software drawing model, views are drawn with the following two steps:</p> <ol> <li>Invalidate the hierarchy</li> @@ -196,7 +196,7 @@ changed.</li> android.view.View#invalidate invalidate()} when their properties change, such as the background color or the text in a {@link android.widget.TextView}.</p> - <h3>Hardware accelerated drawing model</h3> + <h3 id="hardware-model">Hardware accelerated drawing model</h3> <p>The Android system still uses {@link android.view.View#invalidate invalidate()} and {@link android.view.View#draw draw()} to request screen updates and to render views, but handles the actual drawing differently. Instead of executing the drawing commands immediately, the Android diff --git a/keystore/java/android/security/AndroidKeyPairGenerator.java b/keystore/java/android/security/AndroidKeyPairGenerator.java index 43d1eb6..390e732 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 04ee8c4..acbae8f 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/Credentials.java b/keystore/java/android/security/Credentials.java index 166849d..767647c 100644 --- a/keystore/java/android/security/Credentials.java +++ b/keystore/java/android/security/Credentials.java @@ -31,7 +31,7 @@ import java.io.ObjectOutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; import java.security.KeyPair; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; @@ -127,7 +127,7 @@ public class Credentials { public static byte[] convertToPem(Certificate... objects) throws IOException, CertificateEncodingException { ByteArrayOutputStream bao = new ByteArrayOutputStream(); - Writer writer = new OutputStreamWriter(bao, Charsets.US_ASCII); + Writer writer = new OutputStreamWriter(bao, StandardCharsets.US_ASCII); PemWriter pw = new PemWriter(writer); for (Certificate o : objects) { pw.writeObject(new PemObject("CERTIFICATE", o.getEncoded())); @@ -142,7 +142,7 @@ public class Credentials { public static List<X509Certificate> convertFromPem(byte[] bytes) throws IOException, CertificateException { ByteArrayInputStream bai = new ByteArrayInputStream(bytes); - Reader reader = new InputStreamReader(bai, Charsets.US_ASCII); + Reader reader = new InputStreamReader(bai, StandardCharsets.US_ASCII); PemReader pr = new PemReader(reader); CertificateFactory cf = CertificateFactory.getInstance("X509"); diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index c99dff0..328ac5d 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 61cf640..35388d7 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 8798fb5..b7129db 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/keystore/tests/src/android/security/KeyStoreTest.java b/keystore/tests/src/android/security/KeyStoreTest.java index 815f4ac..9bf88d3 100644 --- a/keystore/tests/src/android/security/KeyStoreTest.java +++ b/keystore/tests/src/android/security/KeyStoreTest.java @@ -22,7 +22,7 @@ import android.security.KeyStore; import android.test.ActivityUnitTestCase; import android.test.AssertionFailedError; import android.test.suitebuilder.annotation.MediumTest; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Date; import java.util.HashSet; @@ -45,11 +45,11 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { private static final String TEST_KEYNAME = "test-key"; private static final String TEST_KEYNAME1 = "test-key.1"; private static final String TEST_KEYNAME2 = "test-key\02"; - private static final byte[] TEST_KEYVALUE = "test value".getBytes(Charsets.UTF_8); + private static final byte[] TEST_KEYVALUE = "test value".getBytes(StandardCharsets.UTF_8); // "Hello, World" in Chinese private static final String TEST_I18N_KEY = "\u4F60\u597D, \u4E16\u754C"; - private static final byte[] TEST_I18N_VALUE = TEST_I18N_KEY.getBytes(Charsets.UTF_8); + private static final byte[] TEST_I18N_VALUE = TEST_I18N_KEY.getBytes(StandardCharsets.UTF_8); // Test vector data for signatures private static final byte[] TEST_DATA = new byte[256]; diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 45a8b99..d703642 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 7ac73c7..f6ea576 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/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index de77cac..d3bd197 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -71,7 +71,7 @@ import libcore.io.ErrnoException; import libcore.io.IoUtils; import libcore.io.Libcore; import libcore.io.Streams; -import libcore.io.StructStatFs; +import libcore.io.StructStatVfs; /* * This service copies a downloaded apk to a file passed in as @@ -244,7 +244,7 @@ public class DefaultContainerService extends IntentService { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); try { - final StructStatFs stat = Libcore.os.statfs(path); + final StructStatVfs stat = Libcore.os.statvfs(path); final long totalSize = stat.f_blocks * stat.f_bsize; final long availSize = stat.f_bavail * stat.f_bsize; return new long[] { totalSize, availSize }; 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 0000000..140c7ac --- /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_colemak.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_colemak.kcm new file mode 100644 index 0000000..72e6d04 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_colemak.kcm @@ -0,0 +1,330 @@ +# Copyright (C) 2012 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), Colemak keyboard layout. +# Unlike the default (generic) keyboard layout, English (US) does not contain any +# special ALT characters. +# + +type OVERLAY + +map key 18 F +map key 19 P +map key 20 G +map key 21 J +map key 22 L +map key 23 U +map key 24 Y +map key 25 SEMICOLON +map key 31 R +map key 32 S +map key 33 T +map key 34 D +map key 36 N +map key 37 E +map key 38 I +map key 39 O +map key 49 K +map key 58 DEL + +### ROW 1 + +key GRAVE { + label: '`' + base: '`' + shift: '~' +} + +key 1 { + label: '1' + base: '1' + shift: '!' +} + +key 2 { + label: '2' + base: '2' + shift: '@' +} + +key 3 { + label: '3' + base: '3' + shift: '#' +} + +key 4 { + label: '4' + base: '4' + shift: '$' +} + +key 5 { + label: '5' + base: '5' + shift: '%' +} + +key 6 { + label: '6' + base: '6' + shift: '^' +} + +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: ')' +} + +key MINUS { + label: '-' + base: '-' + shift: '_' +} + +key EQUALS { + label: '=' + base: '=' + shift: '+' +} + +### ROW 2 + +key Q { + label: 'Q' + base: 'q' + shift, capslock: 'Q' +} + +key W { + label: 'W' + base: 'w' + shift, capslock: 'W' +} + +key F { + label: 'F' + base: 'f' + shift, capslock: 'F' +} + +key P { + label: 'P' + base: 'p' + shift, capslock: 'P' +} + +key G { + label: 'G' + base: 'g' + shift, capslock: 'G' +} + +key J { + label: 'J' + base: 'j' + shift, capslock: 'J' +} + +key L { + label: 'L' + base: 'l' + shift, capslock: 'L' +} + +key U { + label: 'U' + base: 'u' + shift, capslock: 'U' +} + +key Y { + label: 'Y' + base: 'y' + shift, capslock: 'Y' +} + +key SEMICOLON { + label: ';' + base: ';' + shift, capslock: ':' +} + +key LEFT_BRACKET { + label: '[' + base: '[' + shift: '{' +} + +key RIGHT_BRACKET { + label: ']' + base: ']' + shift: '}' +} + +key BACKSLASH { + label: '\\' + base: '\\' + shift: '|' +} + +### ROW 3 + +key A { + label: 'A' + base: 'a' + shift, capslock: 'A' +} + +key R { + label: 'R' + base: 'r' + shift, capslock: 'R' +} + +key S { + label: 'S' + base: 's' + shift, capslock: 'S' +} + +key T { + label: 'T' + base: 't' + shift, capslock: 'T' +} + +key D { + label: 'D' + base: 'd' + shift, capslock: 'D' +} + +key H { + label: 'H' + base: 'h' + shift, capslock: 'H' +} + +key N { + label: 'N' + base: 'n' + shift, capslock: 'N' +} + +key E { + label: 'E' + base: 'e' + shift, capslock: 'E' +} + +key I { + label: 'I' + base: 'i' + shift, capslock: 'I' +} + +key O { + label: 'O' + base: 'o' + shift: 'O' +} + +key APOSTROPHE { + label: '\'' + base: '\'' + shift: '"' +} + +### ROW 4 + +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' +} + +key V { + label: 'V' + base: 'v' + shift, capslock: 'V' +} + +key B { + label: 'B' + base: 'b' + shift, capslock: 'B' +} + +key K { + label: 'K' + base: 'k' + shift, capslock: 'K' +} + +key M { + label: 'M' + base: 'm' + shift, capslock: 'M' +} + +key COMMA { + label: ',' + base: ',' + shift: '<' +} + +key PERIOD { + label: '.' + base: '.' + shift: '>' +} + +key SLASH { + label: '/' + base: '/' + shift: '?' +} 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 0000000..0fabf02 --- /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 65d3304..54c18f1 100644 --- a/packages/InputDevices/res/values/strings.xml +++ b/packages/InputDevices/res/values/strings.xml @@ -12,6 +12,12 @@ <!-- 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 (Colemak style) keyboard layout label. [CHAR LIMIT=35] --> + <string name="keyboard_layout_english_us_colemak_label">English (US), Colemak 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 +81,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 3cfa170..1f48a36 100644 --- a/packages/InputDevices/res/xml/keyboard_layouts.xml +++ b/packages/InputDevices/res/xml/keyboard_layouts.xml @@ -8,6 +8,14 @@ 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_colemak" + android:label="@string/keyboard_layout_english_us_colemak_label" + android:keyboardLayout="@raw/keyboard_layout_english_us_colemak" /> + <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 +100,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/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index 5838526..b65a9a0 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -2239,14 +2239,11 @@ public class DatabaseHelper extends SQLiteOpenHelper { // Set default cdma call auto retry loadSetting(stmt, Settings.Global.CALL_AUTO_RETRY, 0); - // Set the preferred network mode to 0 = Global, CDMA default + // Set the preferred network mode to target desired value or Default + // value defined in RILConstants int type; - if (TelephonyManager.getLteOnCdmaModeStatic() == PhoneConstants.LTE_ON_CDMA_TRUE) { - type = Phone.NT_MODE_GLOBAL; - } else { - type = SystemProperties.getInt("ro.telephony.default_network", + type = SystemProperties.getInt("ro.telephony.default_network", RILConstants.PREFERRED_NETWORK_MODE); - } loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, type); // --- New global settings start here diff --git a/preloaded-classes b/preloaded-classes index 8e426c5..2aa610a 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 c774763..e229755 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 ab70e6f..7ecd2c0 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 1dd5fc6..c916857 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 f402f4b..e670ef9 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/NativeDaemonConnector.java b/services/java/com/android/server/NativeDaemonConnector.java index 47840e0..0a91919 100644 --- a/services/java/com/android/server/NativeDaemonConnector.java +++ b/services/java/com/android/server/NativeDaemonConnector.java @@ -28,12 +28,12 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.google.android.collect.Lists; -import java.nio.charset.Charsets; import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.ArrayBlockingQueue; @@ -142,7 +142,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo for (int i = 0; i < count; i++) { if (buffer[i] == 0) { final String rawEvent = new String( - buffer, start, i - start, Charsets.UTF_8); + buffer, start, i - start, StandardCharsets.UTF_8); log("RCV <- {" + rawEvent + "}"); try { @@ -163,7 +163,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo } } if (start == 0) { - final String rawEvent = new String(buffer, start, count, Charsets.UTF_8); + final String rawEvent = new String(buffer, start, count, StandardCharsets.UTF_8); log("RCV incomplete <- {" + rawEvent + "}"); } @@ -352,7 +352,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo throw new NativeDaemonConnectorException("missing output stream"); } else { try { - mOutputStream.write(rawCmd.getBytes(Charsets.UTF_8)); + mOutputStream.write(rawCmd.getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { throw new NativeDaemonConnectorException("problem sending command", e); } diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 0081dfc..db01655 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/connectivity/Vpn.java b/services/java/com/android/server/connectivity/Vpn.java index e7d1fa4..2fc972f 100644 --- a/services/java/com/android/server/connectivity/Vpn.java +++ b/services/java/com/android/server/connectivity/Vpn.java @@ -72,7 +72,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.Inet4Address; import java.net.InetAddress; -import java.nio.charset.Charsets; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.concurrent.atomic.AtomicInteger; @@ -499,15 +499,15 @@ public class Vpn extends BaseNetworkStateTracker { if (!profile.ipsecUserCert.isEmpty()) { privateKey = Credentials.USER_PRIVATE_KEY + profile.ipsecUserCert; byte[] value = keyStore.get(Credentials.USER_CERTIFICATE + profile.ipsecUserCert); - userCert = (value == null) ? null : new String(value, Charsets.UTF_8); + userCert = (value == null) ? null : new String(value, StandardCharsets.UTF_8); } if (!profile.ipsecCaCert.isEmpty()) { byte[] value = keyStore.get(Credentials.CA_CERTIFICATE + profile.ipsecCaCert); - caCert = (value == null) ? null : new String(value, Charsets.UTF_8); + caCert = (value == null) ? null : new String(value, StandardCharsets.UTF_8); } if (!profile.ipsecServerCert.isEmpty()) { byte[] value = keyStore.get(Credentials.USER_CERTIFICATE + profile.ipsecServerCert); - serverCert = (value == null) ? null : new String(value, Charsets.UTF_8); + serverCert = (value == null) ? null : new String(value, StandardCharsets.UTF_8); } if (privateKey == null || userCert == null || caCert == null || serverCert == null) { throw new IllegalStateException("Cannot load credentials"); @@ -819,7 +819,7 @@ public class Vpn extends BaseNetworkStateTracker { // Send over the arguments. OutputStream out = mSockets[i].getOutputStream(); for (String argument : arguments) { - byte[] bytes = argument.getBytes(Charsets.UTF_8); + byte[] bytes = argument.getBytes(StandardCharsets.UTF_8); if (bytes.length >= 0xFFFF) { throw new IllegalArgumentException("Argument is too large"); } diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 22ce284..8cdca1f 100644..100755 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -3532,10 +3532,13 @@ public class PackageManagerService extends IPackageManager.Stub { } // The apk is forward locked (not public) if its code and resources - // are kept in different files. + // are kept in different files. (except for app in either system or + // vendor path). // TODO grab this value from PackageSettings - if (ps != null && !ps.codePath.equals(ps.resourcePath)) { - parseFlags |= PackageParser.PARSE_FORWARD_LOCK; + if ((parseFlags & PackageParser.PARSE_IS_SYSTEM_DIR) == 0) { + if (ps != null && !ps.codePath.equals(ps.resourcePath)) { + parseFlags |= PackageParser.PARSE_FORWARD_LOCK; + } } String codePath = null; diff --git a/services/java/com/android/server/pm/SELinuxMMAC.java b/services/java/com/android/server/pm/SELinuxMMAC.java index 4bbdb5e..04f43d9 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/power/ShutdownThread.java b/services/java/com/android/server/power/ShutdownThread.java index c7f7390..c084666 100644 --- a/services/java/com/android/server/power/ShutdownThread.java +++ b/services/java/com/android/server/power/ShutdownThread.java @@ -297,7 +297,9 @@ public final class ShutdownThread extends Thread { // First send the high-level shut down broadcast. mActionDone = false; - mContext.sendOrderedBroadcastAsUser(new Intent(Intent.ACTION_SHUTDOWN), + Intent intent = new Intent(Intent.ACTION_SHUTDOWN); + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + mContext.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, null, br, mHandler, 0, null, null); final long endTime = SystemClock.elapsedRealtime() + MAX_BROADCAST_TIME; diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 1399c16..0755281 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -8965,10 +8965,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/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index dfb22a7..da15856 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -361,7 +361,32 @@ final class WindowState implements WindowManagerPolicy.WindowState { mSubLayer = mPolicy.subWindowTypeToLayerLw(a.type); mAttachedWindow = attachedWindow; if (WindowManagerService.DEBUG_ADD_REMOVE) Slog.v(TAG, "Adding " + this + " to " + mAttachedWindow); - mAttachedWindow.mChildWindows.add(this); + + int children_size = mAttachedWindow.mChildWindows.size(); + if (children_size == 0) { + mAttachedWindow.mChildWindows.add(this); + } else { + for (int i = 0; i < children_size; i++) { + WindowState child = (WindowState)mAttachedWindow.mChildWindows.get(i); + if (this.mSubLayer < child.mSubLayer) { + mAttachedWindow.mChildWindows.add(i, this); + break; + } else if (this.mSubLayer > child.mSubLayer) { + continue; + } + + if (this.mBaseLayer <= child.mBaseLayer) { + mAttachedWindow.mChildWindows.add(i, this); + break; + } else { + continue; + } + } + if (children_size == mAttachedWindow.mChildWindows.size()) { + mAttachedWindow.mChildWindows.add(this); + } + } + mLayoutAttached = mAttrs.type != WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; mIsImWindow = attachedWindow.mAttrs.type == TYPE_INPUT_METHOD diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java index 55680c8..b456bb3 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 8b85d8c..3ae2106 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 674955c..7b9cf4e 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 5abfc88..bc0e4e4 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 03905e1..b06790b 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 32fecb2..977226b 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 f7fc795..f6a621f 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 b971fc3..bd8f0eb 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 6e3034b..4bee937 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 0b0d738..fe3c709 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 0077354..520ac20 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -1985,6 +1985,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: @@ -2402,6 +2403,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: @@ -2781,6 +2783,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; @@ -3510,6 +3515,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 |