Merge "New People activity"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 5969097..47340a0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -127,6 +127,7 @@
             android:icon="@mipmap/ic_launcher_phone"
             android:screenOrientation="nosensor"
             android:enabled="@*android:bool/config_voice_capable"
+            android:taskAffinity="android.task.contacts.phone"
         >
             <intent-filter>
                 <action android:name="android.intent.action.DIAL" />
@@ -171,11 +172,10 @@
             </intent-filter>
         </activity>
 
-        <!-- Front door proxy that picks the right UI based on the screen config -->
-        <activity android:name=".activities.ContactsFrontDoor"
-            android:label="@string/contactsList"
-            android:icon="@mipmap/ic_launcher_contacts"
-            android:theme="@style/ContactBrowserTheme"
+        <!-- The main Contacts activity with the contact list, favorites, and groups. -->
+        <activity android:name=".activities.PeopleActivity"
+            android:label="@string/people"
+            android:theme="@style/PeopleTheme"
             android:clearTaskOnLaunch="true"
             android:launchMode="singleTop"
         >
@@ -185,15 +185,6 @@
                 <category android:name="android.intent.category.LAUNCHER" />
                 <category android:name="android.intent.category.BROWSABLE" />
             </intent-filter>
-        </activity>
-
-        <!-- The actual list of contacts -->
-        <activity android:name=".activities.ContactBrowserActivity"
-            android:label="@string/contactsList"
-            android:theme="@style/ContactBrowserTheme"
-            android:launchMode="singleTop"
-            android:clearTaskOnLaunch="true"
-        >
             <intent-filter>
                 <action android:name="com.android.contacts.action.LIST_DEFAULT" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -298,7 +289,7 @@
 
         <!-- Backwards compatibility: somebody may have hard coded this activity name -->
         <activity-alias android:name="ContactsListActivity"
-            android:targetActivity=".activities.ContactBrowserActivity"
+            android:targetActivity=".activities.PeopleActivity"
         />
 
         <!-- An activity for joining contacts -->
@@ -340,7 +331,7 @@
         <!-- List of groups -->
         <activity android:name=".activities.GroupBrowserActivity"
             android:label="@string/contactsGroupsLabel"
-            android:theme="@style/ContactBrowserTheme"
+            android:theme="@style/PeopleTheme"
             android:launchMode="singleTop"
             android:clearTaskOnLaunch="true">
             <!-- TODO: Remove this temporary intent action name when the fragmentization
@@ -437,6 +428,7 @@
         <activity android:name="CallDetailActivity"
             android:label="@string/callDetailTitle"
             android:theme="@style/CallDetailActivityTheme"
+            android:taskAffinity="android.task.contacts.phone"
         >
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
@@ -527,10 +519,10 @@
             android:theme="@android:style/Theme.Translucent">
         </activity>
 
-        <!-- Makes .ContactBrowserActivity the search target for any activity in Contacts -->
+        <!-- Makes .PeopleActivity the search target for any activity in Contacts -->
         <meta-data
             android:name="android.app.default_searchable"
-            android:value=".activities.ContactBrowserActivity" />
+            android:value=".activities.PeopleActivity" />
 
 
         <!-- LIVE FOLDERS -->
diff --git a/res/layout-xlarge/contact_browser.xml b/res/layout-xlarge/people_activity.xml
similarity index 100%
rename from res/layout-xlarge/contact_browser.xml
rename to res/layout-xlarge/people_activity.xml
diff --git a/res/layout/contact_browser.xml b/res/layout/people_activity.xml
similarity index 100%
rename from res/layout/contact_browser.xml
rename to res/layout/people_activity.xml
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
index dcb32ad..d44d993 100644
--- a/res/values-xlarge/styles.xml
+++ b/res/values-xlarge/styles.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <resources>
-    <style name="ContactBrowserTheme" parent="@android:Theme.Holo.Light">
+    <style name="PeopleTheme" parent="@android:Theme.Holo.Light">
         <item name="list_item_height">66dip</item>
         <item name="activated_background">@drawable/list_item_activated_background</item>
         <item name="android:windowContentOverlay">@null</item>
@@ -87,7 +87,7 @@
         <item name="android:background">@null</item>
     </style>
 
-    <style name="DirectoryHeader" parent="ContactBrowserTheme">
+    <style name="DirectoryHeader" parent="PeopleTheme">
         <item name="android:background">@drawable/directory_bg_holo</item>
     </style>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 83fbd9a..2f9acb4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -18,14 +18,17 @@
          apps sharing the uid). -->
     <string name="sharedUserLabel">Android Core Apps</string>
 
