Merge branch 'cupcake' into open_source_no_contributions
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 694cf42..30d410e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Synchronizovat všechny kontakty"</string>
     <string name="groupNameMyContacts">"Moje kontakty"</string>
     <string name="groupNameWithPhones">"Kontakty s telefonním číslem"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Kontakt byl vytvořen."</string>
     <string name="contactSavedToast">"Kontakt byl uložen."</string>
     <string name="listSeparatorCallNumber">"Vytočit číslo"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 4cbdb37..cabc99d 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Alle Kontakte synchronisieren"</string>
     <string name="groupNameMyContacts">"Meine Kontakte"</string>
     <string name="groupNameWithPhones">"Kontakte mit Telefonnummern"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Kontakt erstellt"</string>
     <string name="contactSavedToast">"Kontakt gespeichert"</string>
     <string name="listSeparatorCallNumber">"Rufnummer"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 6ffaae5..af47792 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Sincronizar todos los contactos"</string>
     <string name="groupNameMyContacts">"Mis contactos"</string>
     <string name="groupNameWithPhones">"Contactos con números de teléfono"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Se ha creado el contacto."</string>
     <string name="contactSavedToast">"El contacto se ha guardado."</string>
     <string name="listSeparatorCallNumber">"Marcar número"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index e2413b1..b84b99a 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Synchroniser tous les contacts"</string>
     <string name="groupNameMyContacts">"Mes contacts"</string>
     <string name="groupNameWithPhones">"Contacts avec des n° de téléphone"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Contact créé."</string>
     <string name="contactSavedToast">"Contact enregistré."</string>
     <string name="listSeparatorCallNumber">"Composer le numéro"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index f0bdd1b..8c7a4ef 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Sincronizza tutti i contatti"</string>
     <string name="groupNameMyContacts">"I miei contatti"</string>
     <string name="groupNameWithPhones">"Contatti con numeri di telefono"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Contatto creato."</string>
     <string name="contactSavedToast">"Contatto salvato."</string>
     <string name="listSeparatorCallNumber">"Componi numero"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 187caf8..9275244 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"모든 연락처 동기화"</string>
     <string name="groupNameMyContacts">"내 연락처"</string>
     <string name="groupNameWithPhones">"전화번호가 포함된 연락처"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"연락처가 생성되었습니다."</string>
     <string name="contactSavedToast">"연락처가 저장되었습니다."</string>
     <string name="listSeparatorCallNumber">"전화번호"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 3964100..c00eb4a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -93,8 +93,6 @@
     <string name="syncAllGroups">"Synkroniser alle kontakter"</string>
     <string name="groupNameMyContacts">"Mine kontakter"</string>
     <string name="groupNameWithPhones">"Kontakter med telefonnummer"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Kontakt opprettet."</string>
     <string name="contactSavedToast">"Kontakt lagret."</string>
     <string name="listSeparatorCallNumber">"Ring nummer"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index bd63307..9aed711 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Alle contacten synchroniseren"</string>
     <string name="groupNameMyContacts">"Mijn contacten"</string>
     <string name="groupNameWithPhones">"Contacten met telefoonnummers"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Contactpersoon is gemaakt."</string>
     <string name="contactSavedToast">"Contactpersoon opgeslagen."</string>
     <string name="listSeparatorCallNumber">"Nummer bellen"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index c708f96..844c214 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Synchronizuj wszystkie kontakty"</string>
     <string name="groupNameMyContacts">"Moje kontakty"</string>
     <string name="groupNameWithPhones">"Kontakty z numerami telefonu"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Utworzono kontakt."</string>
     <string name="contactSavedToast">"Kontakt został zapisany."</string>
     <string name="listSeparatorCallNumber">"Wybierz numer"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index ed9bbe4..d63b72c 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"Синхронизировать все контакты"</string>
     <string name="groupNameMyContacts">"Мои контакты"</string>
     <string name="groupNameWithPhones">"Контакты с телефонными номерами"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"Контакт создан."</string>
     <string name="contactSavedToast">"Контакт сохранен."</string>
     <string name="listSeparatorCallNumber">"Набрать номер"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index d8dcd42..6a18e65 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"同步所有联系人"</string>
     <string name="groupNameMyContacts">"我的联系人"</string>
     <string name="groupNameWithPhones">"拥有电话号码的联系人"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"已创建“联系人”。"</string>
     <string name="contactSavedToast">"已保存联系人。"</string>
     <string name="listSeparatorCallNumber">"拔号"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a73f664..17689c7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -92,8 +92,6 @@
     <string name="syncAllGroups">"同步處理所有連絡人"</string>
     <string name="groupNameMyContacts">"我的聯絡人"</string>
     <string name="groupNameWithPhones">"有電話號碼的連絡人"</string>
-    <!-- no translation found for starredInAndroid (6495527538140213440) -->
-    <skip />
     <string name="contactCreatedToast">"已建立連絡人"</string>
     <string name="contactSavedToast">"連絡人已儲存。"</string>
     <string name="listSeparatorCallNumber">"撥打號碼"</string>
diff --git a/src/com/android/contacts/RecentCallsListActivity.java b/src/com/android/contacts/RecentCallsListActivity.java
index 6abaf23..8949f6e 100644
--- a/src/com/android/contacts/RecentCallsListActivity.java
+++ b/src/com/android/contacts/RecentCallsListActivity.java
@@ -39,7 +39,6 @@
 import android.provider.Contacts.Intents.Insert;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.TelephonyManager;
