Merge "Sharing ContactPhotoManager between dialer and people."
diff --git a/res/drawable-hdpi/ab_stacked_opaque_dark_holo.9.png b/res/drawable-hdpi/ab_stacked_opaque_dark_holo.9.png
deleted file mode 100644
index 23320ea..0000000
--- a/res/drawable-hdpi/ab_stacked_opaque_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ab_stacked_opaque_dark_holo.9.png b/res/drawable-mdpi/ab_stacked_opaque_dark_holo.9.png
deleted file mode 100644
index 3e912f5..0000000
--- a/res/drawable-mdpi/ab_stacked_opaque_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/background_dial_holo_dark.png b/res/drawable-nodpi/background_dial_holo_dark.png
deleted file mode 100644
index 3dba50c..0000000
--- a/res/drawable-nodpi/background_dial_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ab_stacked_opaque_dark_holo.9.png b/res/drawable-xhdpi/ab_stacked_opaque_dark_holo.9.png
deleted file mode 100644
index 71e4c23..0000000
--- a/res/drawable-xhdpi/ab_stacked_opaque_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 40572c8..ca9a897 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -203,7 +203,7 @@
     <string name="import_from_sim" msgid="3859272228033941659">"सिम कार्ड से आयात करें"</string>
     <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"संग्रहण से आयात करें"</string>
     <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"संग्रहण में निर्यात करें"</string>
-    <string name="share_visible_contacts" msgid="890150378880783797">"दिखाई देने वाले संपर्क शेयर करें"</string>
+    <string name="share_visible_contacts" msgid="890150378880783797">"दिखाई देने वाले संपर्क साझा करें"</string>
     <string name="import_one_vcard_string" msgid="9059163467020328433">"एक vCard फ़ाइल आयात करें"</string>
     <string name="import_multiple_vcard_string" msgid="3810226492811062392">"एकाधिक vCard फ़ाइलें आयात करें"</string>
     <string name="import_all_vcard_string" msgid="5518136113853448474">"सभी vCard फ़ाइलें आयात करें"</string>
@@ -275,8 +275,8 @@
     <string name="menu_import_export" msgid="26217871113229507">"आयात करें/निर्यात करें"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"संपर्क आयात/निर्यात करें"</string>
     <string name="dialog_import" msgid="2431698729761448759">"संपर्क आयात करें"</string>
-    <string name="menu_share" msgid="943789700636542260">"शेयर करें"</string>
-    <string name="share_via" msgid="563121028023030093">"इसके द्वारा संपर्क शेयर करें"</string>
+    <string name="menu_share" msgid="943789700636542260">"साझा करें"</string>
+    <string name="share_via" msgid="563121028023030093">"इसके द्वारा संपर्क साझा करें"</string>
     <string name="share_error" msgid="948429331673358107">"यह संपर्क साझा नहीं किया जा सकता."</string>
     <string name="nameLabelsGroup" msgid="2034640839640477827">"नाम"</string>
     <string name="nicknameLabelsGroup" msgid="2891682101053358010">"प्रचलित नाम"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 41ba9d3..c1f142a 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -25,7 +25,7 @@
     <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Pilih nomor untuk dipanggil"</string>
     <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Pilih nomor untuk dikirimi pesan"</string>
     <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Pilih kontak"</string>
-    <string name="starredList" msgid="4817256136413959463">"Yang berkilau bintangnya"</string>
+    <string name="starredList" msgid="4817256136413959463">"Yang berbintang"</string>
     <string name="frequentList" msgid="7154768136473953056">"Sering"</string>
     <string name="strequentList" msgid="5640192862059373511">"Favorit"</string>
     <string name="viewContactTitle" msgid="7989394521836644384">"Detail kontak"</string>
@@ -186,7 +186,7 @@
     <string name="description_image_button_seven" msgid="2450357020447676481">"tujuh"</string>
     <string name="description_image_button_eight" msgid="6969435115163287801">"delapan"</string>
     <string name="description_image_button_nine" msgid="7857248695662558323">"sembilan"</string>
