am 3a9c50a8: am 44a6e568: am 675bcfb0: Merge "Fix analytics in Contacts app" into lmp-mr1-dev

* commit '3a9c50a84252aee40a0dc67c7b416604a699b7d9':
  Fix analytics in Contacts app
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 2d2a782..ff6a1ae 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -34,6 +34,8 @@
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.testing.InjectedServices;
 import com.android.contacts.common.util.Constants;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+
 import com.google.common.annotations.VisibleForTesting;
 
 public final class ContactsApplication extends Application {
@@ -128,6 +130,8 @@
         if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
             Log.d(Constants.PERFORMANCE_TAG, "ContactsApplication.onCreate finish");
         }
+
+        AnalyticsUtil.initialize(this);
     }
 
     private class DelayedInitializer extends AsyncTask<Void, Void, Void> {
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index a1ff6d9..e3fa7e2 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -58,7 +58,6 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
 import com.android.contacts.editor.Editor;
 import com.android.contacts.editor.EditorUiUtils;
@@ -103,7 +102,7 @@
  * Note when there's no accounts, it *is* okay to show the picker / dialog, because the local-only
  * contacts are writable.
  */
-public class ConfirmAddDetailActivity extends ContactsActivity implements
+public class ConfirmAddDetailActivity extends Activity implements
         DialogManager.DialogShowingViewActivity {
 
     private static final String TAG = "ConfirmAdd"; // The class name is too long to be a tag.
diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
index 197d3bd..bf3b1c1 100644
--- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
@@ -28,7 +28,6 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
-import com.android.contacts.ContactsActivity;
 import com.android.contacts.R;
 import com.android.contacts.editor.ContactEditorUtils;
 import com.android.contacts.common.model.AccountTypeManager;
@@ -46,7 +45,7 @@
  * the new contact in. If the activity result doesn't contain intent data, then there is no
  * account for this contact.
  */
-public class ContactEditorAccountsChangedActivity extends ContactsActivity {
+public class ContactEditorAccountsChangedActivity extends Activity {
 
     private static final String TAG = ContactEditorAccountsChangedActivity.class.getSimpleName();
 
diff --git a/src/com/android/contacts/activities/PhotoSelectionActivity.java b/src/com/android/contacts/activities/PhotoSelectionActivity.java
index a773f11..da0d2e4 100644
--- a/src/com/android/contacts/activities/PhotoSelectionActivity.java
+++ b/src/com/android/contacts/activities/PhotoSelectionActivity.java
@@ -19,6 +19,7 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
@@ -32,7 +33,6 @@
 import android.widget.FrameLayout.LayoutParams;
 import android.widget.ImageView;
 
-import com.android.contacts.ContactsActivity;
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
@@ -44,7 +44,7 @@
 /**
  * Popup activity for choosing a contact photo within the Contacts app.
  */
-public class PhotoSelectionActivity extends ContactsActivity {
+public class PhotoSelectionActivity extends Activity {
 
     private static final String TAG = "PhotoSelectionActivity";
 
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index a2e32c9..ed2520d 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -93,8 +93,6 @@
 import com.android.contacts.util.HelpUtils;
 import com.android.contacts.util.PhoneCapabilityTester;
 import com.android.contacts.util.UiClosables;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
@@ -104,7 +102,7 @@
 import java.util.Comparator;
 import java.util.List;
 
-public class ContactEditorFragment extends AnalyticsFragment implements
+public class ContactEditorFragment extends Fragment implements
         SplitContactConfirmationDialogFragment.Listener,
         AggregationSuggestionEngine.Listener, AggregationSuggestionView.Listener,
         RawContactReadOnlyEditorView.Listener {
diff --git a/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java b/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
index 423052e..c790e0b 100644
--- a/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
+++ b/src/com/android/contacts/editor/SplitContactConfirmationDialogFragment.java
@@ -24,7 +24,6 @@
 import android.os.Bundle;
 
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
 
 /**
  * Shows a dialog asking the user whether to split the contact. The result is passed back
@@ -32,7 +31,7 @@
  * has to implement {@link SplitContactConfirmationDialogFragment.Listener}.
  * Does not split the contact itself.
  */
-public class SplitContactConfirmationDialogFragment extends AnalyticsDialogFragment {
+public class SplitContactConfirmationDialogFragment extends DialogFragment {
     public static final String TAG = "SplitContactConfirmationDialog";
 
     public SplitContactConfirmationDialogFragment() {
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index e511d52..81cc28c 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -47,12 +47,11 @@
 import com.android.contacts.group.GroupBrowseListAdapter.GroupListItemViewCache;
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.list.AutoScrollListView;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 /**
  * Fragment to display the list of groups.
  */
-public class GroupBrowseListFragment extends AnalyticsFragment
+public class GroupBrowseListFragment extends Fragment
         implements OnFocusChangeListener, OnTouchListener {
 
     /**
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index b8f8975..c12595d 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -57,12 +57,11 @@
 import com.android.contacts.list.GroupMemberTileAdapter;
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.model.account.AccountType;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 /**
  * Displays the details of a group and shows a list of actions possible for the group.
  */
-public class GroupDetailFragment extends AnalyticsFragment implements OnScrollListener {
+public class GroupDetailFragment extends Fragment implements OnScrollListener {
 
     public static interface Listener {
         /**
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index 1b91ab8..3d13bdd 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -72,15 +72,13 @@
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
 import com.android.contacts.common.util.ViewUtil;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 import com.google.common.base.Objects;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class GroupEditorFragment extends AnalyticsFragment
-        implements SelectAccountDialogFragment.Listener {
+public class GroupEditorFragment extends Fragment implements SelectAccountDialogFragment.Listener {
     private static final String TAG = "GroupEditorFragment";
 
     private static final String LEGACY_CONTACTS_AUTHORITY = "contacts";
diff --git a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
index 7925ac0..2df7fe2 100644
--- a/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupDeletionDialogFragment.java
@@ -17,18 +17,18 @@
 
 import android.app.AlertDialog;
 import android.app.Dialog;
+import android.app.DialogFragment;
 import android.app.FragmentManager;
 import android.content.DialogInterface;
 import android.os.Bundle;
 
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
 
 /**
  * A dialog for deleting a group.
  */
-public class GroupDeletionDialogFragment extends AnalyticsDialogFragment {
+public class GroupDeletionDialogFragment extends DialogFragment {
 
     private static final String ARG_GROUP_ID = "groupId";
     private static final String ARG_LABEL = "label";
diff --git a/src/com/android/contacts/interactions/GroupNameDialogFragment.java b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
index 8059fd4..b0ad9c9 100644
--- a/src/com/android/contacts/interactions/GroupNameDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
@@ -31,12 +31,11 @@
 import android.widget.EditText;
 
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
 
 /**
  * A common superclass for creating and renaming groups.
  */
-public abstract class GroupNameDialogFragment extends AnalyticsDialogFragment {
+public abstract class GroupNameDialogFragment extends DialogFragment {
     protected abstract int getTitleResourceId();
     protected abstract void initializeGroupLabelEditText(EditText editText);
     protected abstract void onCompleted(String groupLabel);
diff --git a/src/com/android/contacts/list/ContactTileListFragment.java b/src/com/android/contacts/list/ContactTileListFragment.java
index 77c22e0..189cfd3 100644
--- a/src/com/android/contacts/list/ContactTileListFragment.java
+++ b/src/com/android/contacts/list/ContactTileListFragment.java
@@ -39,7 +39,7 @@
 import com.android.contacts.common.list.ContactTileAdapter.DisplayType;
 import com.android.contacts.common.list.ContactTileView;
 import com.android.contacts.common.util.ContactListViewUtils;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
+import com.android.contacts.common.util.SchedulingUtils;
 
 /**
  * Fragment containing a list of starred contacts followed by a list of frequently contacted.
@@ -49,7 +49,7 @@
  * (i.e. adding header views to the ListViews in the fragment). This work was started
  * by creating {@link ContactTileFrequentFragment}.
  */
-public class ContactTileListFragment extends AnalyticsFragment {
+public class ContactTileListFragment extends Fragment {
     private static final String TAG = ContactTileListFragment.class.getSimpleName();
 
     public interface Listener {
diff --git a/src/com/android/contacts/list/ContactsUnavailableFragment.java b/src/com/android/contacts/list/ContactsUnavailableFragment.java
index 46f2138..70d224a 100644
--- a/src/com/android/contacts/list/ContactsUnavailableFragment.java
+++ b/src/com/android/contacts/list/ContactsUnavailableFragment.java
@@ -15,6 +15,7 @@
  */
 package com.android.contacts.list;
 
+import android.app.Fragment;
 import android.content.Context;
 import android.os.Bundle;
 import android.provider.ContactsContract.ProviderStatus;
@@ -28,13 +29,12 @@
 import android.widget.TextView;
 
 import com.android.contacts.R;
-import com.android.contacts.commonbind.analytics.AnalyticsFragment;
 
 /**
  * Fragment shown when contacts are unavailable. It contains provider status
  * messaging as well as instructions for the user.
  */
-public class ContactsUnavailableFragment extends AnalyticsFragment implements OnClickListener {
+public class ContactsUnavailableFragment extends Fragment implements OnClickListener {
 
     private View mView;
     private TextView mMessageView;
diff --git a/src/com/android/contacts/preference/ContactsPreferenceActivity.java b/src/com/android/contacts/preference/ContactsPreferenceActivity.java
index 3ddffbb..d47cb22 100644
--- a/src/com/android/contacts/preference/ContactsPreferenceActivity.java
+++ b/src/com/android/contacts/preference/ContactsPreferenceActivity.java
@@ -20,18 +20,18 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.preference.PreferenceActivity;
 import android.view.MenuItem;
 
 import com.android.contacts.R;
 import com.android.contacts.activities.PeopleActivity;
-import com.android.contacts.commonbind.analytics.AnalyticsPreferenceActivity;
 
 import java.util.List;
 
 /**
  * Contacts settings.
  */
-public final class ContactsPreferenceActivity extends AnalyticsPreferenceActivity {
+public final class ContactsPreferenceActivity extends PreferenceActivity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {