Use analytics activities and fragments
All ContactsCommon's activities and fragments now inherit from
analytics base classes.
Also renamed dialerbind.analytics -> commonbind.analytics
Analytics CL #1/6
Bug: 18039620
Change-Id: Ie9cef92bfcadf6764970d70474ced24dba7f828d
diff --git a/src/com/android/contacts/common/activity/TransactionSafeActivity.java b/src/com/android/contacts/common/activity/TransactionSafeActivity.java
index 6c2e4fe..6b50108 100644
--- a/src/com/android/contacts/common/activity/TransactionSafeActivity.java
+++ b/src/com/android/contacts/common/activity/TransactionSafeActivity.java
@@ -16,6 +16,8 @@
package com.android.contacts.common.activity;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
+
import android.app.Activity;
import android.os.Bundle;
@@ -23,7 +25,7 @@
* A common superclass that keeps track of whether an {@link Activity} has saved its state yet or
* not.
*/
-public abstract class TransactionSafeActivity extends Activity {
+public abstract class TransactionSafeActivity extends AnalyticsActivity {
private boolean mIsSafeToCommitTransactions;
diff --git a/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java b/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java
index 2cfd36e..44bdd95 100644
--- a/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java
+++ b/src/com/android/contacts/common/dialog/ClearFrequentsDialog.java
@@ -18,7 +18,6 @@
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.ContentResolver;
import android.content.DialogInterface;
@@ -28,11 +27,12 @@
import android.provider.ContactsContract;
import com.android.contacts.common.R;
+import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
/**
* Dialog that clears the frequently contacted list after confirming with the user.
*/
-public class ClearFrequentsDialog extends DialogFragment {
+public class ClearFrequentsDialog extends AnalyticsDialogFragment {
/** Preferred way to show this dialog */
public static void show(FragmentManager fragmentManager) {
ClearFrequentsDialog dialog = new ClearFrequentsDialog();
diff --git a/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java b/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java
index 2fe059f..c26d6b4 100644
--- a/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java
+++ b/src/com/android/contacts/common/dialog/IndeterminateProgressDialog.java
@@ -16,8 +16,9 @@
package com.android.contacts.common.dialog;
+import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
+
import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.FragmentManager;
import android.app.ProgressDialog;
import android.content.DialogInterface;
@@ -41,7 +42,7 @@
* after a device orientation change because the {@link #setRetainInstance(boolean)} is called
* internally with true.
*/
-public class IndeterminateProgressDialog extends DialogFragment {
+public class IndeterminateProgressDialog extends AnalyticsDialogFragment {
private static final String TAG = IndeterminateProgressDialog.class.getSimpleName();
private CharSequence mTitle;
diff --git a/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java b/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java
index c2ebbbf..133b0db 100644
--- a/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java
+++ b/src/com/android/contacts/common/editor/SelectAccountDialogFragment.java
@@ -18,7 +18,6 @@
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.DialogInterface;
@@ -27,13 +26,14 @@
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.util.AccountsListAdapter;
import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
/**
* Shows a dialog asking the user which account to chose.
*
* The result is passed to {@code targetFragment} passed to {@link #show}.
*/
-public final class SelectAccountDialogFragment extends DialogFragment {
+public final class SelectAccountDialogFragment extends AnalyticsDialogFragment {
public static final String TAG = "SelectAccountDialogFragment";
private static final String KEY_TITLE_RES_ID = "title_res_id";
diff --git a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
index 99b8df5..6bfd42a 100644
--- a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
@@ -48,7 +48,7 @@
import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.common.vcard.ExportVCardActivity;
import com.android.contacts.common.vcard.VCardCommonArguments;
-import com.android.dialerbind.analytics.AnalyticsDialogFragment;
+import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
import java.util.Collections;
import java.util.List;
diff --git a/src/com/android/contacts/common/list/AccountFilterActivity.java b/src/com/android/contacts/common/list/AccountFilterActivity.java
index 58450c6..91bffba 100644
--- a/src/com/android/contacts/common/list/AccountFilterActivity.java
+++ b/src/com/android/contacts/common/list/AccountFilterActivity.java
@@ -38,6 +38,8 @@
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
+
import com.google.common.collect.Lists;
import java.util.ArrayList;
@@ -47,7 +49,8 @@
* Shows a list of all available accounts, letting the user select under which account to view
* contacts.
*/
-public class AccountFilterActivity extends Activity implements AdapterView.OnItemClickListener {
+public class AccountFilterActivity extends AnalyticsActivity
+ implements AdapterView.OnItemClickListener {
private static final String TAG = AccountFilterActivity.class.getSimpleName();
diff --git a/src/com/android/contacts/common/list/ContactEntryListFragment.java b/src/com/android/contacts/common/list/ContactEntryListFragment.java
index 62515e2..e9ab15d 100644
--- a/src/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -23,7 +23,6 @@
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
-import android.content.res.Resources;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
@@ -45,12 +44,10 @@
import android.widget.ListView;
import com.android.common.widget.CompositeCursorAdapter.Partition;
-import com.android.contacts.common.R;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.common.util.ContactListViewUtils;
-import com.android.contacts.common.util.SchedulingUtils;
-import com.android.dialerbind.analytics.AnalyticsFragment;
+import com.android.contacts.commonbind.analytics.AnalyticsFragment;
import java.util.Locale;
diff --git a/src/com/android/contacts/common/list/CustomContactListFilterActivity.java b/src/com/android/contacts/common/list/CustomContactListFilterActivity.java
index feb7df2..2a0a46c 100644
--- a/src/com/android/contacts/common/list/CustomContactListFilterActivity.java
+++ b/src/com/android/contacts/common/list/CustomContactListFilterActivity.java
@@ -62,6 +62,8 @@
import com.android.contacts.common.util.EmptyService;
import com.android.contacts.common.util.LocalizedNameResolver;
import com.android.contacts.common.util.WeakAsyncTask;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
+
import com.google.common.collect.Lists;
import java.util.ArrayList;
@@ -73,7 +75,7 @@
* Shows a list of all available {@link Groups} available, letting the user
* select which ones they want to be visible.
*/
-public class CustomContactListFilterActivity extends Activity
+public class CustomContactListFilterActivity extends AnalyticsActivity
implements View.OnClickListener, ExpandableListView.OnChildClickListener,
LoaderCallbacks<CustomContactListFilterActivity.AccountSet>
{
diff --git a/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
index e49f38a..7f0850c 100644
--- a/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
+++ b/src/com/android/contacts/common/preference/DisplayOptionsPreferenceFragment.java
@@ -17,14 +17,14 @@
package com.android.contacts.common.preference;
import android.os.Bundle;
-import android.preference.PreferenceFragment;
import com.android.contacts.common.R;
+import com.android.contacts.commonbind.analytics.AnalyticsPreferenceFragment;
/**
* This fragment shows the preferences for the first header.
*/
-public class DisplayOptionsPreferenceFragment extends PreferenceFragment {
+public class DisplayOptionsPreferenceFragment extends AnalyticsPreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
diff --git a/src/com/android/contacts/common/vcard/CancelActivity.java b/src/com/android/contacts/common/vcard/CancelActivity.java
index 20869f7..86bfd55 100644
--- a/src/com/android/contacts/common/vcard/CancelActivity.java
+++ b/src/com/android/contacts/common/vcard/CancelActivity.java
@@ -15,7 +15,6 @@
*/
package com.android.contacts.common.vcard;
-import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ComponentName;
@@ -29,11 +28,12 @@
import android.util.Log;
import com.android.contacts.common.R;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
/**
* The Activity for canceling vCard import/export.
*/
-public class CancelActivity extends Activity implements ServiceConnection {
+public class CancelActivity extends AnalyticsActivity implements ServiceConnection {
private final String LOG_TAG = "VCardCancel";
/* package */ final static String JOB_ID = "job_id";
diff --git a/src/com/android/contacts/common/vcard/ExportVCardActivity.java b/src/com/android/contacts/common/vcard/ExportVCardActivity.java
index 008beb6..f508cd3 100644
--- a/src/com/android/contacts/common/vcard/ExportVCardActivity.java
+++ b/src/com/android/contacts/common/vcard/ExportVCardActivity.java
@@ -15,7 +15,6 @@
*/
package com.android.contacts.common.vcard;
-import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ComponentName;
@@ -36,6 +35,7 @@
import android.util.Log;
import com.android.contacts.common.R;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
import java.io.File;
@@ -46,7 +46,7 @@
* a user. After the user's confirmation, it send export request with the file name, assuming the
* file name is not reserved yet.
*/
-public class ExportVCardActivity extends Activity implements ServiceConnection,
+public class ExportVCardActivity extends AnalyticsActivity implements ServiceConnection,
DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
private static final String LOG_TAG = "VCardExport";
private static final boolean DEBUG = VCardService.DEBUG;
diff --git a/src/com/android/contacts/common/vcard/ImportVCardActivity.java b/src/com/android/contacts/common/vcard/ImportVCardActivity.java
index 62e8431..ca7e39a 100644
--- a/src/com/android/contacts/common/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/common/vcard/ImportVCardActivity.java
@@ -48,7 +48,7 @@
import com.android.contacts.common.R;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountWithDataSet;
-import com.android.contacts.common.util.AccountSelectionUtil;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
import com.android.vcard.VCardEntryCounter;
import com.android.vcard.VCardParser;
import com.android.vcard.VCardParser_V21;
@@ -85,7 +85,7 @@
* any Dialog in the instance. So this code is careless about the management around managed
* dialogs stuffs (like how onCreateDialog() is used).
*/
-public class ImportVCardActivity extends Activity {
+public class ImportVCardActivity extends AnalyticsActivity {
private static final String LOG_TAG = "VCardImport";
private static final int SELECT_ACCOUNT = 0;
diff --git a/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java b/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java
index 96f224a..dca9046 100644
--- a/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java
+++ b/src/com/android/contacts/common/vcard/NfcImportVCardActivity.java
@@ -16,7 +16,6 @@
package com.android.contacts.common.vcard;
-import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -34,6 +33,7 @@
import com.android.contacts.common.R;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
import com.android.vcard.VCardEntry;
import com.android.vcard.VCardEntryCounter;
import com.android.vcard.VCardParser;
@@ -49,7 +49,7 @@
import java.util.ArrayList;
import java.util.List;
-public class NfcImportVCardActivity extends Activity implements ServiceConnection,
+public class NfcImportVCardActivity extends AnalyticsActivity implements ServiceConnection,
VCardImportExportListener {
private static final String TAG = "NfcImportVCardActivity";
diff --git a/src/com/android/contacts/common/vcard/SelectAccountActivity.java b/src/com/android/contacts/common/vcard/SelectAccountActivity.java
index d05810d..851ae4d 100644
--- a/src/com/android/contacts/common/vcard/SelectAccountActivity.java
+++ b/src/com/android/contacts/common/vcard/SelectAccountActivity.java
@@ -15,7 +15,6 @@
*/
package com.android.contacts.common.vcard;
-import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
@@ -26,10 +25,11 @@
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.util.AccountSelectionUtil;
+import com.android.contacts.commonbind.analytics.AnalyticsActivity;
import java.util.List;
-public class SelectAccountActivity extends Activity {
+public class SelectAccountActivity extends AnalyticsActivity {
private static final String LOG_TAG = "SelectAccountActivity";
public static final String ACCOUNT_NAME = "account_name";
diff --git a/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
index 0dbe70a..c0bbcce 100644
--- a/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
+++ b/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -20,7 +20,6 @@
import android.telecom.PhoneAccountHandle;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.Context;
import android.content.DialogInterface;
@@ -38,6 +37,7 @@
import android.widget.TextView;
import com.android.contacts.common.R;
+import com.android.contacts.commonbind.analytics.AnalyticsDialogFragment;
import java.util.List;
@@ -45,7 +45,7 @@
* Dialog that allows the user to select a phone accounts for a given action. Optionally provides
* the choice to set the phone account as default.
*/
-public class SelectPhoneAccountDialogFragment extends DialogFragment {
+public class SelectPhoneAccountDialogFragment extends AnalyticsDialogFragment {
private boolean mCanSetDefault;
private List<PhoneAccountHandle> mAccountHandles;
private boolean mIsSelected;
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsActivity.java b/src/com/android/contacts/commonbind/analytics/AnalyticsActivity.java
new file mode 100644
index 0000000..5427bec
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsActivity.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+import android.app.Activity;
+
+public abstract class AnalyticsActivity extends Activity implements AnalyticsInterface {
+ @Override
+ public void sendHitEvent(String categoryId, String actionId, String labelId) {
+ }
+
+ @Override
+ public void sendScreenView() {
+ }
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsDialogFragment.java b/src/com/android/contacts/commonbind/analytics/AnalyticsDialogFragment.java
new file mode 100644
index 0000000..4409201
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsDialogFragment.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+import android.app.DialogFragment;
+
+public abstract class AnalyticsDialogFragment extends DialogFragment implements AnalyticsInterface {
+ @Override
+ public void sendHitEvent(String categoryId, String actionId, String labelId) {
+ }
+
+ @Override
+ public void sendScreenView() {
+ }
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsFragment.java b/src/com/android/contacts/commonbind/analytics/AnalyticsFragment.java
new file mode 100644
index 0000000..ebe2903
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsFragment.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+import android.app.Fragment;
+
+public abstract class AnalyticsFragment extends Fragment implements AnalyticsInterface {
+ @Override
+ public void sendHitEvent(String categoryId, String actionId, String labelId) {
+ }
+
+ @Override
+ public void sendScreenView() {
+ }
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsInterface.java b/src/com/android/contacts/commonbind/analytics/AnalyticsInterface.java
new file mode 100644
index 0000000..f003d67
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsInterface.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+public interface AnalyticsInterface {
+ void sendHitEvent(String categoryId, String actionId, String labelId);
+
+ void sendScreenView();
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsListFragment.java b/src/com/android/contacts/commonbind/analytics/AnalyticsListFragment.java
new file mode 100644
index 0000000..38840ef
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsListFragment.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+import android.app.ListFragment;
+
+public abstract class AnalyticsListFragment extends ListFragment implements
+ AnalyticsInterface {
+ @Override
+ public void sendHitEvent(String categoryId, String actionId, String labelId) {
+ }
+
+ @Override
+ public void sendScreenView() {
+ }
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsPreferenceActivity.java b/src/com/android/contacts/commonbind/analytics/AnalyticsPreferenceActivity.java
new file mode 100644
index 0000000..9f3ac98
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsPreferenceActivity.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+import android.preference.PreferenceActivity;
+
+public abstract class AnalyticsPreferenceActivity extends PreferenceActivity
+ implements AnalyticsInterface {
+ @Override
+ public void sendHitEvent(String categoryId, String actionId, String labelId) {
+ }
+
+ @Override
+ public void sendScreenView() {
+ }
+}
diff --git a/src/com/android/contacts/commonbind/analytics/AnalyticsPreferenceFragment.java b/src/com/android/contacts/commonbind/analytics/AnalyticsPreferenceFragment.java
new file mode 100644
index 0000000..827f469
--- /dev/null
+++ b/src/com/android/contacts/commonbind/analytics/AnalyticsPreferenceFragment.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 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.commonbind.analytics;
+
+import android.preference.PreferenceFragment;
+
+public abstract class AnalyticsPreferenceFragment extends PreferenceFragment
+ implements AnalyticsInterface {
+ @Override
+ public void sendHitEvent(String categoryId, String actionId, String labelId) {
+ }
+
+ @Override
+ public void sendScreenView() {
+ }
+}