-    <!-- Title for the activity that shows contacts.  This is the name
-         used in the Launcher icon. -->
-    <string name="contactsList">Contacts</string>
-
     <!-- Title for the activity that dials the phone.  This is the name
          used in the Launcher icon. -->
     <string name="launcherDialer">Phone</string>
 
+    <!-- Title for the activity that opens the People app.  This is the name
+         used in the Launcher icon. -->
+    <string name="people">People</string>
+
+    <!-- Directory partition name -->
+    <string name="contactsList">Contacts</string>
+
     <!-- Name of activity that allows users to create shortcuts on the home screen to a contact.
          This shows up in a list of things like bookmark, folder, music playlist, etc -->
     <string name="shortcutContact">Contact</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0582fd4..df8b808 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -107,7 +107,7 @@
         <attr name="list_item_header_text_size" format="dimension" />
     </declare-styleable>
 
-    <style name="ContactBrowserTheme" parent="@android:Theme">
+    <style name="PeopleTheme" parent="@android:Theme">
         <item name="list_item_height">?android:attr/listPreferredItemHeight</item>
         <item name="activated_background">@drawable/list_item_activated_background</item>
         <item name="section_header_background">@drawable/list_title_holo</item>
@@ -217,7 +217,7 @@
         <attr name="animationDuration" format="integer"/>
     </declare-styleable>
     
-    <style name="DirectoryHeader" parent="ContactBrowserTheme">
+    <style name="DirectoryHeader" parent="PeopleTheme">
         <item name="android:background">@drawable/directory_bg</item>
     </style>
 
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index 0036256..17e05c7 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -56,7 +56,7 @@
                     Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_FORWARD_RESULT
                             | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