-    <string name="description_image_button_star" msgid="3365919907520767866">"kilaukan bintang"</string>
+    <string name="description_image_button_star" msgid="3365919907520767866">"bintangi"</string>
     <string name="description_image_button_zero" msgid="4133108949401820710">"nol"</string>
     <string name="description_image_button_pound" msgid="3039765597595889230">"pound"</string>
     <string name="description_voicemail_button" msgid="3402506823655455591">"kotak pesan"</string>
@@ -432,7 +432,7 @@
     <string name="local_search_label" msgid="2551177578246113614">"Semua kontak"</string>
     <string name="toast_making_personal_copy" msgid="288549957278065542">"Membuat salinan pribadi..."</string>
     <string name="list_filter_all_accounts" msgid="8908683398914322369">"Semua kontak"</string>
-    <string name="list_filter_all_starred" msgid="5031734941601931356">"Yang berkilau bintangnya"</string>
+    <string name="list_filter_all_starred" msgid="5031734941601931356">"Yang berbintang"</string>
     <string name="list_filter_custom" msgid="8910173055702057002">"Khusus"</string>
     <string name="list_filter_customize" msgid="4789963356004169321">"Khusus"</string>
     <string name="list_filter_phones" msgid="735313795643493365">"Semua kontak dengan nomor telepon"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 7d0cec4..289661f 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -276,7 +276,7 @@
     <string name="menu_contacts_filter" msgid="2165153460860262501">"Anwani za kuonyesha"</string>
     <string name="menu_import_export" msgid="26217871113229507">"Leta/hamisha"</string>
     <string name="dialog_import_export" msgid="4360648034889921624">"Leta/Hamisha wawasiliani"</string>
-    <string name="dialog_import" msgid="2431698729761448759">"Ingiza wasiliani"</string>
+    <string name="dialog_import" msgid="2431698729761448759">"Ingiza anwani"</string>
     <string name="menu_share" msgid="943789700636542260">"Shiriki"</string>
     <string name="share_via" msgid="563121028023030093">"Shiriki anwani kupitia"</string>
     <string name="share_error" msgid="948429331673358107">"Mwasiliani huyu hawezi kushirikishwa."</string>
@@ -288,7 +288,7 @@
     <string name="relationLabelsGroup" msgid="1854373894284572781">"Uhusiano"</string>
     <string name="groupsLabel" msgid="8573535366319059326">"Vikundi"</string>
     <string name="dialog_new_contact_account" msgid="9044704073286262197">"Weka anwani chini ya akaunti"</string>
-    <string name="dialog_new_group_account" msgid="2318032089273496830">"Unda kikundi chini ya akaunti"</string>
+    <string name="dialog_new_group_account" msgid="2318032089273496830">"Buni kikundi chini ya akaunti"</string>
     <string name="menu_sync_remove" msgid="3266725887008450161">"Ondoa kikundi cha usawazishaji"</string>
     <string name="dialog_sync_add" msgid="8267045393119375803">"Ongeza kikundi cha usawazishaji"</string>
     <string name="display_more_groups" msgid="2682547080423434170">"Vikundi zaidi..."</string>
@@ -437,7 +437,7 @@
     <string name="list_filter_all_starred" msgid="5031734941601931356">"Zenye Nyota"</string>
     <string name="list_filter_custom" msgid="8910173055702057002">"Maalum"</string>
     <string name="list_filter_customize" msgid="4789963356004169321">"Geuza kukufaa"</string>
-    <string name="list_filter_phones" msgid="735313795643493365">"Wasiliani wote walio na nambari ya simu"</string>
+    <string name="list_filter_phones" msgid="735313795643493365">"Anwani zote zilizo na nambari za simu"</string>
     <string name="list_filter_single" msgid="5871400283515893087">"Anwani"</string>
     <string name="custom_list_filter" msgid="7836035257402013957">"Bainisha mwonekano maalum"</string>
     <string name="contact_list_loading" msgid="5488620820563977329">"Inapakia…"</string>
@@ -458,7 +458,7 @@
     <string name="social_widget_loading" msgid="5327336597364074608">"Inapakia…"</string>
     <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Fungua akaunti mpya"</string>
     <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Ingia katika akaunti"</string>
