summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrung Lam <lamtrung@google.com>2020-02-20 23:36:38 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-02-20 23:36:38 +0000
commitc554fff4eed9ca396ae719c1022ad1ce64da7654 (patch)
tree9a4d34957b4edf0641fea33d36fd443ac258f609
parent0c963a3af945f4f8452e7508c6d1daec673a2a5a (diff)
parent92b8a72db8430f7094cda54816625e32ffdbbf72 (diff)
Merge "Add direct reading/writing of contact phone number after PDD apporoval."
-rw-r--r--services/people/java/com/android/server/people/data/ConversationInfo.java8
-rw-r--r--services/people/java/com/android/server/people/data/ConversationStore.java26
-rw-r--r--services/people/java/com/android/server/people/data/DataManager.java3
-rw-r--r--services/people/java/com/android/server/people/data/PackageData.java11
-rw-r--r--services/people/java/com/android/server/people/data/UserData.java10
-rw-r--r--services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java69
-rw-r--r--services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java16
8 files changed, 25 insertions, 120 deletions
diff --git a/services/people/java/com/android/server/people/data/ConversationInfo.java b/services/people/java/com/android/server/people/data/ConversationInfo.java
index 859cdf24bc7e..41bc3611e085 100644
--- a/services/people/java/com/android/server/people/data/ConversationInfo.java
+++ b/services/people/java/com/android/server/people/data/ConversationInfo.java
@@ -274,6 +274,10 @@ public class ConversationInfo {
}
protoOutputStream.write(ConversationInfoProto.SHORTCUT_FLAGS, mShortcutFlags);
protoOutputStream.write(ConversationInfoProto.CONVERSATION_FLAGS, mConversationFlags);
+ if (mContactPhoneNumber != null) {
+ protoOutputStream.write(ConversationInfoProto.CONTACT_PHONE_NUMBER,
+ mContactPhoneNumber);
+ }
}
/** Reads from {@link ProtoInputStream} and constructs a {@link ConversationInfo}. */
@@ -315,6 +319,10 @@ public class ConversationInfo {
builder.setConversationFlags(protoInputStream.readInt(
ConversationInfoProto.CONVERSATION_FLAGS));
break;
+ case (int) ConversationInfoProto.CONTACT_PHONE_NUMBER:
+ builder.setContactPhoneNumber(protoInputStream.readString(
+ ConversationInfoProto.CONTACT_PHONE_NUMBER));
+ break;
default:
Slog.w(TAG, "Could not read undefined field: "
+ protoInputStream.getFieldNumber());
diff --git a/services/people/java/com/android/server/people/data/ConversationStore.java b/services/people/java/com/android/server/people/data/ConversationStore.java
index 62e9da83869c..89c4972c8ef4 100644
--- a/services/people/java/com/android/server/people/data/ConversationStore.java
+++ b/services/people/java/com/android/server/people/data/ConversationStore.java
@@ -22,7 +22,6 @@ import android.annotation.Nullable;
import android.annotation.WorkerThread;
import android.content.LocusId;
import android.net.Uri;
-import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Slog;
import android.util.proto.ProtoInputStream;
@@ -71,16 +70,13 @@ class ConversationStore {
private final ScheduledExecutorService mScheduledExecutorService;
private final File mPackageDir;
- private final ContactsQueryHelper mHelper;
private ConversationInfosProtoDiskReadWriter mConversationInfosProtoDiskReadWriter;
ConversationStore(@NonNull File packageDir,
- @NonNull ScheduledExecutorService scheduledExecutorService,
- @NonNull ContactsQueryHelper helper) {
+ @NonNull ScheduledExecutorService scheduledExecutorService) {
mScheduledExecutorService = scheduledExecutorService;
mPackageDir = packageDir;
- mHelper = helper;
}
/**
@@ -102,7 +98,6 @@ class ConversationStore {
return;
}
for (ConversationInfo conversationInfo : conversationsOnDisk) {
- conversationInfo = restoreConversationPhoneNumber(conversationInfo);
updateConversationsInMemory(conversationInfo);
}
}
@@ -250,25 +245,6 @@ class ConversationStore {
return mConversationInfosProtoDiskReadWriter;
}
- /**
- * Conversation's phone number is not saved on disk, so it has to be fetched.
- */
- @WorkerThread
- private ConversationInfo restoreConversationPhoneNumber(
- @NonNull ConversationInfo conversationInfo) {
- if (conversationInfo.getContactUri() != null) {
- if (mHelper.query(conversationInfo.getContactUri().toString())) {
- String phoneNumber = mHelper.getPhoneNumber();
- if (!TextUtils.isEmpty(phoneNumber)) {
- conversationInfo = new ConversationInfo.Builder(
- conversationInfo).setContactPhoneNumber(
- phoneNumber).build();
- }
- }
- }
- return conversationInfo;
- }
-
/** Reads and writes {@link ConversationInfo}s on disk. */
private static class ConversationInfosProtoDiskReadWriter extends
AbstractProtoDiskReadWriter<List<ConversationInfo>> {
diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java
index 27c169227637..a1fc5704979d 100644
--- a/services/people/java/com/android/server/people/data/DataManager.java
+++ b/services/people/java/com/android/server/people/data/DataManager.java
@@ -133,8 +133,7 @@ public class DataManager {
public void onUserUnlocked(int userId) {
UserData userData = mUserDataArray.get(userId);
if (userData == null) {
- userData = new UserData(userId, mDiskReadWriterExecutor,
- mInjector.createContactsQueryHelper(mContext));
+ userData = new UserData(userId, mDiskReadWriterExecutor);
mUserDataArray.put(userId, userData);
}
userData.setUserUnlocked();
diff --git a/services/people/java/com/android/server/people/data/PackageData.java b/services/people/java/com/android/server/people/data/PackageData.java
index d47e2cc1ba90..35d245fc8d10 100644
--- a/services/people/java/com/android/server/people/data/PackageData.java
+++ b/services/people/java/com/android/server/people/data/PackageData.java
@@ -59,16 +59,14 @@ public class PackageData {
@NonNull Predicate<String> isDefaultDialerPredicate,
@NonNull Predicate<String> isDefaultSmsAppPredicate,
@NonNull ScheduledExecutorService scheduledExecutorService,
- @NonNull File perUserPeopleDataDir,
- @NonNull ContactsQueryHelper helper) {
+ @NonNull File perUserPeopleDataDir) {
mPackageName = packageName;
mUserId = userId;
mPackageDataDir = new File(perUserPeopleDataDir, mPackageName);
mPackageDataDir.mkdirs();
- mConversationStore = new ConversationStore(mPackageDataDir, scheduledExecutorService,
- helper);
+ mConversationStore = new ConversationStore(mPackageDataDir, scheduledExecutorService);
mEventStore = new EventStore(mPackageDataDir, scheduledExecutorService);
mIsDefaultDialerPredicate = isDefaultDialerPredicate;
mIsDefaultSmsAppPredicate = isDefaultSmsAppPredicate;
@@ -83,8 +81,7 @@ public class PackageData {
@NonNull Predicate<String> isDefaultDialerPredicate,
@NonNull Predicate<String> isDefaultSmsAppPredicate,
@NonNull ScheduledExecutorService scheduledExecutorService,
- @NonNull File perUserPeopleDataDir,
- @NonNull ContactsQueryHelper helper) {
+ @NonNull File perUserPeopleDataDir) {
Map<String, PackageData> results = new ArrayMap<>();
File[] packageDirs = perUserPeopleDataDir.listFiles(File::isDirectory);
if (packageDirs == null) {
@@ -93,7 +90,7 @@ public class PackageData {
for (File packageDir : packageDirs) {
PackageData packageData = new PackageData(packageDir.getName(), userId,
isDefaultDialerPredicate, isDefaultSmsAppPredicate, scheduledExecutorService,
- perUserPeopleDataDir, helper);
+ perUserPeopleDataDir);
packageData.loadFromDisk();
results.put(packageDir.getName(), packageData);
}
diff --git a/services/people/java/com/android/server/people/data/UserData.java b/services/people/java/com/android/server/people/data/UserData.java
index d3cecceed884..0f8b91bfa2b1 100644
--- a/services/people/java/com/android/server/people/data/UserData.java
+++ b/services/people/java/com/android/server/people/data/UserData.java
@@ -37,8 +37,6 @@ class UserData {
private final ScheduledExecutorService mScheduledExecutorService;
- private final ContactsQueryHelper mHelper;
-
private boolean mIsUnlocked;
private Map<String, PackageData> mPackageDataMap = new ArrayMap<>();
@@ -49,12 +47,10 @@ class UserData {
@Nullable
private String mDefaultSmsApp;
- UserData(@UserIdInt int userId, @NonNull ScheduledExecutorService scheduledExecutorService,
- ContactsQueryHelper helper) {
+ UserData(@UserIdInt int userId, @NonNull ScheduledExecutorService scheduledExecutorService) {
mUserId = userId;
mPerUserPeopleDataDir = new File(Environment.getDataSystemCeDirectory(mUserId), "people");
mScheduledExecutorService = scheduledExecutorService;
- mHelper = helper;
}
@UserIdInt int getUserId() {
@@ -74,7 +70,7 @@ class UserData {
// data from disk.
mPerUserPeopleDataDir.mkdirs();
mPackageDataMap.putAll(PackageData.packagesDataFromDisk(mUserId, this::isDefaultDialer,
- this::isDefaultSmsApp, mScheduledExecutorService, mPerUserPeopleDataDir, mHelper));
+ this::isDefaultSmsApp, mScheduledExecutorService, mPerUserPeopleDataDir));
}
void setUserStopped() {
@@ -131,7 +127,7 @@ class UserData {
private PackageData createPackageData(String packageName) {
return new PackageData(packageName, mUserId, this::isDefaultDialer, this::isDefaultSmsApp,
- mScheduledExecutorService, mPerUserPeopleDataDir, mHelper);
+ mScheduledExecutorService, mPerUserPeopleDataDir);
}
private boolean isDefaultDialer(String packageName) {
diff --git a/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java b/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java
index 03b5e38cadb7..d138700f1d2a 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import android.annotation.Nullable;
import android.content.Context;
import android.content.LocusId;
import android.content.pm.ShortcutInfo;
@@ -63,7 +62,6 @@ public final class ConversationStoreTest {
private static final String PHONE_NUMBER_3 = "+9234567890";
private MockScheduledExecutorService mMockScheduledExecutorService;
- private TestContactQueryHelper mTestContactQueryHelper;
private ConversationStore mConversationStore;
private File mFile;
@@ -71,7 +69,6 @@ public final class ConversationStoreTest {
public void setUp() {
Context ctx = InstrumentationRegistry.getContext();
mFile = new File(ctx.getCacheDir(), "testdir");
- mTestContactQueryHelper = new TestContactQueryHelper(ctx);
resetConversationStore();
}
@@ -207,9 +204,6 @@ public final class ConversationStoreTest {
mConversationStore.deleteConversation(SHORTCUT_ID_3);
mMockScheduledExecutorService.fastForwardTime(3L * DateUtils.MINUTE_IN_MILLIS);
- mTestContactQueryHelper.setQueryResult(true, true);
- mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER, PHONE_NUMBER_2);
-
resetConversationStore();
ConversationInfo out1 = mConversationStore.getConversation(SHORTCUT_ID);
ConversationInfo out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
@@ -240,9 +234,6 @@ public final class ConversationStoreTest {
mConversationStore.addOrUpdate(in2);
mMockScheduledExecutorService.fastForwardTime(DateUtils.MINUTE_IN_MILLIS);
- mTestContactQueryHelper.setQueryResult(true);
- mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER);
-
resetConversationStore();
ConversationInfo out1 = mConversationStore.getConversation(SHORTCUT_ID);
ConversationInfo out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
@@ -256,10 +247,6 @@ public final class ConversationStoreTest {
mConversationStore.addOrUpdate(in3);
mMockScheduledExecutorService.fastForwardTime(3L * DateUtils.MINUTE_IN_MILLIS);
- mTestContactQueryHelper.reset();
- mTestContactQueryHelper.setQueryResult(true, true, true);
- mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER, PHONE_NUMBER_2, PHONE_NUMBER_3);
-
resetConversationStore();
out1 = mConversationStore.getConversation(SHORTCUT_ID);
out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
@@ -290,9 +277,6 @@ public final class ConversationStoreTest {
// loadConversationFromDisk gets called each time we call #resetConversationStore().
assertEquals(2, mMockScheduledExecutorService.getExecutes().size());
- mTestContactQueryHelper.setQueryResult(true, true);
- mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER, PHONE_NUMBER_2);
-
resetConversationStore();
ConversationInfo out1 = mConversationStore.getConversation(SHORTCUT_ID);
ConversationInfo out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
@@ -303,8 +287,7 @@ public final class ConversationStoreTest {
private void resetConversationStore() {
mFile.mkdir();
mMockScheduledExecutorService = new MockScheduledExecutorService();
- mConversationStore = new ConversationStore(mFile, mMockScheduledExecutorService,
- mTestContactQueryHelper);
+ mConversationStore = new ConversationStore(mFile, mMockScheduledExecutorService);
mConversationStore.loadConversationsFromDisk();
}
@@ -326,54 +309,4 @@ public final class ConversationStoreTest {
.setBubbled(true)
.build();
}
-
- private static class TestContactQueryHelper extends ContactsQueryHelper {
-
- private int mQueryCalls;
- private boolean[] mQueryResult;
-
- private int mPhoneNumberCalls;
- private String[] mPhoneNumberResult;
-
- TestContactQueryHelper(Context context) {
- super(context);
-
- mQueryCalls = 0;
- mPhoneNumberCalls = 0;
- }
-
- private void setQueryResult(boolean... values) {
- mQueryResult = values;
- }
-
- private void setPhoneNumberResult(String... values) {
- mPhoneNumberResult = values;
- }
-
- private void reset() {
- mQueryCalls = 0;
- mQueryResult = null;
- mPhoneNumberCalls = 0;
- mPhoneNumberResult = null;
- }
-
- @Override
- boolean query(String contactUri) {
- if (mQueryResult != null && mQueryCalls < mQueryResult.length) {
- return mQueryResult[mQueryCalls++];
- }
- mQueryCalls++;
- return false;
- }
-
- @Override
- @Nullable
- String getPhoneNumber() {
- if (mPhoneNumberResult != null && mPhoneNumberCalls < mPhoneNumberResult.length) {
- return mPhoneNumberResult[mPhoneNumberCalls++];
- }
- mPhoneNumberCalls++;
- return null;
- }
- }
}
diff --git a/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java b/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java
index e52cdf59847c..8191d17aba97 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java
@@ -61,7 +61,7 @@ public final class PackageDataTest {
testDir.mkdir();
mPackageData = new PackageData(
PACKAGE_NAME, USER_ID, pkg -> mIsDefaultDialer, pkg -> mIsDefaultSmsApp,
- new MockScheduledExecutorService(), testDir, new ContactsQueryHelper(ctx));
+ new MockScheduledExecutorService(), testDir);
ConversationInfo conversationInfo = new ConversationInfo.Builder()
.setShortcutId(SHORTCUT_ID)
.setLocusId(LOCUS_ID)
diff --git a/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java b/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java
index 418067fd14f8..7934d33f907d 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java
@@ -79,10 +79,9 @@ public final class UsageStatsQueryHelperTest {
Context ctx = InstrumentationRegistry.getContext();
File testDir = new File(ctx.getCacheDir(), "testdir");
ScheduledExecutorService scheduledExecutorService = new MockScheduledExecutorService();
- ContactsQueryHelper helper = new ContactsQueryHelper(ctx);
mPackageData = new TestPackageData(PKG_NAME, USER_ID_PRIMARY, pkg -> false, pkg -> false,
- scheduledExecutorService, testDir, helper);
+ scheduledExecutorService, testDir);
mPackageData.mConversationStore.mConversationInfo = new ConversationInfo.Builder()
.setShortcutId(SHORTCUT_ID)
.setLocusId(LOCUS_ID_1)
@@ -221,9 +220,8 @@ public final class UsageStatsQueryHelperTest {
private ConversationInfo mConversationInfo;
TestConversationStore(File packageDir,
- ScheduledExecutorService scheduledExecutorService,
- ContactsQueryHelper helper) {
- super(packageDir, scheduledExecutorService, helper);
+ ScheduledExecutorService scheduledExecutorService) {
+ super(packageDir, scheduledExecutorService);
}
@Override
@@ -241,12 +239,10 @@ public final class UsageStatsQueryHelperTest {
TestPackageData(@NonNull String packageName, @UserIdInt int userId,
@NonNull Predicate<String> isDefaultDialerPredicate,
@NonNull Predicate<String> isDefaultSmsAppPredicate,
- @NonNull ScheduledExecutorService scheduledExecutorService, @NonNull File rootDir,
- @NonNull ContactsQueryHelper helper) {
+ @NonNull ScheduledExecutorService scheduledExecutorService, @NonNull File rootDir) {
super(packageName, userId, isDefaultDialerPredicate, isDefaultSmsAppPredicate,
- scheduledExecutorService, rootDir, helper);
- mConversationStore = new TestConversationStore(rootDir, scheduledExecutorService,
- helper);
+ scheduledExecutorService, rootDir);
+ mConversationStore = new TestConversationStore(rootDir, scheduledExecutorService);
mEventStore = new TestEventStore(rootDir, scheduledExecutorService);
}