Fixing the "Liza Ma" use case. This name was parsed as Liza (first name), M.A. (suffix).
Should really be Liza (first name), Ma (last name)
diff --git a/src/com/android/providers/contacts/NameSplitter.java b/src/com/android/providers/contacts/NameSplitter.java
index aad3bc5..54d8a6e 100644
--- a/src/com/android/providers/contacts/NameSplitter.java
+++ b/src/com/android/providers/contacts/NameSplitter.java
@@ -163,7 +163,13 @@
NameTokenizer tokens = new NameTokenizer(fullName);
parsePrefix(name, tokens);
- parseSuffix(name, tokens);
+
+ // If the name consists of just one or two tokens, treat them as first/last name,
+ // not as suffix. Example: John Ma; Ma is last name, not "M.A.".
+ if (tokens.mEndPointer > 2) {
+ parseSuffix(name, tokens);
+ }
+
parseLastName(name, tokens);
parseMiddleName(name, tokens);
parseGivenNames(name, tokens);
diff --git a/tests/src/com/android/providers/contacts/NameSplitterTest.java b/tests/src/com/android/providers/contacts/NameSplitterTest.java
index 91ce025..5e9bd65 100644
--- a/tests/src/com/android/providers/contacts/NameSplitterTest.java
+++ b/tests/src/com/android/providers/contacts/NameSplitterTest.java
@@ -55,6 +55,10 @@
assertSplitName("Smith", null, null, null, "Smith", null);
}
+ public void testIgnoreSuffix() {
+ assertSplitName("Ms MD", "Ms", null, null, "MD", null);
+ }
+
public void testFirstLastName() {
assertSplitName("John Smith", null, "John", null, "Smith", null);
}