-    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ingiza wasiliani"</string>
+    <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ingiza anwani"</string>
     <string name="create_group_dialog_title" msgid="6874527142828424475">"Unda kikundi kipya"</string>
     <string name="create_group_item_label" msgid="4411981763169654825">"Unda kikundi kipya"</string>
   <plurals name="num_groups_in_account">
@@ -513,9 +513,9 @@
     <string name="external_profile_title" msgid="8034998767621359438">"Wasifu wangu wa <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
     <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Inaonyesha anwani zote"</string>
     <string name="no_account_prompt" msgid="7061052512446855192">"Watu wanafanya kazi vizuri wakiwa na Akaunti ya Google. "\n" "\n" • Iangalie kwa kutumia kivinjari chochote. "\n" • Tunza mawasiliano yako kwa usalama."</string>
-    <string name="generic_no_account_prompt" msgid="7218827704367325460">"Weka wasiliani wako salama hata ukipoteza simu yako: landanisha na huduma ya tovuti."</string>
+    <string name="generic_no_account_prompt" msgid="7218827704367325460">"Weka anwani za unaowasiliana nao salama hata ukipoteza simu yako: sawazisha kwa huduma iliyo mtandaoni."</string>
     <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Ongeza akaunti"</string>
-    <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Mwasiliani wako mpya hatahifadhiwa. Ongeza akaunti ambayo inahifadhi wasiliani katika mtandao?"</string>
+    <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Anwani yako mpya haitahifadhiwa. Je, ungetaka kuongeza akaunti ambayo inahifadhi nakala ya anwani katika mtandao?"</string>
     <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Mwasiliani wako mpya atalandanishwa na <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
     <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Unaweza kulandanisha mwasiliani mpya aliye na moja ya zifuatazo. Ni gani ambayo unataka kutumia?"</string>
     <string name="keep_local" msgid="1258761699192993322">"Weka karibu"</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6134d4a..07ecd7f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -198,12 +198,6 @@
         <item name="android:layout_height">150dip</item>
     </style>
 
-    <style name="DialtactsActionBarStyle" parent="android:Widget.Holo.ActionBar">
-        <item name="android:backgroundSplit">@null</item>
-        <item name="android:backgroundStacked">@drawable/ab_stacked_opaque_dark_holo</item>
-        <item name="android:displayOptions"></item>
-    </style>
-
     <style name="QuickContactListItemStyle">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">wrap_content</item>
diff --git a/tests/src/com/android/contacts/format/PrefixHighligherTest.java b/tests/src/com/android/contacts/format/PrefixHighligherTest.java
index 668330b..7f6e491 100644
--- a/tests/src/com/android/contacts/format/PrefixHighligherTest.java
+++ b/tests/src/com/android/contacts/format/PrefixHighligherTest.java
@@ -16,77 +16,70 @@
 
 package com.android.contacts.format;
 
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
-import android.widget.TextView;
+
+import junit.framework.TestCase;
 
 /**
  * Unit tests for {@link PrefixHighlighter}.
  */
 @SmallTest
