Merge "Browser: Fix bug still display sub folder in add-to list if folder removed"
diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java
index f0c01f7..26e2072 100644
--- a/src/com/android/browser/BookmarkUtils.java
+++ b/src/com/android/browser/BookmarkUtils.java
@@ -23,6 +23,7 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.res.Resources;
+import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Color;
@@ -39,6 +40,7 @@
 import android.os.Message;
 import android.provider.Browser;
 import android.provider.BrowserContract;
+import android.provider.BrowserContract.Bookmarks;
 
 public class BookmarkUtils {
     private final static String LOGTAG = "BookmarkUtils";
@@ -247,10 +249,7 @@
                                 Runnable runnable = new Runnable(){
                                     @Override
                                     public void run() {
-                                        Uri uri = ContentUris.withAppendedId(
-                                                BrowserContract.Bookmarks.CONTENT_URI,
-                                                id);
-                                        context.getContentResolver().delete(uri, null, null);
+                                        removeBookmarkOrFolder(context, id);
                                     }
                                 };
                                 new Thread(runnable).start();
@@ -259,4 +258,35 @@
                 .setNegativeButton(R.string.cancel, null)
                 .show();
     }
+
+    /**
+     * Remove the bookmark or folder.Remove all sub folders and bookmarks under current folder.
+     * @param context Package Context for strings, dialog, ContentResolver.
+     * @param id Id of the bookmark to remove.
+     */
+    private static void removeBookmarkOrFolder(Context context, long id) {
+        Cursor cursor = context.getContentResolver().query(Bookmarks.CONTENT_URI,
+                new String[] {Bookmarks._ID},
+                Bookmarks.PARENT + "=?",
+                new String[] {Long.toString(id)},
+                null);
+
+        if (cursor != null) {
+            try {
+                if (cursor.moveToFirst()) {
+                    do {
+                        removeBookmarkOrFolder(context,
+                                cursor.getLong(cursor.getColumnIndex(Bookmarks._ID)));
+                    } while (cursor.moveToNext());
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                cursor.close();
+            }
+        }
+
+        context.getContentResolver().delete(
+                ContentUris.withAppendedId(Bookmarks.CONTENT_URI, id), null, null);
+    }
 }