diff options
28 files changed, 281 insertions, 105 deletions
diff --git a/api/current.txt b/api/current.txt index 2eb54fb19cf4..4a8cd3c3c391 100644 --- a/api/current.txt +++ b/api/current.txt @@ -436,7 +436,7 @@ package android { field public static final int fadeEnabled = 16843390; // 0x101027e field public static final int fadeOffset = 16843383; // 0x1010277 field public static final int fadeScrollbars = 16843434; // 0x10102aa - field public static final deprecated int fadingEdge = 16842975; // 0x10100df + field public static final int fadingEdge = 16842975; // 0x10100df field public static final int fadingEdgeLength = 16842976; // 0x10100e0 field public static final int fastScrollAlwaysVisible = 16843573; // 0x1010335 field public static final int fastScrollEnabled = 16843302; // 0x1010226 diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 8fa95b461ba4..d04e9db37a4a 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -551,7 +551,6 @@ public class SearchDialog extends Dialog { try { // If the intent was created from a suggestion, it will always have an explicit // component here. - Log.i(LOG_TAG, "Starting (as ourselves) " + intent.toUri(0)); getContext().startActivity(intent); // If the search switches to a different activity, // SearchDialogWrapper#performActivityResuming diff --git a/core/java/android/text/style/SuggestionSpan.java b/core/java/android/text/style/SuggestionSpan.java index 0f26a34ece8d..5dc206fe730b 100644 --- a/core/java/android/text/style/SuggestionSpan.java +++ b/core/java/android/text/style/SuggestionSpan.java @@ -25,6 +25,7 @@ import android.os.SystemClock; import android.text.ParcelableSpan; import android.text.TextPaint; import android.text.TextUtils; +import android.util.Log; import android.widget.TextView; import java.util.Arrays; @@ -114,7 +115,7 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { * @param context Context for the application * @param locale locale Locale of the suggestions * @param suggestions Suggestions for the string under the span. Only the first up to - * {@link SuggestionSpan#SUGGESTIONS_MAX_SIZE} will be considered. + * {@link SuggestionSpan#SUGGESTIONS_MAX_SIZE} will be considered. Null values not permitted. * @param flags Additional flags indicating how this span is handled in TextView * @param notificationTargetClass if not null, this class will get notified when the user * selects one of the suggestions. @@ -124,10 +125,13 @@ public class SuggestionSpan extends CharacterStyle implements ParcelableSpan { final int N = Math.min(SUGGESTIONS_MAX_SIZE, suggestions.length); mSuggestions = Arrays.copyOf(suggestions, N); mFlags = flags; - if (context != null && locale == null) { + if (locale != null) { + mLocaleString = locale.toString(); + } else if (context != null) { mLocaleString = context.getResources().getConfiguration().locale.toString(); } else { - mLocaleString = locale.toString(); + Log.e("SuggestionSpan", "No locale or context specified in SuggestionSpan constructor"); + mLocaleString = ""; } if (notificationTargetClass != null) { diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 5c63366f1b40..dda695fcca91 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2661,8 +2661,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager child.onAnimationStart(); } - more = a.getTransformation(drawingTime, mChildTransformation, - scalingRequired ? mAttachInfo.mApplicationScale : 1f); + more = a.getTransformation(drawingTime, mChildTransformation, 1f); if (scalingRequired && mAttachInfo.mApplicationScale != 1f) { if (mInvalidationTransformation == null) { mInvalidationTransformation = new Transformation(); diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index a9aec8236716..570f0f95d603 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -342,56 +342,15 @@ public class SpellChecker implements SpellCheckerSessionListener { final int end = editable.getSpanEnd(spellCheckSpan); if (start < 0 || end <= start) return; // span was removed in the meantime - // Other suggestion spans may exist on that region, with identical suggestions, filter - // them out to avoid duplicates. - SuggestionSpan[] suggestionSpans = editable.getSpans(start, end, SuggestionSpan.class); - final int length = suggestionSpans.length; - for (int i = 0; i < length; i++) { - final int spanStart = editable.getSpanStart(suggestionSpans[i]); - final int spanEnd = editable.getSpanEnd(suggestionSpans[i]); - if (spanStart != start || spanEnd != end) { - // Nulled (to avoid new array allocation) if not on that exact same region - suggestionSpans[i] = null; - } - } - final int suggestionsCount = suggestionsInfo.getSuggestionsCount(); - String[] suggestions; if (suggestionsCount <= 0) { // A negative suggestion count is possible - suggestions = ArrayUtils.emptyArray(String.class); - } else { - int numberOfSuggestions = 0; - suggestions = new String[suggestionsCount]; - - for (int i = 0; i < suggestionsCount; i++) { - final String spellSuggestion = suggestionsInfo.getSuggestionAt(i); - if (spellSuggestion == null) break; - boolean suggestionFound = false; - - for (int j = 0; j < length && !suggestionFound; j++) { - if (suggestionSpans[j] == null) break; - - String[] suggests = suggestionSpans[j].getSuggestions(); - for (int k = 0; k < suggests.length; k++) { - if (spellSuggestion.equals(suggests[k])) { - // The suggestion is already provided by an other SuggestionSpan - suggestionFound = true; - break; - } - } - } - - if (!suggestionFound) { - suggestions[numberOfSuggestions++] = spellSuggestion; - } - } + return; + } - if (numberOfSuggestions != suggestionsCount) { - String[] newSuggestions = new String[numberOfSuggestions]; - System.arraycopy(suggestions, 0, newSuggestions, 0, numberOfSuggestions); - suggestions = newSuggestions; - } + String[] suggestions = new String[suggestionsCount]; + for (int i = 0; i < suggestionsCount; i++) { + suggestions[i] = suggestionsInfo.getSuggestionAt(i); } SuggestionSpan suggestionSpan = new SuggestionSpan(mTextView.getContext(), suggestions, diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index b82a63201f25..39a4f42a79e6 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -9844,17 +9844,34 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener String[] suggestions = suggestionSpan.getSuggestions(); int nbSuggestions = suggestions.length; for (int suggestionIndex = 0; suggestionIndex < nbSuggestions; suggestionIndex++) { - SuggestionInfo suggestionInfo = mSuggestionInfos[mNumberOfSuggestions]; - suggestionInfo.suggestionSpan = suggestionSpan; - suggestionInfo.suggestionIndex = suggestionIndex; - suggestionInfo.text.replace(0, suggestionInfo.text.length(), - suggestions[suggestionIndex]); + String suggestion = suggestions[suggestionIndex]; + + boolean suggestionIsDuplicate = false; + for (int i = 0; i < mNumberOfSuggestions; i++) { + if (mSuggestionInfos[i].text.toString().equals(suggestion)) { + SuggestionSpan otherSuggestionSpan = mSuggestionInfos[i].suggestionSpan; + final int otherSpanStart = spannable.getSpanStart(otherSuggestionSpan); + final int otherSpanEnd = spannable.getSpanEnd(otherSuggestionSpan); + if (spanStart == otherSpanStart && spanEnd == otherSpanEnd) { + suggestionIsDuplicate = true; + break; + } + } + } - mNumberOfSuggestions++; - if (mNumberOfSuggestions == MAX_NUMBER_SUGGESTIONS) { - // Also end outer for loop - spanIndex = nbSpans; - break; + if (!suggestionIsDuplicate) { + SuggestionInfo suggestionInfo = mSuggestionInfos[mNumberOfSuggestions]; + suggestionInfo.suggestionSpan = suggestionSpan; + suggestionInfo.suggestionIndex = suggestionIndex; + suggestionInfo.text.replace(0, suggestionInfo.text.length(), suggestion); + + mNumberOfSuggestions++; + + if (mNumberOfSuggestions == MAX_NUMBER_SUGGESTIONS) { + // Also end outer for loop + spanIndex = nbSpans; + break; + } } } } @@ -9863,7 +9880,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener highlightTextDifferences(mSuggestionInfos[i], spanUnionStart, spanUnionEnd); } - // Add to dictionary item if there is a span with the misspelled flag + // Add "Add to dictionary" item if there is a span with the misspelled flag if (misspelledSpan != null) { final int misspelledStart = spannable.getSpanStart(misspelledSpan); final int misspelledEnd = spannable.getSpanEnd(misspelledSpan); @@ -9921,8 +9938,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener suggestionInfo.text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // Add the text before and after the span. - suggestionInfo.text.insert(0, mText.toString().substring(unionStart, spanStart)); - suggestionInfo.text.append(mText.toString().substring(spanEnd, unionEnd)); + final String textAsString = text.toString(); + suggestionInfo.text.insert(0, textAsString.substring(unionStart, spanStart)); + suggestionInfo.text.append(textAsString.substring(spanEnd, unionEnd)); } @Override diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index 905a1713add5..6893ffbaf6c5 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -404,7 +404,7 @@ public class LockPatternUtils { saveLockPassword(null, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); setLockPatternEnabled(false); saveLockPattern(null); - setLong(PASSWORD_TYPE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); + setLong(PASSWORD_TYPE_KEY, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); setLong(PASSWORD_TYPE_ALTERNATE_KEY, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED); } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 545a55529a8a..b514bf5311cc 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -1830,12 +1830,12 @@ <!-- Defines whether the vertical scrollbar track should always be drawn. --> <attr name="scrollbarAlwaysDrawVerticalTrack" format="boolean" /> - <!-- {@deprecated This attribute is deprecated and will be ignored as of - API level 14 (<code>android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH</code>). + <!-- This attribute is deprecated and will be ignored as of + API level 14 ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}). Using fading edges may introduce noticeable performance degradations and should be used only when required by the application's visual design. To request fading edges with API level 14 and above, - use the <code>requiresFadingEdge</code> attribute instead.} --> + use the <code>android:requiresFadingEdge</code> attribute instead. --> <attr name="fadingEdge"> <!-- No edge is faded. --> <flag name="none" value="0x00000000" /> diff --git a/docs/html/design/static/download/action_bar_icons-v4.0.zip b/docs/html/design/static/download/action_bar_icons-v4.0.zip Binary files differnew file mode 100644 index 000000000000..e255931f9765 --- /dev/null +++ b/docs/html/design/static/download/action_bar_icons-v4.0.zip diff --git a/libs/rs/driver/rsdRuntimeMath.cpp b/libs/rs/driver/rsdRuntimeMath.cpp index e31553969329..753ef7356ab7 100644 --- a/libs/rs/driver/rsdRuntimeMath.cpp +++ b/libs/rs/driver/rsdRuntimeMath.cpp @@ -329,6 +329,16 @@ static int32_t SC_AtomicXor(volatile int32_t *ptr, int32_t value) { return prev; } +static uint32_t SC_AtomicUMin(volatile uint32_t *ptr, uint32_t value) { + uint32_t prev, status; + do { + prev = *ptr; + uint32_t n = rsMin(value, prev); + status = android_atomic_release_cas((int32_t) prev, (int32_t)n, (volatile int32_t*) ptr); + } while (CC_UNLIKELY(status != 0)); + return prev; +} + static int32_t SC_AtomicMin(volatile int32_t *ptr, int32_t value) { int32_t prev, status; do { @@ -339,6 +349,16 @@ static int32_t SC_AtomicMin(volatile int32_t *ptr, int32_t value) { return prev; } +static uint32_t SC_AtomicUMax(volatile uint32_t *ptr, uint32_t value) { + uint32_t prev, status; + do { + prev = *ptr; + uint32_t n = rsMax(value, prev); + status = android_atomic_release_cas((int32_t) prev, (int32_t) n, (volatile int32_t*) ptr); + } while (CC_UNLIKELY(status != 0)); + return prev; +} + static int32_t SC_AtomicMax(volatile int32_t *ptr, int32_t value) { int32_t prev, status; do { @@ -524,9 +544,9 @@ static RsdSymbolTable gSyms[] = { { "_Z11rsAtomicXorPVii", (void *)&SC_AtomicXor, true }, { "_Z11rsAtomicXorPVjj", (void *)&SC_AtomicXor, true }, { "_Z11rsAtomicMinPVii", (void *)&SC_AtomicMin, true }, - { "_Z11rsAtomicMinPVjj", (void *)&SC_AtomicMin, true }, + { "_Z11rsAtomicMinPVjj", (void *)&SC_AtomicUMin, true }, { "_Z11rsAtomicMaxPVii", (void *)&SC_AtomicMax, true }, - { "_Z11rsAtomicMaxPVjj", (void *)&SC_AtomicMax, true }, + { "_Z11rsAtomicMaxPVjj", (void *)&SC_AtomicUMax, true }, { "_Z11rsAtomicCasPViii", (void *)&SC_AtomicCas, true }, { "_Z11rsAtomicCasPVjjj", (void *)&SC_AtomicCas, true }, diff --git a/libs/rs/scriptc/rs_atomic.rsh b/libs/rs/scriptc/rs_atomic.rsh index 87c6c021b491..a455edd4ae63 100644 --- a/libs/rs/scriptc/rs_atomic.rsh +++ b/libs/rs/scriptc/rs_atomic.rsh @@ -242,7 +242,7 @@ extern int32_t __attribute__((overloadable)) * @return old value */ extern uint32_t __attribute__((overloadable)) - rsAtomicCas(volatile uint32_t* addr, int32_t compareValue, int32_t newValue); + rsAtomicCas(volatile uint32_t* addr, uint32_t compareValue, uint32_t newValue); #endif //defined(RS_VERSION) && (RS_VERSION >= 14) diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s index b2bc9d9b7b4d..7f6b8813456e 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s @@ -23,9 +23,13 @@ .section .text .global PreMDCT + .fnstart PreMDCT: stmdb sp!, {r4 - r11, lr} + .save {r4 - r11, lr} + fstmfdd sp!, {d8 - d15} + .vsave {d8 - d15} add r9, r0, r1, lsl #2 sub r3, r9, #32 @@ -74,14 +78,20 @@ PreMDCT_LOOP: bne PreMDCT_LOOP PreMDCT_END: + fldmfdd sp!, {d8 - d15} ldmia sp!, {r4 - r11, pc} @ENDP @ |PreMDCT| + .fnend .section .text .global PostMDCT + .fnstart PostMDCT: stmdb sp!, {r4 - r11, lr} + .save {r4 - r11, lr} + fstmfdd sp!, {d8 - d15} + .vsave {d8 - d15} add r9, r0, r1, lsl #2 sub r3, r9, #32 @@ -129,7 +139,8 @@ PostMDCT_LOOP: bne PostMDCT_LOOP PostMDCT_END: + fldmfdd sp!, {d8 - d15} ldmia sp!, {r4 - r11, pc} @ENDP @ |PostMDCT| - .end + .fnend diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s index 3033156a53a5..03fa6a987f6c 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s @@ -23,9 +23,13 @@ .section .text .global Radix8First + .fnstart Radix8First: stmdb sp!, {r4 - r11, lr} + .save {r4 - r11, lr} + fstmfdd sp!, {d8 - d15} + .vsave {d8 - d15} ldr r3, SQRT1_2 cmp r1, #0 @@ -103,17 +107,23 @@ Radix8First_LOOP: bne Radix8First_LOOP Radix8First_END: + fldmfdd sp!, {d8 - d15} ldmia sp!, {r4 - r11, pc} SQRT1_2: .word 0x2d413ccd @ENDP @ |Radix8First| + .fnend .section .text .global Radix4First + .fnstart Radix4First: stmdb sp!, {r4 - r11, lr} + .save {r4 - r11, lr} + fstmfdd sp!, {d8 - d15} + .vsave {d8 - d15} cmp r1, #0 beq Radix4First_END @@ -140,7 +150,8 @@ Radix4First_LOOP: bne Radix4First_LOOP Radix4First_END: + fldmfdd sp!, {d8 - d15} ldmia sp!, {r4 - r11, pc} @ENDP @ |Radix4First| - .end + .fnend diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s index f8748256bb23..431bc30c9312 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/Radix4FFT_v7.s @@ -23,9 +23,13 @@ .section .text .global Radix4FFT + .fnstart Radix4FFT: stmdb sp!, {r4 - r11, lr} + .save {r4 - r11, lr} + fstmfdd sp!, {d8 - d15} + .vsave {d8 - d15} mov r1, r1, asr #2 cmp r1, #0 @@ -137,7 +141,8 @@ Radix4FFT_LOOP1_END: bne Radix4FFT_LOOP1 Radix4FFT_END: + fldmfdd sp!, {d8 - d15} ldmia sp!, {r4 - r11, pc} @ENDP @ |Radix4FFT| - .end + .fnend diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml index ef959360130d..b985aaf81ba1 100644 --- a/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml +++ b/packages/SystemUI/res/layout-sw600dp/status_bar_notification_panel_title.xml @@ -63,6 +63,7 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center_vertical" + android:paddingRight="6dp" > <ImageView @@ -87,7 +88,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingRight="12dp" - android:paddingLeft="6dp" android:singleLine="true" android:ellipsize="end" android:text="@string/status_bar_settings_settings_button" @@ -99,6 +99,7 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center_vertical" + android:paddingRight="6dp" > <ImageView @@ -122,7 +123,6 @@ android:layout_gravity="left|center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingLeft="6dp" android:paddingRight="12dp" android:singleLine="true" android:ellipsize="end" diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index a6c64ade3e80..d083467e90ad 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -101,7 +101,12 @@ <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"Wi-Fi, адзiн слупок."</string> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"Wi-Fi, два слупкi."</string> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"Wi-Fi, тры слупкi."</string> - <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"Моцны сiгнал Wi-Fi."</string> + <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"Поўны сігнал Wi-Fi."</string> + <string name="accessibility_no_wimax" msgid="4329180129727630368">"Няма сiгналу WiMAX."</string> + <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"Адзiн слупок сiгналу WiMAX."</string> + <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"Два слупкi сiгналу WiMAX."</string> + <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"Тры слупкi сiгналу WiMAX."</string> + <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"Моцны сiгнал WiMAX."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3.5G"</string> @@ -135,4 +140,5 @@ <string name="gps_notification_searching_text" msgid="8574247005642736060">"Пошук GPS"</string> <string name="gps_notification_found_text" msgid="4619274244146446464">"Месца задана праз GPS"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string> + <string name="dreams_dock_launcher" msgid="3541196417659166245">"Актывацыя экраннай застаўкі"</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS-large/strings.xml b/packages/SystemUI/res/values-es-rUS-large/strings.xml index 3f96e87fce1d..dd44b28fb214 100644 --- a/packages/SystemUI/res/values-es-rUS-large/strings.xml +++ b/packages/SystemUI/res/values-es-rUS-large/strings.xml @@ -19,7 +19,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="status_bar_clear_all_button" msgid="4661583896803349732">"Borrar todas"</string> + <string name="status_bar_clear_all_button" msgid="4661583896803349732">"Eliminar todas"</string> <string name="notifications_off_title" msgid="1860117696034775851">"Notificaciones desactivadas"</string> <string name="notifications_off_text" msgid="1439152806320786912">"Toca aquí para volver a activar las notificaciones."</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 85818ae6ee3b..a70090847bc3 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="7164937344850004466">"IU del sistema"</string> - <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Borrar"</string> + <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Eliminar"</string> <string name="status_bar_do_not_disturb_button" msgid="5812628897510997853">"No molestar"</string> <string name="status_bar_please_disturb_button" msgid="3345398298841572813">"Mostrar notificaciones"</string> <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Eliminar de la lista"</string> @@ -122,7 +122,7 @@ <skip /> <string name="accessibility_settings_button" msgid="799583911231893380">"Configuración del sistema"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificaciones"</string> - <string name="accessibility_remove_notification" msgid="3603099514902182350">"Borrar notificación"</string> + <string name="accessibility_remove_notification" msgid="3603099514902182350">"Eliminar notificación"</string> <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS habilitado"</string> <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"Adquisición de GPS"</string> <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter habilitado"</string> @@ -133,12 +133,12 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datos de 4G inhabilitados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Se inhabilitaron los datos móviles"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Datos inhabilitados"</string> - <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Alcanzaste el límite de uso de datos especificado."\n\n"Puede que tu operador te cobre por volver a habilitar datos."</string> - <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a habilitar datos"</string> + <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Alcanzaste el límite de uso de datos especificado."\n\n"Puede que tu operador te cobre por volver a activar datos."</string> + <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a activar datos"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sin conexión a Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string> <string name="gps_notification_found_text" msgid="4619274244146446464">"La ubicación se estableció por GPS"</string> - <string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string> + <string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string> <string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar el protector de pantalla"</string> </resources> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 943b8ca4484c..a5bfb4a25359 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -101,7 +101,12 @@ <string name="accessibility_wifi_one_bar" msgid="6854947280074467207">"WiFi signaal: üks post."</string> <string name="accessibility_wifi_two_bars" msgid="3344340012058984348">"WiFi signaal: kaks posti."</string> <string name="accessibility_wifi_three_bars" msgid="928322805193265041">"WiFi signaal: kolm posti."</string> - <string name="accessibility_wifi_signal_full" msgid="4826278754383492058">"WiFi signaal on täis."</string> + <string name="accessibility_wifi_signal_full" msgid="1275764416228473932">"WiFi-signaal on tugev."</string> + <string name="accessibility_no_wimax" msgid="4329180129727630368">"WiMAX-i pole."</string> + <string name="accessibility_wimax_one_bar" msgid="4170994299011863648">"WiMAX-i on üks riba."</string> + <string name="accessibility_wimax_two_bars" msgid="9176236858336502288">"WiMAX-i on kaks riba."</string> + <string name="accessibility_wimax_three_bars" msgid="6116551636752103927">"WiMAX-i on kolm riba."</string> + <string name="accessibility_wimax_signal_full" msgid="2768089986795579558">"WiMAX-i signaal on tugev."</string> <string name="accessibility_data_connection_gprs" msgid="1606477224486747751">"GPRS"</string> <string name="accessibility_data_connection_3g" msgid="8628562305003568260">"3G"</string> <string name="accessibility_data_connection_3.5g" msgid="8664845609981692001">"3,5G"</string> @@ -133,4 +138,5 @@ <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS-i otsimine"</string> <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS-i määratud asukoht"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string> + <string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveeri ekraanisäästja"</string> </resources> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 545d54eab8c8..dec4def6fbb5 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -115,7 +115,7 @@ <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string> - <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Vínculo Bluetooth."</string> + <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião."</string> <!-- String.format failed for translation --> <!-- no translation found for accessibility_battery_level (7451474187113371965) --> diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml index 2106b892da7c..983df47e88ea 100644 --- a/packages/SystemUI/res/values-rm/strings.xml +++ b/packages/SystemUI/res/values-rm/strings.xml @@ -39,8 +39,10 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nagins avis"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Actual"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Avis"</string> - <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Connectar il chargiabattarias"</string> - <!-- outdated translation 7388781709819722764 --> <string name="battery_low_subtitle" msgid="1752040062087829196">"L\'accu è prest vid."</string> + <!-- no translation found for battery_low_title (2783104807551211639) --> + <skip /> + <!-- no translation found for battery_low_subtitle (1752040062087829196) --> + <skip /> <!-- no translation found for battery_low_percent_format (1077244949318261761) --> <skip /> <!-- no translation found for invalid_charger (4549105996740522523) --> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 17330b1e9a7b..963976dcc185 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -36,7 +36,7 @@ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Уведомления"</string> <string name="battery_low_title" msgid="2783104807551211639">"Подключите зарядное устройство"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батарея разряжена."</string> - <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> + <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Зарядка через порт USB не поддерживается."\n"Используйте только зарядное устройство из комплекта поставки."</string> <string name="battery_low_why" msgid="7279169609518386372">"Расход заряда батареи"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 3843ea96a8ec..70e29ebe28a0 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -26,7 +26,7 @@ <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Ondoa kwenye orodha"</string> <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Taarifa za programu-matumizi"</string> <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Hakuna programu za sasa"</string> - <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Ondosha programu za hivi karibuni"</string> + <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Ondosha prog za hivi karibuni"</string> <!-- String.format failed for translation --> <!-- no translation found for status_bar_accessibility_recent_apps:other (1040784359794890744) --> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Hakuna arifa"</string> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index a44ad5f8ea71..d46ab6ca41a2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -892,13 +892,24 @@ public class NetworkController extends BroadcastReceiver { mDataSignalIconId = mPhoneSignalIconId = 0; mobileLabel = ""; } else { - // We want to show the carrier name even if data is not being routed over that link, so - // we look only at the service state here. - mobileLabel = hasService() - ? mNetworkName - : context.getString(R.string.status_bar_settings_signal_meter_disconnected); - if (DEBUG) { - mobileLabel += "yyyyYYYYyyyyYYYY"; + // We want to show the carrier name if in service and either: + // - We are connected to mobile data, or + // - We are not connected to mobile data, as long as the *reason* packets are not + // being routed over that link is that we have better connectivity via wifi. + // If data is disconnected for some other reason but wifi is connected, we show nothing. + // Otherwise (nothing connected) we show "No internet connection". + + if (mDataConnected) { + mobileLabel = mNetworkName; + } else if (mWifiConnected) { + if (hasService()) { + mobileLabel = mNetworkName; + } else { + mobileLabel = ""; + } + } else { + mobileLabel + = context.getString(R.string.status_bar_settings_signal_meter_disconnected); } // Now for things that should only be shown when actually using mobile data. diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index 0d0461baed7b..1e9784c5cc79 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -855,6 +855,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler case Password: secure = mLockPatternUtils.isLockPasswordEnabled(); break; + case Unknown: + // This means no security is set up + break; default: throw new IllegalStateException("unknown unlock mode " + unlockMode); } @@ -877,8 +880,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler // Re-create the unlock screen if necessary. This is primarily required to properly handle // SIM state changes. This typically happens when this method is called by reset() - if (mode == Mode.UnlockScreen) { - final UnlockMode unlockMode = getUnlockMode(); + final UnlockMode unlockMode = getUnlockMode(); + if (mode == Mode.UnlockScreen && unlockMode != UnlockMode.Unknown) { if (force || mUnlockScreen == null || unlockMode != mUnlockScreenMode) { boolean restartFaceLock = stopFaceLockIfRunning(); recreateUnlockScreen(unlockMode); @@ -1052,11 +1055,15 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler break; case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED: - // "forgot pattern" button is only available in the pattern mode... - if (mForgotPattern || mLockPatternUtils.isPermanentlyLocked()) { - currentMode = UnlockMode.Account; + if (mLockPatternUtils.isLockPatternEnabled()) { + // "forgot pattern" button is only available in the pattern mode... + if (mForgotPattern || mLockPatternUtils.isPermanentlyLocked()) { + currentMode = UnlockMode.Account; + } else { + currentMode = UnlockMode.Pattern; + } } else { - currentMode = UnlockMode.Pattern; + currentMode = UnlockMode.Unknown; } break; default: diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java index c0384789ed05..5ab2c58a4959 100644 --- a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2011 The Android Open Source Project + * Copyright (C) 2008-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. @@ -72,6 +72,7 @@ public class RSTestCore { unitTests.add(new UT_alloc(this, mRes, mCtx)); unitTests.add(new UT_refcount(this, mRes, mCtx)); unitTests.add(new UT_foreach(this, mRes, mCtx)); + unitTests.add(new UT_atomic(this, mRes, mCtx)); unitTests.add(new UT_math(this, mRes, mCtx)); unitTests.add(new UT_fp_mad(this, mRes, mCtx)); /* diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_atomic.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_atomic.java new file mode 100644 index 000000000000..267c5b2cf649 --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_atomic.java @@ -0,0 +1,40 @@ +/* + * 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. + */ + +package com.android.rs.test; + +import android.content.Context; +import android.content.res.Resources; +import android.renderscript.*; + +public class UT_atomic extends UnitTest { + private Resources mRes; + + protected UT_atomic(RSTestCore rstc, Resources res, Context ctx) { + super(rstc, "Atomics", ctx); + mRes = res; + } + + public void run() { + RenderScript pRS = RenderScript.create(mCtx); + ScriptC_atomic s = new ScriptC_atomic(pRS, mRes, R.raw.atomic); + pRS.setMessageHandler(mRsMessage); + s.invoke_atomic_test(); + pRS.finish(); + waitForMessage(); + pRS.destroy(); + } +} diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/atomic.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/atomic.rs new file mode 100644 index 000000000000..f0a504196adc --- /dev/null +++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/atomic.rs @@ -0,0 +1,77 @@ +#include "shared.rsh" + +// Testing atomic operations +static bool testUMax(uint32_t dst, uint32_t src) { + bool failed = false; + uint32_t old = dst; + uint32_t expect = (dst > src ? dst : src); + uint32_t ret = rsAtomicMax(&dst, src); + _RS_ASSERT(old == ret); + _RS_ASSERT(dst == expect); + return failed; +} + +static bool testUMin(uint32_t dst, uint32_t src) { + bool failed = false; + uint32_t old = dst; + uint32_t expect = (dst < src ? dst : src); + uint32_t ret = rsAtomicMin(&dst, src); + _RS_ASSERT(old == ret); + _RS_ASSERT(dst == expect); + return failed; +} + +static bool testUCas(uint32_t dst, uint32_t cmp, uint32_t swp) { + bool failed = false; + uint32_t old = dst; + uint32_t expect = (dst == cmp ? swp : dst); + uint32_t ret = rsAtomicCas(&dst, cmp, swp); + _RS_ASSERT(old == ret); + _RS_ASSERT(dst == expect); + return failed; +} + +static bool test_atomics() { + bool failed = false; + + failed |= testUMax(5, 6); + failed |= testUMax(6, 5); + failed |= testUMax(5, 0xf0000006); + failed |= testUMax(0xf0000006, 5); + + failed |= testUMin(5, 6); + failed |= testUMin(6, 5); + failed |= testUMin(5, 0xf0000006); + failed |= testUMin(0xf0000006, 5); + + failed |= testUCas(4, 4, 5); + failed |= testUCas(4, 5, 5); + failed |= testUCas(5, 5, 4); + failed |= testUCas(5, 4, 4); + failed |= testUCas(0xf0000004, 0xf0000004, 0xf0000005); + failed |= testUCas(0xf0000004, 0xf0000005, 0xf0000005); + failed |= testUCas(0xf0000005, 0xf0000005, 0xf0000004); + failed |= testUCas(0xf0000005, 0xf0000004, 0xf0000004); + + if (failed) { + rsDebug("test_atomics FAILED", 0); + } + else { + rsDebug("test_atomics PASSED", 0); + } + + return failed; +} + +void atomic_test() { + bool failed = false; + failed |= test_atomics(); + + if (failed) { + rsSendToClientBlocking(RS_MSG_TEST_FAILED); + } + else { + rsSendToClientBlocking(RS_MSG_TEST_PASSED); + } +} + |