-            intent.setClass(this, ContactBrowserActivity.class);
+            intent.setClass(this, PeopleActivity.class);
             startActivity(intent);
             finish();
             return;
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 29ebd59..cc0be9d 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -156,8 +156,7 @@
         public void onSaveFinished(int resultCode, Intent resultIntent, boolean navigateHome) {
             setResult(resultCode, resultIntent);
             if (navigateHome) {
-                Intent intent = new Intent(ContactEditorActivity.this,
-                        ContactBrowserActivity.class);
+                Intent intent = new Intent(ContactEditorActivity.this, PeopleActivity.class);
                 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                 startActivity(intent);
             }
diff --git a/src/com/android/contacts/activities/ContactsFrontDoor.java b/src/com/android/contacts/activities/ContactsFrontDoor.java
deleted file mode 100644
index d34f2c4..0000000
--- a/src/com/android/contacts/activities/ContactsFrontDoor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2010 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.contacts.activities;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.util.PhoneCapabilityTester;
-
-import android.content.Intent;
-import android.os.Bundle;
-
-public class ContactsFrontDoor extends ContactsActivity {
-    public static final String EXTRA_FRONT_DOOR = "front_door";
-
-    @Override
-    public void onCreate(Bundle savedState) {
-        super.onCreate(savedState);
-
-        Intent originalIntent = getIntent();
-        Intent intent = new Intent();
-        intent.setAction(originalIntent.getAction());
-        intent.setDataAndType(originalIntent.getData(), originalIntent.getType());
-        intent.setFlags(
-                Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_FORWARD_RESULT
-                        | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
-        intent.putExtra(EXTRA_FRONT_DOOR, true);
-
-        if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
-            // No tabs, just a contact list
-            intent.setClass(this, ContactBrowserActivity.class);
-        } else {
-            // Default to the normal dialtacts layout
-            intent.setClass(this, DialtactsActivity.class);
-        }
-
-        startActivity(intent);
-        finish();
-    }
-}
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 0b63e46..a0d77ab 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -203,7 +203,7 @@
         // TODO: We should not artificially create Intents and put them into the Fragment.
         // It would be nicer to directly pass in the UI constant
         Intent intent = new Intent(UI.LIST_ALL_CONTACTS_ACTION);
-        intent.setClass(this, ContactBrowserActivity.class);
+        intent.setClass(this, PeopleActivity.class);
 
         ContactsIntentResolver resolver = new ContactsIntentResolver(this);
         ContactsRequest request = resolver.resolveIntent(intent);
@@ -229,7 +229,7 @@
         // TODO: We should not artificially create Intents and put them into the Fragment.
         // It would be nicer to directly pass in the UI constant
         Intent intent = new Intent(UI.LIST_STREQUENT_ACTION);
-        intent.setClass(this, ContactBrowserActivity.class);
+        intent.setClass(this, PeopleActivity.class);
 
         ContactsIntentResolver resolver = new ContactsIntentResolver(this);
         ContactsRequest request = resolver.resolveIntent(intent);
@@ -291,30 +291,16 @@
         // overwritten by one of the programmatic tab selections
         final int savedTabIndex = mLastManuallySelectedTab;
 
-        // Choose the tab based on the inbound intent
-        if (intent.getBooleanExtra(ContactsFrontDoor.EXTRA_FRONT_DOOR, false)) {
-            // Launched through the contacts front door, set the proper contacts tab (sticky
-            // between favorites and contacts)
-            SharedPreferences prefs = getSharedPreferences(PREFS_DIALTACTS, MODE_PRIVATE);
-            boolean favoritesAsContacts = prefs.getBoolean(PREF_FAVORITES_AS_CONTACTS,
-                    PREF_FAVORITES_AS_CONTACTS_DEFAULT);
-            if (favoritesAsContacts) {
-                getActionBar().selectTab(getActionBar().getTabAt(TAB_INDEX_FAVORITES));
+        // Look at the component to determine the tab
+        String componentName = intent.getComponent().getClassName();
+        if (getClass().getName().equals(componentName)) {
+            if (recentCallsRequest) {
+                getActionBar().selectTab(getActionBar().getTabAt(TAB_INDEX_CALL_LOG));
             } else {
-                getActionBar().selectTab(getActionBar().getTabAt(TAB_INDEX_CONTACTS));
+                getActionBar().selectTab(getActionBar().getTabAt(TAB_INDEX_DIALER));
             }
         } else {
-            // Not launched through the front door, look at the component to determine the tab
-            String componentName = intent.getComponent().getClassName();
-            if (getClass().getName().equals(componentName)) {
-                if (recentCallsRequest) {
-                    getActionBar().selectTab(getActionBar().getTabAt(TAB_INDEX_CALL_LOG));
-                } else {
-                    getActionBar().selectTab(getActionBar().getTabAt(TAB_INDEX_DIALER));
-                }
-            } else {
-                getActionBar().selectTab(getActionBar().getTabAt(mLastManuallySelectedTab));
-            }
+            getActionBar().selectTab(getActionBar().getTabAt(mLastManuallySelectedTab));
         }
 
         // Restore to the previous manual selection
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
similarity index 97%
rename from src/com/android/contacts/activities/ContactBrowserActivity.java
rename to src/com/android/contacts/activities/PeopleActivity.java
index f6b3f2f..1379e08 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -76,7 +76,7 @@
  * Displays a list to browse contacts. For xlarge screens, this also displays a detail-pane on
  * the right.
  */
-public class ContactBrowserActivity extends ContactsActivity
+public class PeopleActivity extends ContactsActivity
         implements View.OnCreateContextMenuListener, ActionBarAdapter.Listener,
         DialogManager.DialogShowingViewActivity,
         ContactListFilterController.ContactListFilterListener, ProviderStatusListener {
@@ -126,7 +126,7 @@
     private boolean mOptionsMenuContactsAvailable;
     private boolean mOptionsMenuGroupActionsEnabled;
 
-    public ContactBrowserActivity() {
+    public PeopleActivity() {
         mIntentResolver = new ContactsIntentResolver(this);
         mContactListFilterController = new ContactListFilterController(this);
         mContactListFilterController.addListener(this);
@@ -200,7 +200,7 @@
         }
 
         if (createContentView) {
-            setContentView(R.layout.contact_browser);
+            setContentView(R.layout.people_activity);
         }
 
         if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT
@@ -499,7 +499,7 @@
 
         @Override
         public void onDeleteContactAction(Uri contactUri) {
-            ContactDeletionInteraction.start(ContactBrowserActivity.this, contactUri, false);
+            ContactDeletionInteraction.start(PeopleActivity.this, contactUri, false);
         }
 
         @Override
@@ -546,16 +546,16 @@
 
         @Override
         public void onDeleteRequested(Uri contactUri) {
-            ContactDeletionInteraction.start(ContactBrowserActivity.this, contactUri, false);
+            ContactDeletionInteraction.start(PeopleActivity.this, contactUri, false);
         }
 
         @Override
         public void onCreateRawContactRequested(ArrayList<ContentValues> values, Account account) {
-            Toast.makeText(ContactBrowserActivity.this, R.string.toast_making_personal_copy,
+            Toast.makeText(PeopleActivity.this, R.string.toast_making_personal_copy,
                     Toast.LENGTH_LONG).show();
             Intent serviceIntent = ContactSaveService.createNewRawContactIntent(
-                    ContactBrowserActivity.this, values, account,
-                    ContactBrowserActivity.class, Intent.ACTION_VIEW);
+                    PeopleActivity.this, values, account,
+                    PeopleActivity.class, Intent.ACTION_VIEW);
             startService(serviceIntent);
         }
     }
@@ -579,7 +579,7 @@
 
         @Override
         public void onImportContactsFromFileAction() {
-            AccountSelectionUtil.doImportFromSdCard(ContactBrowserActivity.this, null);
+            AccountSelectionUtil.doImportFromSdCard(PeopleActivity.this, null);
         }
 
         @Override
diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java
index 7341430..5e14db4 100755
--- a/src/com/android/contacts/activities/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java
@@ -182,7 +182,7 @@
         } else if (count > 1) {
             // If more than one, show pick list
             Intent listIntent = new Intent(Intent.ACTION_SEARCH);
-            listIntent.setComponent(new ComponentName(this, ContactBrowserActivity.class));
+            listIntent.setComponent(new ComponentName(this, PeopleActivity.class));
             listIntent.putExtras(mCreateExtras);
             startActivity(listIntent);
             finish();
diff --git a/src/com/android/contacts/preference/ContactsPreferenceActivity.java b/src/com/android/contacts/preference/ContactsPreferenceActivity.java
index 7f7b750..0b1970e 100644
--- a/src/com/android/contacts/preference/ContactsPreferenceActivity.java
+++ b/src/com/android/contacts/preference/ContactsPreferenceActivity.java
@@ -17,7 +17,7 @@
 package com.android.contacts.preference;
 
 import com.android.contacts.R;
-import com.android.contacts.activities.ContactBrowserActivity;
+import com.android.contacts.activities.PeopleActivity;
 
 import android.app.ActionBar;
 import android.content.Context;
@@ -66,7 +66,7 @@
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case android.R.id.home: {
-                Intent intent = new Intent(this, ContactBrowserActivity.class);
+                Intent intent = new Intent(this, PeopleActivity.class);
                 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                 startActivity(intent);
                 finish();
diff --git a/src/com/android/contacts/vcard/ExportProcessor.java b/src/com/android/contacts/vcard/ExportProcessor.java
index 7b5e001..e9697d3 100644
--- a/src/com/android/contacts/vcard/ExportProcessor.java
+++ b/src/com/android/contacts/vcard/ExportProcessor.java
@@ -16,7 +16,7 @@
 package com.android.contacts.vcard;
 
 import com.android.contacts.R;
-import com.android.contacts.activities.ContactBrowserActivity;
+import com.android.contacts.activities.PeopleActivity;
 import com.android.vcard.VCardComposer;
 import com.android.vcard.VCardConfig;
 
@@ -251,7 +251,7 @@
 
     private void doFinishNotification(final String title, final String description) {
         if (DEBUG) Log.d(LOG_TAG, "send finish notification: " + title + ", " + description);
-        final Intent intent = new Intent(mService, ContactBrowserActivity.class);
+        final Intent intent = new Intent(mService, PeopleActivity.class);
         final Notification notification =
                 VCardService.constructFinishNotification(mService, title, description, intent);
         mNotificationManager.notify(mJobId, notification);
diff --git a/tests/src/com/android/contacts/activities/ContactBrowserActivityTest.java b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
similarity index 96%
rename from tests/src/com/android/contacts/activities/ContactBrowserActivityTest.java
rename to tests/src/com/android/contacts/activities/PeopleActivityTest.java
index d165963..4c1bb16 100644
--- a/tests/src/com/android/contacts/activities/ContactBrowserActivityTest.java
+++ b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
@@ -51,7 +51,7 @@
 import android.widget.TextView;
 
 /**
- * Tests for {@link ContactBrowserActivity}.
+ * Tests for {@link PeopleActivity}.
  *
  * Running all tests:
  *
@@ -61,8 +61,8 @@
  *     -w com.android.contacts.tests/android.test.InstrumentationTestRunner
  */
 @Smoke
-public class ContactBrowserActivityTest
-        extends ActivityInstrumentationTestCase2<ContactBrowserActivity>
+public class PeopleActivityTest
+        extends ActivityInstrumentationTestCase2<PeopleActivity>
 {
     static {
         // AsyncTask class needs to be initialized on the main thread.
@@ -76,8 +76,8 @@
     private MockContentProvider mContactsProvider;
     private MockContentProvider mSettingsProvider;
 
-    public ContactBrowserActivityTest() {
-        super(ContactBrowserActivity.class);
+    public PeopleActivityTest() {
+        super(PeopleActivity.class);
     }
 
     @Override
@@ -115,7 +115,7 @@
 
         setActivityIntent(new Intent(Intent.ACTION_DEFAULT));
 
-        ContactBrowserActivity activity = getActivity();
+        PeopleActivity activity = getActivity();
 
         getInstrumentation().waitForIdleSync();