-public class PrefixHighligherTest extends AndroidTestCase {
+public class PrefixHighligherTest extends TestCase {
     private static final int TEST_PREFIX_HIGHLIGHT_COLOR = 0xFF0000;
-    /** The HTML code used to mark the start of the highlighted part. */
-    private static final String START = "<font color =\"#1ff0000\">";
-    /** The HTML code used to mark the end of the highlighted part. */
-    private static final String END = "</font>";
 
     /** The object under test. */
     private PrefixHighlighter mPrefixHighlighter;
-    /** The view to on which the text is set. */
-    private TextView mView;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         mPrefixHighlighter = new PrefixHighlighter(TEST_PREFIX_HIGHLIGHT_COLOR);
-        mView = new TextView(getContext());
-        // This guarantees that the text will be stored as a spannable so that we can determine
-        // which styles have been applied to it.
-        mView.setText("", TextView.BufferType.SPANNABLE);
     }
 
-    public void testSetText_EmptyPrefix() {
-        mPrefixHighlighter.setText(mView, "", new char[0]);
-        SpannedTestUtils.checkHtmlText("", mView);
+    public void testApply_EmptyPrefix() {
+        CharSequence seq = mPrefixHighlighter.apply("", new char[0]);
+        SpannedTestUtils.assertNotSpanned(seq, "");
 
-        mPrefixHighlighter.setText(mView, "test", new char[0]);
-        SpannedTestUtils.checkHtmlText("test", mView);
+        seq = mPrefixHighlighter.apply("test", new char[0]);
+        SpannedTestUtils.assertNotSpanned(seq, "test");
     }
 
     public void testSetText_MatchingPrefix() {
-        mPrefixHighlighter.setText(mView, "test", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText(START + "te" + END + "st", mView);
+        final char[] charArray = "TE".toCharArray();
 
-        mPrefixHighlighter.setText(mView, "Test", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText(START + "Te" + END + "st", mView);
+        CharSequence seq = mPrefixHighlighter.apply("test", charArray);
+        SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
 
-        mPrefixHighlighter.setText(mView, "TEst", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText(START + "TE" + END + "st", mView);
+        seq = mPrefixHighlighter.apply("Test", charArray);
+        SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
 
-        mPrefixHighlighter.setText(mView, "a test", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText("a " + START + "te" + END + "st", mView);
+        seq = mPrefixHighlighter.apply("TEst", charArray);
+        SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
+
+        seq = mPrefixHighlighter.apply("a test", charArray);
+        SpannedTestUtils.assertPrefixSpan(seq, 2, 3);
     }
 
     public void testSetText_NotMatchingPrefix() {
-        mPrefixHighlighter.setText(mView, "test", "TA".toCharArray());
-        SpannedTestUtils.checkHtmlText("test", mView);
+        final CharSequence seq = mPrefixHighlighter.apply("test", "TA".toCharArray());
+        SpannedTestUtils.assertNotSpanned(seq, "test");
     }
 
     public void testSetText_FirstMatch() {
-        mPrefixHighlighter.setText(mView, "a test's tests are not tests", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText("a " +START + "te" + END + "st's tests are not tests",
-                mView);
+        final CharSequence seq = mPrefixHighlighter.apply("a test's tests are not tests",
+                "TE".toCharArray());
+        SpannedTestUtils.assertPrefixSpan(seq, 2, 3);
     }
 
     public void testSetText_NoMatchingMiddleOfWord() {
-        mPrefixHighlighter.setText(mView, "atest", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText("atest", mView);
+        final char[] charArray = "TE".toCharArray();
+        CharSequence seq = mPrefixHighlighter.apply("atest", charArray);
+        SpannedTestUtils.assertNotSpanned(seq, "atest");
 
-        mPrefixHighlighter.setText(mView, "atest otest", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText("atest otest", mView);
+        seq = mPrefixHighlighter.apply("atest otest", charArray);
+        SpannedTestUtils.assertNotSpanned(seq, "atest otest");
 
-        mPrefixHighlighter.setText(mView, "atest test", "TE".toCharArray());
-        SpannedTestUtils.checkHtmlText("atest " + START + "te" + END + "st", mView);
+        seq = mPrefixHighlighter.apply("atest test", charArray);
+        SpannedTestUtils.assertPrefixSpan(seq, 6, 7);
     }
 }
diff --git a/tests/src/com/android/contacts/format/SpannedTestUtils.java b/tests/src/com/android/contacts/format/SpannedTestUtils.java
index ce228a7..6fa028d 100644
--- a/tests/src/com/android/contacts/format/SpannedTestUtils.java
+++ b/tests/src/com/android/contacts/format/SpannedTestUtils.java
@@ -20,6 +20,7 @@
 import android.text.Html;
 import android.text.Spanned;
 import android.text.TextUtils;
+import android.text.style.ForegroundColorSpan;
 import android.widget.TextView;
 
 import junit.framework.Assert;
@@ -45,4 +46,38 @@
         }
     }
 
+
+    /**
+     * Assert span exists in the correct location.
+     *
+     * @param seq The spannable string to check.
+     * @param start The starting index.
+     * @param end The ending index.
+     */
+    public static void assertPrefixSpan(CharSequence seq, int start, int end) {
+        Assert.assertTrue(seq instanceof Spanned);
+        Spanned spannable = (Spanned) seq;
+
+        if (start > 0) {
+            Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, 0, start - 1));
+        }
+        Assert.assertEquals(1, getNumForegroundColorSpansBetween(spannable, start, end));
+        Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, end + 1,
+                spannable.length() - 1));
+    }
+
+    private static int getNumForegroundColorSpansBetween(Spanned value, int start, int end) {
+        return value.getSpans(start, end, ForegroundColorSpan.class).length;
+    }
+
+    /**
+     * Asserts that the given character sequence is not a Spanned object and text is correct.
+     *
+     * @param seq The sequence to check.
+     * @param expected The expected text.
+     */
+    public static void assertNotSpanned(CharSequence seq, String expected) {
+        Assert.assertFalse(seq instanceof Spanned);
+        Assert.assertEquals(expected, seq);
+    }
 }
diff --git a/tests/src/com/android/contacts/list/ContactListItemViewTest.java b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
index d05e8cf..996a1aa 100644
--- a/tests/src/com/android/contacts/list/ContactListItemViewTest.java
+++ b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
@@ -21,11 +21,13 @@
 import android.provider.ContactsContract;
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.suitebuilder.annotation.LargeTest;
+import android.text.SpannableString;
+import android.text.Spanned;
 import android.widget.TextView;
 
 import com.android.contacts.activities.PeopleActivity;
-import com.android.contacts.format.SpannedTestUtils;
 import com.android.contacts.common.test.IntegrationTestUtils;
+import com.android.contacts.format.SpannedTestUtils;
 
 /**
  * Unit tests for {@link ContactListItemView}.
@@ -66,7 +68,7 @@
 
         view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
 
-        SpannedTestUtils.checkHtmlText("John Doe", view.getNameTextView());
+        assertEquals(view.getNameTextView().getText().toString(), "John Doe");
     }
 
     public void testShowDisplayName_Unknown() {
@@ -76,7 +78,7 @@
         view.setUnknownNameText("unknown");
         view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
 
-        SpannedTestUtils.checkHtmlText("unknown", view.getNameTextView());
+        assertEquals(view.getNameTextView().getText().toString(), "unknown");
     }
 
     public void testShowDisplayName_WithPrefix() {
@@ -86,8 +88,9 @@
         view.setHighlightedPrefix("DOE".toCharArray());
         view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
 
-        SpannedTestUtils.checkHtmlText("John " + START + "Doe" + END,
-                view.getNameTextView());
+        CharSequence seq = view.getNameTextView().getText();
+        assertEquals("John Doe", seq.toString());
+        SpannedTestUtils.assertPrefixSpan(seq, 5, 7);
     }
 
     public void testShowDisplayName_WithPrefixReversed() {
@@ -97,16 +100,20 @@
         view.setHighlightedPrefix("DOE".toCharArray());
         view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_ALTERNATIVE);
 
-        SpannedTestUtils.checkHtmlText("John " + START + "Doe" + END,
-                view.getNameTextView());
+        CharSequence seq = view.getNameTextView().getText();
+        assertEquals("John Doe", seq.toString());
+        SpannedTestUtils.assertPrefixSpan(seq, 5, 7);
     }
 
     public void testSetSnippet_Prefix() {
         ContactListItemView view = createView();
         view.setHighlightedPrefix("TEST".toCharArray());
         view.setSnippet("This is a test");
-        SpannedTestUtils.checkHtmlText("This is a " + START + "test" + END,
-                view.getSnippetView());
+
+        CharSequence seq = view.getSnippetView().getText();
+
+        assertEquals("This is a test", seq.toString());
+        SpannedTestUtils.assertPrefixSpan(seq, 10, 13);
     }
 
     /** Creates the view to be tested. */