-import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.util.Log;
@@ -63,7 +62,6 @@
 
 import java.util.HashMap;
 import java.util.LinkedList;
-import java.util.Locale;
 import java.lang.ref.WeakReference;
 
 /**
@@ -126,7 +124,6 @@
         public int type;
         public String label;
         public String number;
-        public String formattedNumber;
 
         public static ContactInfo EMPTY = new ContactInfo();
     }
@@ -147,23 +144,6 @@
         int numberType;
         String numberLabel;
     }
-    
-    /**
-     * Shared builder used by {@link #formatPhoneNumber(String)} to minimize
-     * allocations when formatting phone numbers.
-     */
-    private static final SpannableStringBuilder sEditable = new SpannableStringBuilder();
-    
-    /**
-     * Invalid formatting type constant for {@link #sFormattingType}.
-     */
-    private static final int FORMATTING_TYPE_INVALID = -1;
-    
-    /**
-     * Cached formatting type for current {@link Locale}, as provided by
-     * {@link PhoneNumberUtils#getFormatTypeForLocale(Locale)}.
-     */
-    private static int sFormattingType = FORMATTING_TYPE_INVALID;
 
     /** Adapter class to fill in data for the Call Log */
     final class RecentCallsAdapter extends ResourceCursorAdapter
@@ -320,10 +300,6 @@
                         info.type = phonesCursor.getInt(PHONE_TYPE_COLUMN_INDEX);
                         info.label = phonesCursor.getString(LABEL_COLUMN_INDEX);
                         info.number = phonesCursor.getString(MATCHED_NUMBER_COLUMN_INDEX);
-                        
-                        // New incoming phone number invalidates our formatted
-                        // cache. Any cache fills happen only on the GUI thread.
-                        info.formattedNumber = null;
 
                         mContactInfo.put(ciq.number, info);
                         // Inform list to update this item, if in view
@@ -390,7 +366,6 @@
             final RecentCallsListItemViews views = (RecentCallsListItemViews) view.getTag();
 
             String number = c.getString(NUMBER_COLUMN_INDEX);
-            String formattedNumber = null;
             String callerName = c.getString(CALLER_NAME_COLUMN_INDEX);
             int callerNumberType = c.getInt(CALLER_NUMBERTYPE_COLUMN_INDEX);
             String callerNumberLabel = c.getString(CALLER_NUMBERLABEL_COLUMN_INDEX);
@@ -418,12 +393,6 @@
                     enqueueRequest(number, c.getPosition(),
                             callerName, callerNumberType, callerNumberLabel);
                 }
-                
-                // Format and cache phone number for found contact
-                if (info.formattedNumber == null) {
-                    info.formattedNumber = formatPhoneNumber(info.number);
-                }
-                formattedNumber = info.formattedNumber;
             }
 
             String name = info.name;
@@ -436,9 +405,6 @@
                 name = callerName;
                 ntype = callerNumberType;
                 label = callerNumberLabel;
-                
-                // Format the cached call_log phone number
-                formattedNumber = formatPhoneNumber(number);
             }
             // Set the text lines
             if (!TextUtils.isEmpty(name)) {
@@ -447,7 +413,7 @@
                 CharSequence numberLabel = Phones.getDisplayLabel(context, ntype, label,
                         mLabelArray);
                 views.numberView.setVisibility(View.VISIBLE);
-                views.numberView.setText(formattedNumber);
+                views.numberView.setText(number);
                 if (!TextUtils.isEmpty(numberLabel)) {
                     views.labelView.setText(numberLabel);
                     views.labelView.setVisibility(View.VISIBLE);
@@ -464,8 +430,8 @@
                 } else if (number.equals(mVoiceMailNumber)) {
                     number = getString(R.string.voicemail);
                 } else {
-                    // Just a raw number, and no cache, so format it nicely
-                    number = formatPhoneNumber(number);
+                    // Just a raw number, format it to look pretty
+                    number = PhoneNumberUtils.formatNumber(number);
                 }
 
                 views.line1View.setText(number);
@@ -544,9 +510,6 @@
         mVoiceMailNumber = ((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE))
                 .getVoiceMailNumber();
         mQueryHandler = new QueryHandler(this);
-        
-        // Reset locale-based formatting cache
-        sFormattingType = FORMATTING_TYPE_INVALID;
     }
     
     @Override
@@ -605,28 +568,6 @@
         }
     }
 
-    /**
-     * Format the given phone number using
-     * {@link PhoneNumberUtils#formatNumber(android.text.Editable, int)}. This
-     * helper method uses {@link #sEditable} and {@link #sFormattingType} to
-     * prevent allocations between multiple calls.
-     * <p>
-     * Because of the shared {@link #sEditable} builder, <b>this method is not
-     * thread safe</b>, and should only be called from the GUI thread.
-     */
-    private String formatPhoneNumber(String number) {
-        // Cache formatting type if not already present
-        if (sFormattingType == FORMATTING_TYPE_INVALID) {
-            sFormattingType = PhoneNumberUtils.getFormatTypeForLocale(Locale.getDefault());
-        }
-        
-        sEditable.clear();
-        sEditable.append(number);
-        
-        PhoneNumberUtils.formatNumber(sEditable, sFormattingType);
-        return sEditable.toString();
-    }
-
     private void resetNewCallsFlag() {
         // Mark all "new" missed calls as not new anymore
         StringBuilder where = new StringBuilder("type=");