Merge "Exit early when phone_lookup returned duplicated results for Preferred SIM"
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 8d7d759..f014b27 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -38,7 +38,6 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.support.annotation.WorkerThread;
-import android.support.v4.util.ArraySet;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -67,7 +66,6 @@
 import com.google.common.collect.ImmutableSet;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 /** PreCallAction to select which phone account to call with. Ignored if there's only one account */
 @SuppressWarnings("MissingPermission")
@@ -353,24 +351,23 @@
         return Optional.absent();
       }
       ImmutableSet<String> validAccountTypes = PreferredAccountUtil.getValidAccountTypes(context);
-      Set<String> result = new ArraySet<>();
+      String result = null;
       while (cursor.moveToNext()) {
         Optional<String> accountType =
             getAccountType(context.getContentResolver(), cursor.getLong(0));
-        if (accountType.isPresent() && validAccountTypes.contains(accountType.get())) {
-          result.add(cursor.getString(0));
-        } else {
+        if (!accountType.isPresent() || !validAccountTypes.contains(accountType.get())) {
           LogUtil.i("CallingAccountSelector.getDataId", "ignoring non-writable " + accountType);
+          continue;
         }
+        if (result != null && !result.equals(cursor.getString(0))) {
+          // TODO(twyen): if there are multiple entries attempt to grab from the contact that
+          // initiated the call.
+          LogUtil.i("CallingAccountSelector.getDataId", "lookup result not unique, ignoring");
+          return Optional.absent();
+        }
+        result = cursor.getString(0);
       }
-      // TODO(twyen): if there are multiples attempt to grab from the contact that initiated the
-      // call.
-      if (result.size() == 1) {
-        return Optional.of(result.iterator().next());
-      } else {
-        LogUtil.i("CallingAccountSelector.getDataId", "lookup result not unique, ignoring");
-        return Optional.absent();
-      }
+      return Optional.fromNullable(result);
     }
   }