Merge "bug:3082865 don't use IN to construct sql to delete downloads" into gingerbread
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index 6256303..00d8ae3 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -28,6 +28,7 @@
 import android.os.ParcelFileDescriptor;
 import android.provider.BaseColumns;
 import android.provider.Downloads;
+import android.util.Log;
 import android.util.Pair;
 
 import java.io.File;
@@ -53,6 +54,8 @@
  * download in a notification or from the downloads UI.
  */
 public class DownloadManager {
+    private static final String TAG = "DownloadManager";
+
     /**
      * An identifier for a particular download, unique across the system.  Clients use this ID to
      * make subsequent calls related to the download.
@@ -748,20 +751,11 @@
      * @return the number of downloads actually removed
      */
     public int remove(long... ids) {
-        StringBuilder whereClause = new StringBuilder();
-        String[] whereArgs = new String[ids.length];
-
-        whereClause.append(Downloads.Impl._ID + " IN (");
-        for (int i = 0; i < ids.length; i++) {
-            if (i > 0) {
-                whereClause.append(",");
-            }
-            whereClause.append("?");
-            whereArgs[i] = Long.toString(ids[i]);
+        if (ids == null || ids.length == 0) {
+            // called with nothing to remove!
+            throw new IllegalArgumentException("input param 'ids' can't be null");
         }
-        whereClause.append(")");
-
-        return mResolver.delete(mBaseUri, whereClause.toString(), whereArgs);
+        return mResolver.delete(mBaseUri, getWhereClauseForIds(ids), getWhereArgsForIds(ids));
     }
 
     /**
@@ -828,12 +822,13 @@
      */
     static String getWhereClauseForIds(long[] ids) {
         StringBuilder whereClause = new StringBuilder();
-        whereClause.append(Downloads.Impl._ID + " IN (");
+        whereClause.append("(");
         for (int i = 0; i < ids.length; i++) {
             if (i > 0) {
-                whereClause.append(",");
+                whereClause.append("OR ");
             }
-            whereClause.append("?");
+            whereClause.append(Downloads.Impl._ID);
+            whereClause.append(" = ? ");
         }
         whereClause.append(")");
         return whereClause.toString();