summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorBrian Attwell <brianattwell@google.com>2015-05-28 17:19:43 -0700
committerBrian Attwell <brianattwell@google.com>2015-06-02 20:48:51 +0000
commit95f4fd8bf381ed9319f139febc369ce70dcb022e (patch)
treed8f2f8c84bc112a6f6455ea00587ccfb65065f13 /src/com/android
parentd67c70c551749929f2fa845279b554132bf992f0 (diff)
downloadpackages_providers_ContactsProvider-95f4fd8bf381ed9319f139febc369ce70dcb022e.zip
packages_providers_ContactsProvider-95f4fd8bf381ed9319f139febc369ce70dcb022e.tar.gz
packages_providers_ContactsProvider-95f4fd8bf381ed9319f139febc369ce70dcb022e.tar.bz2
Decouple ProviderStatus & internal provider state
Bug: 21090207 Change-Id: I7e93e36ad0c0d667ac56983c76acb1b97bd8755c
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java42
-rw-r--r--src/com/android/providers/contacts/SearchIndexManager.java4
2 files changed, 30 insertions, 16 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 480545c..6cf6d98 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -244,6 +244,11 @@ public class ContactsProvider2 extends AbstractContactsProvider
private static final int BACKGROUND_TASK_CLEANUP_PHOTOS = 10;
private static final int BACKGROUND_TASK_CLEAN_DELETE_LOG = 11;
+ protected static final int STATUS_NORMAL = 0;
+ protected static final int STATUS_UPGRADING = 1;
+ protected static final int STATUS_CHANGING_LOCALE = 2;
+ protected static final int STATUS_NO_ACCOUNTS_NO_CONTACTS = 3;
+
/** Default for the maximum number of returned aggregation suggestions. */
private static final int DEFAULT_MAX_SUGGESTIONS = 5;
@@ -1426,7 +1431,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
private CommonNicknameCache mCommonNicknameCache;
private SearchIndexManager mSearchIndexManager;
- private int mProviderStatus = ProviderStatus.STATUS_NORMAL;
+ private int mProviderStatus = STATUS_NORMAL;
private boolean mProviderStatusUpdateNeeded;
private volatile CountDownLatch mReadAccessLatch;
private volatile CountDownLatch mWriteAccessLatch;
@@ -1768,8 +1773,8 @@ public class ContactsProvider2 extends AbstractContactsProvider
}
public void onLocaleChanged() {
- if (mProviderStatus != ProviderStatus.STATUS_NORMAL
- && mProviderStatus != ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS) {
+ if (mProviderStatus != STATUS_NORMAL
+ && mProviderStatus != STATUS_NO_ACCOUNTS_NO_CONTACTS) {
return;
}
@@ -1806,7 +1811,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
protected void updateLocaleInBackground() {
// The process is already running - postpone the change
- if (mProviderStatus == ProviderStatus.STATUS_CHANGING_LOCALE) {
+ if (mProviderStatus == STATUS_CHANGING_LOCALE) {
return;
}
@@ -1817,7 +1822,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
}
int providerStatus = mProviderStatus;
- setProviderStatus(ProviderStatus.STATUS_CHANGING_LOCALE);
+ setProviderStatus(STATUS_CHANGING_LOCALE);
mContactsHelper.setLocale(currentLocales);
mProfileHelper.setLocale(currentLocales);
mSearchIndexManager.updateIndex(true);
@@ -1878,8 +1883,8 @@ public class ContactsProvider2 extends AbstractContactsProvider
}
private void updateProviderStatus() {
- if (mProviderStatus != ProviderStatus.STATUS_NORMAL
- && mProviderStatus != ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS) {
+ if (mProviderStatus != STATUS_NORMAL
+ && mProviderStatus != STATUS_NO_ACCOUNTS_NO_CONTACTS) {
return;
}
@@ -1892,12 +1897,12 @@ public class ContactsProvider2 extends AbstractContactsProvider
// TODO: Different status if there is a profile but no contacts?
if (isContactsEmpty && profileNum <= 1) {
- setProviderStatus(ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS);
+ setProviderStatus(STATUS_NO_ACCOUNTS_NO_CONTACTS);
} else {
- setProviderStatus(ProviderStatus.STATUS_NORMAL);
+ setProviderStatus(STATUS_NORMAL);
}
} else {
- setProviderStatus(ProviderStatus.STATUS_NORMAL);
+ setProviderStatus(STATUS_NORMAL);
}
}
@@ -2050,7 +2055,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
mProfileHelper.wipeData();
mContactsPhotoStore.clear();
mProfilePhotoStore.clear();
- mProviderStatus = ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS;
+ mProviderStatus = STATUS_NO_ACCOUNTS_NO_CONTACTS;
initForDefaultLocale();
}
@@ -6595,9 +6600,18 @@ public class ContactsProvider2 extends AbstractContactsProvider
}
case PROVIDER_STATUS: {
+ final int providerStatus;
+ if (mProviderStatus == STATUS_UPGRADING
+ || mProviderStatus == STATUS_CHANGING_LOCALE) {
+ providerStatus = ProviderStatus.STATUS_BUSY;
+ } else if (mProviderStatus == STATUS_NORMAL) {
+ providerStatus = ProviderStatus.STATUS_NORMAL;
+ } else {
+ providerStatus = ProviderStatus.STATUS_EMPTY;
+ }
return buildSingleRowResult(projection,
new String[] {ProviderStatus.STATUS},
- new Object[] {mProviderStatus});
+ new Object[] {providerStatus});
}
case DIRECTORIES : {
@@ -9020,7 +9034,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
Log.i(TAG, "Upgrading aggregation algorithm");
final long start = SystemClock.elapsedRealtime();
- setProviderStatus(ProviderStatus.STATUS_UPGRADING);
+ setProviderStatus(STATUS_UPGRADING);
// Re-aggregate all visible raw contacts.
try {
@@ -9077,7 +9091,7 @@ public class ContactsProvider2 extends AbstractContactsProvider
Log.e(TAG, "Failed to bump aggregation algorithm version; continuing anyway.", e2);
}
} finally { // Need one more finally because endTransaction() may fail.
- setProviderStatus(ProviderStatus.STATUS_NORMAL);
+ setProviderStatus(STATUS_NORMAL);
}
}
diff --git a/src/com/android/providers/contacts/SearchIndexManager.java b/src/com/android/providers/contacts/SearchIndexManager.java
index badb7a9..ba2a60d 100644
--- a/src/com/android/providers/contacts/SearchIndexManager.java
+++ b/src/com/android/providers/contacts/SearchIndexManager.java
@@ -271,14 +271,14 @@ public class SearchIndexManager {
}
private void rebuildIndex(SQLiteDatabase db) {
- mContactsProvider.setProviderStatus(ProviderStatus.STATUS_UPGRADING);
+ mContactsProvider.setProviderStatus(ContactsProvider2.STATUS_UPGRADING);
final long start = SystemClock.elapsedRealtime();
int count = 0;
try {
mDbHelper.createSearchIndexTable(db, true);
count = buildAndInsertIndex(db, null);
} finally {
- mContactsProvider.setProviderStatus(ProviderStatus.STATUS_NORMAL);
+ mContactsProvider.setProviderStatus(ContactsProvider2.STATUS_NORMAL);
final long end = SystemClock.elapsedRealtime();
Log.i(TAG, "Rebuild contact search index in " + (end - start) + "ms, "